快速入门 | 正运动技术运动控制器运动缓冲简介​

2025-05-29 08:09:08

一、材料准备与接线参考

(1)电脑1台,安装ZDevelop3.10.10版本软件(软件路径可前往正运动技术官网下载)

(2)正运动技术型号ZMC432控制器一个

(3)24V直流电源1个

(4)驱动器、电机若干

(5)控制器接线端子若干

(6)网线若干

(7)连接线若干

(8)输入输出设备、扩展模块、人机界面等根据实际需求选择。

快速入门 | 正运动技术运动控制器运动缓冲简介​

缓冲多条运动指令时,为了判断当前运动执行到哪一条,提供MOVE_MARK运动标号和MOVE_CURMARK当前运动标号指令。MOVE_MARK运动标号每扫描一条运动指令+1;MOVE_CURMARK指令为当前运动的标号,提示当前运动到第几条运动指令,所有运动完成后为-1。

当前运动完成后会自动执行运动缓冲区内的下一条运动。运动指令全部执行完后,运动缓冲区为空,或者使用CANCEL/RAPIDSTOP指令清空运动缓冲区。

SP指令也属于运动指令,使用SP运动指令(如MOVESP、MOVECIRCSP等直接在运动指令后方加上SP)时,SP速度FORCE_SPEED、ENDMOVE_SPEED和STRATMOVE_SPEED会随SP运动指令写入运动缓存区。

SP运动指令与运动指令的区别:

MOVE(100)的速度是SPEED=100,MOVESP(100)的速度是FORCE_SPEED=200。

快速入门 | 正运动技术运动控制器运动缓冲简介​

下图中,当从运动缓冲区取出部分运动指令执行之后,缓冲区有了空间,FOR循环继续执行,并存入运动指令到运动缓冲区。指令执行退出运动缓冲区后,只要运动缓冲区的空间够,新的运动指令一条条往运动缓冲区中存。

快速入门 | 正运动技术运动控制器运动缓冲简介​

3.运动缓冲例程


RAPIDSTOP(2)

WAIT IDLE(0)

WAIT IDLE(1)

BASE(0,1)

ATYPE=1,1

UNITS=100,100

SPEED=100,100

ACCEL=1000,1000

DECEL=1000,1000

DPOS=0,0

MERGE=OFF '关闭连续插补

TRIGGER

LIMIT_BUFFERED=3 '轴0/1运动缓冲区可缓冲运动指令个数设为3

MOVE(60,40) '进入MTYPE,Buffer0

MOVE(70,50) '进入NTYPE,Buffer1

MOVE(50,40) 'Buffer2

MOVE(60,50) '缓冲区满,暂不进入

?"轴0当前缓冲指令个数=" MOVES_BUFFERED(0) '结果2

?"轴0剩余缓冲区个数=" REMAIN_BUFFER(1) AXIS(0) '结果0

?"轴1剩余缓冲区个数=" REMAIN_BUFFER(1) AXIS(1) '结果3

END


将轴的运动缓冲区可缓冲运动指令个数限制为3,此时运动缓冲区最多能装3条直线插补指令。  共有4个直线插补指令,MOVE(60,40)占用轴0的MTYPE,轴0还能缓冲2个运动指令,轴0剩余缓冲数为0,且还有1条直线指令因为主轴轴0的运动缓冲区已满,还未进入运动缓冲区。

等到MOVE(60,40)运动完成,MOVE(60,50)才能进轴0的运动缓冲区。

快速入门 | 正运动技术运动控制器运动缓冲简介​

4.普通输出与运动缓冲中输出的区别

普通输出指令程序扫描到该行指令便执行输出。

运动缓冲中输出指令在程序扫描之后,将其存入运动缓冲区,运动缓冲区按先进先出的顺序依此取出指令执行,直到取出该输出指令时才会执行输出。


RAPIDSTOP(2)

WAIT IDLE(0)

BASE(0) '选择轴0

DPOS=0

UNITS=100 '脉冲当量

SPEED=100 '速度

ACCEL=1000 '加速度

DECEL=1000 '减速度

TRIGGER '触发示波器采样

OP(0,3,$0) '关闭输出口0-3

DELAY(1000) '延时

MOVE(100)

MOVE_OP(1,ON) '运动缓冲中输出

OP(0,ON) '普通输出


例子运行效果:延时1s之后,程序扫描到OP指令,输出口0立即执行输出。

MOVE_OP把IO操作指令填入运动缓冲区,所以在运行完MOVE(100)之后,输出口1才输出。

快速入门 | 正运动技术运动控制器运动缓冲简介​

1.MOVE_OP -- 缓冲输出

语法:MOVE_OP (输出编号,输出状态)

此指令随其他运动指令一起进入运动缓冲区,从运动缓冲区中取出执行时才操作OP输出,可以控制某个输出口单独输出信号,也可以批量输出,不会打断插补运动的连续性。


BASE(0)

ATYPE=1

UNITS=100

DPOS=0

SPEED=100

ACCEL=1000

DECEL=1000

MERGE=ON '开启连续插补

TRIGGER '自动触发示波器

OP(0,3,0) '关闭输出口0-3

MOVE(100)

MOVE_OP (0,ON) '等待上条运动完成后,OUT0输出信号

MOVE(100)

MOVE_OP (0,OFF) '等待上条运动完成后,OUT0关闭信号

MOVE_OP(1,3,5) '批量输出,OUT1,3输出信号,OUT2不输出,5对应二进制101


例子运行效果:第11-15行的运动指令依此存入运动缓冲区,按先进先出的顺序执行,MOVE(100)运动完后,MOVE_OP操作OUT0输出,继续执行第二个MOVE(100),然后MOVE_OP操作OUT0关闭,紧接着控制OUT1-3批量输出。

快速入门 | 正运动技术运动控制器运动缓冲简介​

3.MOVE_DELAY -- 缓冲延时

语法:MOVE_DELAY(延时ms数)

BASE轴运动缓冲加入一个延时。

这个指令缓冲执行时不做任何运动,只延时指定时间。

延时使前面的运动指令结束时速度会自动降为0,会打断插补运动的连续性。‍


RAPIDSTOP(2)

WAIT IDLE(0)

BASE(0)

ATYPE=1

UNITS=100

SPEED=100

ACCEL=1000

DECEL=1000

DPOS=0

MERGE=ON '开启连续插补

TRIGGER '自动触发示波器

MOVE(100)

MOVE_DELAY(500) '两个MOVE中间等待500ms

MOVE(200)


快速入门 | 正运动技术运动控制器运动缓冲简介​

5.MOVE_PAUSE——运动暂停

暂停轴运动,只有在单轴或多轴插补运动时有效,多轴联动时一起暂停。

可以通过AXISSTATUS来查询是否有暂停,暂停中轴的IDLE状态为0。

当轴已经暂停或不在运动中时,调用这个指令会有警告输出,但不影响程序运行。某些运动不支持暂停,如VMOVE、同步运动指令等。

语法:MOVE_PAUSE(模式值)

快速入门 | 正运动技术运动控制器运动缓冲简介​

MOVE_PAUSE(1)或MOVE_PAUSE(2)

模式值2例子:手动设置MOVE_MARK,通过MOVE_PAUSE(2)指令可以在MARK不同的边界处暂停。


BASE(0)

ATYPE=1

UNITS=100

DPOS=0

SPEED=100

ACCEL=1000

DECEL=1000

MERGE=ON

TRIGGER

MOVE_MARK =1 '设置为标号1

MOVE(100)

MOVE_MARK =1 '设置为标号1

MOVE(150)

MOVE_MARK =2 '设置为标号2

MOVE(200)

MOVE_PAUSE (2) '标号不一样时暂停

DELAY(5000)

?DPOS(0) '打印结果:250


快速入门 | 正运动技术运动控制器运动缓冲简介​

7.MOVE_TABLE -- 缓冲输出TABLE

BASE轴运动缓冲加入一个TABLE。

指令缓冲执行时不做任何运动,只修改TABLE,不会打断插补运动的连续性。

语法:MOVE_TABLE(TABLE编号, 要修改的值)


BASE(0)

ATYPE=1

UNITS=100

DPOS=0

SPEED=100

ACCEL=1000

DECEL=1000

MERGE=ON

TABLE(0)=0 '初始值设为0

TRIGGER '自动触发示波器

MOVE(100)

MOVE_TABLE(0, 60) '等待运动完成后,TABLE(0)赋值60

MOVE(160)

WAIT IDLE(0)

?TABLE(0) '打印修改后TABLE(0)的值,打印结果,60


快速入门 | 正运动技术运动控制器运动缓冲简介​

9.MOVE_PWM -- 缓冲PWM

BASE轴运动缓冲操作PWM。

指令缓冲执行时不做任何运动,只操作PWM。

PWM只能通过设置占空比为0来关闭,不能通过设置PWM频率为0实现,PWM频率一定要在PWM开启之前调整。

语法:MOVE_PWM(编号,占空比[,频率])

编号为支持PWM功能的输出口编号,查看硬件手册确认。

占空比指有效电平占整个周期的比例;范围0-1,设置0时关闭pwm;一个周期中先输出有效电平,再输出无效电平。

频率缺省为1KHz,硬件最大为1MHz,软件最大为2KHz。


RAPIDSTOP(2)

WAIT IDLE(0)

MOVE_PWM(0, 0, 1000) '关闭PWM

BASE(0)

ATYPE=1

UNITS=100

SPEED=100 '初始速度

ACCEL=1000

DECEL=1000

DPOS=0

TICKS = 10000

MOVE(10)

MOVE_PWM(0, 0.111, 2000) '轴0运行到10时,操作PWM0输出

MOVE_DELAY(100)

MOVE_PWM(0, 0.555, 3000) '延时100ms,修改PWM0输出

MOVE(20)

MOVE_PWM(0, 0, 1000) '关闭PWM

WHILE NOT IDLE(0) 'IDLE(0)=-1后退出while循环

? -TICKS,PWM_DUTY(0),PWM_FREQ(0)

DELAY(30)

WEND


例子运行效果:初始化关闭PWM输出,MOVE(10)运动完后,操作PWM0输出,保持100ms之后,修改PWM0输出的占空比和频率,再运行MOVE(20)后关闭PWM输出。WHILE循环在轴0运行时,每隔30ms打印一次PWM输出的占空比和频率,在轴0停止后,退出WHILE循环,不在打印。

快速入门 | 正运动技术运动控制器运动缓冲简介​

使用SP运动后的效果如下,将最后一位参数设置非0值 ,此时触发轴1的运动速度为FORCE_SPEED=200。

快速入门 | 正运动技术运动控制器运动缓冲简介​

12.MOVE_TASK -- 缓冲开启任务

BASE轴运动缓冲加入启动TASK。

这个指令缓冲执行时不做任何运动,只启动任务,不会打断插补运动的连续性。

语法:MOVE_TASK(任务号, 函数名)

从运动缓冲全区取出MOVE_TASK指令执行时,将task_move标记的程序作为任务1开启,在任务窗口可以看到任务1已启动。

快速入门 | 正运动技术运动控制器运动缓冲简介​

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)


快速入门 | 正运动技术运动控制器运动缓冲简介​

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


快速入门 | 正运动技术运动控制器运动缓冲简介​

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


快速入门 | 正运动技术运动控制器运动缓冲简介​

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢