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运动控制器的高效加工指令自定义封装"查看。