发表于:2026/1/16 17:41:11
#0楼
运动缓冲原理
在运行运动指令时,控制器提供了一个缓冲区来保存进入运动缓冲的运动缓冲队列。运动指令存到运动缓冲区,在缓冲区里取出指令再执行,省略了程序扫描的时间,大大提升了实时性,同时也使得程序能正常向下扫描,不会堵塞。
ZMotion运动控制器具有多级的运动缓冲,并且遵循先进先出原则。当运动缓冲开启的时候,程序在扫描识别到程序任务的第一条运动指令时,将运动指令分配到指定轴的运动缓冲区,电机开始运动,此时程序继续向下扫描到第二条运动指令时,再往运动缓冲区中存,在不断扫描存入运动指令的同时,从运动缓冲区中依次取出运动指令执行。
运动缓冲原理参考下图:
1.MTYPE,NTYPE分别是当前运行的运动指令类型和MTYPE后面的第一条指令类型。
2.任意一段程序的运动指令都可以进入任意轴的运动缓冲区,由轴号指定。
3.每个轴的运动缓冲区都是独立的,互不干扰。
如下图:当运动缓冲区还有空间,运动指令就会进入运动缓冲区。然后可以通过MOVE_MARK设置标识,表示下一条要调用的运动指令的MARK标号,这个标号会和运动指令一起写入运动缓冲。等指令执行完成后,则退出运动缓冲区,之前的下一条指令变成正在运动指令,循环往复,直到缓冲区没有指令去执行。
缓冲多条运动指令时,为了判断当前运动执行到哪一条,提供MOVE_MARK运动标号和MOVE_CURMARK当前运动标号指令。
MOVE_MARK运动标号每扫描一条运动指令+1;
MOVE_CURMARK指令为当前运动的标号,提示当前运动到第几条运动指令,所有运动完成后为-1。
当前运动完成后会自动执行运动缓冲区内的下一条运动。运动指令全部执行完后,运动缓冲区为空,或者使用CANCEL/RAPIDSTOP指令清空运动缓冲区。
扩展说明:
上图中的FORCE_SPEED、ENDMOVE_SPEED和STRATMOVE_SPEED指令属于SP运动指令。
SP指令也属于运动指令,使用SP运动指令(如MOVESP、MOVECIRCSP等直接在运动指令后方加上SP)时,SP速度FORCE_SPEED、ENDMOVE_SPEED和STRATMOVE_SPEED会随SP运动指令写入运动缓存区。
SP运动指令与运动指令的区别:
MOVE(100)的速度是SPEED=100,MOVESP(100)的速度是FORCE_SPEED=200。具体见下图:
在运行运动指令时,控制器提供了一个缓冲区来保存进入运动缓冲的运动缓冲队列。运动指令存到运动缓冲区,在缓冲区里取出指令再执行,省略了程序扫描的时间,大大提升了实时性,同时也使得程序能正常向下扫描,不会堵塞。
ZMotion运动控制器具有多级的运动缓冲,并且遵循先进先出原则。当运动缓冲开启的时候,程序在扫描识别到程序任务的第一条运动指令时,将运动指令分配到指定轴的运动缓冲区,电机开始运动,此时程序继续向下扫描到第二条运动指令时,再往运动缓冲区中存,在不断扫描存入运动指令的同时,从运动缓冲区中依次取出运动指令执行。
运动缓冲原理参考下图:
1.MTYPE,NTYPE分别是当前运行的运动指令类型和MTYPE后面的第一条指令类型。
2.任意一段程序的运动指令都可以进入任意轴的运动缓冲区,由轴号指定。
3.每个轴的运动缓冲区都是独立的,互不干扰。
如下图:当运动缓冲区还有空间,运动指令就会进入运动缓冲区。然后可以通过MOVE_MARK设置标识,表示下一条要调用的运动指令的MARK标号,这个标号会和运动指令一起写入运动缓冲。等指令执行完成后,则退出运动缓冲区,之前的下一条指令变成正在运动指令,循环往复,直到缓冲区没有指令去执行。
缓冲多条运动指令时,为了判断当前运动执行到哪一条,提供MOVE_MARK运动标号和MOVE_CURMARK当前运动标号指令。
MOVE_MARK运动标号每扫描一条运动指令+1;
MOVE_CURMARK指令为当前运动的标号,提示当前运动到第几条运动指令,所有运动完成后为-1。
当前运动完成后会自动执行运动缓冲区内的下一条运动。运动指令全部执行完后,运动缓冲区为空,或者使用CANCEL/RAPIDSTOP指令清空运动缓冲区。
扩展说明:
上图中的FORCE_SPEED、ENDMOVE_SPEED和STRATMOVE_SPEED指令属于SP运动指令。
SP指令也属于运动指令,使用SP运动指令(如MOVESP、MOVECIRCSP等直接在运动指令后方加上SP)时,SP速度FORCE_SPEED、ENDMOVE_SPEED和STRATMOVE_SPEED会随SP运动指令写入运动缓存区。
SP运动指令与运动指令的区别:
MOVE(100)的速度是SPEED=100,MOVESP(100)的速度是FORCE_SPEED=200。具体见下图:
[此贴子已经被作者于2026/1/16 17:41:21编辑过]








