Below is some sample code, I am just looking at how to successfully pull off full homeout using an interrupt.
Currently it doesn't fully reset the program. Even though I am doing so in the SPS. It returns to the main and tries to start moving from where it left at.
More of what I am asking is how to I get it to fully stop and never go back to the Main.
Should I ramp stop the robot at the end of its homeout routine and wait for the PLC signal of reset prg?
Thanks,
Code
DEF B5805R( )
DECL INT LOCALSEQUENCE
DECL INT LOCALSEQUENCE2
DECL INT LOCALKUKATOHMI
;FOLD INI;%{PE}
;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)
INTERRUPT DECL 5 WHEN $IN[1]==FALSE DO LOSTVACUUM()
INTERRUPT DECL 4 WHEN $IN[30]==TRUE DO HOMEOUT()
wait sec 0
LOCALKUKATOHMI = 'B00000000'
GLOBALKUKATOHMI = LOCALKUKATOHMI
$OUT[71] = FALSE
$OUT[7] = FALSE
$OUT[8] = FALSE
$OUT[10] = FALSE
$OUT[11] = FALSE
$OUT[12] = FALSE
$OUT[13] = FALSE
$OUT[14] = FALSE
$OUT[15] = FALSE
$OUT[16] = FALSE
$OUT[17] = FALSE
$OUT[18] = FALSE
$OUT[19] = FALSE
$OUT[20] = FALSE
$OUT[21] = FALSE
$OUT[22] = FALSE
$OUT[23] = FALSE
$OUT[24] = FALSE
$OUT[25] = FALSE
$OUT[26] = FALSE
$OUT[27] = FALSE
$OUT[28] = FALSE
$OUT[29] = FALSE
$OUT[50] = FALSE
$OUT[72] = FALSE
;FOLD PTP HOME VEL= 100 % DEFAULT;%{PE}%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
$BWDSTART = FALSE
PDAT_ACT=PDEFAULT
FDAT_ACT=FHOME
BAS (#PTP_PARAMS,100 )
$H_POS=XHOME
PTP XHOME
;ENDFOLD
LOOP
WAIT SEC 0
INTERRUPT ON 4
;FOLD PTP P15 VEL=100 % PDAT1 TOOL[1]:PPEOAT BASE[4]:I/O;%{PE}%R 8.3.48,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P15, 3:, 5:100, 7:PDAT1
$BWDSTART=FALSE
PDAT_ACT=PPDAT1
FDAT_ACT=FP15
BAS(#PTP_PARAMS,100)
PTP XP15
;ENDFOLD
;PICKUP POSITION MAIN
LOCALKUKATOHMI = 'B00001001'
GLOBALKUKATOHMI = LOCALKUKATOHMI
LOCALSEQUENCE = GLOBALSEQUENCE
WAIT SEC 0
SWITCH LOCALSEQUENCE ; PICKUP
CASE 1
LOCALKUKATOHMI = 'B00000000'
GLOBALKUKATOHMI = LOCALKUKATOHMI
END
DEF HOMEOUT()
BRAKE
WAIT SEC 0
INTERRUPT OFF 5
WAIT SEC 0
IF $IN[30] THEN
WAIT SEC 0
IF $IN[1] == TRUE THEN
$OUT[29] = TRUE
WAIT FOR $IN[1] == FALSE
$OUT[8] = FALSE
PULSE($OUT[7], TRUE,1)
$OUT[29]=FALSE
ENDIF
IF GLOBALKUKATOHMI == 0 THEN
WAIT SEC 0
PTP XHOME
WAIT FOR $IN[31]
ENDIF
END
Display More