[西门子] 巧用“先入先出”指令,掌握设备顺序启动编程

[复制链接]
查看126 | 回复0 | 2024-6-26 09:19:10 | 显示全部楼层 |阅读模式
>导读:我记得之前发过一篇文章是关于“随机启停”的编程程序思路,文章发布后,有老铁觉得思路太复杂了说是建议使用“先入先出”指令,感谢老铁的建议,我那就写一篇“先入先出”指令来控制电机的程序,大家碰到类似的问题看看是否可以借鉴,比如包裹分拣项目、物料自动剔除等项目应该会用到类似的场景。
如图所示,设备上总共有7台电机,每台电机对应一个启动按钮,当操作人员任意按下几个按钮后,再按下总启动按钮,将自动按顺序依次启动操作人员所按下按钮的对应电机。每台电机启动时间间隔2秒。按下停止按钮立刻全部停止。


2.程序段1是每个扫码周期都复位两个标志位

3.程序段2是存储数据的过程:先判断哪个按钮按下了,当I0.0按下时,将“1”写入到“存入或取出的数据”的地址中,每按一次存一个数据。同时也要置位“A.触发”和“A.存取触发”这个两个标志位,相当于是把每次按下的按钮数据存储到“数据队列”中。第一次按下,将数据存储到“数据队列”中的第一个元素中;第二次按下,将数据存储到“数据队列”中的第二个元素中,依次类推!

4.程序段3:判断是否按下“总启动”,按下之后如果按钮记忆次数不等于1则自锁并清空相关寄存器数据。同时,定时器开始延时,以2秒为周期循环。每循环一次则要记忆已运行的总台数,当已运行的台数大于按钮按下的次数则数据清零为下次启动做准备。

5.程序段4是取出数据:当总启动标志位接通,数据在取出模式(也就是出栈),每读取一次数据都会存入到“A.存入或取出的数据”,通过比较判断本次取出的数据是哪个则启动哪个电机。
6.程序段5是调用先入先出指令,此指令我们需要激活“excute”管脚和“mode” 管脚。当“mode”变量等于“TRUE”,同时激活“excute”管脚时,往队列中的一个元素中存一个数据(buffer),数据的来源是“item”; 当“mode”变量等于“FALSE”,同时激活“excute”管脚时,往队列中(buffer)的取出一个数据,放入到“item”中,如图所示



写在最后:如果文章对您有所启发,帮忙点个“赞”和“在看”呗!!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则