恭喜,你发布的帖子
发布于 2020-08-09 09:14:29
15楼
上面是plc通过AE04一个通道测得某传感器在相邻1毫秒之间的增量,单位:分度。这个变化率应该接近设备的最大变化率了。
传感器是一个磁致伸缩尺。这是设备的最大速度。
这样的信号用什么滤波方法好?
数据中看见有些增量是相邻的增量的两倍。这个是什么原因导致的呢?究竟是不是1毫秒间隔太大了?
随时的1毫秒,模块都已经准备好了信号。所以没有出现相邻1毫秒是相同数值。(如果用相邻两个扫描周期测的话,就会出现相邻两个周期出现相同的数值,此时应该是模块来不及刷新。)但是1毫秒已经是最小的了。同样的括号原因,也不见得扫描可以读到每一毫秒的采集信号。假如扫描有4毫秒,假如程序没有滤波,那么程序相邻两个扫描就丢失了两三次转换的结果。
此时,还是那句问题:这样的信号用什么滤波方法好?
滤波系数选多少合适?这得看实际信号与期望值有关。结合曲线图来分析更有效率。
发一个一阶滤波的曲线图,你可以根据期望值连选择系数范围。
一阶滤波就是低通滤波,衰减高频通过低频,如果模拟电子计数过关的话,应该能够理解低通滤波。
计算周期?这个要看你需要的信号的频率来决定了。
比如你说的400Hz(2.5ms)/50%的方波,那么根据检测测量原理中的推荐1/10滤波对0.25ms及更高频的信号进行RC滤波,那么得到的是边角圆滑的矩形波而不是实际的边角尖峰波(比如开关电源MOS管驱动波形整形)。
又比如要从AM调制广播中检波出音频信号这种也可以算是低通滤波。只取调制波的音频轮廓,过滤高频调制信号。
平均值滤波消耗RAM?很明显吧,平均值滤波需要保存很多个历史值到表中的,这些历史值都是一直保存在RAM中的。越多的模拟量使用平均值滤波,就需要越多个表,对于单片机只有1KB RAM来说,这真是太奢侈了。哪怕是PLC也是12KB RAM,如果一个表要保存16个AI就消耗32个BYTE,12KB的RAM也就300多个模拟量滤波表。而一阶滤波根本不需要历史值,所以根本就不会大量啃噬RAM,哪怕1000个滤波也不怎么占用RAM。
消除干扰脉冲,最常用的就是平均值滤波+去掉最大、最小值。
很多场合,滤波是采用多种滤波算法结合来得到期望的信号的,而不是仅采用单一滤波算法。
其实,对于模拟量滤波,在输入端并联一个合适的滤波电容比什么算法都要简单高效稳定。
请填写推广理由:
分享
只看
楼主