Method 1
(* Method 1 *)
(* --------------- Declaration part ----------------------*)
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
(* --------------- Implementation part ----------------------*)
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;
Method 2
(* Method 2 *)
(* --------------- Declaration part ----------------------*)
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
(* --------------- Implementation part ----------------------*)
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;