KUKA Programmierung
Hallo,
kann mir jemand dieses Programm erläutern:
&ACCESS RVP
DEF SCHOKOSE ( )
EXT BAS (BAS_COMMAND :IN,REAL :IN )
;************************
;************************
BAS (#INITMOV,0 )
$VEL.CP=0.15
$ACC.CP=0.5
$APO.CDIS=1
$APO.CORI=0
$APO.CVEL=50
$APO.CDIS=1
PTP XHOME
INTERRUPT DECL 1 WHEN $IN[208] DO GEFUNDEN ( )
$BASE=BASE_DATA[8]
$TOOL=TOOL_DATA[10]
PALL_INIT ( )
; PALL_TEACH ( )
LOOP
SCHOKOAUSWAHL ( )
BERECHNEN ( )
SUCHEN ( )
IF IST_DA==0 THEN
EMPTY_MSG={MSG_T: VALID FALSE,RELEASE FALSE,TYP #NOTIFY,MODUL[] " ",KEY[] " ",PARAM_TYP #VALUE,PARAM[] " ",DLG_FORMAT[] " ",ANSWER 0}
$MSG_T=EMPTY_MSG
$MSG_T.MODUL[]=" "
$MSG_T.KEY[]="Dieses Schokoladenfach ist LEER!"
$MSG_T.PARAM_TYP=#VALUE
$MSG_T.VALID=TRUE
WHILE $MSG_T.VALID
WAIT SEC 0.05
ENDWHILE
WAIT SEC 0.2
WAIT SEC 2
EXIT
ENDIF
HOLEN ( )
ABGABE ( )
PTP XHOME
YLAGE=0
IST_DA=0
ENDLOOP
PTP XHOME
END
; ***** Schokolade gefunden *****
DEF GEFUNDEN ( )
INTERRUPT OFF 1
BRAKE
IST_DA=1
LIN $POS_INT
LIN_REL {X 30,Z -5}
RESUME ; Höhere Routine abbrechen
END
; ***** Holen *****
DEF HOLEN ( )
SAUGER_EIN ( )
LIN START_POS C_VEL
$BASE=BASE_DATA[8]
END
; ***** Ablegen *****
DEF ABGABE ( )
$BASE=BASE_DATA[8]
PTP ABLEGE_POS
WAIT FOR $IN[208]==TRUE
SAUGER_AUS ( )
END
; ***** Position berechnen *****
DEF BERECHNEN ( )
SWITCH ANTWORT
CASE 1
NV={X 0,Y 0,Z 0,A 0,B 0,C 0}
CASE 2
NV={X 0,Y 88,Z 0,A 0,B 0,C 0}
CASE 3
NV={X 0,Y 176,Z 0,A 0,B 0,C 0}
CASE 4
NV={X 0,Y 264,Z 0,A 0,B 0,C 0}
ENDSWITCH
$BASE=BASE_DATA[8]:NV
END
DEF SCHOKOAUSWAHL ( )
IST_DA=0
;------------------DIALOGANFRAGE----------------
EMPTY_MSG={MSG_T: VALID FALSE,RELEASE FALSE,TYP #DIALOG,MODUL[] " ",KEY[] " ",PARAM_TYP #VALUE,PARAM[] " ",DLG_FORMAT[] " ",ANSWER 0}
;
$MSG_T=EMPTY_MSG
$MSG_T.MODUL[]=" "
$MSG_T.KEY[]="Welche der leckeren Schoko-Tafeln moechten Sie?"
$MSG_T.RELEASE=FALSE
$MSG_T.TYP=#DIALOG
$MSG_T.DLG_FORMAT[]="V.Milch|Nuss|Caramel|Cappochi|"
$MSG_T.VALID=TRUE
WHILE $MSG_T.VALID
WAIT SEC 0.05
ENDWHILE
WAIT SEC 0.2
ANTWORT=$MSG_T.ANSWER
;=======================
END
; ***** Schokolade suchen *****
DEF SUCHEN ( )
INTERRUPT ON 1
PTP START_POS
LIN END_POS
$ADVANCE=0 ;kein Programmvorlauf
GEFUNDEN ( )
END
;***** Tafel INITIALISIEREN *****
DEF PALL_INIT ( )
$OUT[4]=FALSE
YLAGE=0
IST_DA=0
END
;***** Tafel TEACHEN *****
DEF PALL_TEACH ( )
$BASE=BASE_DATA[8]
$TOOL=TOOL_DATA[10]
LIN START_POS
HALT
LIN END_POS
HALT
LIN ABLEGE_POS
HALT
END
;***** Sauger aus *****
DEF SAUGER_AUS ( )
$OUT[4]=FALSE
WAIT SEC 1.0
END
;***** Sauger ein *****
DEF SAUGER_EIN ( )
$OUT[4]=TRUE
WAIT SEC 1.0
END
;++++++++++++++++++++++++++++++++++++++++++++++++++
DATFILE:
&ACCESS RVP
DEFDAT SCHOKOSE
DECL MSG_T EMPTY_MSG ;****
INT ANSWER ;**************
INT IST_DA
INT YLAGE
INT ANTWORT
FRAME START_PAL={X 179.81,Y -309.83,Z -14.82,A -85.78,B 1.35,C 179.37}
FRAME END_POS={X 264.23,Y -586.31,Z -62.16,A -174.58,B 2.18,C -179.54}
FRAME PAL_POS_1={X 179.81,Y -309.83,Z -14.82,A -85.78,B 1.35,C 179.37}
FRAME PAL_POS_2={X 179.81,Y -309.83,Z -14.82,A -85.78,B 1.35,C 179.37}
FRAME ABLEGE_POS={X 861.98,Y -366.39,Z 55.41,A -177.13,B -0.02,C -179.74}
FRAME NV={X 0.0,Y 264.0,Z 0.0,A 0.0,B 0.0,C 0.0}
DECL BASIS_SUGG_T LAST_BASIS={POINT1[] "P0 ",POINT2[] "P0 ",CP_PARAMS[] "CPDAT0 ",PTP_PARAMS[] "PDAT0 ",CONT[] " ",CP_VEL[] "2 ",PTP_VEL[] " 100 "}
ENDDAT