Geo SCADA Knowledge Base
Access vast amounts of technical know-how and pro tips from our community of Geo SCADA experts.
Link copied. Please paste this link to share this article on your social media post.
Originally published on Geo SCADA Knowledge Base by Anonymous user | June 10, 2021 03:11 AM
📖 Home Back
In structured text, there is no wait, sleep or pause function. You could do while loops to delay the code, however that just locks the logic thread for an extended time (which is bad
There is a simple way to introduce a loop count into logic, however your program must be running on interval rather than on-input processed and the effective delay will be a multiple of the interval. E.g.:
PROGRAM CountTest
VAR
Count AT %M(.Count.Value) : INT;
Action AT %M(.Action.CurrentState) : INT;
END_VAR
IF Count < 40 THEN
Count := Count + 1;
ELSIF Count = 40 THEN
Action := 1; (* Do whatever you need to do *)
Count := 999; (* This sets the count to a "useless" value. To restart the count set it back to 0 in the database *)
END_IF;
END_PROGRAM
The above code, when the database item Count is set to 0, will count up to 40 (so will be 40 seconds with a 1 second execution interval) and then execute whatever action is required. Once done it sets the Count to something out of the way (999 in this case) ready to be set back to 0 the next time it's needed. The Count variable could be a Variable object defined in the database or an internal variable within the logic program defined as VAR RETAIN.
The above code is simple, however for some scenarios isn't very suitable. An alternative is at the start of the calculation to calculate a date and time when the "delay is up" and then re-execute the logic program on schedule and checking that the stored date and time is not less than NOW().
For more information on how logic executes refer to Logic Execution.
Structured Text isn't the best solution for implementing sleep and wait functions in ClearSCADA's logic engine although is the most popular. SFC functionality can use transitions which can use time based delays similar to TON functions and branching depending on the various conditions and has a program flow much better suited to this kind of behaviour.
However, SFCs have similar limitations as FBDs and as such the current functionality available is less than provided by the more flexible and powerful ST. For example, SFCs cannot execute SQL statements against the database although could call the Execute method on a separate Structured Text program to do so. For more information on limitations see Comparison of Logic Languages.
Go: Home Back
Link copied. Please paste this link to share this article on your social media post.
Create your free account or log in to subscribe to the board - and gain access to more than 10,000+ support articles along with insights from experts and peers.