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