西门子SCL编程问题汇总及解决1

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步的时候没有启动信号了,所以只有虚轴动,实轴不动。(换句话说,就是谁在前面调用就执行谁) 

解决办法就是不要复位按钮了,而是用步序去卡程序!

猜你喜欢

转载自blog.csdn.net/viixin/article/details/130747745