|
1 FUNCTION_BLOCK FWD_REV_MON |
|
2 VAR_INPUT AUTO : BOOL ;(* Enable automated commands *) |
|
3 ACK : BOOL ; (* Acknowledge/cancel all alarms *) |
|
4 AUTO_FWD : BOOL ; (* Automated forward command *) |
|
5 MAN_FWD : BOOL ; (* Manual forward command *) |
|
6 MAN_FWD_CHK : BOOL ; (* Negated MAN_FWD for debouncing *) |
|
7 T_FWD_MAX : TIME ; (* Maximum time from FWD_CMD to FWD_FDBK *) |
|
8 FWD_FDBK : BOOL ; (* Confirmation of FWD_CMD completion *) |
|
9 (* by operative unit *) |
|
10 AUTO_REV : BOOL ; (* Automated reverse command *) |
|
11 MAN_REV : BOOL ; (* Manual reverse command *) |
|
12 MAN_REV_CHK : BOOL ; (* Negated MAN_REV for debouncing *) |
|
13 T_REV_MAX : TIME ; (* Maximum time from REV_CMD to REV_FDBK *) |
|
14 REV_FDBK : BOOL ; (* Confirmation of REV_CMD completion *) |
|
15 END_VAR (* by operative unit *) |
|
16 VAR_OUTPUT KLAXON : BOOL ; (* Any alarm active *) |
|
17 FWD_REV_ALRM : BOOL; (* Forward/reverse command conflict *) |
|
18 FWD_CMD : BOOL ; (* "Forward" command to operative unit *) |
|
19 FWD_ALRM : BOOL ; (* T_FWD_MAX expired without FWD_FDBK *) |
|
20 REV_CMD : BOOL ; (* "Reverse" command to operative unit *) |
|
21 REV_ALRM : BOOL ; (* T_REV_MAX expired without REV_FDBK *) |
|
22 END_VAR |
|
23 VAR FWD_MON : CMD_MONITOR; (* "Forward" command monitor *) |
|
24 REV_MON : CMD_MONITOR; (* "Reverse" command monitor *) |
|
25 FWD_REV_FF : SR ; (* Forward/Reverse contention latch *) |
|
26 END_VAR |
|
27 (* Function Block body *) |
|
28 LD AUTO (* Load common inputs *) |
|
29 ST FWD_MON.AUTO_MODE |
|
30 ST REV_MON.AUTO_MODE |
|
31 LD ACK |
|
32 ST FWD_MON.ACK |
|
33 ST REV_MON.ACK |
|
34 ST FWD_REV_FF.R |
|
35 LD AUTO_FWD (* Load inputs to FWD_MON *) |
|
36 ST FWD_MON.AUTO_CMD |
|
37 LD MAN_FWD |
|
38 ST FWD_MON.MAN_CMD |
|
39 LD MAN_FWD_CHK |
|
40 ST FWD_MON.MAN_CMD_CHK |
|
41 LD T_FWD_MAX |
|
42 ST FWD_MON.T_CMD_MAX |
|
43 LD FWD_FDBK |
|
44 ST FWD_MON.FDBK |
|
45 CAL FWD_MON (* Activate FWD_MON *) |
|
46 LD AUTO_REV (* Load inputs to REV_MON *) |
|
47 ST REV_MON.AUTO_CMD |
|
48 LD MAN_REV |
|
49 ST REV_MON.MAN_CMD |
|
50 LD MAN_REV_CHK |
|
51 ST REV_MON.MAN_CMD_CHK |
|
52 LD T_REV_MAX |
|
53 ST REV_MON.T_CMD_MAX |
|
54 LD REV_FDBK |
|
55 ST REV_MON.FDBK |
|
56 CAL REV_MON (* Activate REV_MON *) |
|
57 LD FWD_MON.CMD (* Check for contention *) |
|
58 AND REV_MON.CMD |
|
59 S1 FWD_REV_FF (* Latch contention condition *) |
|
60 LD FWD_REV_FF.Q |
|
61 ST FWD_REV_ALRM (* Contention alarm *) |
|
62 LD FWD_MON.CMD (* "Forward" command and alarm *) |
|
63 ANDN FWD_REV_ALRM |
|
64 ST FWD_CMD |
|
65 LD FWD_MON.ALRM |
|
66 ST FWD_ALRM |
|
67 LD REV_MON.CMD (* "Reverse" command and alarm *) |
|
68 ANDN FWD_REV_ALRM |
|
69 ST REV_CMD |
|
70 LD REV_MON.ALRM |
|
71 ST REV_ALRM |
|
72 OR FWD_ALRM (* OR all alarms *) |
|
73 OR FWD_REV_ALRM |
|
74 ST KLAXON |
|
75 |
|
76 END_FUNCTION_BLOCK |
|
77 |