Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- TYPE "udtRuntimeCountS"
- VERSION : 0.1
- STRUCT
- usSec : USInt; // Seconds
- usMin : USInt; // Minutes
- diHours : DINT; // Hours
- bReset : BOOL; // Counter reset
- END_STRUCT;
- END_TYPE
- FUNCTION "fcRunTimeS" : VOID
- { S7_Optimized_Access := 'TRUE' }
- VERSION : 0.1
- VAR_INPUT
- bEnable : BOOL; // Counter enable
- bClock1s : BOOL; // 1s clock positive flank
- END_VAR
- VAR_IN_OUT
- udtRuntimeCounter : "udtRuntimeCountS"; // Runtime data
- END_VAR
- BEGIN
- (*
- fcPRunTimeS
- *)
- // -- Counter reset
- //
- IF #udtRuntimeCounter.bReset THEN
- #udtRuntimeCounter.usSec := 0;
- #udtRuntimeCounter.usMin := 0;
- #udtRuntimeCounter.diHours := 0;
- #udtRuntimeCounter.bReset := FALSE;
- END_IF;
- // -- Enabled and 1 second pulse
- //
- IF #bEnable AND #bClock1s THEN
- #udtRuntimeCounter.usSec += 1;
- IF #udtRuntimeCounter.usSec >= 60 THEN
- #udtRuntimeCounter.usSec := 0;
- #udtRuntimeCounter.usMin += 1;
- END_IF;
- IF #udtRuntimeCounter.usMin >= 60 THEN
- #udtRuntimeCounter.usMin := 0;
- #udtRuntimeCounter.diHours += 1;
- END_IF;
- END_IF;
- END_FUNCTION
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement