(* @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