本人最近写了一个五台锅炉共用一个冷却水泵的程序,开始打算用时间戳来记录每台锅炉需要冷却的时间,然后用时间进行排序,但是后来无意中发现fifo可以实现表的先进先出的功能,就抱着学习的目的,用fifo写了本程序。
第一步,先要建立一个表如下图,上电初始化建立一个具有5个值的表,从VW200开始,VW200存放的是表的容量,VW202仿的是当表内的实际个数,然后给vw100-vw108(每台锅炉在表里的id)赋值。
第二部,5个i口作为5台锅炉发来的请求冷却信号,这5个信号必须用上升沿P或者下降沿N来触发
第三步,当表内有数据,且水泵处于休眠状态下,执行先进先出程序,vw300就是目前出去的值(锅炉序号)
第四步,检测当前的先进先出执行到哪台锅炉,对应锅炉就执行输出,这里的q0.1-q0.5就是5台锅炉,vw202和vw300只是方便测试用的,可以删除,m0.1-m0.5都是是同一个水泵的工作信号,为了防止双线圈,才命名不一样
第五步,双线圈的解决办法,q1.0就是水泵电机
fifo这个函数在很多地方都可以用到,排队程序在工业自动化中占比也算大的,但是网络上都找不到详细的说明,希望我这个教程能帮助到大家,给个回复就算谢谢了。日行一善!
閱讀更多 喝點酒就難受 的文章