2 - What is What in CoDeSys 
CoDeSys V2.3 
 2-9 
2.2  Languages... 
CoDeSys supports all languages described by the standard IEC-61131: 
Textual Languages: 
Instruction List (IL) 
Structured Text (ST)  
Grafic Languages: 
Sequential Function Chart (SFC) 
Function Block Diagram (FBD) 
Ladder Diagram (LD) 
Additionally  there  is  available   -  basing  on  the  Function  Block  Diagram  -  the  grafic  Continuous 
Function Chart Editor (CFC). 
2.2.1  Instruction List (IL)... 
An instruction list (IL) consists of a series of instructions. Each instruction begins in a new line and 
contains an operator and, depending on the type of operation, one or more operands separated by 
commas. 
In front of an instruction there can be an identification 
mark 
(label) followed by a colon (:). 
A comment must be the last element in a line. Empty lines can be inserted between instructions. 
Example: 
LD 17 
ST lint (* Kommentar *) 
GE 5 
JMPC next 
LD idword 
EQ istruct.sdword 
STN test 
next: 
Modifiers and operators in IL 
In the IL language the following operators and modifiers can be used. 
Modifiers: 
 C 
with JMP, CAL, RET: 
The instruction is only then executed if the result 
of the preceding expression is TRUE. 
 N 
with  JMPC,  CALC, 
RETC: 
The instruction is only then executed if the result 
of the preceding expression is FALSE. 
 N 
otherwise: 
Negation of the operand (not of the accumulator) 
Below you find a table of all operators in IL with their possible modifiers and the relevant meaning: 
Operator  Modifiers  Meaning 
LD 
Make current result equal to the operand 
ST 
Save current result at the position of the operand 
Then put the Boolean operand exactly at TRUE if the current 
result is TRUE 
Attach pdf to html - software application dll:C# PDF Convert to HTML SDK: Convert PDF to html files in C#.net, ASP.NET MVC, WinForms, WPF application
How to Convert PDF to HTML Webpage with C# PDF Conversion SDK
www.rasteredge.com
Attach pdf to html - software application dll:VB.NET PDF Convert to HTML SDK: Convert PDF to html files in vb.net, ASP.NET MVC, WinForms, WPF application
PDF to HTML Webpage Converter SDK for VB.NET PDF to HTML Conversion
www.rasteredge.com
Languages... 
2-10 
CoDeSys V2.3 
Then put the Boolean operand exactly at FALSE if the current 
result is TRUE 
AND 
N,( 
Bitwise AND 
OR 
N,( 
Bitwise OR 
XOR 
N,( 
Bitwise exclusive OR 
ADD 
Addition 
SUB 
Subtraction 
MUL 
Multiplication 
DIV 
Division 
GT 
GE 
>= 
EQ 
NE 
<> 
LE 
<= 
LT 
JMP 
CN 
Jump to the label 
CAL 
CN 
Call program or function block or  
RET 
CN 
Leave POU and return to caller. 
Evaluate deferred operation 
Click here to get a listing of all IEC operators.  
Example of an IL program while using some modifiers: 
LD 
TRUE 
(*load TRUE in the accumulator*) 
ANDN  BOOL1 
(*execute AND with the negated value of the BOOL1 variable*) 
JMPC  mark 
(*if the result was TRUE, then jump to the label "mark"*) 
LDN 
BOOL2 
(*save the negated value of *) 
ST 
ERG 
(*BOOL2 in ERG*) 
label: 
LD 
BOOL2 
(*save the value of *) 
ST 
ERG 
*BOOL2 in ERG*) 
It is also possible in IL to put 
parentheses after an operation
. The value of the parenthesis is then 
considered as an operand.  
For example: 
LD  2 
MUL 2 
ADD 3 
Erg 
Here is the value of Erg 7. However, if one puts parentheses: 
software application dll:VB.NET Word: VB Tutorial to Convert Word to Other Formats in .NET
is created by Microsoft Word 2007 or later versions into PDF, tiff, bmp introduce diverse VB.NET Word converting functions but also attach detailed programming
www.rasteredge.com
software application dll:VB.NET Image: Image Drawing SDK, Draw Text & Graphics on Image
the text writing function and graphics drawing function, we attach links to dedicated to provide powerful & profession imaging controls, PDF document, image to
www.rasteredge.com
2 - What is What in CoDeSys 
CoDeSys V2.3 
2-11 
LD 2 
MUL (2 
ADD 3 
ST Erg 
the resulting value for Erg is 10, the operation MUL is only then evaluated if you come to ")"; as 
operand for MUL 5 is then calculated. 
2.2.2  Structured Text (ST)... 
The Structured Text consists of a series of instructions which, as determined in high level languages, 
("IF..THEN..ELSE") or in loops (WHILE..DO) can be executed. 
Example: 
IF value < 7 THEN 
WHILE value < 8 DO 
value:=value+1; 
END_WHILE; 
END_IF; 
Expressions 
An 
expression
is a construction which returns a value after its evaluation. 
Expressions are composed of operators and operands. An operand can be a constant, a variable, a 
function call, or another expression. 
Valuation of expressions 
The evaluation of expression takes place by means of processing the operators according to certain 
binding rules
. The operator with the strongest binding is processed first, then the operator with the 
next strongest binding, etc., until all operators have been processed. 
Operators with equal binding strength are processed from left to right. 
Below you find a table of the ST operators in the order of their binding strength: 
Operation 
Symbol 
Binding strength 
Put in parentheses 
(expression) 
Strongest binding 
Function call 
Function name 
(parameter list) 
Exponentiation 
EXPT 
Negate 
Building of complements 
NOT 
Multiply 
Divide 
Modulo 
MOD 
Add 
Subtract 
Compare 
<,>,<=,>= 
Equal to 
Not equal to 
<> 
Boolean AND 
AND 
Boolean XOR 
XOR 
software application dll:VB.NET Image: VB.NET Rectangle Annotation Imaging Control
Able to attach a user-defined shadow to created rectangle annotation using are dedicated to provide powerful & profession imaging controls, PDF document, image
www.rasteredge.com
software application dll:VB.NET Image: VB.NET Sample Code to Draw EAN-13 Barcode on Image
AddFloatingItem(item) rePage.MergeItemsToPage() REFile.SaveDocumentFile(doc, "c:/ean13.pdf", New PDFEncoder How to Attach EAN-13 Barcode Image to Word in VB.NET.
www.rasteredge.com
Languages... 
2-12 
CoDeSys V2.3 
Boolean OR 
OR 
Weakest binding 
There are the following instructions in ST, arranged in a table together with example: 
Instruction type 
Example 
Assignment 
A:=B; CV := CV + 1; C:=SIN(X); 
Calling a function block and 
use of the FB output 
CMD_TMR(IN := %IX5, PT := 300); 
A:=CMD_TMR.Q 
RETURN 
RETURN; 
IF 
D:=B*B; 
IF D<0.0 THEN  
C:=A;  
ELSIF D=0.0 THEN 
C:=B;  
ELSE 
C:=D; 
END_IF;  
CASE 
CASE INT1 OF 
1: BOOL1 := TRUE; 
2: BOOL2 := TRUE; 
ELSE 
BOOL1 := FALSE; 
BOOL2 := FALSE; 
END_CASE; 
FOR 
J:=101; 
FOR I:=1 TO 100 BY 2 DO 
IF ARR[I] = 70 THEN  
J:=I; 
EXIT;  
END_IF;  
END_FOR; 
WHILE 
J:=1; 
WHILE J<= 100 AND ARR[J] <> 70 DO 
J:=J+2; 
END_WHILE;  
REPEAT 
J:=-1; 
REPEAT 
J:=J+2;  
UNTIL J= 101 OR ARR[J] = 70 
END_REPEAT; 
EXIT 
EXIT; 
Empty instruction 
software application dll:VB.NET TIFF: VB.NET Code to Scan Document into TIFF Image File
In general, people often generate those scanned documents in TIFF or PDF file format Here we attach a link which can lead you to find a detailed Visual C# .NET
www.rasteredge.com
2 - What is What in CoDeSys 
CoDeSys V2.3 
2-13 
Assignment operator 
On the left side of an assignment there is an operand (variable, address) to which is assigned the 
value of the expression on the right side with the assignment operator := 
Example:  
Var1 := Var2 * 10; 
After completion of this line Var1 has the tenfold value of Var2. 
Calling function blocks in ST 
A function block is called in ST by writing the name of the instance of the function block and then 
assigning the values of the parameters in parentheses. In the following example a timer is called with 
assignments for the parameters IN and PT. Then the result variable Q is assigned to the variable A. 
The result variable, as in IL, is addressed with the name of the function block, a following point, and 
the name of the variable: 
CMD_TMR(IN := %IX5, PT := 300); 
A:=CMD_TMR.Q 
RETURN instruction 
The RETURN instruction can be used to leave a POU, for example depending on a condition  
IF instruction  
With  the  IF  instruction  you  can  check  a  condition  and,  depending  upon  this  condition,  execute 
instructions.  
Syntax: 
IF <Boolean_expression1> THEN 
<IF_instructions>  
{ELSIF <Boolean_expression2> THEN 
<ELSIF_instructions1>  
ELSIF <Boolean_expression n> THEN 
<ELSIF_instructions n-1>  
ELSE 
<ELSE_instructions>} 
END_IF; 
The part in braces {} is optional. 
If the <Boolean_expression1> returns TRUE, then only the <IF_Instructions> are executed and none 
of the other instructions. 
Otherwise the Boolean expressions, beginning with <Boolean_expression2>, are evaluated one after 
the other until one of the expressions returns TRUE. Then only those instructions after this Boolean 
expression and before the next ELSE or ELSIF are evaluated. 
If none of the Boolean expressions produce TRUE, then only the <ELSE_instructions> are evaluated. 
Example: 
IF temp<17 
THEN heating_on := TRUE; 
ELSE heating_on := FALSE; 
END_IF; 
Here the heating is turned on when the temperature sinks below 17 degrees. Otherwise it remains off.  
Languages... 
2-14 
CoDeSys V2.3 
CASE instruction 
With the CASE instructions one can combine several conditioned instructions with the same condition 
variable in one construct. 
Syntax: 
CASE <Var1> OF 
<Value1>: <Instruction 1> 
<Value2>: <Instruction 2> 
<Value3, Value4, Value5>: <Instruction 3> 
<Value6 .. Value10>: <Instruction 4> 
...  
<Value n>: <Instruction n> 
ELSE <ELSE instruction> 
END_CASE; 
A CASE instruction is processed according to the following model: 
If the variable in <Var1> has the value <Value i>, then the instruction <Instruction i> is executed. 
If <Var 1> has none of the indicated values, then the <ELSE Instruction> is executed. 
If the same instruction is to be executed for several values of the variables, then one can write these 
values one after the other separated by commas, and thus condition the common execution. 
If the same instruction is to be executed for a value range of a variable, one can write the initial value 
and the end value separated by two dots one after the other. So you can condition the common 
condition. 
Example: 
CASE INT1 OF 
1, 5: BOOL1 := TRUE; 
BOOL3 := FALSE; 
2: BOOL2 := FALSE; 
BOOL3 := TRUE; 
10..20: BOOL1 := TRUE; 
BOOL3:= TRUE; 
ELSE 
BOOL1 := NOT BOOL1; 
BOOL2 := BOOL1 OR BOOL2; 
END_CASE; 
FOR loop 
With the FOR loop one can program repeated processes.  
Syntax: 
INT_Var :INT; 
FOR <INT_Var> := <INIT_VALUE> TO <END_VALUE> {BY <Step size>} DO 
<Instructions>  
END_FOR; 
The part in braces {} is optional.  
The  <Instructions>  are  executed  as  long  as  the  counter  <INT_Var>  is  not  greater  than  the 
<END_VALUE>. This is checked before executing the <Instructions> so that the <instructions> are 
never executed if <INIT_VALUE> is greater than <END_VALUE>. 
When <Instructions> are executed, <INT_Var> is always increased by <Step size>. The step size can 
have any integer value. If it is missing, then it is set to 1. The loop must also end since <INT_Var> 
only becomes greater. 
Example: 
FOR Counter:=1 TO 5 BY 1 DO 
Var1:=Var1*2; 
2 - What is What in CoDeSys 
CoDeSys V2.3 
2-15 
END_FOR; 
Erg:=Var1; 
Let us assume that the default setting for Var1 is the value 1. Then it will have the value 32 after the FOR loop. 
Note:
<END_VALUE>  must  not  be  equal  to the  limit  value  of  the  counter  <INT_VAR>.  For  example:  If  the 
variable Counter is of type SINT and if <END_VALUE> is 127, you will get an endless loop. 
WHILE loop 
The WHILE loop can be used like the FOR loop with the difference that the break-off condition can be 
any Boolean expression. This means you indicate a condition which, when it is fulfilled, the loop will 
be executed. 
Syntax: 
WHILE <Boolean expression>  
<Instructions>  
END_WHILE; 
The <Instructions> are repeatedly executed as long as the <Boolean_expression> returns TRUE. If 
the <Boolean_expression> is already FALSE at the first evaluation, then the <Instructions> are never 
executed. If <Boolean_expression>  never assumes the value  FALSE, then  the  <Instructions>  are 
repeated endlessly which causes a relative time delay. 
Note:
The programmer must make sure that no endless loop is caused. He does this by changing the condition in 
the instruction part of the loop, for example, by counting up or down one counter. 
Example: 
WHILE counter<>0 DO 
Var1 := Var1*2; 
Counter := Counter-1; 
END_WHILE 
The WHILE and REPEAT loops are, in a certain sense, more powerful than the FOR loop since one 
doesn't  need  to  know  the  number  of  cycles  before  executing  the  loop.  In  some  cases  one  will, 
therefore, only be able to work with these two loop types. If, however, the number of the loop cycles is 
clear, then a FOR loop is preferable since it allows no endless loops. 
REPEAT loop 
The REPEAT loop is different from the WHILE loop because the break-off condition is checked only 
after the loop has been executed. This means that the loop will run through at least once, regardless 
of the wording of the break-off condition. 
Syntax: 
REPEAT 
<Instructions>  
UNTIL <Boolean expression> 
END_REPEAT; 
The <Instructions> are carried out until the <Boolean expression> returns TRUE. 
If <Boolean expression> is produced already at the first TRUE evaluation, then <Instructions> are 
executed  only  once.  If  <Boolean_expression>  never  assumes  the  value  TRUE,  then  the 
<Instructions> are repeated endlessly which causes a relative time delay. 
Note:
The programmer must make sure that no endless loop is caused. He does this by changing the condition in 
the instruction part of the loop, for example by counting up or down one counter. 
Example: 
REPEAT 
Var1 := Var1*2; 
Counter := Counter-1; 
Languages... 
2-16 
CoDeSys V2.3 
UNTIL 
Counter=0 
END_REPEAT; 
EXIT instruction 
If the EXIT instruction appears in a FOR, WHILE, or REPEAT loop, then the innermost loop is ended, 
regardless of the break-off condition. 
2.2.3  Sequential Function Chart (SFC)... 
The Sequential Function Chart (SFC) is a graphically oriented language which makes it possible to 
describe  the  chronological  order  of  different  actions  within  a  program.  For  this  the  actions  are 
assigned to step elements and the sequence of processing is controlled by transition elements. 
Example for a network in the Sequential Function Chart 
For further information on the SFC Editor see Chapter 5.4.4. 
Step 
A POU written in a Sequential Function Chart consists of a series of steps which are connected with 
each other through directed connections (transitions).  
There are two types of steps.  
The simplified type consists of an action and a flag which shows if the step is active. If the action of a 
step is implemented, then a small triangle appears in upper right corner of the step. 
An IEC step consists of a flag and one or more assigned actions or boolean variables. The associated 
actions appear to the right of the step. 
Action 
An action can contain a series of instructions in IL or in ST, a lot of networks in FBD or in LD, or again 
in Sequential Function Chart (SFC).  
2 - What is What in CoDeSys 
CoDeSys V2.3 
2-17 
With the simplified steps an action is always connected to a step. In order to edit an action, click twice 
with  the mouse on the step to  which the action belongs.  Or  select  the step and select the menu 
command 'Extras' 'Zoom Action/Transition'. In addition, one input or output action per step is possible. 
Actions of IEC steps hang in the Object Organizer directly under their SFC-POU and are loaded with a 
double-clickor  by pressing  <Enter>  in their editor. New actions  can  be  created  with  'Project'  'Add 
Action'. You can assign max. nine actions to one IEC step. 
Entry or exit action 
Additional to a step action you can add an entry action and an exit action to a step. An entry action is 
executed only once, right  after the step has become  active. An exit  action is executed only once 
before the step is deactivated. 
A step with entry action is indicated by an "E" in the lower left corner, the exit action by an "X" in the 
lower right corner. 
The entry and exit action can be implemented in any language. In order to edit an entry or exit action, 
double-clickin the corresponding corner in the step with the mouse. 
Example of a step with entry and exit action: 
Transition / Transition condition 
Between the steps there are so-called transitions. 
A transition condition must have the value TRUE or FALSE. Thus it can consist of either a boolean 
variable, a boolean address or a boolean constant. It can also contain a series of instructions having a 
boolean result, either in ST syntax (e.g. (i<= 100) AND b) or in any language desired (see 'Extras' 
'Zoom Action/Transition'). But a transition may not contain programs, function blocks or assignments!  
In the SFC-Editor a transition condition can be written directly at the transition symbol or an own editor 
window  can  be  opened  for  entering  the  condition  (see  chapter  5.4.4,  ''Extras'  'Zoom 
Action/Transition'). Regard that the instructions entered in the editor window  will take precedence! 
Note:
Besides  transitions,  inching  mode  can  also  be  used  to  skip  to  the  next  step;  see  SFCtip  and 
SFCtipmode. 
Active step 
After calling the SFC POU, the action (surrounded by a double border) belonging to the initial stepis 
executed first. A step, whose action is being executed, is called active. In Online mode active steps 
are shown in blue. 
In a control cycle all actions are executed which belong to active steps. Thereafter the respective 
following steps of the active steps become active if the transition conditions of the following steps are 
TRUE. The currently active steps will be executed in the next cycle. 
Note:
If the active step contains an output action, this will only be executed during the next cycle, provided 
that the transition following is TRUE. 
IEC step 
Along with the simplified steps the standard IEC steps in SFC are available.  
In order to be able to use IEC steps, you must link the special SFC library 
lecsfc.lib
into your project. 
Not more than nine actions can be assigned to an IEC step. IEC actions are not fixed as input, step or 
output actions to a certain step as in the simplified steps, but are stored separately from the steps and 
can be reused many times within a POU. For this they must be associated to the single steps with the 
command '
Extras' 'Associate action'
.  
Languages... 
2-18 
CoDeSys V2.3 
Along with actions, Boolean variables can be assigned to steps.  
The activation and deactivation of actions and boolean variables can be controlled using so-called 
qualifiers. Time delays are possible. Since an action can still be active, if the next step has been 
processed, for example through the qualifier S (Set), one can achieve concurrent processes.  
An associated boolean variable is set or reset with each call of the SFC block. That means, that at 
each call the variable gets re-assigned value TRUE resp. FALSE.  
The actions associated with an IEC step are shown at the right of the step in a two-part box. The left 
field contains the qualifier, possibly with time constant, and the right field contains the action name 
respectively boolean variable name. 
An example for an IEC step with two actions: 
In order to make it easier to follow the processes, all active actions in online mode are shown in blue 
like the active steps. After each cycle a check is made to see which actions are active.  
Pay attention here also to the restrictions on the use of time-qualifiers in actions that are repeatedly 
re-used within the same cycle (see 'Qualifier') ! 
Note:
If an action has been inactivated, it will be executed 
once more
. That means, that each action is executed 
at least twice (also an action with qualifier P).  
In case of a call first the deactivated actions, then the active actions are executed, in alphabetical 
order each time.  
Whether a newly inserted step is an IEC step depends upon whether the menu command 
'Extras' 
'Use IEC-Steps'
has been chosen.  
In the Object Organizer the actions hang directly underneath their respective SFC POUs. New actions 
can be created with 'Project' 'Add Action'. 
In order to use IEC steps you must include in your project the special SFC library Iecsfc.lib . 
SFC POU with actions in the Object Organizer 
Qualifier 
In order to associate the actions with IEC steps the following qualifiers are available: 
Non-stored 
The action is active as long as the step 
overriding Reset 
The action is deactivated 
Set (Stored) 
The action is activated and remains active until a 
Reset 
time Limited 
The action is activated for a certain time, maximum 
as long as the step is active 
time Delayed 
The action becomes active after a certain time if the 
step is still active and then it remains active as long 
as the step is active. 
Documents you may be interested
Documents you may be interested