代码如下:
FUNCTION_BLOCK _105_STARMA_5 (* 移动平均 5次 后采样 移动平均滤波算法 50ms *)
(* 移动平均 5次 减掉最大值 + 减掉最小值 + 然后平均值 后采样
1. 第一次 1.2.3.4.5 减掉最大值 + 减掉最小值 + 其他三个 累加然后 /3 = 平均值
2. 第二次 2.3.4.5.6 减掉最大值 + 减掉最小值 + 其他三个 累加然后 /3 = 平均值
3. 第三次 3.4.5.6.7 减掉最大值 + 减掉最小值 + 其他三个 累加然后 /3 = 平均值
...... 依次循环
平滑 移动平均滤波算法 10ms *)
VAR_INPUT
IN:REAL ; (* 输入数值 *)
END_VAR
VAR_OUTPUT
Out:REAL ; (* 输出数值 *)
END_VAR
VAR
ID: INT ;
VALUE_temp_OUT:ARRAY[0..1] OF REAL; (* 0 最小值 1 最大值 *)
RETAIN_data_temp: ARRAY [0..5] OF REAL; (* 记录数据 *)
END_VAR
(* 初始 *)
RETAIN_data_temp[4]:= RETAIN_data_temp[3] ;
RETAIN_data_temp[3]:= RETAIN_data_temp[2] ;
RETAIN_data_temp[2]:= RETAIN_data_temp[1] ;
RETAIN_data_temp[1]:= RETAIN_data_temp[0] ;