百度上搜索了一段关于一个按钮控制电机正反转的程序,按一下正转,再按一下反转,先把程序写成
LD SM0.0
LPS
MOVW C0, MW0
AN M0.0
AN Q0.1
= Q0.0
LPP
A M0.0
AN Q0.0
= Q0.1
调试不成功,监控后发现每按一次I0.0时,计数器和MW0都是加一的,但M0.0就是不转换,凭着直觉把程序改成
LD SM0.0
LPS
MOVW C0, MW0
AN M2.0
AN Q0.1
= Q0.0
LPP
A M2.0
AN Q0.0
= Q0.1
LD SM0.0
MOVW MW0, MW2
加了这一步后,程序运行正常,功能实现,但还是不太清楚原因,不知道为什么。
另外还有个问题,200的步进指令LSCR用法,比如我的自动控制部分用步进指令,在故障情况下,进入自动或称为进入步进的条件丢失了,自动停止,当故障恢复时,自动条件再次满足,能从上次步进结束的步继续进行么,就是说步进循环中断后,下次满足步进循环条件时能记住上次的步骤么,若不能,有没有什么办法可以让实现,我印象中300编程时用GRAPH是可以记住上次中断时的步骤的,有个项目上也实现了,但不知道200如何。
最佳答案
1、第一段程序把m0.0改为m1.0就可以了。西门子存储单元是“地址低字节”所以m1.0才是MW0的最低位。如图1。
2、个人认为,不对见谅啊!200里面如果一个步被激活的话,不用结束指令的话这一步是一直激活的,即SCR段在退出前保持激励状态。就是说这一步内产生了中断,但这一步是一直激活着的,中断回来,满足转换条件还是会继续往下执行的。
图片说明:
提问者对于答案的评价:
谢谢。
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc221756.html