// 初始化缓存
FOR i:= 1 TO 10 DO
filter_buffer[i] := 0.0;
END_FOR
// 更新缓存,计算平均值
filter_buffer[buffer_index] := analog_value;
buffer_index := buffer_index + 1;
IF buffer_index > 10 THEN
buffer_index := 1;
END_IF
sum := 0.0;
FOR i:= 1 TO 10 DO
sum := sum + filter_buffer[i];
END_FOR
temp := sum / 10.0;
// 初始化缓存
FOR i:= 1 TO 10 DO
filter_buffer[i] := 0.0;
END_FOR
// 更新缓存,计算中值
filter_buffer[buffer_index] := analog_value;
buffer_index := buffer_index + 1;
IF buffer_index > 10 THEN
buffer_index := 1;
END_IF
// 排序缓存
FOR i:= 1 TO 9 DO
FOR j:= i+1 TO 10 DO
IF filter_buffer[i] > filter_buffer[j] THEN
temp := filter_buffer[i];
filter_buffer[i] := filter_buffer[j];
filter_buffer[j] := temp;
END_IF
END_FOR
END_FOR