1、回原完成信号一致置True的问题
当用了MC_Home指令让轴回原一次之后,系统标志位<轴名称>.StatusBits.HomingDone就会置TRUE,而且会一直保持。除非断使能才会FALSE掉,所以用这个引脚做判断的话,就只能一次有效。
但如果按了急停,需要重新回原,那么就需要把回原完成信号FALSE掉,所以我们要自己再定义一个“回原完成信号”变量。
2、暂停和停止的处理流程
①我们可以在MC_Halt指令的引脚直接绑定暂停和停止按钮
②调用MC_Halt引脚停止轴,但要记着关掉MC_Halt指令
3、 关于程序的解读和执行
按停止,触发MC_Halt指令,程序走到100步,这时关掉Halt指令的触发引脚,然后再触发回原。这一系列的操作持续时间也就在10ms以内,但此时轴还没有完全停下来,也就是说Halt指令还在执行过程就就触发了回原。那么就会出现回完原之后实际位置还会往前走零点几毫米的问题。
解决办法:利用MC_Halt.Done信号,确保暂停完毕之后再触发回原
4、分工位运行启动程序处理
正常来讲,分工位运行,各个设备写在不同的子程序里面各自运行即可,但下面这样写就会出现虚轴运动,但实轴不运动的情况。
出现上述情况的原因在于,程序在一个扫描周期内也是顺序执行的,当刷新到虚轴第0步的时候,程序启动置TRUE,但程序里面立马FALSE掉了,导致程序刷到实轴第0步的时候没有启动信号了,所以只有虚轴动,实轴不动。(换句话说,就是谁在前面调用就执行谁)
解决办法就是不要复位按钮了,而是用步序去卡程序!