How Can We Help?
CoDeSys – boucles
Rappel des boucles sous CoDeSys
CASE
CASE <Var1> OF
<value1>:<instruction1>
<value2>:<instruction2>
<value3, value4, value5>:<instruction3>
<value6 ... value10>:<instruction4>
...
<value n>:<instruction n>
{ELSE <ELSE-instruction>}
END_CASE;
Example
CASE iVar OF
1, 5:
bVar1 := TRUE;
bVar3 := FALSE;
2:
bVar2 := FALSE;
bVar3 := TRUE;
10..20:
bVar1 := TRUE;
bVar3 := TRUE;
ELSE
bVar1 := NOT bVar1;
bVar2 := bVar1 OR bVar2;
END_CASE;
IF THEN ELSE
IF <condition> THEN
<statements>
( ELSIF <condition> THEN
<statements> )*
( ELSE
<statements> )?
END_IF;
// ( ... )* None, once or several times
// ( ... )? Optional
Example
PROGRAM PLC_PRG
VAR
iTemp: INT;
xHeatingOn: BOOL;
xOpenWindow: BOOL;
END_VAR
IF iTemp < 17 THEN
xHeatingOn := TRUE;
ELSIF iTemp > 25 THEN
xOpenWindow := TRUE;
ELSE
xHeatingOn := FALSE;
END_IF;
REPEAT
REPEAT
<instructions>
UNTIL <boolean expression>
END_REPEAT;
Example
REPEAT
Var1 := Var1*2;
iCounter := iCounter-1;
UNTIL
iCounter = 0
END_REPEAT;
WHILE
WHILE <boolean expression> DO
<instructions>
END_WHILE;
Example
WHILE iCounter <> 0 DO
Var1 := Var1 * 2
iCounter := iCounter - 1;
END_WHILE;
FOR
FOR <counter> := <start value> TO <end value> {BY <increment> } DO
<instructions>
END_FOR;
Example
FOR iCounter := 1 TO 5 BY 1 DO
iVar1 := iVar1 * 2;
END_FOR;
Erg := iVar1;