Hallo.
hier die sps.sub ( alle folds geöfnet)
DEF sps( )
DECLARATIONS
BASISTECH DECL
;Automatik extern
DECL STATE_T STAT
DECL MODUS_T MODE
ARCTECHDIGITAL DECL
INT WFD_PLUS_D,WFD_MINUS_D,OLD_WFD_D
USER DECL
; Please insert user defined declarations
INI
DEFAULT MSG_T
$MSG_T={MSG_T: VALID FALSE,RELEASE FALSE,TYP #NOTIFY,MODUL[] " ",KEY[] " ",PARAM_TYP #VALUE,PARAM[] " ",DLG_FORMAT[] " ",ANSWER 0}
AUTOEXT INIT
INTERRUPT DECL 91 WHEN $PRO_STATE1==#P_FREE DO RESET_OUT ()
INTERRUPT ON 91
$LOOP_MSG[]=" "
MODE=#SYNC
$H_POS=$H_POS
;Automatik extern
IF $MODE_OP==#EX THEN
CWRITE($CMD,STAT,MODE,"RUN /R1/CELL()")
ENDIF
ARCTECHDIGITAL INIT
ARCD_WFD_PRE_INIT (WFD_PLUS_D,WFD_MINUS_D,OLD_WFD_D )
USER INIT
; Please insert user defined initialization commands
LOOP
WAIT FOR NOT($POWER_FAIL)
ARCTECHDIGITAL PLC
IF (ARC20==TRUE) THEN
A20_TECH ( )
ARCD_WFD_FUNCTIONALITY(WFD_PLUS_D,WFD_MINUS_D,OLD_WFD_D)
ENDIF
USER PLC
;Make your modifications here
; Quittierung Froniussteuerung
IF ($IN[39] AND NOT $IN[38]) THEN ;Kommunikation bereit und nicht Stromquelle bereit
PULSE ($OUT[44], TRUE, 0.8) ;Quellen-Stoerung quittieren
wait sec 1.0
; PULSE ($OUT[44], FALSE, 0.8)
OUT 34 'Roboter bereit' State= TRUE
$OUT[34]=TRUE
ENDIF
IF ($PERI_RDY==TRUE) THEN
$OUT[35]=FALSE
$OUT[36]=TRUE
$OUT[37]=FALSE
ENDIF
IF ($PERI_RDY==FALSE) THEN
$OUT[35]=TRUE
$OUT[36]=TRUE
$OUT[37]=FALSE
ENDIF
;*******************************
; Seitenauswahl d. Bauteil-Prog.
;*******************************
IF (STARTFREIG_A==TRUE) THEN
SEITE_A=TRUE
ENDIF
IF (STARTFREIG_B==TRUE) THEN
SEITE_B=TRUE
ENDIF
;Kollisionsschutz Brenner Schweissen aus
IF NOT $IN[101] AND NOT $T1 THEN
;$OUT[33]=FALSE
$OV_PRO=0
ENDIF
ENDLOOP
;FOLD
END
DEF RESET_OUT ( )
INT N
$LOOP_MSG[]=" "
IF REFLECT_PROG_NR == 1 THEN
FOR N = 0 TO PGNO_LENGTH - 1
$OUT[PGNO_FBIT_REFL + N] = FALSE
ENDFOR
ENDIF
IF (PGNO_REQ>0) THEN
$OUT[PGNO_REQ]=FALSE
ELSE
IF (PGNO_REQ<0) THEN
$OUT[-PGNO_REQ]=TRUE
ENDIF
ENDIF
END
ARCTECHDIGITAL After
DEF A20_TECH ( )
IF ($PRO_STATE1==#P_STOP) THEN
A20 (TECH_STOP )
ENDIF
END
;----------------------------------------------------------------
DEF ARCD_WFD_PRE_INIT (WFD_P :OUT,WFD_M :OUT,OLD_WFD_STS :OUT )
INT WFD_P,WFD_M,OLD_WFD_STS
A_HPU_WFD_D=0 ;Reset Wirefeed key state
WFD_P=0
WFD_M=0
IF (O_WRFEDP.NO>0) THEN
IF (O_WELD_CTRL[O_WRFEDP.NO].OUT_NR>0) THEN
WFD_P=O_WELD_CTRL[O_WRFEDP.NO].OUT_NR
ENDIF
ENDIF
OLD_WFD_STS=0
IF O_WRFEDN.NO>0 THEN
IF (O_WELD_CTRL[O_WRFEDN.NO].OUT_NR>0) THEN
WFD_M=O_WELD_CTRL[O_WRFEDN.NO].OUT_NR
ENDIF
ENDIF
END ;(ARCD_WFD_PRE_INIT)
;------------------------------------------------------------------
DEF ARCD_WFD_FUNCTIONALITY (WFD_P :OUT,WFD_M :OUT,OLD_WFD_STS :OUT )
INT WFD_P,WFD_M,OLD_WFD_STS
IF (OLD_WFD_STS <>A_HPU_WFD_D) THEN
IF A_HPU_WFD_D<>0 THEN
OLD_WFD_STS=A_HPU_WFD_D
IF (A_HPU_WFD_D>0) THEN
IF WFD_P<>0 THEN
$OUT[WFD_P]=O_WRFEDP.STATE
ENDIF
ENDIF
IF (A_HPU_WFD_D<0) THEN
IF WFD_M<>0 THEN
$OUT[WFD_M]=O_WRFEDN.STATE
ENDIF
ENDIF
ELSE
OLD_WFD_STS=A_HPU_WFD_D
IF WFD_P<>0 THEN
$OUT[WFD_P]= NOT (O_WRFEDP.STATE)
ENDIF
IF WFD_M<>0 THEN
$OUT[WFD_M]= NOT (O_WRFEDN.STATE)
ENDIF
ENDIF
ENDIF
END ;(ARCD_WFD_FUNCTIONALITY)
USER SUBROUTINE
; Integrate your user defined subroutines