FUNCTION_BLOCK FB333
VAR_INPUT
// Input Parameters
PIW_IN: INT;
HI_LIM_IN: REAL:=100.0;
LO_LIM_IN: REAL:=0.0;
BIPOLAR_IN: BOOL:=FALSE;
END_VAR
VAR_IN_OUT
// I/O Parameters
END_VAR
VAR_OUTPUT
// Output Parameters
SCALED_VAL: REAL;
SCALED_FILTED:REAL;
ERR: BOOL;
END_VAR
VAR_TEMP
// Temporary Variables
RET_VAL_105: WORD;
LOOP_COUNT: INT;
MAX_DATA: REAL;
MIN_DATA: REAL;
TOTAL: REAL;
TOTAL_FILTERD: REAL;
END_VAR
VAR
// Static Variables
DATA_STORE: ARRAY[0..9]OF REAL;
END_VAR
// Statement Section
RET_VAL_105:=SCALE(IN := PIW_IN // IN: INT
,HI_LIM := HI_LIM_IN // IN: REAL
,LO_LIM := LO_LIM_IN // IN: REAL
,BIPOLAR := BIPOLAR_IN // IN: BOOL
,OUT :=SCALED_VAL // OUT: REAL
); // WORD
IF RET_VAL_105<>0 THEN ERR:=TRUE ;
ELSE ERR:=FALSE;
END_IF;
MAX_DATA:=DATA_STORE[0];
MIN_DATA:=DATA_STORE[0];
TOYAL:=0.0;
TOTAL_FILTERD:=0.0;
FOR LOOP_COUNT:= 0 TO 8 BY 1 DO
// Statement Section
DATA_STORE[ LOOP_COUNT]:= DATA_STORE[ LOOP_COUNT+1];
END_FOR;
DATA_STORE[9]:=SCALED_VAL;
FOR LOOP_COUNT:= 0 TO 9 BY 1 DO
// Statement Section
IF MAX_DATA END_IF;
IF MIX_DATA>DATA_STORE[ LOOP_COUNT] THEN MIX_DATA:=DATA_STORE[ LOOP_COUNT];
END_IF;
TOYAL:= TOYAL+ DATA_STORE[ LOOP_COUNT];
END_FOR;
TOTAL_FILTERD:= TOYAL-MIX_DATA-MAX_DATA;
SCALED_FILTED:= TOTAL_FILTERD/8.0;
END_FUNCTION_BLOCK