📖HomeBack 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().
Using Sequential Function Charts (SFC) as an Alternative to Structured Text
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.