24 lines
540 B
Plaintext
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
|