Fix bug in SFC generated code. Action state was declared in the list of variables to debug, but wasn't stored using structure with flags. This error had side effects that makes Beremiz debug crash.
FUNCTION_BLOCK CMD_MONITOR
VAR_INPUT AUTO_CMD : BOOL ; (* Automated command *)
AUTO_MODE : BOOL ; (* AUTO_CMD enable *)
MAN_CMD : BOOL ; (* Manual Command *)
MAN_CMD_CHK : BOOL ; (* Negated MAN_CMD to debounce *)
T_CMD_MAX : TIME ; (* Max time from CMD to FDBK *)
FDBK : BOOL ; (* Confirmation of CMD completion
by operative unit *)
ACK : BOOL ; (* Acknowledge/cancel ALRM *)
END_VAR
VAR_OUTPUT CMD : BOOL ; (* Command to operative unit *)
ALRM : BOOL ; (* T_CMD_MAX expired without FDBK *)
END_VAR
VAR CMD_TMR : TON ; (* CMD-to-FDBK timer *)
ALRM_FF : SR ; (* Note over-riding S input: *)
END_VAR (* Command must be cancelled before
"ACK" can cancel alarm *)
(* Function Block Body *)
CMD := AUTO_CMD & AUTO_MODE
OR MAN_CMD & NOT MAN_CMD_CHK & NOT AUTO_MODE ;
CMD_TMR (IN := CMD, PT := T_CMD_MAX);
ALRM_FF (S1 := CMD_TMR.Q & NOT FDBK, R := ACK);
ALRM := ALRM_FF.Q1;
END_FUNCTION_BLOCK