diff -r 000000000000 -r fb772792efd1 AnnexF/fwd_rev_mon_il.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/AnnexF/fwd_rev_mon_il.txt Wed Jan 31 15:32:38 2007 +0100 @@ -0,0 +1,77 @@ +FUNCTION_BLOCK FWD_REV_MON +VAR_INPUT AUTO : BOOL ;(* Enable automated commands *) + ACK : BOOL ; (* Acknowledge/cancel all alarms *) + AUTO_FWD : BOOL ; (* Automated forward command *) + MAN_FWD : BOOL ; (* Manual forward command *) + MAN_FWD_CHK : BOOL ; (* Negated MAN_FWD for debouncing *) + T_FWD_MAX : TIME ; (* Maximum time from FWD_CMD to FWD_FDBK *) + FWD_FDBK : BOOL ; (* Confirmation of FWD_CMD completion *) + (* by operative unit *) + AUTO_REV : BOOL ; (* Automated reverse command *) + MAN_REV : BOOL ; (* Manual reverse command *) + MAN_REV_CHK : BOOL ; (* Negated MAN_REV for debouncing *) + T_REV_MAX : TIME ; (* Maximum time from REV_CMD to REV_FDBK *) + REV_FDBK : BOOL ; (* Confirmation of REV_CMD completion *) +END_VAR (* by operative unit *) +VAR_OUTPUT KLAXON : BOOL ; (* Any alarm active *) + FWD_REV_ALRM : BOOL; (* Forward/reverse command conflict *) + FWD_CMD : BOOL ; (* "Forward" command to operative unit *) + FWD_ALRM : BOOL ; (* T_FWD_MAX expired without FWD_FDBK *) + REV_CMD : BOOL ; (* "Reverse" command to operative unit *) + REV_ALRM : BOOL ; (* T_REV_MAX expired without REV_FDBK *) +END_VAR +VAR FWD_MON : CMD_MONITOR; (* "Forward" command monitor *) + REV_MON : CMD_MONITOR; (* "Reverse" command monitor *) + FWD_REV_FF : SR ; (* Forward/Reverse contention latch *) +END_VAR +(* Function Block body *) +LD AUTO (* Load common inputs *) +ST FWD_MON.AUTO_MODE +ST REV_MON.AUTO_MODE +LD ACK +ST FWD_MON.ACK +ST REV_MON.ACK +ST FWD_REV_FF.R +LD AUTO_FWD (* Load inputs to FWD_MON *) +ST FWD_MON.AUTO_CMD +LD MAN_FWD +ST FWD_MON.MAN_CMD +LD MAN_FWD_CHK +ST FWD_MON.MAN_CMD_CHK +LD T_FWD_MAX +ST FWD_MON.T_CMD_MAX +LD FWD_FDBK +ST FWD_MON.FDBK +CAL FWD_MON (* Activate FWD_MON *) +LD AUTO_REV (* Load inputs to REV_MON *) +ST REV_MON.AUTO_CMD +LD MAN_REV +ST REV_MON.MAN_CMD +LD MAN_REV_CHK +ST REV_MON.MAN_CMD_CHK +LD T_REV_MAX +ST REV_MON.T_CMD_MAX +LD REV_FDBK +ST REV_MON.FDBK +CAL REV_MON (* Activate REV_MON *) +LD FWD_MON.CMD (* Check for contention *) +AND REV_MON.CMD +S1 FWD_REV_FF (* Latch contention condition *) +LD FWD_REV_FF.Q +ST FWD_REV_ALRM (* Contention alarm *) +LD FWD_MON.CMD (* "Forward" command and alarm *) +ANDN FWD_REV_ALRM +ST FWD_CMD +LD FWD_MON.ALRM +ST FWD_ALRM +LD REV_MON.CMD (* "Reverse" command and alarm *) +ANDN FWD_REV_ALRM +ST REV_CMD +LD REV_MON.ALRM +ST REV_ALRM +OR FWD_ALRM (* OR all alarms *) +OR FWD_REV_ALRM +ST KLAXON + +END_FUNCTION_BLOCK +