while_do

Use the while_do loop to continue performing an action while certain conditions are true.
Operands
while bool_expression do
<statement>;
Structured Text
Operand
Type
Format
Description
bool_expression
BOOL
tag
expression
BOOL tag or expression that evaluates to a BOOL value
IMPORTANT:
  • Do not iterate within the loop too many times in a single scan.
  • The controller does not execute any other statements in the routine until it completes the loop.
  • A major fault occurs when completing the loop takes longer than the watchdog timer for the task.
  • Consider using a different construct, such as if_then.
Description
The syntax is:
The following diagrams illustrate how a while_do loop executes, and how an exit statement leaves the loop early.
While the bool_expression is true, the controller
executes only the statements within the while_do loop.
To stop the loop before the conditions are true, use an exit statement.
Affects Math Status Flags
No
Fault Conditions
A major fault will occur if
Fault type
Fault code
the construct loops too long
6
1
Example 1
If performing the following,
Enter this structured text
The while_do loop evaluates its conditions first. If the conditions are true, the controller then executes the statements within the loop.
This differs from the repeat_until loop because the repeat_until loop executes the statements in the construct and then determines if the conditions are true before executing the statements again. The statements in a repeat_until loop are always executed at least once. The statements in a while_do loop might never be executed.
pos := 0;
While ((pos <= 100) and structarray[pos].value <> targetvalue)) do
pos := pos + 2;
Tag.DATA[pos] := SINT_array[pos];
end_while;
Provide Feedback
Have questions or feedback about this documentation? Please submit your feedback here.
Normal