//Continious Scan
TIMESTEP = 50
TimeStep ON
//Set all variables for the first time
VAR1 = 0
VAR2 = 0
CALL CALC_CHECKSUM_LSB
CALL CALC_CHECKSUM_MSB
// endless loop for checkings
LABEL WINPLC
CALL CALC_CHECKSUM_LSB
IF VAR3 != $VAR1 Then
CALL WRITELOG
VAR1 = VAR3
END IF
CALL CALC_CHECKSUM_MSB
IF VAR3 != $VAR2 Then
CALL WRITELOG
VAR2 = VAR3
END IF
GOTO WINPLC
//calculate the condition of channel 1-8 to a number
SUB CALC_CHECKSUM_LSB
TEXTVAR = "$IO01+2*$IO02+4*$IO03+8*$IO04+16*$IO05+32*$IO06+64*$IO07+128*$IO08"
VAR3 = $CALC(TEXTVAR)
END SUB
//calculate the condition of channel 9-16 to a number
SUB CALC_CHECKSUM_MSB
TEXTVAR = "$IO09+2*$IO10+4*$IO11+8*$IO12+16*$IO13+32*$IO14+64*$IO15+128*$IO16"
VAR3 = $CALC(TEXTVAR)
END SUB
// an I/O channel changed, write log!
SUB WRITELOG
LOGFILE = "C:\io kanalen.log"
WRITELOG "<$DAY/$MONTH/$YEAR $XTIME> $IO01$IO02$IO03$IO04$IO05$IO06$IO07$IO08$IO09$IO10$IO11$IO12$IO13$IO14$IO15$IO16"
END SUB