签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
对于输入的模拟量怎么设计一个 模拟量在十分钟内波动超过一定数值则输出报警 的程序段
例如: 液面在十分钟内波动超过3cm,或者在60分钟内波动超过10cm 则输出报警
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1689485&b_id=4&s_id=0&num=13
楼说描述的不准确。 你这个不叫波动, 叫采样偏差。 必须先滤波,然后进行周期比较偏差。
既然说波动,那就和平均值有关系了。假设你的信号1s取样一次,那么计算十分钟的波动则需要建立一个600个元素的数组,采用fifo队列,把数据输入数组中,然后数组求平均值,平均值和当前值求差后求却对之,如果结果大于3则输出报警。
如果abs(pv-average(600个数组元素的值))>=3.0则警告为1,否则警告为0
这种玩意,建议还是上位机去折腾比较好。
PLC感觉没这么多内存没这么多运算量可以这样折腾。
如果每1秒采样一次,60分钟就是3600秒,3600个Word的数组保存的60分钟偏差值缓存,然后还要每秒都要FIFO要计算3600个偏差和,PLC不用干其他事了。如果很多个模拟量要这样折腾PLC直接罢工了。
一阶滤波是干啥的?
一个公式解决问题。
yn = a * yn + (1 - a ) * value;
yn: 滤波输出
0 < a < 1, 一般取a > 0.9; 越大, 滤波效果越强;
value: 当前读入的实际值;
引用3楼详细内容:
人家要的是规定时间内的波动差和,而不是每段时间内的差和,与一阶滤波没啥关系。
引用5楼详细内容:
不滤波的情况下搞采样偏差, 很大概率不能用。 参考下 编码器的滤波 和 每周期采用速度偏差。
还有粉料重量滤波 和 周期喷吹速度。
可以说, 如果不滤波, 这种程序就没有实际意义。
请问大家有没有相关案例或者程序段可以参考一下
我给你的思路你去做了吗?
这是工控行业现场经常会遇到的问题啊,监测某个液位,压力,温度的变化快慢的情况。
我们都这么做的,假设第1s读个测量值P1,存在一个地址,10s后再读下测量值P2,存在另个地址,
拿(p2-p1)/监测的时长==测量值变化率,也就是斜率。
变化率大于某个设定值就触发报警或者其他动作,反之,无动作。
在第2次读取测量值的同时,又开始下一轮计时,把第3次测量值P3,存入一个地址,
同样用上面的公式去处理数据,
第4次测量数据来了,又存入第1个地址,
就这样新的一圈又开始了,一圈一圈的存储,计算,存储循环。。。。。。
楼上说明的很详细了,可以编程使用
10楼说的方法可行,因为按照楼主的意思应该是变化率高就报警,而不是信号采集不准确或者是波动较大
用一个比较数值的大小就可以实现的
这个可以学习一下!
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录