我想用200做一个小程序:1小时内如果某个开关量值触发10次则报警,请大神指点。
问题补充:
即第10次触发距离第一次触发不到1个小时。
最佳答案
昨天没有太多时间写,今天有时间也有PLC,写了如图的程序,并且用CPU在线进行了测试。你用时注意指针前面的 "&" 和 “*” 的用法,不要用错了。
1、网络1
利用表格做了一个队列,用于存储测试点10次上升沿的的时刻。
表格及指针初始化,表格空间 22 个字,字空间从 VW0-VW42,其中:
VW0 是表格的最大元素数。
VW2 是表格现有元素数。
VD4 是第1个沿的时刻 VD8 是第2个沿的时刻 VD12 是第3个沿的时刻
VD16 是第4个沿的时刻 VD20 是第5个沿的时刻 VD24 是第6个沿的时刻
VD28 是第7个沿的时刻 VD32 是第8个沿的时刻 VD36 是第9个沿的时刻
VD40 是第10个沿的时刻
VD100 数据指针是指向最后一次时刻应放在什么地方用的。
2、网络2
数据组织在表格中,当表格中已经有前 10 次的启始时间,则将最先到的第一次弹出,用两次先进先出 FIFO 是因为时间数据是双字型的,而标准的表格是中的元素是字类型的,一次要弹出两个字才可以将最先记录的时间弹出。
当不够10次时,只管将数据放到表格中。
3、网络3
够 10 次了,则计算第 10 次触发与第一次触发的时间间隔,并判断输出报警。报警部分可以按你的要求更改。
4、本程序实现的第11次与第2次的时差,第12次与第3次的时间差,以此类推。并且本程序经过了在线PLC测试。只是对报警部分你可按要求改动。
5、看本程序要用到下面资料
S7-200 SMART 表格指令(内附例程)
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-smart-portal/200SmartTop/SmartSMS/042.html
优化定时器
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-smart-portal/200SmartTop/programming/optimizer%20timer/optimize%20timer.html
S7-200 SMART 间接寻址
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-smart-portal/200SmartTop/SmartSMS/070.html
图片说明:
提问者对于答案的评价:
多谢大神讲解,太细致了!
最佳答案作者回复:
您客气了,互相交流,共同提高!!!
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc360857.html