Editing the ST Assignment Expression
Original instructions
Introduction
After inserting an Equation Network Block double-click the displayed question marks (?????) to enter the ST assignment expression.
Confirming with Enter will start an analysis and the found detected problems will be displayed in a tooltip.
Animation of the memory words used inside the ST assignment expression can be seen in a Variable Window. Please refer to Variable Display Window.
Memory Addresses
A memory address entered in the ST assignment expression must start with one of the following symbols, specifying the address type:
The address type must be followed by an address number (no leading zeros required).
Creating Variables Automatically
After confirming the ST assignment expression with Enter, for every entered address a variable will be created automatically, which is used in the equation network.
Examples
Address
Variable
%M1
_000001
%I1
_100001
%IW1
_300001
%MW1
_400001
The variable type is derived from its address suffix.
Suffix
Variable Type
no suffix
%Mx, %Ix
EBOOL
%IWx, %MWx
UINT
I
INT
DI
DINT
UD
UDINT
R
REAL
W
WORD
The variable is mapped to the associated internal located memory.
For example: %IW1DI becomes the variable _300001_DI:DINT@%IW1.
Constants
Constants in equation networks have the same syntax as in other IEC editors (that is without a leading # character).
Operators
Operators and their precedence
Operation
Symbol
Precedence
Parentheses
(expression)
HIGHEST
Function evaluation
identifier (argument list)
-
Negation
-
-
Complement
~
-
Exponentiation
**
-
Multiply
*
-
Divide
/
-
Add
+
-
Subtract
-
-
Comparison
< , > , <= , >=
-
Equality
=
-
Inequality
<>
-
Boolean AND
&
-
Boolean Exclusive OR
^
-
Boolean OR
|
-
Assignment
:=
LOWEST
The operators **, *, /, +, -, <<, >>, <, >, <=, >=, =, <>, &, ^ and | are supported as they are implemented now in Control Expert ST syntax. That is not all data type combinations for operand types and the result type are supported.
NOTE: Control Expert only supports a floating point value for the ** operator (EXPT-functions).
NOTE: Bitwise logical AND, OR or XOR operations work like in ST syntax.
Ternary Conditional
Ternary conditional (C?t:f ), in contrast to legacy LL984, is not available in Control Expert ST syntax.
The already existing SEL function block provides this functionality and has to be used instead.
Example:
Legacy syntax:
400010 := 300010 < 300020 ? 300004 : 300005
Control Expert syntax:
%MW10 := SEL(%IW10 < %IW20, %IW4, %IW50);
With the following, automatically created by the editor:
_400010 := SEL(_300010 < _300020, _300004, _300005);
Bitwise Shift
Bitwise shift (<<, >>), in contrast to legacy LL984, is not available in Control Expert ST syntax.
The already existing SHL and SHR function blocks provide this functionality and have to be used instead.
Example:
Legacy syntax:
400010 = 300010U << 3
Control Expert syntax:
%MW100W := SHL(%IW10W, 3);
With the following, automatically created by the editor:
_400100_W := SHL(_300010_W, 3);
Function Blocks
In general you can use the function blocks provided for ST language.
In particular the following Control Expert function blocks replace the legacy function blocks listed below.
Legacy Function Name
Control Expert Function Name
Argument Type*
Return Type*
Meaning
ABS
ABS
S,U,L,UL,F
S,U,L,UL,F
absolute value
ARCCOS
ACOS
F
F
arc cosine
ARCSIN
ASIN
F
F
arc sine
ARCTAN
ATAN
F
F
arc tangent
COS
COS
F
F
cosine
COSD
COSD
F
F
cosine of degrees
EXP
EXP
F
F
exponent function (power of e)
(does not need to be a whole number)
FIX
REAL_TO
F
L
convert floating point to integer
(presumes an FP argument)
FLOAT
INT_TO
S, U, L, UL
F
converts integer to floating point
(presumes an integer argument)
LN
LN
F
F
natural logarithm (base e)
LOG
LOG
F
F
common logarithm (base 10)
SIN
SIN
F
F
sine of radians
SIND
SIND
F
F
sine of degrees
SQRT
SQRT
F
F
square root
TAN
TAN
F
F
tangent of radians
TAND
TAND
F
F
tangent of degrees
*: S=INT, U=UINT, L=DINT, UL=UDINT, F=REAL
Example of an LL984 Expression
Legacy syntax:
40701 = 40702U + COS(40703UL) * #8.00135F + SIN(40704);
Control Expert syntax:
%MW701 := REAL_TO_UINT(WORD_TO_REAL(%MW702W) + COS(WORD_AS_REAL(%MW703W, %MW704W)) * 8.00135 + SIN(WORD_TO_REAL(%MW704W)));
With the following, automatically created by the editor:
_400701 := REAL_TO_UINT(WORD_TO_REAL(_400702_W) + COS(WORD_AS_REAL(_400703_W, _400704_W)) * 8.00135 + SIN(WORD_TO_REAL(_400704_W)));