Automatico EXT con IO esterno
Modulo IO Esterno:Esterno
Il sistema utilizza un modulo di I/O esterno Beckhoff per la gestione dei segnali del robot KUKA.
Logica ponticelli:dei ponticelli
I segnali di ingresso richiesti dal controllore KUKA vengono ottenuti tramite ponticellatura delle uscite selezionate sul modulo di I/O esterno. La numerazione degli I/O segue lo schema illustrato nell’immagine seguente.
Configurazione dei segnali di sistema
PerCome primaprimo cosa,passo, è necessario configurare il filefile:
STEU ->→ Mada → -> $machine.dat.dat
Andando aggiungeread aassegnare questeai quattrovari variabilisegnali, digli sistema,ingressi le corrispettive entrate che sono ponticellate alle uscite scelte da noi. File $machine.dat:
EtherCAT:
SIGNAL $EXT_START $IN[209] ;EXTERNER START
SIGNAL $MOVE_ENABLE $IN[210] ;FAHRFREIGABE GESAMT
SIGNAL $CONF_MESS $IN[211] ;EXTERNE QUITTUNG
SIGNAL $DRIVES_ON $IN[212] ;ANTRIEBE EIN
Configurazione delle uscite
UsciteLe uscite utilizzate per la gestione dei segnali EXT devono essere definite nel file IO., come mostrato di seguito.dat:dat
File IO.dat:
GLOBAL SIGNAL out_SYS_ExtStart $OUT[213]
GLOBAL SIGNAL out_SYS_MoveEnable $OUT[214]
GLOBAL SIGNAL out_SYS_ConfMess $OUT[215]
GLOBAL SIGNAL out_SYS_DrivesOn $OUT[216]
OraA questo punto, la configurazione didegli ingressi e delle uscite risulta completata.
Gestione SPS e modalità EXT
All’interno del controllore KUKA è completata.
Nel Kuka ci saràpresente un programma SPS che gestiscegestisce, contramite interruptinterrupt, loi stop,segnali start,di ecc...Start, viene chiamato "ExtManager.sub",Stop e conterràle questoaltre funzioni di controllo in modalità EXT.
Questo programma è denominato ExtManager.sub e contiene il seguente codice:
&ACCESS RVP
&COMMENT USER specified PLC program
DEF ExtManager ( )
;FOLD DECLARATIONS
;FOLD USER DECL
; Please insert user defined declarations
;ENDFOLD (USER DECL)
;ENDFOLD (DECLARATIONS)
;FOLD INI
;FOLD USER INIT
; Please insert user defined initialization commands
INTERRUPT DECL nStopBtn WHEN inStopRobot DO EXT_STOP() ;Nel caso in cui l'ingresso del pulsante di stop sia negato, basta mettere NOT
INTERRUPT ON nStopBtn
INTERRUPT DECL nStartBtn WHEN inStartRobot DO EXT_START()
INTERRUPT ON nStartBtn
INTERRUPT DECL nIntExtSelect WHEN $EXT DO EXT_SELECT()
INTERRUPT ON nIntExtSelect
;ENDFOLD (USER INIT)
;ENDFOLD (INI)
LOOP
IF NOT out_SYS_MoveEnable THEN
out_SYS_MoveEnable = TRUE
ENDIF
ENDLOOP
END
DEF EXT_INI ()
out_SYS_ExtStart = FALSE
out_SYS_ConfMess = FALSE
out_SYS_DrivesOn = FALSE
END
DEF EXT_STOP()
DECL STATE_T STAT
DECL MODUS_T MODE
INTERRUPT OFF nStartBtn
MODE=#SYNC
IF $PRO_STATE1 <> #P_FREE THEN
CWRITE($CMD,STAT,MODE,"STOP 1")
ENDIF
INTERRUPT ON nStartBtn
END
DEF EXT_START()
INTERRUPT OFF nStartBtn
IF (NOT $PRO_ACT)THEN
EXT_INI()
$TIMER[nTimeOutExt] = - tTimeOutExt
$TIMER_STOP[nTimeOutExt] = FALSE
nExtState = 0
WHILE NOT $TIMER_FLAG[nTimeOutExt]
SWITCH nExtState
CASE 0
IF NOT $PERI_RDY THEN
out_SYS_DrivesOn = TRUE
nExtState = 0
ELSE
out_SYS_DrivesOn = FALSE
nExtState = 1
ENDIF
CASE 1
IF $STOPMESS THEN
out_SYS_ConfMess = TRUE
nExtState = 1
ELSE
out_SYS_ConfMess = FALSE
nExtState = 2
ENDIF
CASE 2
IF NOT $PRO_ACT THEN
out_SYS_ExtStart = TRUE
nExtState = 2
ELSE
out_SYS_ExtStart = FALSE
nExtState = 3
ENDIF
CASE 3
$TIMER_STOP[nTimeOutExt] = TRUE
nExtState = 0
EXIT
ENDSWITCH
ENDWHILE
EXT_INI ()
ENDIF
INTERRUPT ON nStartBtn
END
DEF EXT_SELECT ()
DECL STATE_T STAT
DECL MODUS_T MODE
INTERRUPT OFF nIntExtSelect
MODE=#SYNC
IF $PRO_STATE1 == #P_FREE THEN
CWRITE($CMD,STAT,MODE,"RUN /R1/MAIN()")
CWRITE($CMD,STAT,MODE,"STOP 1")
CWRITE($CMD,STAT,MODE,"RESET 1")
ENDIF
INTERRUPT ON nIntExtSelect
END
inIn questo caso,contesto, il Timertimer utilizzato per lola startgestione usadello laStart fa riferimento alla variabile "nTimeOutExt"nTimeOutExt, chedefinita è salvata in un altronel file (nel Globals..dat)dat
Adattare alle necessità il programma che deve essere chiamato alla selezione della modalità EXT

