找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
这个就用一个过渡存储器(如VW100)和一个正常值判断就可以了。
比如正常信号最小值为A值,当AIW0<A时,则不执行VW100=AIW0;否则就执行。
但是这样做必须关闭模拟量滤波功能,否则你看到的永远是最小值A。
模拟量的信号,如果你通过比较精密的示波器来查看的话,在滤波处理前波形一般都会比较糟糕,但是当进入PLC之后,由于扫描周期的存在,其实是取了波形上一些离散的点,这样再次得到的波形会好很多。你再在PLC里做一些软件滤波编程,一般都会得到理想的波形。
根据你这种情况,向你推荐使用“递推平均+去峰值”
关于滤波算法,可以参考下面的文档
http://blog.chinaunix.net/space.php?uid=20801941&do=blog&id=1839008
做法比较简单
首先在内存中(V区)开辟出一个存储模拟量输入值的表格,如果用指针编程,长度是可调的,每个周期对表格进行递推操作,新值进表,最旧的值出表。
再利用“双向冒泡法”找到表内的峰值,去除掉,不列入平均计算范围内。
冒泡法可以参考下面链接
http://wenku.baidu.com/view/5353482f0066f5335a81218e.html
最后对表内值作平均,得到滤波后数值。
表的长度决定信号的灵敏度和抗干扰能力,根据需要灵活设定。
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!