1.3 KiB
1.3 KiB
// Block Type: FC
// Block Number: 1970
// Original Network Languages: LAD, STL
FUNCTION "WritePeripheral" : Void
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
Analog_Value : Real;
MAX_Analog_Value : Real;
MIN_Analog_Value : Real;
MAX_Out : Int;
MIN_Out : Int;
END_VAR
VAR_OUTPUT
PAW : Word;
END_VAR
VAR_TEMP
Range : Real;
Scale : Real;
Scale_Range : Real;
Analog_Value_Used : Real;
Buffer : Bool;
END_VAR
BEGIN
// Network 1: (Original Language: LAD)
// Check if Analog_Value is correct
"Analog_Value_Used" := "Analog_Value";
IF "Analog_Value" > "MAX_Analog_Value" THEN
"Analog_Value_Used" := "MAX_Analog_Value";
END_IF;
IF "Analog_Value" < "MIN_Analog_Value" THEN
"Analog_Value_Used" := "MIN_Analog_Value";
END_IF;
"Buffer" := TRUE;
// Network 2: (Original Language: STL)
// --- BEGIN STL Network 2 ---
L "Analog_Value_Used"
L "MIN_Analog_Value"
SUB_R
T "Scale"
L "MAX_Analog_Value"
L "MIN_Analog_Value"
SUB_R
T "Range"
L "Scale"
L "Range"
DIV_R
T "Scale_Range"
L "MAX_Out"
L "MIN_Out"
SUB_I
ITD
DTR
L "Scale_Range"
MUL_R
RND
L "MIN_Out"
ADD_I
T "PAW"
// --- END STL Network 2 ---
END_FUNCTION