恭喜,你发布的帖子
发布于 2022-03-24 22:29:21
4楼
西门子的M代码是不需要等待复位的,NC程序中写入执行M16只需要对相应的PLC地址进行输出,不会检查M代码是否执行完成。所以,你 的M16和M33直接只差一个指令执行周期。个人建议可以再NC程序中编写一个等待循环,比如:
M16
WHILE ($A_IN[1]==0)
G4F0.1
ENDWHILE
M33
在PLC中,当M16对应的PLC地址等于1时,对$A_IN[1]对应的地址进行复位,当M16执行完后,对$A_IN[1]对应的PLC地址进行置位。
如果不想在NC程序中看到上面这样的等待指令,可以把M16定义成一个子程序调用,把类似的等待功能放到子程序中,比如一个L16的子程序:
$A_OUT[1]=1
WHILE ($A_IN[1]==0)
G4F0.1
ENDWHILE
STOPRE
M17
PLC中,$A_OUT[1]=1时,对$A_IN[1]复位,M16对应的工作完成后,对$A_IN[1]置位。这样M33就会在M16执行完后才执行。
当然应该还有其他的解决方案,以上内容供你参考,希望有所帮助。
请填写推广理由:
分享
只看
楼主