11.MOVE_ASYNMOVE -- 缓冲触发其他轴2
BASE轴运动缓冲触发其他轴运动,当前轴不等待,仍继续运动。
语法:MOVE_ASYNMOVE(axisnum,dis[,ifsp])
axisnum:需要同步运动的轴号
dis:相对运动距离
ifsp:是否使用SP运动, 缺省值0不使用,设为其他值使用
RAPIDSTOP(2)
WAIT IDLE(0)
WAIT IDLE(1)
BASE(0,1)
DPOS=0,0
ATYPE=1,1
UNITS=100,100
SPEED=100,100
ACCEL=1000,1000
DECEL=1000,1000
MERGE=ON,ON
TRIGGER
MOVE(100)
MOVE_ASYNMOVE(1,120,0) '轴0运行到100时,轴1开始运动120
MOVE(100) '待轴同步完成,轴0再继续运动
![](http://tiebapic.baidu.com/forum/w%3D580/sign=b2a67062683e6709be0045f70bc69fb8/33aabaa1cd11728b52300067dffcc3cec2fd2c84.jpg?tbpicau=2024-09-18-05_e44814993bdd39a5cfa604c6c7bae303)
12.MOVE_TASK -- 缓冲开启任务
BASE轴运动缓冲加入启动TASK。
这个指令缓冲执行时不做任何运动,只启动任务,不会打断插补运动的连续性。
语法:MOVE_TASK(任务号, 函数名)
从运动缓冲全区取出MOVE_TASK指令执行时,将task_move标记的程序作为任务1开启,在任务窗口可以看到任务1已启动。
![](http://tiebapic.baidu.com/forum/w%3D580/sign=6aef82b2883df8dca63d8f99fd1072bf/5bb8c8fcc3cec3fde6232b30c188d43f86942784.jpg?tbpicau=2024-09-18-05_fba311b970bc3f95f01233bec11f7154)
RAPIDSTOP(2)
WAIT IDLE(0)
BASE(0)
ATYPE=1
UNITS=100
DPOS=0
SPEED=100
ACCEL=1000
DECEL=1000
MERGE=ON
TRIGGER
MOVE(100)
MOVE_TASK(1,task_move) '第一个运动完成后,将task_move作为任务1启动
MOVE(100)
END
'任务1
task_move:
PRINT "TASK_MOVE"
END
![](http://tiebapic.baidu.com/forum/w%3D580/sign=df37c64b7009c93d07f20effaf3cf8bb/580bcd11728b4710af327189d4cec3fdfd032384.jpg?tbpicau=2024-09-18-05_497ddfe723a4f67aa7c6252e788b05f8)
13.MOVE_WAIT -- 缓冲等待
BASE轴运动缓冲加入一个条件判断。
指令缓冲执行时不做任何运动,只等待指定的条件满足,前面的运动指令结束时速度会自动降为0。
语法:MOVE_WAIT(参数名, 参数编号, 比较条件, 比较值)
参数可以为:DPOS,MPOS,IN,AIN,VPSPEED,MSPEED,MODBUS_REG,MODBUS_IEEE,MODBUS_BIT,VECTOR_BUFFERED,REMAIN
比较条件:1 参数值≥比较值;-1 参数值≤比较值;0 不建议使用
RAPIDSTOP(2)
WAIT IDLE(0)
BASE(0)
ATYPE=1
UNITS=100
DPOS=0
SPEED=100
ACCEL=1000
DECEL=1000
TRIGGER
MOVE(100)
MOVE_WAIT(IN, 0, 1, 1) '等待IN(0)有信号,才执行下一条运动
MOVE(100)
![](http://tiebapic.baidu.com/forum/w%3D580/sign=86ea68bdb086c91708035231f93c70c6/7d97f8dcd100baa1de31cbfe5010b912c9fc2e84.jpg?tbpicau=2024-09-18-05_d2316a1cdb394ec15bbc3badb4fe829a)
14.MOVE_CANCEL--缓冲停止
把CANCEL指令写入运动缓冲。
语法:MOVE_CANCEL(轴号,模式值)
0:取消当前运动,继续取缓冲区指令指令
1:取消缓冲区的运动,当前运动仍然要执行完
2:取消当前运动和缓冲区的运动,轴立即停止
3:立即中断脉冲的发送
RAPIDSTOP(2)
WAIT IDLE(0)
WAIT IDLE(1)
BASE(0,1)
DPOS=0,0
ATYPE=1,1
UNITS=100,100
SPEED=100,100
ACCEL=1000,1000
DECEL=1000,1000
MERGE=ON,ON:
TRIGGER
MOVE(50) AXIS(0) '轴0当前运动
MOVE(80) AXIS(1) '轴1当前运动
MOVE_CANCEL(1,2) AXIS(0) '轴0缓冲里面写入停止轴1的指令
MOVE(60) AXIS(0) '轴0缓冲运动
MOVE(70) AXIS(1) '轴1缓冲运动,被取消
例子运行效果:轴0运动50后,MOVE_CANCEL(1,2) AXIS(0)指令生效,CANCEL(2)模式取消轴1的当前运动和缓冲运动,轴1立刻停止,轴0继续运动。
![](http://tiebapic.baidu.com/forum/w%3D580/sign=20e72648efdcd100cd9cf829428a47be/2a56c3cec3fdfc0389656ffdc33f8794a5c22684.jpg?tbpicau=2024-09-18-05_8199374e234b81c16bd7ade9d15e36b6)
15.LOADED -- 缓冲空
用于判断轴的运动缓冲区是否为空,只读参数,返回值0表示运动缓冲区还有指令,返回值为-1表示运动缓冲区空。
BASE(0)
ATYPE=1
UNITS=100
SPEED=100
ACCEL=1000
DECEL=1000
DPOS=0
MERGE=ON '开启连续插补
OP(0,OFF)
TRIGGER
MOVE(100) '当前运动
MOVE(50) '缓冲运动,此时缓冲区只有这一条运动
'当本条运动执行时,缓冲区就已经清空
WAIT LOADED '运动缓冲空即可往下执行
OP(0,ON) '打开OP0
![](http://tiebapic.baidu.com/forum/w%3D580/sign=681ede7cde3d70cf4cfaaa05c8ddd1ba/2fbb728b4710b912dfdc7abbd4fdfc0393452284.jpg?tbpicau=2024-09-18-05_4fa292abc7e71a91e941fc94db53304e)
WAIT LOADED 等待缓冲区空
![](http://tiebapic.baidu.com/forum/w%3D580/sign=c5e81ef3de177f3e1034fc0540ce3bb9/1a76d100baa1cd1166abfe65ae12c8fcc2ce2d84.jpg?tbpicau=2024-09-18-05_cdf2e71205e605056d38e29c6d5431da)
WAIT IDLE 等待轴停止
16.MOVE_MARK -- 运动标号
下一条要调用的运动指令的MARK标号,这个标号会和运动指令一起写入运动缓冲。
每调用一条运动指令,MOVE_MARK会自动加一。
如果要强制指定MOVE_MARK,需要每次运动前都设定一次。
通过MOVE_PAUSE (2)指令可以在MARK不同的边界处暂停。
BASE(0)
ATYPE=1
UNITS=100
DPOS=0
SPEED=100
ACCEL=1000
DECEL=1000
MERGE=OFF '关闭连续插补
OP(0,OFF)
TRIGGER
MOVE_MARK=0 '初始值:0
MOVE(100) '运动指令1
MOVE_DELAY(1000) '运动指令2
MOVE(50) '运动指令3
MOVE_OP(0,ON) '运动指令4
MOVE(80) '运动指令5
PRINT MOVE_MARK '打印结果:5
![](http://tiebapic.baidu.com/forum/w%3D580/sign=7f29704867cf3bc7e800cde4e101babd/90214710b912c8fcdbee7a88eb039245d7882184.jpg?tbpicau=2024-09-18-05_84c3f5816b6d4a0d8edd0fe2fbd55714)
17.MOVE_CURMARK -- 当前运动标号
返回当前轴正在运动指令的MOVE_MARK标号,编号默认从0开始,到运动指令总数减1。
在轴参数窗口可以监控当前程序扫描到的运动指令个数,查看MOVE_MARK;和轴当前运行到了第几个运动指令,查看MOVE_CURMARK。
BASE(0)
ATYPE=1
UNITS=100
DPOS=0
SPEED=100
ACCEL=1000
DECEL=1000
MERGE=ON
OP(1,OFF)
TRIGGER
MOVE_MARK =1
MOVE(50)
MOVE_MARK =2
MOVE(100)
MOVE_MARK =3
MOVE(150)
WAIT UNTIL MOVE_CURMARK = 2 '等待MOVE(100)开始执行的时候,开输出口1
OP(1,ON)
![](http://tiebapic.baidu.com/forum/w%3D580/sign=d01dc9ba2cc79f3d8fe1e4388aa0cdbc/a5bab912c8fcc3cedadd45768545d688d53f2084.jpg?tbpicau=2024-09-18-05_14c3939baa16b2c596a847e8f39d400c)
正运动技术运动控制器运动缓冲就讲到这里。更多学习视频及图文请关注我们的公众号“正运动小助手”。
本文由正运动小助手原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。
BASE轴运动缓冲触发其他轴运动,当前轴不等待,仍继续运动。
语法:MOVE_ASYNMOVE(axisnum,dis[,ifsp])
axisnum:需要同步运动的轴号
dis:相对运动距离
ifsp:是否使用SP运动, 缺省值0不使用,设为其他值使用
RAPIDSTOP(2)
WAIT IDLE(0)
WAIT IDLE(1)
BASE(0,1)
DPOS=0,0
ATYPE=1,1
UNITS=100,100
SPEED=100,100
ACCEL=1000,1000
DECEL=1000,1000
MERGE=ON,ON
TRIGGER
MOVE(100)
MOVE_ASYNMOVE(1,120,0) '轴0运行到100时,轴1开始运动120
MOVE(100) '待轴同步完成,轴0再继续运动
![](http://tiebapic.baidu.com/forum/w%3D580/sign=b2a67062683e6709be0045f70bc69fb8/33aabaa1cd11728b52300067dffcc3cec2fd2c84.jpg?tbpicau=2024-09-18-05_e44814993bdd39a5cfa604c6c7bae303)
12.MOVE_TASK -- 缓冲开启任务
BASE轴运动缓冲加入启动TASK。
这个指令缓冲执行时不做任何运动,只启动任务,不会打断插补运动的连续性。
语法:MOVE_TASK(任务号, 函数名)
从运动缓冲全区取出MOVE_TASK指令执行时,将task_move标记的程序作为任务1开启,在任务窗口可以看到任务1已启动。
![](http://tiebapic.baidu.com/forum/w%3D580/sign=6aef82b2883df8dca63d8f99fd1072bf/5bb8c8fcc3cec3fde6232b30c188d43f86942784.jpg?tbpicau=2024-09-18-05_fba311b970bc3f95f01233bec11f7154)
RAPIDSTOP(2)
WAIT IDLE(0)
BASE(0)
ATYPE=1
UNITS=100
DPOS=0
SPEED=100
ACCEL=1000
DECEL=1000
MERGE=ON
TRIGGER
MOVE(100)
MOVE_TASK(1,task_move) '第一个运动完成后,将task_move作为任务1启动
MOVE(100)
END
'任务1
task_move:
PRINT "TASK_MOVE"
END
![](http://tiebapic.baidu.com/forum/w%3D580/sign=df37c64b7009c93d07f20effaf3cf8bb/580bcd11728b4710af327189d4cec3fdfd032384.jpg?tbpicau=2024-09-18-05_497ddfe723a4f67aa7c6252e788b05f8)
13.MOVE_WAIT -- 缓冲等待
BASE轴运动缓冲加入一个条件判断。
指令缓冲执行时不做任何运动,只等待指定的条件满足,前面的运动指令结束时速度会自动降为0。
语法:MOVE_WAIT(参数名, 参数编号, 比较条件, 比较值)
参数可以为:DPOS,MPOS,IN,AIN,VPSPEED,MSPEED,MODBUS_REG,MODBUS_IEEE,MODBUS_BIT,VECTOR_BUFFERED,REMAIN
比较条件:1 参数值≥比较值;-1 参数值≤比较值;0 不建议使用
RAPIDSTOP(2)
WAIT IDLE(0)
BASE(0)
ATYPE=1
UNITS=100
DPOS=0
SPEED=100
ACCEL=1000
DECEL=1000
TRIGGER
MOVE(100)
MOVE_WAIT(IN, 0, 1, 1) '等待IN(0)有信号,才执行下一条运动
MOVE(100)
![](http://tiebapic.baidu.com/forum/w%3D580/sign=86ea68bdb086c91708035231f93c70c6/7d97f8dcd100baa1de31cbfe5010b912c9fc2e84.jpg?tbpicau=2024-09-18-05_d2316a1cdb394ec15bbc3badb4fe829a)
14.MOVE_CANCEL--缓冲停止
把CANCEL指令写入运动缓冲。
语法:MOVE_CANCEL(轴号,模式值)
0:取消当前运动,继续取缓冲区指令指令
1:取消缓冲区的运动,当前运动仍然要执行完
2:取消当前运动和缓冲区的运动,轴立即停止
3:立即中断脉冲的发送
RAPIDSTOP(2)
WAIT IDLE(0)
WAIT IDLE(1)
BASE(0,1)
DPOS=0,0
ATYPE=1,1
UNITS=100,100
SPEED=100,100
ACCEL=1000,1000
DECEL=1000,1000
MERGE=ON,ON:
TRIGGER
MOVE(50) AXIS(0) '轴0当前运动
MOVE(80) AXIS(1) '轴1当前运动
MOVE_CANCEL(1,2) AXIS(0) '轴0缓冲里面写入停止轴1的指令
MOVE(60) AXIS(0) '轴0缓冲运动
MOVE(70) AXIS(1) '轴1缓冲运动,被取消
例子运行效果:轴0运动50后,MOVE_CANCEL(1,2) AXIS(0)指令生效,CANCEL(2)模式取消轴1的当前运动和缓冲运动,轴1立刻停止,轴0继续运动。
![](http://tiebapic.baidu.com/forum/w%3D580/sign=20e72648efdcd100cd9cf829428a47be/2a56c3cec3fdfc0389656ffdc33f8794a5c22684.jpg?tbpicau=2024-09-18-05_8199374e234b81c16bd7ade9d15e36b6)
15.LOADED -- 缓冲空
用于判断轴的运动缓冲区是否为空,只读参数,返回值0表示运动缓冲区还有指令,返回值为-1表示运动缓冲区空。
BASE(0)
ATYPE=1
UNITS=100
SPEED=100
ACCEL=1000
DECEL=1000
DPOS=0
MERGE=ON '开启连续插补
OP(0,OFF)
TRIGGER
MOVE(100) '当前运动
MOVE(50) '缓冲运动,此时缓冲区只有这一条运动
'当本条运动执行时,缓冲区就已经清空
WAIT LOADED '运动缓冲空即可往下执行
OP(0,ON) '打开OP0
![](http://tiebapic.baidu.com/forum/w%3D580/sign=681ede7cde3d70cf4cfaaa05c8ddd1ba/2fbb728b4710b912dfdc7abbd4fdfc0393452284.jpg?tbpicau=2024-09-18-05_4fa292abc7e71a91e941fc94db53304e)
WAIT LOADED 等待缓冲区空
![](http://tiebapic.baidu.com/forum/w%3D580/sign=c5e81ef3de177f3e1034fc0540ce3bb9/1a76d100baa1cd1166abfe65ae12c8fcc2ce2d84.jpg?tbpicau=2024-09-18-05_cdf2e71205e605056d38e29c6d5431da)
WAIT IDLE 等待轴停止
16.MOVE_MARK -- 运动标号
下一条要调用的运动指令的MARK标号,这个标号会和运动指令一起写入运动缓冲。
每调用一条运动指令,MOVE_MARK会自动加一。
如果要强制指定MOVE_MARK,需要每次运动前都设定一次。
通过MOVE_PAUSE (2)指令可以在MARK不同的边界处暂停。
BASE(0)
ATYPE=1
UNITS=100
DPOS=0
SPEED=100
ACCEL=1000
DECEL=1000
MERGE=OFF '关闭连续插补
OP(0,OFF)
TRIGGER
MOVE_MARK=0 '初始值:0
MOVE(100) '运动指令1
MOVE_DELAY(1000) '运动指令2
MOVE(50) '运动指令3
MOVE_OP(0,ON) '运动指令4
MOVE(80) '运动指令5
PRINT MOVE_MARK '打印结果:5
![](http://tiebapic.baidu.com/forum/w%3D580/sign=7f29704867cf3bc7e800cde4e101babd/90214710b912c8fcdbee7a88eb039245d7882184.jpg?tbpicau=2024-09-18-05_84c3f5816b6d4a0d8edd0fe2fbd55714)
17.MOVE_CURMARK -- 当前运动标号
返回当前轴正在运动指令的MOVE_MARK标号,编号默认从0开始,到运动指令总数减1。
在轴参数窗口可以监控当前程序扫描到的运动指令个数,查看MOVE_MARK;和轴当前运行到了第几个运动指令,查看MOVE_CURMARK。
BASE(0)
ATYPE=1
UNITS=100
DPOS=0
SPEED=100
ACCEL=1000
DECEL=1000
MERGE=ON
OP(1,OFF)
TRIGGER
MOVE_MARK =1
MOVE(50)
MOVE_MARK =2
MOVE(100)
MOVE_MARK =3
MOVE(150)
WAIT UNTIL MOVE_CURMARK = 2 '等待MOVE(100)开始执行的时候,开输出口1
OP(1,ON)
![](http://tiebapic.baidu.com/forum/w%3D580/sign=d01dc9ba2cc79f3d8fe1e4388aa0cdbc/a5bab912c8fcc3cedadd45768545d688d53f2084.jpg?tbpicau=2024-09-18-05_14c3939baa16b2c596a847e8f39d400c)
正运动技术运动控制器运动缓冲就讲到这里。更多学习视频及图文请关注我们的公众号“正运动小助手”。
本文由正运动小助手原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。