FUNCTION_BLOCK AOI_SCALE_REAL

VAR_INPUT
rInput :REAL;
rInputMin :REAL;
rInputMax :REAL;
rOutputMin :REAL;
rOutputMax :REAL;
END_VAR

VAR
trOutputMin :REAL;
trOutputMax :REAL;
rInputRange :REAL;
rOutpuRange :REAL;
rScaleFactor :REAL;
rInputWithoutOffset: REAL;
rOutputWithoutOffset: REAL;
END_VAR

VAR_OUTPUT
Out_ScaleValue : REAL;
END_VAR


 

IF rInput < rInputMin THEN
rInput := rInputMin;
END_IF

IF rInput > rInputMax THEN
rInput := rInputMax;
END_IF

rInputRange:=rInputMax-rInputMin;
rOutpuRange:=rOutputMax-rOutputMin;

rInputWithoutOffset:=rInput-rInputMin;

rScaleFactor:=rOutpuRange/rInputRange;

rOutputWithoutOffset:=rInputWithoutOffset*rScaleFactor;

Out_ScaleValue:=(rOutputWithoutOffset+rOutputMin);