西门子队列程序的写法(先进先出)

一段很长线体,前后各有一个电眼,可以放很多托盘,当第一个盘感应人口电眼时,把数据放放db2.dbw0,当第二个盘再感应那人口电眼时,把这盘数据放db2.dbw0中,先前的第一个盘的数据放db2.dbw2中,进这线体以此类推。当第一个盘出线体感应到出口电眼时,把先前DB2中的其对应的数据放MW0中,当第2个盘出来时,把其对应的数据也放在MW0中。出线体也以此类推。注意:这线体放托盘数量不限,但是不会堆一起。也就是队列先进先出的写法。

最佳答案

1.用一个字例如MW100来计数存放托盘的数量:当入口电眼的上升沿将计数器加1,出口电眼的上升沿将计数器减1。
2.当入口电眼导通时利用循环功能或者用我之前介绍的BLK_COPY方法(http://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_ID=78232&cid=1029)可以保存每个托盘的数据。
3.当出口电眼导通时根据计数器的数值寻址DB2中对应的数据,例如计数器为50,则数据存放在DB2.DBW[MD102],其中MD102=2*(50-1)=98。读取DB2.DBW98到MW0后清零DB2.DBW98,然后将计数器-1即可。

提问者对于答案的评价:
此想法不错,可以用到其他的PLC

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc249666.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月2日 下午5:01
下一篇 2018年12月2日 下午5:01

相关推荐