AnnexF/fwd_rev_mon_il.txt
changeset 0 fb772792efd1
equal deleted inserted replaced
-1:000000000000 0:fb772792efd1
       
     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