I have some simple code setup to measure the execution speed of my PLC program, so that I know if I'm really bogging down the board to the point that I might miss an "event" that I'm looking to detect with this board.
Does anyone else do this?
My code is currently executing at a rate of about 180 cycles per second (or 180 Hertz).
My code is pretty basis to do this and if anyone has more refined code they want to share or comments please do. I'd like to see more code examples on this board. there are obviously some very experienced coders on this board and many of us could learn alot.
My full PLC code is below, with "SPEED" being the part that checks the execution time (at least I think it does that):
START
SET VAR2 0
SET VAR3 0
SET VAR4 0
SET VAR5 0
SET RAM1 0
SET RAM2 0
SET RAM7 0
SET RAM6 CTS
SET RAM8 0
EMAIL EM7
LOOP:
INC VAR5
TSTGT VAR5 20000
CALLSUB SPEED
TSTEQ VAR4 1
CALLSUB FROZEN
TSTEQ OP5[500] 1
CALLSUB WOL
TSTEQ VAR2[10000] 1
CALLSUB DISARM
TSTEQ VAR3 1
CALLSUB GARAGE
TSTEQ OP4[500] 1
CALLSUB SWITCH
TSTEQ OP3[5000] 1
CALLSUB POWER
TSTGT AIP2 70
CALLSUB ALARM
TSTLT AIP2 50
SET RAM2 0
TSTLT AIP1 435
CALLSUB DOORBELL
GOTO LOOP
END
SPEED:
SUB CTS RAM6 RAM8
DIV VAR5 RAM8 VAR6
SET RAM6 CTS
SET VAR5 0
RET
FROZEN:
SET VAR4 0
EMAIL EM8
RET
DISARM:
SET VAR2 0
RET
DOORBELL:
TSTEQ RAM1 1
RET
SET RAM1 1
EMAIL EM1
RET
ALARM:
TSTEQ RAM2 1
RET
SET RAM2 1
EMAIL EM2
RET
WOL:
SET OP5 0
EMAIL EM5
RET
GARAGE:
TSTEQ VAR2 0
RET
SET OP6 1
DELAY 500
SET OP6 0
EMAIL EM6
SET VAR3 0
RET
SWITCH:
SET OP4 0
EMAIL EM4
RET
POWER:
SET OP3 0
EMAIL EM3
RET
Does anyone else do this?
My code is currently executing at a rate of about 180 cycles per second (or 180 Hertz).
My code is pretty basis to do this and if anyone has more refined code they want to share or comments please do. I'd like to see more code examples on this board. there are obviously some very experienced coders on this board and many of us could learn alot.
My full PLC code is below, with "SPEED" being the part that checks the execution time (at least I think it does that):
START
SET VAR2 0
SET VAR3 0
SET VAR4 0
SET VAR5 0
SET RAM1 0
SET RAM2 0
SET RAM7 0
SET RAM6 CTS
SET RAM8 0
EMAIL EM7
LOOP:
INC VAR5
TSTGT VAR5 20000
CALLSUB SPEED
TSTEQ VAR4 1
CALLSUB FROZEN
TSTEQ OP5[500] 1
CALLSUB WOL
TSTEQ VAR2[10000] 1
CALLSUB DISARM
TSTEQ VAR3 1
CALLSUB GARAGE
TSTEQ OP4[500] 1
CALLSUB SWITCH
TSTEQ OP3[5000] 1
CALLSUB POWER
TSTGT AIP2 70
CALLSUB ALARM
TSTLT AIP2 50
SET RAM2 0
TSTLT AIP1 435
CALLSUB DOORBELL
GOTO LOOP
END
SPEED:
SUB CTS RAM6 RAM8
DIV VAR5 RAM8 VAR6
SET RAM6 CTS
SET VAR5 0
RET
FROZEN:
SET VAR4 0
EMAIL EM8
RET
DISARM:
SET VAR2 0
RET
DOORBELL:
TSTEQ RAM1 1
RET
SET RAM1 1
EMAIL EM1
RET
ALARM:
TSTEQ RAM2 1
RET
SET RAM2 1
EMAIL EM2
RET
WOL:
SET OP5 0
EMAIL EM5
RET
GARAGE:
TSTEQ VAR2 0
RET
SET OP6 1
DELAY 500
SET OP6 0
EMAIL EM6
SET VAR3 0
RET
SWITCH:
SET OP4 0
EMAIL EM4
RET
POWER:
SET OP3 0
EMAIL EM3
RET