equal
deleted
inserted
replaced
|
1 FUNCTION_BLOCK CMD_MONITOR |
|
2 VAR_INPUT AUTO_CMD : BOOL ; (* Automated command *) |
|
3 AUTO_MODE : BOOL ; (* AUTO_CMD enable *) |
|
4 MAN_CMD : BOOL ; (* Manual Command *) |
|
5 MAN_CMD_CHK : BOOL ; (* Negated MAN_CMD to debounce *) |
|
6 T_CMD_MAX : TIME ; (* Max time from CMD to FDBK *) |
|
7 FDBK : BOOL ; (* Confirmation of CMD completion |
|
8 by operative unit *) |
|
9 ACK : BOOL ; (* Acknowledge/cancel ALRM *) |
|
10 END_VAR |
|
11 VAR_OUTPUT CMD : BOOL ; (* Command to operative unit *) |
|
12 ALRM : BOOL ; (* T_CMD_MAX expired without FDBK *) |
|
13 END_VAR |
|
14 VAR CMD_TMR : TON ; (* CMD-to-FDBK timer *) |
|
15 ALRM_FF : SR ; (* Note over-riding S input: *) |
|
16 END_VAR (* Command must be cancelled before |
|
17 "ACK" can cancel alarm *) |
|
18 (* Function Block Body *) |
|
19 CMD := AUTO_CMD & AUTO_MODE |
|
20 OR MAN_CMD & NOT MAN_CMD_CHK & NOT AUTO_MODE ; |
|
21 CMD_TMR (IN := CMD, PT := T_CMD_MAX); |
|
22 ALRM_FF (S1 := CMD_TMR.Q & NOT FDBK, R := ACK); |
|
23 ALRM := ALRM_FF.Q1; |
|
24 |
|
25 END_FUNCTION_BLOCK |