t
ep
rin
Structured Text (ST)
no
t fo
rr
TM246
t
ep
rin
rr
t fo
Requirements
Training modules:
TM210 The Basics of Automation Studio
TM211 Automation Studio Online Communication
no
TM213 Automation Runtime
TM223 Automation Studio Diagnostics
Software:
None
Hardware:
None
TM246
Structured Text (ST)
Table of contents
4
1.1 Objectives
1. INTRODUCTION
ep
rin
2. STRUCTURED TEXT FEATURES
2.1 General information
2.2 Properties
2.3 Possibilities
3. THE BASICS OF STRUCTURED TEXT
3.1 Expressions
3.2 Assignment
3.3 Comments
8
8
8
9
3.4 Operator priorities
10
4. COMMAND GROUPS
12
12
4.2 Arithmetic operations
14
4.3 Comparison operators
18
4.4 Decisions
18
4.5 Case statements
27
4.6 Loops
30
t fo
rr
4.1 Boolean operations
4.7 Calling function blocks
36
4.8 Pointers and dynamic variables
39
5. SUMMARY
40
6. EXERCISES
41
7. APPENDIX
42
42
7.2 Functions
43
7.3 Solutions
45
no
7.1 Keywords
Structured Text (ST) TM246
Introduction
1. INTRODUCTION
rr
ep
rin
Structured Text is a high level language. For those who are comfortable
programming in Basic, PASCAL or Ansi C, learning Structured Text is
simple. Structured Text (ST) has standard constructs that are easy to
understand, and is a fast and efficient way to program in the automation
industry.
t fo
Fig. 1 Book printing: then and now
no
The following chapters will introduce you to the use of commands, key
words, and syntax in Structured Text. Simple examples will give you a
chance to use these functions and more easily understand them.
TM246
Structured Text (ST)
Introduction
1.1 Objectives
Participants will get to know the programming language Structured Text
(ST) for programming techincal applications.
ep
rin
You will learn the individual command groups and how they work together.
no
t fo
Fig. 2 Overview
rr
You will get an overview of the reserved keywords in ST.
Structured Text (ST) TM246
Structured Text Features
2. STRUCTURED TEXT FEATURES
2.1 General information
ep
rin
ST is a text-based high-level language for programming automation
systems. Simple standard constructs enable fast and efficient
programming. ST uses many traditional qualities of high level languages,
including variables, operators, functions, and elements for controlling the
program flow.
So, what is Structured Text? The "Structured" refers to the qualities of a
high level language that make structured programming possible. The "Text"
refers to the ability to use text in place of symbols, as in the ladder
diagram.
no
t fo
rr
No other programming language can replace ST. Every programming
language has its advantages and disadvantages. The main advantage of ST
is that complex mathematical calculations can be programmed easily.
TM246
Structured Text (ST)
Structured Text Features
2.2 Properties
Structured Text is characterized by the following features:
High-level text language
Structured programming
Easy to use standard constructs
Fast and efficient programming
Self explanatory and flexible use
Similar to PASCAL
Easy to use for people with experience in PC programming
languages
Conforms to the IEC 61131-3 standard
ep
rin
2.3 Possibilities
Automation Studio supports the following functions:
rr
Digital and analog inputs and outputs
Logical operation
Logical comparison expressions
Arithmetic operations
Decisions
Step sequencers
Loops
Function blocks
Optional use of dynamic variables
Diagnostic tools
no
t fo
Structured Text (ST) TM246
The Basics of Structured Text
3. THE BASICS OF STRUCTURED TEXT
3.1 Expressions
Example: Expressions
Fig. 3 Expressions
3.2 Assignment
ep
rin
An expression is a construct that returns a value after it has been
evaluated. Expressions are composed of operators and operands. An
operand can be a constant, a variable, a function call or another
expression.
rr
The assignment of a value to a variable through a result of an expression or
a value. The assignment consists of a variable on the left side, which is
designated to the result of a calculation on the right side by the assignment
operator ":=". All assignments must be closed with a semicolon ";".
t fo
Example: Assignment
Fig. 4 Assignment
no
When the code line has been processed, the value of variable "Var1" is
twice as big as the value of variable "Var2".
TM246
Structured Text (ST)
The Basics of Structured Text
3.3 Comments
Example: Comment
ep
rin
Comments are sometimes left out, but are nevertheless an important
component of the source code. They describe the code and make it more
easy to read. Comments make it possible for you or others to read a
program easily, even long after it was written. They are not compiled and
have no influence over the execution of the program. Comments must be
placed between a pair of parenthesis and asterix "(*comment*)".
Fig. 5 One-line comment
no
t fo
rr
Fig. 6 Multi-line comment
Structured Text (ST) TM246
The Basics of Structured Text
3.4 Operator priorities
The use of several operators in one line brings up the question of priority
(order of execution). The execution is determined by priority.
Operator
ep
rin
Expressions are executed starting with the operator of highest priority,
followed by the next highest, and so on until the expression has been
completely executed. Operators with the same priority are executed from
left to right as they appear in the expression.
Symbol / Syntax:
()
Function call
Call argument(s)
Examples
LN(A), MAX(X), etc.
Exponent
**
Negation
NOT
Multiplication
Division
Modulo division (whole
number remainder of
division)
MOD
Addition
Subtraction
<, >, <=, >=
t fo
Comparisons
Equal to
Not equal to
<>
Boolean AND
AND
Boolean exclusive OR
XOR
Boolean OR
OR
no
10
TM246
Highest priority
rr
Parentheses
Structured Text (ST)
Lowest priority
The Basics of Structured Text
The order of execution at runtime:
Fig. 7 Order of execution
ep
rin
Example: Operator priorities without parentheses
Multiplication is executed first, then addition, and finally subtraction.
The order of operations can be changed by putting higher priority
operations in parentheses. This is shown in the next example.
Example: Operator priorities with parentheses
rr
As shown in the following figure, the use of parentheses influences the
execution of the expression.
Fig. 8 Order of execution
no
t fo
The expression is executed from left to right. The operations in
parentheses are executed first, then the multiplication, since the
parentheses have higher priority. You can see that the parentheses lead
to a different result.
Structured Text (ST) TM246
11
Command Groups
4. COMMAND GROUPS
ST has the following command groups:
ep
rin
4.1 Boolean operations
Boolean operations
Arithmetic operations
Comparison operations
Decisions
Case statements
The operands must not necessarily be the data type BOOL.
Boolean operations:
Symbol
Logical operation
Examples
NOT
Binary negation
a := NOT b;
AND
Logical AND
a := b AND c;
OR
Logical OR
XOR
Exclusive OR
Input
rr
Truth table:
a := b OR c;
AND
OR
XOR
t fo
a := b XOR c;
no
These operators can be used to formulate logical expressions, or they can
be used to represent conditions. The result is always TRUE (logical 1) or
FALSE (logical 0).
12
TM246
Structured Text (ST)
Command Groups
Fig. 9 AND operation
ep
rin
Example: Boolean operation
Fig. 10 Source code for AND operation
ST allows any number of parenthesis.
Task: Light control
rr
The output "DoLight" should be ON when the button "BtnLigntOn" is
pressed. It should remain ON until the button "BtnLightOff" is pressed.
t fo
Create a solution for this task using boolean operations.
no
Fig. 12 Light control
Structured Text (ST) TM246
13
Command Groups
4.2 Arithmetic operations
A key factor in favor of using a high level language is the accessibility of
arithmetic operations.
ep
rin
4.2.1 Basic arithmetic operations
ST provides basic arithmetic operations for your operation:
Symbol
Arithmetic operation
Example
:=
Assignment
a := b;
Addition
a := b + c;
Subtraction
a := b - c;
Multiplication
a := b * c;
Division
a := b / c;
MOD
Modulo (display division
remainder)
a := b mod c;
The data type is a very important factor. Note the following table:
Data types
rr
Syntax
Res
Res := 8 / 3;
Res := 8 / 3;
Res := 8.0 / 3;
Op 2
INT
INT
INT
REAL
INT
INT
2.0
REAL
REAL
INT
2.6667
INT
REAL
INT
Error
t fo
Res := 8.0 / 3;
Op 1
Result
* Compiler error message: Type mismatch: Cannot convert REAL to INT.
You can see the that the result is dependent of the syntax as well as the
data types used.
Note:
no
Left data type := right data type;
14
TM246
Structured Text (ST)
Command Groups
4.2.2 Implicit data type conversion
BOOL
SINT
BOOL
BOOL
SINT
INT
INT
DINT
DINT
USINT
USINT
UINT
UINT
UDINT
UDINT
REAL
REAL
INT
DINT
USINT
UINT
UDINT
REAL
INT
DINT
USINT
UINT
UDINT
REAL
DINT
INT
UINT
UDINT
REAL
DINT
DINT
UDINT
REAL
UINT
UDINT
REAL
UDINT
REAL
DINT
INT
DINT
UINT
DINT
UINT
UDINT
UDINT
UDINT
UDINT
REAL
REAL
REAL
REAL
REAL
REAL
t fo
rr
Data
type
ep
rin
This type of conversion is done by the compiler. It automatically converts
the smaller data types to the larger one used in the expression. If an
expression contains one or more operators with different data types, they
are all converted to the same data type before the expression is resolved.
Fig. 13 Implicit data type conversion by the compiler
no
Example: Data conversion
Fig. 14 Implicit data type conversion
SINT_Var2 is converted to INT, then added, then assigned to the result
variable (INT_Result).
Structured Text (ST) TM246
15
Command Groups
4.2.3 Explicit data type conversion
Example: Overflow?!
ep
rin
Explicit data type conversion is also known simply as type conversion or as
Typecast. As you already know, the expression should have the same data
type on both sides, but there is something else to remember.
At first sight, everything looks OK. However, the sum (INT_Weight1 +
INT_Weight2) can be larger than can be stored as data type INT. In this
case, an explicit data type conversion must be carried out.
Example: Overflow taken into consideration.
no
t fo
rr
The variable DINT_TotalWeight must be the data type DINT. At least one
variable on the right side of the expression must be converted to the data
type DINT. The conversions functions are found in the OPERATOR library.
16
TM246
Structured Text (ST)
Command Groups
Task: Aquarium
ep
rin
The temperature of an aquarium is measured at two different places. Create a
program that calculates the average temperature and displays it at an analog
output.
t fo
rr
Don't forget that analog inputs and outputs must be data type INT.
no
Fig. 15 Aquarium
Structured Text (ST) TM246
17
Command Groups
4.3 Comparison operators
Logical comparison
expression
Example
ep
rin
Symbol
In high level languages like ST, simple constructs can be used to compare
variables. These return either the value TRUE or FALSE.
Equal to
<>
Not equal to
IF a <> b THEN
>
Greater than
IF a > b THEN
>=
Greater than or equal to
IF a >= b THEN
<
Less than
IF a < b THEN
<=
Less than or equal to
IF a <= b THEN
Note:
IF a = b THEN
4.4 Decisions
rr
The comparison operations and logical operations are mainly used as
logical conditions for IF, ELSEIF, WHILE and UNTIL statements.
( IF (a > b) AND (d >= e) THEN )
t fo
The IF statement is used to create decisions in the program. You are
already familiar with the comparison operators, and they can be used here.
There are several types of IF statements:
Simple IF statement
IF ELSE statement
IF ELSIF statement
Nested IF
no
Decision
IF THEN
Syntax
IF a > b THEN
Result := 1;
ELSIF THEN
ELSIF a > c THEN
Result := 2;
ELSE
ELSE
Result := 3;
END_IF
18
TM246
END_IF
Structured Text (ST)
Description
1. Comparison
1. Statement(s)
2. Comparison (optional)
2. Statement(s)
Above IF statments are not TRUE (optional)
3. Statement(s)
End of decision
Command Groups
4.4.1 IF
ep
rin
This is the most simple IF statment.
Fig. 17 Simple IF statement in a program
Fig. 16 Simple IF statement
t fo
rr
The IF statement is tested for the result TRUE. If the result is FALSE, the
program advances to the line after the END_IF statement. The function of
the IF statement can be a single comparison, but it can also be multiple
comparisons connected by AND, OR, etc..
Example: IF statement with multiple comparisons
no
Fig. 18 Statement with multiple comparisons
Structured Text (ST) TM246
19
Command Groups
4.4.2 ELSE
ep
rin
The ELSE statement is an extension of the simple IF statement. Only one
ELSE statment can be used per IF statement.
Fig. 20 IF ELSE in a program
rr
Fig. 19 IF ELSE statment
no
t fo
If the IF meets condition A, then the A instruction(s) are executed. If the IF
does not meet condition A, then the B instruction(s) are executed.
20
TM246
Structured Text (ST)
Command Groups
4.4.3 ELSIF
t fo
rr
ep
rin
One or more ELSE_IF statements allow you to test a number of conditions
without creating a confusing software structure with many simple IF
statements.
no
Fig. 21 IF-ELSIF-ELSE statement
Fig. 22 IF-ELSIF-ELSE in a program
At runtime the decisions are processed from top to bottom. If the result of
a decision is TRUE, the corresponding statements are executed. Then the
program continues from after the END_IF. Only those decisions that
Structured Text (ST) TM246
21
Command Groups
ep
rin
Task: Weather station - Part I
correspond to the first TRUE decision are executed, even if subsequent
decisions are also TRUE. If none of the IF or ELSE_IF decisions is TRUE, the
statement in the ELSE branch is executed.
A temperature sensor measures the outside temperature. The
temperature is read via an analog input (1=10), and should be
displayed inside the house in text form.
If the temperature is under 18C, the display should read "Cold".
If the temperature is between 18C and 25C, the display should
read "Opt".
If the temperature is over 25C, the display should read "Hot".
t fo
rr
Create a solution using IF, ELSEIF, and ELSE statements.
no
Fig. 23 Thermometer
Note:
In ST, text is assigned to a string variable as follows:
StringVar := COLD
22
TM246
Structured Text (ST)
Command Groups
4.4.4 Nested IF statement
rr
ep
rin
A nested IF statement is tested only if previous condidions have been met.
Every IF requires its own END_IF so that the order of conditions is correct.
Fig. 25 Nested IF statement in a program
t fo
Fig. 24 Nested IF statement
It is helpful to indent every nested IF statement and the corresponding
expressions. As many IF statments can be nested as needed. It is possible,
however, that the compiler will run out of memory after the 40th level. Also,
that kind of extensive nesting is evidence of poor programming style. It
becomes nearly impossible to get a clear overview of the code.
no
After three nesting levels, it is better to find another way to structure the
program.
Structured Text (ST) TM246
23
Command Groups
Task: Weather station - Part II
ep
rin
Evaluate the temperature and the humidity.
The text "OPT" should only appear when the humidity is between 40 and
75% and the temperature is between 18 and 25C. Otherwise "Temp.
OK" should be displayed.
no
t fo
rr
Solve this task using a nested IF statement.
24
TM246
Structured Text (ST)
Command Groups
rr
ep
rin
Two simple IF statements produce nearly the same effect as one nested IF
statement. A marker variable, or flag, can be requested in multiple
statements. The first IF statment describes the flag, which is then utilized
by other IF statements.
t fo
Fig. 27 Two IF statements
Fig. 26 Two IF statements
no
In this case, both IF statements have the same priority. If both IF
statements evaluate the same variable for different values, you should use
a CASE statement.
The CASE statement should be used when:
IF constructs require too many levels
Too many ELSE_IF statments are used
The CASE statement is much easier to read in these cases.
Structured Text (ST) TM246
25
Command Groups
no
t fo
rr
ep
rin
In comparison to the IF statment, the CASE statment also has the
advantage that comparisons are only made once, which makes the
program code more effective.
26
TM246
Structured Text (ST)
Command Groups
4.5 Case statements
ep
rin
The CASE statement compares a step variable with multiple values. If one
of these comparisons is a match, the steps that compare to that step are
executed. If none of the comparisons is a match, there is an ELSE branch
similar to an IF statement that is then executed.
After the statements have been executed, the program continues from after
the END_CASE statement.
Keywords
Syntax
CASE OF
Description
CASE step variable OF
1,5:
2:
3,4,6..10:
Display := MATERIAL
For 1 and 5
Display := TEMP
For 2
Display := OPERATION
For 3,4,6,7,8,9,10
END_CASE
End of CASE
no
t fo
rr
END_CASE
Beginning of CASE
Fig. 28 CASE statement
Structured Text (ST) TM246
27
Command Groups
ep
rin
Only one step of the CASE statement is processed per program cycle.
Note:
rr
Fig. 29 CASE statement in a program
t fo
Constants can be used instead of numbers for the steps in a CASE
statement. This makes the program much easier to read.
Syntax of the CASE statement:
no
A CASE statement begins with CASE and is terminated with
END_CASE. Each of these key words must occupy its own line.
The variable between CASE and OF must be a UINT variable.
Only whole number numerical expressions can be used for the
definition of the individual steps in the CASE statement.
The ranges and values of the step variable(s) may not overlap each
other.
28
TM246
Structured Text (ST)
Command Groups
Task: Brewing tank
ep
rin
The fill level of a brewing tank is monitored for low, ok, and high levels.
Use an output for each of the low, ok, and high levels.
The level of liquid in the tank is read as an analog value and is internally
converted to 0-100%. If the contents sink below 1%, a warning tone
should be triggered.
no
t fo
rr
Create a solution using the CASE statement.
Fig. 30 Brewing tank
Structured Text (ST) TM246
29
Command Groups
4.6 Loops
ep
rin
In many applications, it is necessary for sections of code to be executed
multiple times during a cycle. This type of processing is also referred to as
a loop. The code in the loop is executed until a defined termination
condition is met.
Loops help make programs shorter and easier to follow. Program
expandability is also an issue here. Loops can be nested.
Depending on the structure of a program, it is possible for an error in the
program to cause the processing gets stuck repeating the loop until the
time monitor in the central unit responds with an error.
To prevent such endless loops from occuring, one should almost always
include in the programming a way for the loop to be aborted after a
defined number of repetitions or to run to a certain limit.
ST offers several types of loops to choose from:
no
t fo
Limited
FOR
Unlimited
WHILE
REPEAT
rr
30
TM246
Structured Text (ST)
Command Groups
4.6.1 FOR
Key words
The FOR statement is used to run a program section for a limited number
of repetitions. For all other applications, WHILE or REPEAT loops are used.
Syntax
FOR i:=StartVal TO StopVal {BY Step} DO
Res := value + 1;
END_FOR
The section in {}
is optional.
ep
rin
FOR TO BY DO
Description
Loop body
statement(s)
END_FOR
End of FOR
The statements in the FOR loop are
repeated. At every repetition, the loop
counter is raised by "StepVal". The
two control variables "StartVal" and
"EndVal" determine the start value and
end value of the loop counter. After
the end value is reached, the program
continues from after the END_FOR
statement. The control variables must
both be the same data type and
cannot be described by any of the
statements in the loop body.
no
t fo
rr
Fig. 1 FOR statement in a program
Fig. 31 FOR statement
The FOR statement raises or lowers the loop counter until it reaches the
end value. The step size is always 1, unless otherwise specified with "BY".
The termination condition, the loop counter, is evaluated with every
repetition of the loop.
Structured Text (ST) TM246
31
Command Groups
Task: Crane
Fig. 32 Crane
ep
rin
5 separate loads are suspended from a crane. In order to determine the
total load, you have to add the individual loads together.
no
t fo
rr
Create a solution for this task using a FOR loop.
32
TM246
Structured Text (ST)
Command Groups
4.6.2 WHILE
ep
rin
The WHILE loop can be used in the same way as the FOR loop, except that
the condition can be any boolean expression. If the condition is met, then
the loop is executed. The WHILE loop is used to repeat statements as long
as a particular condition remains TRUE.
Keywords
WHILE DO
Description
WHILE i<4 DO
Boolean condition
Res := value + 1;
Statement
i := i + 1;
Statement
END_ WHILE
End of WHILE
t fo
rr
END_ WHILE
Syntax
Fig. 2 WHILE statement in a program
Fig. 33 WHILE statement
no
The instructions are executed repeatedly for as long as the condition
returns TRUE. If the condition returns FALSE during the first evaluation, the
instructions are never executed.
Note:
If the condition never assumes the value FALSE, the statements are
repeated endlessly, resulting in a runtime error.
Structured Text (ST) TM246
33
Command Groups
4.6.3 REPEAT
REPEAT
Syntax
REPEAT
UNTIL
Start loop
Res := value + 1;
Statement
i := i + 1;
Statement
UNTIL i > 4
Termination condition
END_ REPEAT
End loop
t fo
rr
END_ REPEAT
Description
ep
rin
Keywords
The REPEAT loop differs from the WHILE loop in that the termination
condition is only checked once the loop has been executed. This means
that the loop runs at least once, regardless of the termination condition.
Fig. 35 REPEAT statement in a program
Fig. 34 REPEAT statement
no
The statements are executed repeatedly until the UNTIL condition is TRUE.
If the UNTIL condition is true from the beginning, the statements are only
executed once.
Note:
If the UNTIL condition never assumes the value TRUE, the statements
are repeated endlessly, resulting in a runtime error.
34
TM246
Structured Text (ST)
Command Groups
4.6.4 EXIT
ep
rin
The EXIT statement can be used with all types of loops before their
termination condition occurs.
Fig. 37 EXIT statement in a program
no
t fo
rr
Fig. 36 EXIT statement
Fig. 39 EXIT statement in a nested FOR statement in a
program
If the EXIT statement is used in a nested
loop, only the loop in which the EXIT
statement is located is ended. After the
loop is ended, the program continues
from after the END_ statement.
Fig. 38 EXIT statement in a nested FOR
statment
Structured Text (ST) TM246
35
Command Groups
4.7 Calling function blocks
ep
rin
In ST, a function block is called a function block instance, and the
necessary transfer parameters are placed in parentheses.
Fig. 41 Calling a function block in a program
rr
Fig. 40 Calling a function block
no
t fo
Before a function block is called, one must describe the variables that are
to be used as input parameters. The code for calling a function block
occupies one line. Then the outputs of the function block can be read.
36
TM246
Structured Text (ST)
Command Groups
ep
rin
Function block call in detail:
Fig. 42 Detail view of a function block call
no
t fo
rr
First the function block name is entered, then the transfer parameters are
assigned in parentheses, separated by commas. The code for calling a
function block is closed with a semicolon.
Structured Text (ST) TM246
37
Command Groups
Task: Bottle counter
ep
rin
Create a program that counts the bottles on a conveyor belt. Use the CTU
(up counter) function block found in the STANDARD library.
Fig. 43 Bottle counter
Note:
no
t fo
rr
The Automation Studio online help comes in handy when working with
function blocks.
38
TM246
Structured Text (ST)
Command Groups
4.8 Pointers and dynamic variables
B&R offers the option of using pointers in ST.
ep
rin
A dynamic variable can be assigned a memory address during runtime.
This procedure is referred to as the referencing or initialization of a
dynamic variable.
As soon as the dynamic variable is initialized, it can be used to access the
memory content to which it now "points".
Fig. 44 Referencing a dynamic variable
no
t fo
rr
As you can see, the operator ADR() is used. It returns the memory address
of the variable in parentheses. The data type of this address is UDINT. The
statement is then closed with a semicolon.
Structured Text (ST) TM246
39
Summary
5. SUMMARY
rr
ep
rin
Structured Text is a high level language that offers a wide range of
functionality. It contains all the tools necessary for an application.
Fig. 45 Book printing: then and now
no
t fo
After completing this training module, you are ready to program your own
ST tasks. You can always use the module as a reference.
This programming language is especially powerful when using arithmetic
functions and formulating mathematical calculations.
40
TM246
Structured Text (ST)
Exercises
6. EXERCISES
Task: Box lift
ep
rin
Two conveyor belts (doConvTop, doConvBottom) transport boxes to a
lift.
If the photocell is (diConvTop, diConvBottom) is activated, the
corresponding conveyor belt is stopped and the lift is called.
If the lift has not been called, it returns to the appropriate position
(doLiftTop, doLiftBottom).
When the lift is in the correct position (diLiftTop, diLiftBottom), the lift
conveyer belt (doConvLift) is turned on until the box is completely on
the lift (diBoxLift).
Then the lift moves to the unloading position (doLiftUnload). When it
reaches this position (diLiftUnload), the box is moved to the unloading
belt.
t fo
rr
As soon as the box has left the lift, the lift is free for the next request.
no
Fig. 46 Box lift
Structured Text (ST) TM246
41
Appendix
7. APPENDIX
7.1 Keywords
ep
rin
Key words are commands that can be used in ST. In the Automation Studio
Editor, these are displayed in blue. You are already familiar with many of
them; here is a list of more. Key words may not be used as variable names.
Keyword
Description
Assignment of an address to a dynamic variable.
BIT_CLR
A := BIT_CLR(IN, POS) A is the value of the variable IN that
results when the bit at position POS is deleted. IN remains
unchanged.
BIT_SET
A := BIT_CLR(IN, POS) A is the value of the variable IN that
results when the bit at position POS is set. The IN operand
remains unchanged.
BIT_TST
Determination of a bit within a value. A is the state of the bit of
the IN value that is at position POS.
BY
See FOR statement.
CASE
See CASE statement.
DO
See WHILE statement.
EDGE
rr
ACCESS
Determines the negative and positive edges of a bit.
EDGENEG
EDGEPOS
ELSE
Determines the negative edge of a bit.
Determines the positive edge of a bit.
See IF statement.
ELSIF
t fo
See IF statement.
See CASE statement.
END_FOR
See FOR statement.
END_IF
See IF statement.
END_REPEAT
See REPEAT statement.
END_WHILE
See WHILE statement.
EXIT
See EXIT statement.
FOR
See FOR statement.
IF
See IF statement.
REPEAT
See REPEAT statement.
RETURN
Can be used to end a function.
THEN
See IF statement.
TO
See FOR statement.
UNTIL
See REPEAT statement.
WHILE
See WHILE statement.
no
END_CASE
42
TM246
Structured Text (ST)
Appendix
7.2 Functions
Example
ep
rin
Function
There are some functions that can be used in ST that do not require you to
insert a library into the project. In the Automation Studio Editor, these
function calls are displayed in blue. You are already familiar with some of
them. More are listed here.
Returns the absolute value of a number. ABS(-2) returns 2.
ACOS
Returns the cosine of a number. (inverted cosine function).
ADR
Returns a variable's address.
AND
Logical AND for bit operations.
ASIN
Returns the arc sine of a number (inverse function of sine).
ASR
Arithmetic shifting of an operand to the right: A := ASR (IN, N) IN is
shifted N bits to the right, the left is filled with the sign bit.
ATAN
Returns the arc tangent of a number (inverse function of tangent).
COS
Returns the cosine of a number.
EXP
Exponential function: A := EXP (IN).
EXPT
One operand raised to the power of another operand:
A := EXPT (IN1, IN2).
LIMIT
Limitation: A = LIMIT (MIN, IN, MAX) MIN is the lower limit, MAX is
the upper limit for the result. If IN is less than MIN, then the MIN
result is returned. If IN is greater than MAX, then the MAX result is
returned. Otherwise, the IN result is returned.
LN
Returns the natural logarithm of a number.
LOG
Returns the base-10 logarithm of a number.
MAX
Maximum function. Returns the larger of two values.
MIN
Minimum function. Returns the lesser of two values.
MOD
Modulo division of a USINT, SINT, INT, UINT, UDINT, DINT type
variable by another variable of one of these types.
MOVE
The contents of the input variable are copied to the output variable.
The := symbol is used as the assignment operator.
t fo
rr
ABS
no
"A := B;" is the same as "A := MOVE (B);"
MUX
Selection: A = MUX (CHOICE, IN1, IN2, ... INX);
CHOICE specifies which of the operators IN1, IN2, ... INX is returned
as a result.
NOT
Negation of a bit operand by bit.
OR
Logical OR operation by bit.
ROL
Rotates an operand's bits to the left: A := ROL(IN, N); The bits in IN
are shifted N times to the left, the far left bit being pushed in again
from the right.
Structured Text (ST) TM246
43
Appendix
Rotates an operand's bits to the right: A := ROR (IN, N); The bits in
IN are shifted N times to the right, the far right bit being pushed in
again from the left.
SEL
Binary selection: A := SEL (CHOICE, IN1, IN2) CHOICE must be type
BOOL. If CHOICE is FALSE, then IN1 is returned. Otherwise, IN2 is
returned.
SHL
Shifts an operand's bits to the left: A := SHL (IN, N); IN is shifted N
bits to the left, the right side is filled with zeroes.
SHR
Shifts an operand's bits to the right: A := SHR (IN, N); IN is shifted N
bits to the right, the left side is filled with zeroes.
SIN
Returns the sine of a number.
sizeof
This function returns the number of bytes required by the specified
variable.
SQRT
Returns the square root of a number.
TAN
Returns the tangent of a number.
TRUNC
Returns the integer part of a number.
XOR
Logical EXCLUSIVE OR operation by bit.
no
t fo
rr
ep
rin
ROR
44
TM246
Structured Text (ST)
Appendix
7.3 Solutions
Task: Aquarium
ep
rin
Task: Light control
rr
Task: Weather station - Part I
no
t fo
Task: Weather station - Part II
Structured Text (ST) TM246
45
Appendix
t fo
Task: Crane
rr
ep
rin
Task: Brewing tank
no
Task: Bottle counter
46
TM246
Structured Text (ST)
Appendix
no
t fo
rr
ep
rin
Task: Box lift
Structured Text (ST) TM246
47
Appendix
no
t fo
rr
ep
rin
Notes
48
TM246
Structured Text (ST)
rr
ep
rin
Appendix
Overview of training modules
TM600 The Basics of Visualization
TM610 The Basics of ASiV
TM630 Visualization Programming Guide
TM640 ASiV Alarm System, Trend and Diagnostic
TM670 ASiV Advanced
t fo
TM210 The Basics of Automation Studio
TM211 Automation Studio Online Communication
TM213 Automation Runtime
TM220 The Service Technician on the Job
TM223 Automation Studio Diagnostics
TM230 Structured Software Generation
TM240 Ladder Diagram (LAD)
TM241 Function Block Diagram (FBD)
TM246 Structured Text (ST)
TM250 Memory Management and Data Storage
TM261 Closed Loop Control with LOOPCONR
no
TM400 The Basics of Motion Control
TM410 The Basics of ASiM
TM440 ASiM Basic Functions
TM441 ASiM Multi-Axis Functions
TM445 ACOPOS ACP10 Software
TM446 ACOPOS Smart Process Technology
TM450 ACOPOS Control Concept and Adjustment
TM460 Starting up Motors
TM480 Hydraulic Drive Control
TM500 The Basics of Integrated Safety Technology
TM510 ASiST SafeDESIGNER
TM540 ASiST SafeMC
TM700 Automation Net PVI
TM710 PVI Communication
TM711 PVI DLL Programming
TM712 PVIServices
TM730 PVI OPC
TM800 APROL System Concept
TM810 APROL Setup, Configuration and Recovery
TM811 APROL Runtime System
TM812 APROL Operator Management
TM813 APROL XML Queries and Audit Trail
TM830 APROL Project Engineering
TM840 APROL Parameter Management and Recipes
TM850 APROL Controller Configuration and INA
TM860 APROL Library Engineering
TM865 APROL Library Guide Book
TM870 APROL Python Programming
TM890 The Basics of LINUX
Structured Text (ST) TM246
49
t fo
no
Internationality
50
TM246
Structured Text (ST)
Weblink
Copyright Model Number
TM246TRE.00-ENG 0907
2007 by B&R. All rights reserved.
All trademarks presented are the property of their respective company.
We reserve the right to make technical changes.
ep
rin
rr
Appendix