西门子S7-200SMART一阶RC低通滤波算法原理与实现
一阶低通滤波算法原理
一阶滤波,又叫一阶惯性滤波,或一阶低通滤波,软件实现RC低通滤波器的功能。
公式中:α为滤波系数,X ( n ) 为本次采样值,Y ( n − 1 ) 为上次滤波输出值,Y ( n ) 为本次滤波输出值。
一阶滤波算法的特点
对于周期干扰有良好的抑制作用(优)
带来了相位滞后,导致灵敏度低(缺)
不能滤除频率高于采样频率的二分之一(称为奈奎斯特频率)的干扰(例如采样频率为100Hz,则它不能滤除50Hz以上的干扰信号)(缺)
滤波系数越小,滤波结果越平稳,灵敏度越低
滤波系数越大,灵敏度越高,但滤波结果越不稳定
一阶滤波无法完美地兼顾灵敏度和平稳度。有时,我们只能寻找一个平衡,在可接受的灵敏度范围内取得尽可能好的平稳度。
而在一些场合,我们希望拥有这样一种接近理想状态的滤波算法。即:当数据快速变化时,滤波结果能及时跟进(灵敏度优先);当数据趋于稳定,在一个固定的点上下振荡时,滤波结果能趋于平稳(平稳度优先)。
一阶滤波算法的应用场景
1、运动控制:
我们的驱动器如果这边的加减速时间没有平滑功能,加减速时间设的非常短的情况下,如果设置一个速度信号,直接一个阶跃信号送给我们的这样的一个驱动器,对后面的机械将会造成一个非常大的冲击,对于这种情况,可以利用一个低通滤波器,对给定值设置值进行一个平滑,将平滑后的速度指令给到后端的驱动器,这样的话后面的驱动器运行会平顺很多,减少阶跃冲器,因为有一些运动控制做随动的场合,这样的驱动器内部的平滑功能是关闭的,所以在PLC程序里面可以利用这样的一个低通滤波器作为点动或者手动速度的给进值,对速度进行一个平滑。
速度阶跃信号
2、PID控制(温度、压力等)
在工业场景中经常使用温度压力进行PID控制,在PID场景中通过应用一阶RC低通滤波算法程序对温度信号进行处理,可以消除这些干扰,使温度控制系统更加稳定。
一阶RC低通滤波算法程序在电气自动化领域可以用于信号处理、系统控制和数据处理等多个实际场景,以提高系统的性能和可靠性。我们可以将经过平滑处理的目标值作为PID的设定值。举个例子,对于一些压力设定值,可以在送入PID的设定值之前对其进行平滑处理,以确保目标值的稳定性。另外,低通滤波器还可以用于对信号进行滤波。以张力测量为例,由于产线上的机械震动,张力信号中可能会受到高频干扰的影响。若不对这些高频干扰进行滤波,直接将其送入后端的张力闭环控制系统,由于PID控制器的微分项会放大高频信号的干扰,这对控制系统是不利的。因此,我们需要对反馈信号进行低通滤波,以滤除系统中的高频成分,使得低频的张力信号通过,从而使信号更加平滑。
PLC程序算法实现
实验器材:
SmartPLC ST30 PLC 一个,
欧姆龙增量式旋转编码器 E6B2-CWZ5B 一个。
编码器接线方式:
接线方式
PLC程序:
1、打开smart软件系统功能块,将I0.0、I0.1设置成脉冲捕捉。
2、设置高速计数器HSC0
可以参考之前的文章
西门子S7-200SMART编码器转速测量程序
3、建立一阶滤波子程序功能块
根据算法公式:Yn=coefficient * Xn+(1-coefficient)* Y(n-1)
4、在中断程序中对功能块进行调用:
5、主程序调用中断程序,并开启中断,设置中断时间10ms
6、通过监控软件采集数据得出,滤波后的数据更加平滑。避免了阶跃信号对设备的冲击。