83 lines
1.3 KiB
Markdown
83 lines
1.3 KiB
Markdown
```pascal
|
|
// Block Type: FC
|
|
// Block Number: 1970
|
|
// Original Network Languages: STL, LAD
|
|
|
|
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
|
|
|
|
```
|