The value of Zmotion is to bring customers more success!
XPLC006E功能简介
0
XPLC006E是正运动运动控制器推出的一款多轴经济型EtherCAT总线运动控制器,XPLC系列运动控制器可应用于各种需要脱机或联机运行的场合。
XPLC006E自带6个电机轴,最多12轴运动控制(含虚拟轴数),支持12轴直线插补、电子凸轮、电子齿轮、同步跟随、虚拟轴设置等功能。
XPLC006E支持多任务同时运行,同时可以在PC上直接仿真运行,编程方式多种可选,支持ZDevelop软件的Basic/PLC梯形图/HMI组态和常用上位机软件编程。
XPLC006E只支持EtherCAT总线轴,不支持脉冲轴和编码器轴。采用EtherCAT总线与驱动器通讯,1ms的刷新周期。
XPLC006E支持PLC、Basic、HMI组态三种编程方式。PC上位机API编程支持C#、C++、LabVIEW、VB、matlab、Qt、Linux、.Net、iMAC、Python、 ROS等接口。
→此款产品有XPLC004E、XPLC006E、XPLC008E三个不同轴数的型号可选。
2
2
XPLC864E功能简介
XPLC864E在XPLC006E的功能基础上做了升级(即上节介绍的XPLC006E的功能都支持),部分资源空间优于XPLC006E,使用方法基本一致,不同之处在于XPLC864E,硬件支持32点输入、32点输出、2个ADC、2个DAC,支持脉冲轴和总线轴混合使用,总实轴轴数为8,除了带EtherCAT接口之外,输出口硬件上可配置为8个轴的脉冲方向信号输出,另带两路编码器输入,可由输入口配置
XPLC864E支持PLC、Basic、HMI组态三种编程方式。PC上位机API编程支持C#、C++、LabVIEW、VB、matlab、Qt、Linux、.Net、iMAC、Python、 ROS等接口。
2
2
XPLC系列经济型EtherCAT总线运动控制器支持多种编程方式,支持使用正运动技术自主研发的ZDevelop开发环境的Basic语言和PLC梯形图,上一节讲解了控制器的数据存储,本节内容主要讲解控制器的运动缓存。
运动缓冲概念
在运行运动指令时,为了防止程序堵塞,控制器提供了一个缓冲区来保存进入运动缓冲的运动缓冲队列,把这个功能叫做运动缓冲,这样程序就能正常向下扫描,不会堵塞。
ZMotion运动控制器具有多级的运动缓冲,如下图。当运动缓冲开启的时候,程序扫描识别到程序任务的第一条运动指令时,将运动指令分配到指定轴的运动缓冲区,电机开始运动,此时程序会继续向下扫描。扫描到第二条运动指令时,再往运动缓冲区中存,且在不断扫描存入运动指令的同时,从运动缓冲区中依次取出运动指令执行。
MTYPE,NTYPE分别是当前运行的运动指令和第一个缓冲运动指令。任意一段程序的运动指令都可以进入任意轴的运动缓冲区,由轴号指定。每个轴的运动缓冲区都是独立的,互不干扰。
运动缓冲区缓冲原理
程序扫描过程中,将扫描到的运动指令存入对应轴的运动缓冲区,再从运动缓冲区中按先进先出的顺序,依此取出运动指令执行。能进入运动缓冲区的指令除了运动指令之外,还包括一系列运动缓冲中输出指令。
插补运动缓冲在主轴的运动缓冲区。
缓冲多条运动指令时,为了判断当前运动执行到哪一条,提供MOVE_MARK运动标号和MOVE_CURMARK当前运动标号指令查询。MOVE_MARK运动标号每扫描一条运动指令+1;MOVE_CURMARK指令为当前运动的标号,提示当前运动到第几条运动指令,所有运动完成后为-1。
当前运动完成后会自动执行运动缓冲区内的下一条运动。运动指令全部执行完后,运动缓冲区为空,或者使用CANCEL/RAPIDSTOP指令清空运动缓冲区。
SP指令与非SP指令的运行效果如下图所示,MOVE(100)的速度是SPEED=100,MOVESP(100)的速度是FFORCE_SPEED=150。
运动缓冲区查询
每个轴的运动缓冲都是独立的,互不干扰,且轴的缓冲区大小相同,通过指令REMAIN_BUFFER(MTYPE) AXIS(n)查看某个轴的剩余可用缓冲区的个数。
运动缓冲区堵塞
由于每个轴的运动缓冲空间是有限的,当扫描太多运动指令放入运动缓冲区时,多级运动缓冲区全部被塞满,如果程序继续扫描到更多的运动指令,程序也会被堵塞,直到运动指令依次完成并退出,运动缓冲区有了空位,运动指令才会继续进入运动缓冲区。
例:以ZDevelopV3.10版本的仿真器为例,默认为4096个直线插补的运动缓冲,一个圆弧插补/螺旋线插补/样条插补等插补运动会占用多个直线插补的运动缓冲。
下图表示当从运动缓冲区取出部分圆弧运动指令执行之后,缓冲区有了空间,FOR循环继续执行,并存入运动指令到运动缓冲区。指令执行退出运动缓冲区后,只要运动缓冲区的空间够,新的运动指令再进运动缓冲区。
运动缓冲中输出
运动缓冲中输出指令能进入运动缓冲区,可在运动缓冲中开启OP口、延时、输出参数,输出PWM、开启任务等,详细指令说明参见Basic编程手册第六章。
1.普通输出与运动缓冲中输出的区别。
(1)普通输出指令程序扫描到该行指令便执行输出。
(2)运动缓冲中输出指令在程序扫描之后,将其存入运动缓冲区,运动缓冲区按先进先出的顺序依此取出指令执行,直到取出该输出指令时才会执行输出。
2.示例:对比OP和MOVE_OP的输出效果。
RAPIDSTOP(2)WAIT IDLE(0)BASE(0) '选择轴0 DPOS=0UNITS=1000 '脉冲当量 ATYPE=1 '脉冲轴类型 SPEED=100 '速度 ACCEL=1000 '加速度 DECEL=1000 '减速度 SRAMP=100 'S曲线 TRIGGER '触发示波器采样 OP(0,3,$0) '关闭输出口0-3 DELAY(100) '延时 MOVE(100) MOVE_OP(1,ON) '运动缓冲中输出 OP(0,ON) '普通输出
延时1s之后,程序扫描到OP指令,输出口0立即执行输出。
4.控制器支持的运动缓冲中输出指令一览表如下。
指令 | 含义 | 说明 |
MOVE_OP | 缓冲输出 | 运动缓冲中开关OP口 |
MOVE_OP2 | 缓冲输出2 | 运动缓冲中开关OP口,并可以设置多少ms之后反转输出口状态 |
MOVE_DELAY | 缓冲延时 | 运动缓冲中延时 |
MOVE_AOUT | 缓冲输出模拟量 | 运动缓冲中控制模拟量输出 |
MOVE_PAUSE | 缓冲暂停 | 运动缓冲中生效,暂停运动 |
MOVE_RESUME | 缓冲恢复 | 运动缓冲中生效,恢复运动,配合暂停使用 |
MOVE_TABLE | 缓冲输出TABLE | 运动缓冲中修改TABLE寄存器的值 |
MOVE_PARA | 缓冲参数 | 运动缓冲中修改多种轴参数的值,例如修改SPEED,实现实时变速 |
MOVE_PWM | 缓冲PWM | 运动缓冲中操作PWM |
MOVE_SYNMOVE | 缓冲触发其他轴 | 运动缓冲中启动其他轴运动,当前轴等待 |
MOVE_ASYNMOVE | 缓冲触发其他轴2 | 运动缓冲中启动其他轴运动,当前轴不等待 |
MOVE_TASK | 缓冲开启任务 | 运动缓冲中开启子程序任务运行 |
MOVE_WAIT | 缓冲等待 | 运动缓冲中等待设置的条件满足要求,才可执行下一条缓冲命令 |
MOVE_CANCEL | 缓冲停止 | 在运动缓冲中执行停止命令,多种停止模式可选,同CANCEL |
了解了运动缓冲中输出概念,我们可以实现下图功能,随着运动精准控制OP口开关光,使用MOVE_PWM指令调节光的能量。
5.实现代码如下,此功能需要支持直线插补、圆弧插补和PWM功能的控制器,并采用连续插补功能提升效率。
RAPIDSTOP(2) WAIT IDLE(0) BASE(0,1) '选择运动轴号 DPOS=0,0 UNITS=1000,1000 ATYPE=1,1 SPEED=200,200 ACCEL=1000,1000 DECEL=1000,1000 '减速度设为1000 FASTDEC=10000,10000 '快减减速度设为10000 MERGE=ON, ON '开启连续插补 SRAMP=100,100 MOVE_OP(0,OFF) TRIGGER '开启运动波形采集 MOVEABS(100,0) '第一段直线,空走 MOVE_OP(0,ON) '开关 MOVE_PWM(0, 1, 2000) 'PWM输出占空比为1,频率2K MOVEABS(400,0) '第二段直线 MOVE_PWM(0, 0.7, 2000) '调光,占空比为0.7 MOVECIRCABS(400,-200,400,-100,1) '第三段圆弧 MOVE_PWM(0, 0.5, 2000) '调光,占空比为0.5 MOVEABS(250,-200) '第四段直线 MOVE_OP(0,OFF) '关光 MOVE_DELAY(1000) '延时 MOVEABS(0,0) '第五段直线,空走回到原点 END
6.示波器采样运动波形如下图。
(1)XY模式下的平面插补轨迹如下图。
(2)XYZ模式下的合成轨迹如下图:清晰看出输出口的电平变化。
运动缓冲区清空
运动指令等执行完便会退出运动缓冲区,进入运动缓冲区的命令全部执行完成后,运动缓冲区为空。
用户想要清空运动缓冲区,使用CANCEL或RAPIDSTOP指令,两个指令都有如下四种不同的模式,区别在于,CANCEL针对单个轴,RAPIDSTOP针对所有的轴,每个轴都要一个缓冲区,互不干扰。
模式值 | 说明 |
0(缺省) | 取消当前运动,再执行缓冲区的下一条运动 |
1 | 取消缓冲的所有运动,当前的运动执行完停止 |
2 | 取消当前运动和缓冲运动,运动缓冲区被清空,立即减速停止 |
3 | 立即中断脉冲发送,运动缓冲区被清空,立即减速停止 |
RAPIDSTOP(2) WAIT IDLE(0) BASE(0,1) DPOS=0,0 UNITS=1000,1000 ATYPE=1,1 SPEED=200,200 ACCEL=1000,1000 DECEL=1000,1000 '减速度设为1000 FASTDEC=10000,10000 '快减减速度设为10000 SRAMP=100,100 TRIGGER MOVE(1000,500) '插补运动 DELAY(1000) '延时1秒后取消运动 RAPIDSTOP(2) '清空运动缓冲区,快速停止轴,减速度为10000
2.示波器采样运动波形。
本次,正运动技术经济型EtherCAT运动控制器(七):运动缓冲,就分享到这里。
本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。