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 LD T_CMD_MAX |
|
20 ST CMD_TMR.PT (* Store an input to the TON FB *) |
|
21 LD AUTO_CMD |
|
22 AND AUTO_MODE |
|
23 OR( MAN_CMD |
|
24 ANDN AUTO_MODE |
|
25 ANDN MAN_CMD_CHK |
|
26 ) |
|
27 ST CMD |
|
28 IN CMD_TMR (* Invoke the TON FB *) |
|
29 LD CMD_TMR.Q |
|
30 ANDN FDBK |
|
31 ST ALRM_FF.S1 (* Store an input to the SR FB *) |
|
32 LD ACK |
|
33 R ALRM_FF (* Invoke the SR FB *) |
|
34 LD ALRM_FF.Q1 |
|
35 ST ALRM |
|
36 |
|
37 END_FUNCTION_BLOCK |