DATA_BLOCK DB98
STRUCT
AI : ARRAY[1..100] OF
STRUCT
V: ARRAY[1..10] OF INT;
END_STRUCT;
END_STRUCT
BEGIN
END_DATA_BLOCK
//==========================================================================
FUNCTION FC98 : WORD
VAR_INPUT
AI_Value : WORD; // PIW值
AI_ID : INT; //序号从1开始不重复
END_VAR
VAR_Temp
N : INT;
MaxV: INT;
MinV: INT;
Add : DINT;
END_VAR
FOR N:= 10 TO 2 BY -1 DO //转轮
DB98.AI[AI_ID].V[N]:=DB98.AI[AI_ID].V[N-1];
END_FOR;
DB98.AI[AI_ID].V[1]:=WORD_TO_INT(AI_Value); //最新值充进 [1]
MaxV:=-32767;
MinV:=32767;
Add :=0;
FOR N:= 1 TO 10 BY 1 DO
IF DB98.AI[AI_ID].V[N] >= MaxV THEN
MaxV:=DB98.AI[AI_ID].V[N]; //取的最大值
END_IF;
IF DB98.AI[AI_ID].V[N] <= MinV THEN
MinV:=DB98.AI[AI_ID].V[N]; //取的最小值
END_IF;
Add:=Add+DB98.AI[AI_ID].V[N]; //所有值累加
END_FOR;
FC98:=DINT_TO_WORD((Add-MaxV-MinV)/8); //去掉最大和最小值,得平均值
END_FUNCTION