ParamManagerScripts/backend/script_groups/TwinCat/.example/WRITEPERIPHERIAL.EXP

24 lines
540 B
Plaintext

(* @PATH := '\/Functions_Collection' *)
(* @SYMFILEFLAGS := '0' *)
FUNCTION WritePeripherial : WORD
VAR_INPUT
i_Analog : REAL ;
i_MaxAnalog : REAL ;
i_MinAnalog : REAL ;
i_PerMin : UINT ;
i_PerMax : UINT ;
END_VAR
VAR
mSlope : REAL ;
mZero : REAL ;
END_VAR
(* @END_DECLARATION := '0' *)
IF i_MaxAnalog <> i_MinAnalog THEN
mSlope := (i_PerMax - i_PerMin) / (i_MaxAnalog - i_MinAnalog) ;
mZero := i_PerMin - i_MinAnalog * mSlope ;
WritePeripherial := REAL_TO_WORD (i_Analog * mSlope + mZero ) ;
END_IF
END_FUNCTION