Siemens PLC SCL 语言滑动平均值滤波实现
SCL 语言是 Siemens PLC 的编程语言,可以使用以下代码实现滑动平均值滤波:
VAR_INPUT
Value : REAL; // 输入值
N : INT; // 滤波器窗口大小
END_VAR
VAR
Sum : REAL := 0; // 累加和
Values : ARRAY[1..100] OF REAL; // 存储最近 N 个值
Index : INT := 1; // 当前值的索引
Count : INT := 0; // 当前已存储的值的数量
Result : REAL := 0; // 滤波后的值
END_VAR
// 滤波器初始化
IF Count < N THEN
Values[Count+1] := Value;
Sum := Sum + Value;
Count := Count + 1;
ELSE
Sum := Sum - Values[Index] + Value;
Values[Index] := Value;
Index := Index + 1;
IF Index > N THEN
Index := 1;
END_IF
END_IF
// 计算滤波结果
IF Count < N THEN
Result := Sum / Count;
ELSE
Result := Sum / N;
END_IF
// 输出滤波结果
RESULT := Result;
这段代码使用一个数组来存储最近 N 个值,然后计算它们的平均值作为滤波结果。每次输入一个新值时,都会更新数组和累加和,然后计算滤波结果。在开始时,如果输入的值数量不足 N,则仅仅计算已经输入的值的平均值。
原文地址: https://www.cveoy.top/t/topic/lHh8 著作权归作者所有。请勿转载和采集!