发布于 2014-05-28 20:53:51
1楼
对于逻辑不复杂的运动,建议用MCC来编写,然后在MotionTask里面执行。MotionTask里面可以用While做成循环。而指令的完成情况通过TO的状态变量进行判断。
例如:
1)Enable指令通过 Axis.control = active来判断
2)Gear/Cam 指令通过 同步对象.stata = camming/gearing来判断
通过If指令判断,当指令执行成功后,就不再重复执行。
Move/Pos指令是可以循环执行(Background/IPO)的,但有几个条件:
1)不能选择Delay program excution。(对于ST/LAD 下一条指令的执行条件是immediately)
这是为了避免指令执行时间过长,导致Background/ipo超时
2)上升沿只能在Background中使用,因为Rtrig只对Background有效。Ipo/Servo程序中的上升沿要自己编写。一个Background循环可能对应多个Ipo循环。
3)不建议连续在Background/Ipo中反复执行Pos指令,不会出错,但会占用大量CPU资源。
另外,
如果喜欢用LAD编程,建议使用PLCopen的运动指令,这些指令是按照循环程序的特点编写的。
http://www.cnblogs.com/lion-zheng/