不应该引入延迟的低通滤波器

问题描述

我正在尝试在测量电动机速度时对其进行滤波,为此,我实现了以下低通滤波器: enter image description here

考虑到Ts = 10 us(采样时间),我选择fc = 500Hz,并用'zoh'近似来获得离散传递函数。 从离散传递函数可以得到差分方程:

y(k)= a * y(k-1)+(1-a)x(k)

其中,a = exp(-wc * Ts)

在C代码中:

 w_real[0] = exp(-2*pi*fc*Ts*1e-6)*w_real[1] + (1-exp(-2*pi*fc*Ts*1e6))*60/(MOTOR.NPolePairs*delay*CLCK_SPD_PERIOD*1e-9);   
 w_real[1] = w_real[0];    

W_real是包含电动机角速度值的矢量,w_real 1用于存储最后一个值(y(k-1))。操作“ 60 /(MOTOR.NPolePairs delay CLCK_SPD_PERIOD1e-9”与实际速度x(k)的计算相对应。该低通滤波器不应包括对系统的任何延迟,因为它的极点为s = -2 pi fc = -3141,距离系统的两个复数极点(s = 1000 +-878i)足够远,但是,当我应用滤波器时,w_real的值会延迟。

下图显示了系统的阶跃响应(0.5 * u(t)),红色的图形带有低通滤波器,蓝色的图形带有低通滤波器: enter image description here

增益的差异与蓝色图表有关,是电动机的数学模型。如果我退出滤波器,将获得快速响应,与模型更相似: enter image description here

我很困惑,为什么这个过滤器会带来这么长的延迟?

最后,当我模拟模型和滤波器的阶跃响应时,G(s)* LPF(s)不会出现延迟。

关于, 何塞·安东尼奥。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)