Danke, für eure Hilfe!
Ein Lehrgang wird wohl nicht möglich sein, dass es eine FH-interne Bachelorarbeit ist. Da hilft nur learning by doing ...
Danke, für eure Hilfe!
Ein Lehrgang wird wohl nicht möglich sein, dass es eine FH-interne Bachelorarbeit ist. Da hilft nur learning by doing ...
Oh, danke!
Ich hab ein EXIT jetzt vor dem ENDIF gesetzt. Bin auf Morgen gespannt, obs klappt
Tool und Base?
Vielleicht solltest Du dafür sorgen, dass die richtig sitzen, denn im INIT -Fold werden die genullt...
Es tut mir leid, ich kann mit deinem Kommentar nichts anfangen. Kannst du mir das nochmal genauer erklären, was du meinst?
Kann mir jemand sagen, warum zwar die Variable gesetzt, aber die Warteschleife nicht verlassen wird?
&ACCESS RVO1
&COMMENT
DEF rc_df_az ( )
; **************************************
; *** DEKLARATIONSTEIL VON VARIABLEN ***
; **************************************
DECL KrlMsg_T msg
DECL KrlMsgPar_T par[3]
DECL KrlMsgOpt_T opt
DECL KrlMsgDlgSK_T SK[7]
DECL int nHandle, keynumber
;FOLD INI
;FOLD BASISTECH INI
GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
INTERRUPT ON 3
BAS (#INITMOV,0 )
;ENDFOLD (BASISTECH INI)
;FOLD USER INI
;Make your modifications here
;ENDFOLD (USER INI)
;ENDFOLD (INI)
; ************************************
; *** PROGRAMMIERUNG DIALOGFENSTER ***
; ************************************
LOOP
msg = {modul[] "RobsCafe", Nr 1, msg_txt[] "Was wuenschen Sie?"}
SK[1] = {sk_Type #value, sk_txt[] "1"}
SK[2] = {sk_Type #value, sk_txt[] "2"}
SK[3] = {sk_Type #value, sk_txt[] "3"}
SK[4] = {sk_Type #value, sk_txt[] "4"}
; -- Dialogmeldung mittels KrlDlg absetzen --
nHandle = Set_KrlDlg (msg, par[], SK[], opt)
; -- Wenn die Meldung erfolgreich abgesetzt wurde (nhandle > 0), dann --
IF (nHandle > 0) THEN
; -- Warteschleife bis Benutzer Meldung quittiert --
while (Exists_KrlDlg(nHandle, keynumber))
wait Sec 0.1
endwhile
; ************************
; *** AUSFUEHRUNGSTEIL ***
; ************************
SWITCH keynumber
CASE 1
A=1
CASE 2
A=2
CASE 3
A=3
CASE 4
A=4
ENDSWITCH
ENDIF
ENDLOOP
END
Varum ist Greifpos etc. eigentlich ein Array ohne Werte im *.dat , wenn die Variable doch in jedem Schleifendurchgang neu berechnest? Da reicht doch 'ne POS-Variable in der Prozedur....
Grüße,
Michael
Nun, da ich mehrere Regale habe, aus denen zu unterschiedlichen Zeiten unterschiedliche viele Sachen entnommen werden müssen. Ich habe gehofft, dass er sich so merkt, wie viele im jeweiligen Regal fehlen.
Ist das falsch?
Oh Gott, wie doof kann man eigentlich sein
Ich habe in der dat-file das GLOBAL vor XGRUNDPOSITION vergessen ...
Danke.
Die Schreibweise stimmt. Ich habe das bestimmt schon 20 mal überprüft. Das war auch erst mein Gedanke ...
Hm schade ... läuft noch immer nicht ...
Immer noch XGRUNDPOSITION Wert ungültig ...
oh mein Gott, natürlich
Aber warum sagt er: XGRUNDPOSITION Wert ungültig
Ist der etwa so klug und versucht erst gar nicht das Ziel zu ereichen? Da habe ich meinen KUKA wohl fleissiger und dümmer eingeschätzt ...
oder ich kann doch auch
GREIFPOS[SZ].X = GREIFPOS[SZ].X + 100
schreiben, oder habe ich da jetzt einen Denkfehler? Ich sitze schon so lange an dem Mist dran, da bin ich schon ganz schrott im Kopf
Berechnung
SZ = 0
FOR RE=1 TO 5
FOR SP=1 TO 4
SZ=SZ+1
GREIFPOS[SZ] = XGRUNDPOSITION
GREIFPOS[SZ] = GREIFPOS[SZ].Z - 1080
GREIFPOS[SZ].X = GREIFPOS[SZ].X *100
GREIFPOS[SZ].Y = GREIFPOS[SZ].Y *80
VORPOS[SZ] = GREIFPOS[SZ]
VORPOS[SZ].Y = VORPOS[SZ].Y - 100
HEBEPOS[SZ] = GREIFPOS[SZ]
HEBEPOS[SZ].Z = HEBEPOS[SZ].Z + 20
ENDFOR
ENDFOR
LIN WVORPOS[WSZ]
LIN WGREIFPOS[WSZ]
;Greifer schließen
LIN WHEBEPOS[WSZ]
Dat-File:
;ENDFOLD (USER EXT)
;ENDFOLD (EXTERNAL DECLARATIONS)
DECL GLOBAL POS VORPOS[20]
DECL GLOBAL POS GREIFPOS[20]
DECL GLOBAL POS HEBEPOS[20]
DECL BASIS_SUGG_T LAST_BASIS={POINT1[] "GRUNDPOSITION ",POINT2[] "GRUNDPOSITION ",CP_PARAMS[] "CPDAT0 ",PTP_PARAMS[] "PDAT1 ",CONT[] " ",CP_VEL[] "2.0 ",PTP_VEL[] "100 ",SYNC_PARAMS[] "SYNCDAT ",SPL_NAME[] "S0 "}
DECL E6POS XGRUNDPOSITION={X 35.8865891,Y 58.4513016,Z 344.405487,A -0.454435915,B 60.8919716,C -89.4869308,S 18,T 11,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}
DECL FDAT FGRUNDPOSITION={TOOL_NO 11,BASE_NO 11,IPO_FRAME #BASE,POINT2[] " ",TQ_STATE FALSE}
DECL PDAT PPDAT1={VEL 100.0,ACC 100.0,APO_DIST 100.0}
DECL GLOBAL INT A=0
ENDDAT
Da ist es. Stimmt, SP und RE muss ich in die Berechnung einfließen lassen. Dann muss ich doch SP*100 in Klammern setzen, oder? - Also GREIFPOS[SZ].X = GREIFPOS[SZ].X + (SP *100) oder?
Hallo!
Ich muss das Thema nochmal vorkramen und hoffe, dass ich schnelle Hilfe bekommen kann.
Es geht ebenfalls um ein Palettierprogramm, bei dem es darum geht, etwas aus einem Regal zu entnehmen. Irgendwie wehrt sich mein KUKA aber ...
SZ= Schleifenzähler (das Programm soll zählen,wie viel aus dem Regal entnommen wurde)
RE= Reihe (5 an der Zahl)
SP= Spalte (4 an der Zahl)
SZ = 0
FOR RE = 1 TO 5
FOR SP = 1 TO 4
SZ = SZ+1
GREIFPOS[SZ] = XGRUNDPOSITION
GREIFPOS[SZ].X = GREIFPOS[SZ].X * 100
GREIFPOS[SZ].Y = GREIFPOS[SZ].Y * 80
VORPOS[SZ] = GREIFPOS[SZ]
VORPOS[SZ].Y = VORPOS[SZ].Y - 100
HEBEPOS[SZ] = GREIFPOS[SZ]
HEBEPOS[SZ].Z = HEBEPOS[SZ].Z + 20
ENDFOR
ENDFOR
LIN VORPOS[SZ]
LIN GREIFPOS[SZ]
;Greifer schließen
LIN HEBEPOS[SZ]
Irgendwie meckert der schon bei XGRUNDPOSITION, obwohl ich diese Position als E6POS mit allen Koordinaten im Dat-File habe.
Erkennt jemand das Problem?