6 arithmetic (l_arit), Arithmetic (l_arit), Function library lenzedrive.lib – Lenze DDS Function library Drive User Manual
Page 21: Analog signal processing, Parameter codes of the instances, Function, Function in st

Function library LenzeDrive.lib
Analog signal processing
2.2.6
Arithmetic (L_ARIT)
2−11
L
LenzeDrive.lib EN 1.7
2.2.6
Arithmetic (L_ARIT)
This FB can arithmetically combine two analog signals.
L_ARIT
±32767
nOut_a
byFunction
nIn1_a
x/(1-y)
/
+
-
*
x
y
nIn2_a
Fig. 2−9
Arithmetic (L_ARIT)
VariableName
DataType
SignalType
VariableType
Note
nIn1_a
Integer
analog
VAR_INPUT
nIn2_a
Integer
analog
VAR_INPUT
nOut_a
Integer
analog
VAR_OUTPUT
The signal is limited to ±32767.
byFunction
Byte
VAR CONSTANT RETAIN
Selection of the function
Parameter codes of the instances
VariableName
L_ARIT1
L_ARIT2
SettingRange
Lenze
byFunction
C0338
C0600
0 ... 5
1
Function
Selection of the function
Arithmetic function
Notes
byFunction = 0
nOut_a = nIn1_a
byFunction = 1
nOut_a = nIn1_a + nIn2_a
byFunction = 2
nOut_a = nIn1_a − nIn2_a
byFunction = 3
nOut_a
+
(nIn1_a)
@ (nIn2_a)
16384
byFunction = 4
nOut_a
+
nIn1_a
|nIn2 a| @
164
If the denominator = 0,
the denominator is set = 1.
byFunction = 5
nOut_a
+
nIn1_a
16384
* nIn2_a @
16384
Function in ST
CASE byFunktion OF
0: nOut_a:=nIn1_a;
1: nOut_a:= DINT_TO_INT ( LIMIT (−32767,( INT_TO_DINT (nIn1_a)+ INT_TO_DINT (nIn2_a)),32767));
2: nOut_a:= DINT_TO_INT ( LIMIT (−32767,( INT_TO_DINT (nIn1_a)− INT_TO_DINT (nIn2_a)),32767));
3: nOut_a:= DINT_TO_INT ( LIMIT (−32767,(( INT_TO_DINT (nIn1_a)* INT_TO_DINT (nIn2_a))/16384),32767));
4: IF (nIN2_a=0) THEN
nOut_a= DINT_TO_INT ( LIMIT (−32767,(( INT_TO_DINT (nIn1_a)*164)),32767));
ELSE
nOut_a= DINT_TO_INT ( LIMIT (−32767,(( INT_TO_DINT (nIn1_a)*164)/ ABS (nIn2_a)),32767));
END_IF
5: IF (16384− INT_TO_DINT (nIn2_a)=0) THEN
nOut_a= DINT_TO_INT ( LIMIT (−32767,(( INT_TO_DINT (nIn1_a)*16384),32767));
ELSIF (16384− INT_TO_DINT (nIn2_a)>32767) THEN
nOut_a= DINT_TO_INT ( LIMIT (−32767,(( INT_TO_DINT (nIn1_a)*16384/32767),32767));
ELSIF (16384− INT_TO_DINT (nIn2_a)<−32767) THEN
nOut_a= DINT_TO_INT ( LIMIT (−32767,(( INT_TO_DINT (nIn1_a)*16384/−32767),32767));
ELSE
nOut_a= DINT_TO_INT ( LIMIT (−32767,(( INT_TO_DINT (nIn1_a)*16384)/(16384− INT_TO_DINT (nIn2_a)))
END_IF
END_CASE ;