当前位置: 国联资源网 > 公司 > 公司新闻 > 槐荫区商务服务公司新闻 > 电气自动化培训之PLC模拟量滤波算法实战

电气自动化培训之PLC模拟量滤波算法实战

来源: 中研高科(山东)教育科技发展有限公司 | 时间:2025-10-21 | 阅读量:82

PLC模拟量滤波算法实战:编写一个一阶滞后滤波程序稳定采样值


一阶滞后滤波原理

它的核心思想是“新旧结合,平滑过渡”。它不是完全信任最新的采样值,而是将本次采样值与上一次的滤波输出值进行加权平均,从而得到一个更平滑、更稳定的结果。

公式如下:
本次滤波输出值 = (1 - α) * 上次滤波输出值 + α * 本次采样值

其中,α(平滑系数) 是一个介于0和1之间的数,它决定了滤波的“力度”:

  • α 趋近于 1:滤波效果弱,响应快。输出值几乎等于采样值。

  • α 趋近于 0:滤波效果强,响应慢。输出值非常平滑,但滞后严重。

在S7-1200/1500中实现

我们将在TIA Portal中创建一个FC来实现此功能。

  1. 创建FC:新建一个FC,命名为“Filter_FirstOrderLag”。

  2. 定义接口变量

    • Input:

      • SampleValue: REAL // 本次采样的原始值

      • FilterCoeff: REAL // 平滑系数 α (推荐范围 0.01 ~ 0.3)

    • InOut:

      • LastValue: REAL // 静态变量,用于存储上一次的滤波结果

    • Output:

      • FilteredValue: REAL // 本次滤波后的输出值

  3. 编写ST代码
    在FC的代码区中,输入以下ST语言:

    pascal
    // 一阶滞后滤波算法 FilteredValue := (1.0 - FilterCoeff) * LastValue + FilterCoeff * SampleValue; // 更新上一次的滤波结果,为下一次计算做准备 LastValue := FilteredValue;

使用与调试

  1. 在OB1(主循环组织块)中调用这个FC。

  2. 将需要滤波的模拟量输入通道(如PIW752转换后的工程值)连接到SampleValue。

  3. 为FilterCoeff赋值。如何选择α?

    • 信号跳动剧烈:选择一个较小的α,如0.05或0.02,获得强滤波效果。

    • 需要快速响应:选择一个较大的α,如0.2或0.3,让输出能跟上真实信号的变化。

    • 通常从0.1开始调试,观察曲线,根据实际情况微调。

实例演示:
假设LastValue初始为0,FilterCoeff设为0.2。采样值突然从0跳变到100。

  • 第一次计算:输出 = (1-0.2)*0 + 0.2*100 = 20

  • 第二次计算:输出 = (1-0.2)*20 + 0.2*100 = 16 + 20 = 36

  • 第三次计算:输出 = (1-0.2)*36 + 0.2*100 = 28.8 + 20 = 48.8
    ... 可以看到,输出是平稳地逼近100,而不是突然跳变。

优势与注意事项:

  • 优势:能有效平滑周期性干扰,算法简单,计算量小。

  • 注意:会带来相位滞后,滤波效果越强,滞后越严重。对于要求快速响应的控制系统(如快节奏的流量控制),需要谨慎选择α值,或在必要时采用更高级的滤波算法。

通过这个简单的FC,您就拥有了一个强大的软件滤波器,可以轻松应对大多数模拟量干扰问题,让您的控制系统运行更加稳定可靠。


公众号

小程序

在线客服