LabVIEW运动控制(三):EtherCAT运动控制器的高效加工指令自定义封装

ZMC408CE 高性能总线型运动控制器

ZMC408CE是正运动推出的一款多轴高性能EtherCAT总线运动控制器,具有EtherCAT、EtherNET、RS232、CAN和U盘等通讯接口,ZMC系列运动控制器可应用于各种需要脱机或联机运行的场合。

ZMC408CE支持PLC、Basic、HMI组态三种编程方式。PC上位机API编程支持C#、C++、LabVIEW、Matlab、Qt、Linux、VB.Net、Python等接口。

ZMC408CE硬件功能特性:

1.支持8轴运动控制(脉冲+EtherCAT总线),EtherCAT同步周期可快至125us;

2.24路通用输入、16路通用输出,模拟量AD/DA各两路;

3.8路10MHz高速差分脉冲输出,总线轴、脉冲轴可混合插补;

4.高性能处理器,提升运算速度、响应时间和扫描周期等;

5.一维/二维/三维、多通道视觉飞拍,高速高精;

6.位置同步输出PSO,连续轨迹加工中对精密点胶胶量控制和激光能量控制等;

7.多轴同步控制,多坐标系独立控制等;

8.直线插补、任意空间圆弧插补、螺旋插补、样条插补等;

9.应用灵活,可PC上位机开发,也可脱机独立运行;

PCIE464M PCIe EtherCAT总线运动控制卡

PCIE464M是一款基于PCIe的PCI Express的EtherCAT总线运动控制卡,具有多项实时和高精度运动控制控制功能。

PCIE464M运动控制卡上自带16进16出,第三方图像处理工控机或PC无需额外配置IO数据采集卡和PLC,即可实现IPC形态的机器视觉运动控制一体机,简化硬件架构,节省成本,软硬件一体化。

PCIE464M硬件功能特性:

1.可选6-64轴运动控制,支持EtherCAT总线/脉冲/步进伺服驱动器;

2.联动轴数最高可达16轴,运动周期最小为100μs;

3.标配16进16出,其中4路高速锁存输入、4路高速PWM和12路高速硬件比较输出PSO;

4.支持PWM输出、1D/2D/3D PSO硬件位置比较输出、视觉飞拍、连续轨迹插补等;

5.支持30+机械手模型正逆解模型算法,比如SCARA、Delta、UVW、4轴/5轴 RTCP...;

6.支持掉电存储和掉电中断,多重加密,提供程序更安全机制;

7.8路单端脉冲轴、4路单端编码器轴;

8.具有一维、二维螺距补偿控制,实现更高的加工精度;

ECI2A18B 高性价比10轴运动控制卡

ECI2A18B是正运动推出的一款高性价比10轴脉冲型、模块化的网络型运动控制卡,采用优化的网络通讯协议可以实现实时的运动控制,同时支持多种通信协议,方便与其他工业控制设备连接和集成。安装配置相对便捷,适合于模块化和灵活性要求较高的控制系统。

ECI2A18B控制卡最大可扩展至12脉冲轴,支持8路高速输入和4路高速输出,集成丰富的运动控制功能,包含多轴点位运动、电子凸轮,直线插补,圆弧插补,连续插补运动等,满足多样化的工业应用需求。

ECI2A18B硬件功能特性:

1.支持6路差分脉冲轴+4路单端脉冲轴运动控制;

2.支持1路专用的手轮输入接口;

3.差分脉冲轴最大输出脉冲频率10MHz;

4.标配24+12进16+6出,其中支持4路高速锁存,4路高速PWM,2路高速硬件比较输出PSO(可选支持HW2功能);

5.可支持RTSys+其他高级上位机编程语言的混合编程支持;

6.支持RTBasic多任务编程;

▶▶▶ LabVIEW项目开发

1.找到厂家提供的光盘资料里面的LabVIEW的VI库文件,路径如下。

1)进入厂商提供的光盘资料找到"04PC函数"文件夹,并点击进入。

2)选择"01 PC函数库V2.1"文件夹。

3)选择"Windows平台"文件夹。

4)选择"Labview文件夹",里面有32位和64位的动态库和例程。

2.将厂商提供的LabVIEW的VI库文件复制到LabVIEW安装路径下LabVIEW/user.lib的文件夹内。

1)找到解压的VI库文件夹(zaudll是32位的VI库,64的VI库是newZauxDll64)。

2)选中LabVIEW右击打开文件所在位置(这里以LabVIEW2013-32位为演示)。

3)将整个VI库文件夹直接复制放到user.lib该目录,然后关闭LabVIEW软件重新启动。

3.重新启动LabVIEW后,选择新建VI,然后右键点击VI程序框图空白处,选择用户库来找到添加的VI库,或者直接搜索VI,最后将需要的函数直接拖到面板上。

▶▶▶ PC函数介绍

PC函数手册可在光盘资料查看,具体路径如下。

▶▶▶ 在线命令

1. 指令列表

2.重点说明

ZAux_Execute或ZAux_DirectCommand可对basic指令进行封装。如果使用到没有封装的命令或者想封装自己的函数,可以通过ZAux_Execute或 ZAux_DirectCommand进行发送,或是参照已有代码修改增加相应的函数。

发送字符串命令有两种方式,缓冲方式和直接方式。具体如图所示:

3.ZAux_Execute与ZAux_DirectCommand的区别

(1)ZAux_DirectCommand是直接发送到控制器,ZAux_Execute需要得到控制器应答才能发送到控制器。

如果短时间内多次使用ZAux_Execute,会造成ZAux_Execute发送命令阻塞,上位机跟控制器断开连接。

一般建议使用ZAux_DirectCommand,除非是ZAux_DirectCommand不支持的语句才使用ZAux_Execute。

例如分别用ZAux_DirectCommand和ZAux_Execute快速的循环发送运动指令MOVE(100),ZAux_DirectCommand会返回错误码1002(无运动缓冲),那是因为控制器的运动缓冲区满了。

如果控制器的固件版本很新(例如RTSys的仿真器),ZAux_Execute会返回20003(超时,可能是fifo缓冲阻塞),控制器固件版本不算特别新的,ZAux_Execute会返回字符串"Online command warn, ZMotion move command blocked."(在线命令警告,ZMotion移动命令被阻塞)。

(2)因为ZAux_DirectCommand是以直接的方式把输入框的字符串命令发送到控制器的,所以当在线命令字符是错误的时候,ZAux_DirectCommand会运行失败,错误返回值显示非0。

但是这错误值只是ZAux_DirectCommand运行失败的原因,并不能说明在线命令字符的错误原因,而同样的情况,ZAux_Execute就运行成功,错误返回值显示0,但是ZAux_Execute返回的字符串会显示在线命令字符的错误。

▶▶▶ 例程说明

1.综合例程界面如下

2.例程简易流程图

3.连接控制器

要想通过上位机控制控制器,就必须先连接控制器,上位机连接控制器的接口有四种,分别是网口连接、串口连接、PCI和LOCAL连接。

IP连接方式

串口连接方式

PCI连接方式

LOCAL连接方式

4.Direct命令按键与Execute命令按键

(1)点击Direct命令按键,以直接的方式把输入框的字符串命令发送到控制器,不进缓冲区,有少数命令,暂时不支持,例如?*MAX(打印所有规格参数)。

(2)点击Execute命令按键,以缓存的方式把输入框的字符串命令发送到控制器,当控制器没有缓冲时自动阻塞,例如发送运动命令时自动阻塞时会显示"Online command warn, ZMotion move command blocked."(在线命令警告,ZMotion移动命令被阻塞)。

(3)Direct命令按钮和Execute命令按钮的事件处理是同一个,通过判断Direct命令按钮来确认使用哪个接口,程序框图如下。

(4)分别通过ZAux_DirectCommand和ZAux_Execute发送在线命令?*MAX(打印所有规格参数)。

可以看出?*MAX(打印所有规格参数)就是ZAux_DirectCommand少数不支持的命令之一,这些ZAux_DirectCommand少数不支持的命令可以通过ZAux_Execute进行使用。

5.清空按键

(1)点击清空按键清空界面显示之前。

(2)点击清空按键清空界面显示之后。

(3)清空按钮的事件处理程序框图如下。

6.自定义函数按键

本例程设置了3个自定义函数按键作为例子,分别对应3种常见的在线命令接口使用场景。

(1)自定义函数1按键。该按键主要演示了如何用Execute函数封装一个使用在线命令获取控制器型号的VI和如何用DirectCommand函数封装一个使用在线命令设置速度功能的VI。

a.自定义封装vi获取控制器型号。

b.判断处理自定义封装获取控制器型号VI的错误码和返回值。

c.通过ZAux_Direct_SetSpeed获取在使用自定义设置速度的VI之前的速度。

d.通过ZAux_DirectCommand封装的设置轴速度VI的调用和封装程序框图。

e.通过ZAux_Direct_SetSpeed获取在使用自定义设置速度的VI之后的速度,验证自定义设置速度的VI是否成功修改轴速度。

f.把处理过的信息显示到界面的字符串显示框。

(2)用户若想要获取多种数据,如轴的命令位置,轴的反馈位置,板卡上的 IO 点等等,往往都是通过多种单独独立的函数获取不同的数据,这样堆积,会导致读写次数的上位,导致程序的卡顿。为了提升一个上位程序的,往往可以通过自己定义一个自己的函数,通过一个函数,快速的把数据传输到上位程序上面来,而非是通过多次循环来获取到不同类型的数据。

如下举例:

假设有一个简易的三轴平台,需要读取轴0,轴1,轴2的命令位置、反馈位置和轴状态以及控制器板卡上的输入口0,输入口23,输出口0,输出口,以及三个轴的状态。获取数据程序如下:

a.通过ZAux_DirectCommand封装的获取多参数VI的调用和封装程序框图。

b.自定义函数封装的获取多参数VI程序框图中的拼接在线命令字符。

c.自定义函数封装的获取多参数VI程序框图中的发送在线命令字符串。

d.自定义函数封装的获取多参数VI程序框图中的返回字符串处理。

e.把各个数组数据处理成字符串并显示到界面字符串显示框,要处理的数组较多,下面以命令位置数组处理为演示。

(3)一般点胶行业,木工行业用的居多,都是用连续轨迹,连续轨迹之间有插入缓冲输出,如果把运动跟连续轨迹的运动跟缓冲输出分开来发的话,在批量加工下发大量命令时,对通讯效率会有一定影响,采用自定义封装指令的方式,能一次性下发多条运动指令,改善批量加工的效率。

如下举例:

假设控制一个XY两轴平台,从坐标点(0,0)→(100,0)(输出口0输出50ms)→(100,100)(输出口0输出50ms)→(0,100)(输出口0输出50ms)→(0,0)(输出口0输出50ms)的轨迹,则可以通过自己封装,用一条函数,快速发送下去:

a.使用自定义封装VI发送运动指令前的设置。

b.通过ZAux_DirectCommand封装的直线插补与缓存输出运动VI的调用和封装程序框图。

教学视频讲解请点击→"LabVIEW运动控制(三):EtherCAT运动控制器的高效加工指令自定义封装"查看。

相关推荐
牵牛老人1 天前
NI的LABVIEW工具安装及卸载步骤说明
c++·labview
朝去夜来1 天前
用labview写crc8校验
labview
LabVIEW开发2 天前
LabVIEW 开发如何降本增效
labview
LabVIEW开发4 天前
LabVIEW 中串口设备与采集卡的同步精度
labview
Abcdsa4 天前
labview cDAQ新手入门教程
labview
LabVIEW开发5 天前
LabVIEW提升程序响应速度
labview·labview知识·labview功能
LabVIEW开发5 天前
LabVIEW 油井动液面在线监测系统
labview·labview知识·labview功能
LabVIEW开发5 天前
LabVIEW商业软件开发注意问题
labview·labview知识·labview功能
秣厉科技6 天前
【秣厉科技】LabVIEW工具包——OpenCV 教程(18):highgui 模块
科技·opencv·labview