[其他] 经济型EtherCAT运动控制器(七):运动缓冲

[复制链接]
查看59 | 回复0 | 4 天前 | 显示全部楼层 |阅读模式
>
点击上方正运动小助手,随时关注新动态!

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支持PLCBasicHMI组态三种编程方式。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指令清空运动缓冲区。

如下图,若程序中有多条运动指令,依据轴号的指示,按从上到下的顺序依次扫描进运动缓冲区,按先进先出的顺序依次执行,例如轴0,第一条执行MOVE(100)直线运动指令,可使用MTYPE指令查询运动指令的类型,MOVE(100)执行完成退出缓冲区,释放缓冲空间,接着执行下一条MOVE(150,200)直线插补指令,以此类推。

SP运动指令会写入运动缓存区,使用SP运动指令时(MOVESP、MOVECIRCSP等直接在运动指令后方加上SP),SP指令的速度按SP速度参数运动,而不是SPEED速度,SP速度包含FORCE_SPEED强制速度、ENDMOVE_SPEED结束速度和STRATMOVE_SPEED开始速度,设置的SP速度参数会在运动缓存区中生效。

SP指令与非SP指令的运行效果如下图所示,MOVE(100)的速度是SPEED=100,MOVESP(100)的速度是FFORCE_SPEED=150。




运动缓冲区查询


例如ZMC4系列及以上运动控制器每个轴可支持多达4096段运动缓冲(不同型号的控制器缓冲个数有区别,具体情况参见控制器硬件手册说明或使用“?*max”打印查看max_movebuff参数),可以手动设置LIMIT_BUFFERED运动缓冲限制。

每个轴的运动缓冲都是独立的,互不干扰,且轴的缓冲区大小相同,通过指令REMAIN_BUFFER(MTYPE) AXIS(n)查看某个轴的剩余可用缓冲区的个数。

不同的运动指令占用的缓冲空间是不同的,越复杂的运动占用的运动缓冲空间越多。例如:ZMC432控制器,运动缓冲区大小为4096,缓冲区一次性可缓冲的MOVE直线插补指令和MOVECIRC圆弧插补指令个数是不同的。

LOADED指令用于判断轴的运动缓冲区是否为空,只读参数,返回值0表示运动缓冲区还有指令,返回值为-1表示运动缓冲区空,一般用法为WAIT LOADED。




运动缓冲区堵塞

由于每个轴的运动缓冲空间是有限的,当扫描太多运动指令放入运动缓冲区时,多级运动缓冲区全部被塞满,如果程序继续扫描到更多的运动指令,程序也会被堵塞,直到运动指令依次完成并退出,运动缓冲区有了空位,运动指令才会继续进入运动缓冲区。

例:以ZDevelopV3.10版本的仿真器为例,默认为4096个直线插补的运动缓冲,一个圆弧插补/螺旋线插补/样条插补等插补运动会占用多个直线插补的运动缓冲。

下图例程中显示该控制器的运动缓冲区最多能存459条圆弧插补指令,下载程序后后打印i的值为458,表示当前FOR循环并未执行完,程序堵塞了,下图为直线插补指令过多导致堵塞的效果。


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




运动缓冲中输出


运动缓冲中输出指令能进入运动缓冲区,可在运动缓冲中开启OP口、延时、输出参数,输出PWM、开启任务等,详细指令说明参见Basic编程手册第六章。

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

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

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

2.示例:对比OP和MOVE_OP的输出效果。

RAPIDSTOP(2)WAIT IDLE(0)BASE(0)       '选择轴0DPOS=0UNITS=1000    '脉冲当量ATYPE=1       '脉冲轴类型SPEED=100     '速度ACCEL=1000    '加速度DECEL=1000    '减速度SRAMP=100     'S曲线TRIGGER       '触发示波器采样OP(0,3,$0)    '关闭输出口0-3DELAY(100)    '延时MOVE(100)MOVE_OP(1,ON) '运动缓冲中输出OP(0,ON)      '普通输出
3.例子运行效果如下图。

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

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

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,0UNITS=1000,1000ATYPE=1,1SPEED=200,200ACCEL=1000,1000DECEL=1000,1000          '减速度设为1000FASTDEC=10000,10000      '快减减速度设为10000MERGE=ON, ON             '开启连续插补SRAMP=100,100MOVE_OP(0,OFF)TRIGGER                  '开启运动波形采集MOVEABS(100,0)           '第一段直线,空走MOVE_OP(0,ON)            '开关MOVE_PWM(0, 1, 2000)     'PWM输出占空比为1,频率2KMOVEABS(400,0)           '第二段直线MOVE_PWM(0, 0.7, 2000)   '调光,占空比为0.7MOVECIRCABS(400,-200,400,-100,1)    '第三段圆弧MOVE_PWM(0, 0.5, 2000)   '调光,占空比为0.5MOVEABS(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

立即中断脉冲发送,运动缓冲区被清空,立即减速停止

1.示例:清空运动缓冲,立即停止轴。
RAPIDSTOP(2)WAIT IDLE(0)BASE(0,1)DPOS=0,0UNITS=1000,1000ATYPE=1,1SPEED=200,200ACCEL=1000,1000DECEL=1000,1000          '减速度设为1000FASTDEC=10000,10000      '快减减速度设为10000SRAMP=100,100TRIGGERMOVE(1000,500)           '插补运动DELAY(1000)              '延时1秒后取消运动RAPIDSTOP(2)             '清空运动缓冲区,快速停止轴,减速度为10000

2.示波器采样运动波形。

本次,正运动技术经济型EtherCAT运动控制器(七):运动缓冲,就分享到这里。

更多精彩内容请关注“正运动小助手”公众号,需要相关开发环境与例程代码,请咨询正运动技术销售工程师:400-089-8936。

本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。



回顾往期内容

经济型EtherCAT运动控制器(六):数据储存

经济型EtherCAT运动控制器(五):多任务运行

经济型EtherCAT运动控制器(四):ModbusRTU或ModbusTcp与触摸屏通讯

经济型EtherCAT运动控制器(三):PLC实现多轴直线插补与电子凸轮

经济型EtherCAT运动控制器(二):ZBasic实现多轴直线插补运动

经济型EtherCAT运动控制器(一):功能简介与应用场景


运动控制+机器视觉Demo软件框架(三):视觉纠偏+连续插补的配方编辑

运动控制+机器视觉Demo软件框架(二):移动标定和形状匹配

运动控制+机器视觉Demo软件框架(一):机械参数和配方文件的管理

运动控制+机器视觉Demo软件框架系统概述


开放式激光振镜+运动控制器(六):双振镜运动

开放式激光振镜+运动控制器(五):ZMC408SCAN控制器硬件介绍

开放式激光振镜+运动控制器(四):PSO位置同步输出在激光振镜加工中的应用

开放式激光振镜+运动控制器(三):振镜矫正

开放式激光振镜+运动控制器(二):振镜填充

开放式激光振镜+运动控制器(一):硬件接口


EtherCAT运动控制器之ZMIO300模块的使用

EtherCAT运动控制器的PLC编程(四) 电子凸轮

EtherCAT运动控制器的PLC编程(三) 电子齿轮

EtherCAT运动控制器的PLC编程(二) 圆弧插补

EtherCAT运动控制器的PLC编程(一) 直线插补


快速入门 | 篇二十一:运动控制器ZHMI组态编程简介一

快速入门 | 篇二十一:正运动技术运动控制器自定义通讯

快速入门 | 篇二十:正运动技术运动控制器MODBUS通讯

快速入门 | 篇十九:正运动技术运动控制器多轴同步与电子凸轮指令简介


快速入门 | 篇十八:正运动技术脉冲型运动控制器的使用

快速入门 | 篇十七:运动控制器多轴插补运动指令的使用

快速入门 | 篇十六:正运动控制器EtherCAT总线快速入门

快速入门 | 篇十五:运动控制器运动缓冲简介

快速入门 | 篇十四:运动控制器基础轴参数与基础运动控制指令

快速入门 | 篇十三:正运动技术运动控制器ZDevelop 编程软件的使用


快速入门 | 篇十二:正运动技术运动控制器U盘接口的使用

快速入门 | 篇十一:正运动技术运动控制器中断的应用

快速入门 | 篇十:运动控制器多任务运行特点

快速入门 | 篇九:如何进行运动控制器示波器的应用?

快速入门 | 篇八:如何进行运动控制器EtherCAT总线的基础使用?

快速入门 | 篇七:如何进行运动控制器ZCAN总线扩展模块的使用?


快速入门 | 篇六:如何进行运动控制器数据与存储的应用?

快速入门 | 篇五:如何进行运动控制器输入/输出IO的应用?

快速入门 | 篇四:如何进行运动控制器与触摸屏通讯?

快速入门 | 篇三:如何进行运动控制器ZPLC程序开发?

快速入门 | 篇二:如何进行运动控制器ZBasic程序开发?

快速入门 | 篇一:如何进行运动控制器固件升级?


G代码在运动控制器上的应用

运动控制器的自定义G代码编程应用

离线仿真调试,加快项目进度!

8轴EtherCAT轴扩展模块EIO24088的使用

运动控制器之追剪应用Demo

运动控制器激光振镜控制

ZMC运动控制器SCARA机械手应用快速入门

运动控制器RTEX总线使用入门

正运动技术CAD导图软件配合控制器的使用方法

EtherCAT总线运动控制器应用进阶一


EtherCAT运动控制卡开发教程之Qt(中):小线段连续轨迹加工、暂停与继续

EtherCAT运动控制卡开发教程之Qt(上):开发环境配置与简单运动控制应用


EtherCAT运动控制卡开发教程之python

EtherCAT运动控制卡的SCARA等机器人指令的应用

EtherCAT运动控制卡的PWM与模拟量输出和运动速度同步

EtherCAT运动控制卡硬件比较输出以及编码器锁存

EtherCAT运动控制卡IO动作与运动控制的同步

EtherCAT运动控制卡实时程序的运行和读写控制


EtherCAT运动控制卡的运动暂停、恢复与系统安全设置

EtherCAT运动控制卡小线段前瞻的连续插补运动

EtherCAT运动控制卡的多轴插补运动和手轮运动

EtherCAT运动控制卡的辅助调试工具与方法介绍

EtherCAT运动控制卡的总线轴参数设置和轴运动

EtherCAT运动控制卡的硬件接线与C#的硬件外设读写与回零运动

EtherCAT运动控制卡的硬件接线与C#的单轴运动控制


简单易用的运动控制卡(十六):螺距补偿和反向间隙补偿

简单易用的运动控制卡(十五):PC启停控制器的实时程序

简单易用的运动控制卡(十四):PWM、模拟量输出与运动控制的同步

简单易用的运动控制卡(十三):IO动作与运动控制的同步

简单易用的运动控制卡(十二):运动控制系统的安全设置

简单易用的运动控制卡(十一):运动的暂停恢复和速度倍率设置


简单易用的运动控制卡(十):连续插补和小线段前瞻

简单易用的运动控制卡(九):圆弧插补和螺旋插补

简单易用的运动控制卡(八):直线插补和手轮运动

简单易用的运动控制卡(七):一次性加载多条连续小线段数据

简单易用的运动控制卡(六):Basic文件下载和连续轨迹加工


简单易用的运动控制卡(五):IO配置与回零运动

简单易用的运动控制卡(四):函数库的封装

简单易用的运动控制卡(三):轴参数配置和单轴运动控制

简单易用的运动控制卡(二):外设读写与ZDevelop诊断

简单易用的运动控制卡(一):硬件接线和上位机开发


运动控制卡在ROS上的应用(下)

运动控制卡在ROS上的应用(上)


EtherCAT运动控制卡和LabVIEW构建智能装备(五)

EtherCAT运动控制卡和LabVIEW构建智能装备(四)

EtherCAT运动控制卡和LabVIEW构建智能装备(三)

EtherCAT运动控制卡和LabVIEW构建智能装备(二)

EtherCAT运动控制卡和LabVIEW构建智能装备(一)

EtherCAT运动控制卡在LabVIEW中的运动控制与数据采集


运动控制卡应用开发教程之MATLAB

运动控制卡应用开发教程之C++

运动控制卡应用开发教程之Python

运动控制卡应用开发教程之C#

运动控制卡应用开发教程之Linux

运动控制卡应用开发教程之VB.NET


运动控制卡应用开发教程之VB6.0

运动控制卡应用开发教程之VC6.0

运动控制卡应用开发教程之使用Qt

运动控制卡应用开发教程之LabVIEW

运动控制卡应用开发教程之激光振镜控制

运动控制卡应用开发教程之硬件比较输出


关于正运动技术




正运动技术专注于运动控制技术研究和通用运动控制软硬件产品的研发,是国家级高新技术企业,主要产品有运动控制器、运动控制卡、视觉运动控制一体机、人机界面以及扩展模块等

正运动技术汇集了来自华为、中兴等公司的优秀人才,在坚持自主创新的同时,积极联合各大高校协同运动控制基础技术的研究,是国内工控领域发展最快的企业之一,也是国内少有、完整掌握运动控制核心技术和实时工控软件平台技术的企业。 

正运动技术背靠蓬勃发展的制造业,与时俱进,富有创新,致力于智能制造设备商和终端用户不断提升技术应用和制造水平。经过众多合作伙伴多年的应用开发,产品广泛应用于国内外的3C电子、半导体、印刷包装、纺织服装、激光加工、机械加工、机器人、新能源、医疗保健、舞台娱乐等领域。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则