方法1
(* 方法1 *) (*---------------声明部分----------------------*) FUNCTION_BLOCK Filter_ActLoad VAR_INPUT Act_B:REAL; END_VAR VAR_OUTPUT Act_F:REAL; END_VAR VAR arr:ARRAY[0..6] OF REAL := 7(0); MaxValue,MinValue:REAL := 0; i:INT; END_VAR (*---------------实现部分----------------------*) Arr[6] := Arr[5]; Arr[5] := Arr[4]; Arr[4] := Arr[3]; Arr[3] := Arr[2]; Arr[2] := Arr[1]; Arr[1] := Arr[0]; Arr[0] := Act_B; MaxValue :=Arr[0]; MinValue :=Arr[0]; FOR i:=0 TO 6 DO IF arr[i] > MaxValue THEN MaxValue := arr[i]; END_IF IF arr[i] < MinValue THEN MinValue := arr[i]; END_IF END_FOR Act_F := (Arr[0]+Arr[1]+Arr[2]+Arr[3]+Arr[4]+Arr[5]+Arr[6]-MaxValue-MinValue)/5.0;
方法2
(* 方法2 *) (*---------------声明部分----------------------*) FUNCTION_BLOCK Filter_ActLoad_ VAR_INPUT Act_B:REAL; END_VAR VAR_OUTPUT Act_F:REAL; END_VAR VAR A1,A2,A3,A4,A5,A6,A7:REAL := 0; MaxValue,MinValue:REAL; END_VAR (*---------------实现部分----------------------*) Arr[6] := Arr[5]; Arr[5] := Arr[4]; Arr[4] := Arr[3]; Arr[3] := Arr[2]; Arr[2] := Arr[1]; Arr[1] := Arr[0]; Arr[0] := Act_B; MaxValue :=Arr[0]; MinValue :=Arr[0]; FOR i:=0 TO 6 DO IF arr[i] > MaxValue THEN MaxValue := arr[i]; END_IF IF arr[i] < MinValue THEN MinValue := arr[i]; END_IF END_FOR Act_F := (Arr[0]+Arr[1]+Arr[2]+Arr[3]+Arr[4]+Arr[5]+Arr[6]-MaxValue-MinValue)/5.0;