段①:变量的初始化。其实如果滤波周期较小或者程序运行开始滤波的结果对系统运行影响不大,此段不要也行。(引申一下,有时PLC刚上电,由于某些模拟量信号读取的较慢,会造成开机就报警。正常操作只要复位下就可以,但客户会有质疑。我通常的做法是PLC上电后,报警子程序延迟几秒接通)
段②、③:使用定时器生成一个固定的采样周期,在每个接通周期,采样值累加,滤波计数递增。
段④:当滤波计数到达设定的采样次数,求取数据在该滤波周期的平均值。接着将滤波计数和滤波累加值清0,为下一滤波周期准备。
下面看一下滤波效果:
采样周期100ms,采样次数10
对随机干扰有一定效果;
采样周期100ms,采样次数30
对随机干扰有一定效果,但数据滞后时间较长;
采样周期10ms,采样次数10
数据比较同步,但滤波效果不好;