Monday, February 24, 2014

Timers - Pulse a DO and Log cycle time.

Method 1 - Assumes a 1 second cycle

(* init timers to zero at warm start *)
    Valve_Open_Timer = 0;

(* Open a Valve with a Pulse *)
    Valve := 1;
    Valve_Open_Timer = 1;

(* Pulse DO Timer -- if Timer is zero not active *)
IF Valve_Open_Timer <= DO_Time_Delay AND Valve_Open_Timer > 0 THEN
    Valve_Open_Timer := Valve_Open_Timer + 1;
    IF Valve_Open_Timer = DO_Time_Delay THEN
        Valve := 0;

        Valve_Open_Timer := 0;

    END_IF;
END_IF;

Example 2 - use system DateTime (seconds since 1/1/1970)

(* Datetime is a udint (uin32) that reads the system clock 0.9.0 as an ISaGRAF I/O *)
(* INIT clock at start of cycle *)
 StartCycleTime := DateTime;

(* Terminate clock at end of cycle *)
 CycleTime := DateTime - StartCycleTime;

No comments:

Post a Comment