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

news2025/4/19 10:37:32

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

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

ZMC408CE.png

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

API.png

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.png

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

IPC.png

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.png

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

接线图.png

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函数手册可在光盘资料查看,具体路径如下。

图片

指令3.png

指令11.png

指令264.png


 

指令265.png

指令278.png

▶▶▶ 在线命令

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2332025.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Xilinx虚拟输入/输出(VIO)IP核详细介绍及使用示例

LogiCORE™ IP虚拟输入/输出(VIO)内核是一款可定制化的内核,能够实时监控和驱动FPGA(现场可编程门阵列)内部信号。其输入和输出端口的数量及位宽均可根据需求定制,以便与FPGA设计进行接口对接。由于VIO内核与被监控和/或驱动的设计保持同步,因此应用于您设计中的所有设计…

Vue3+Vite+TypeScript+Element Plus开发-09.登录成功跳转主页

系列文档目录 Vue3ViteTypeScript安装 Element Plus安装与配置 主页设计与router配置 静态菜单设计 Pinia引入 Header响应式菜单缩展 Mockjs引用与Axios封装 登录设计 登录成功跳转主页 多用户动态加载菜单 Pinia持久化 动态路由-配置 文章目录 目录 系列文档目…

Linux : 内核中的信号捕捉

目录 一 前言 二 信号捕捉的方法 1.sigaction()​编辑 2. sigaction() 使用 三 可重入函数 四 volatile 关键字 一 前言 如果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,这称为捕捉信号。在Linux: 进程信号初识-CSDN博客 这一篇中已经学习到了一种信号…

开发效率提升200%——cursor

cursor带来的编程"革命" 高级语言编程转为"自然语言编程"借助cursor,直接超越初级后台开发、超越初级前端开发、超越初级测试、超越初级UI,产研一体linux命令只用学不用记,语言描述就是命令给一个表结构流程提示词&…

微软庆祝它成立整整50周年

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

SpringBoot 整合 MCP

SpringBoot 整合 MCP MCP MCP 协议主要分为: Client 客户端(一般就是指 openai,deepseek 这些大模型)Server 服务端(也就是我们的业务系统)我们要做的就是把我们存量系统配置成 MCP Server 环境 JDK17…

【详细】MySQL 8 安装解压即用 (包含MySQL 5 卸载)

卸载MySQL 1.卸载 2.安装目录删除残余文件(当初安装的位置) 3.删除programData下面的mysql数据文件 4.检查mysql服务是否存在,如果存在则删除(先暂停mysql服务) sc delete mysql 5.删除注册表中残留信息 安装MySQL 8&…

显示器各类异常处理方法

显示器各类异常处理方法 导航 文章目录 显示器各类异常处理方法导航画面无显示/黑屏/无HDMI信号输入显示器闪烁显示器花屏显示画面模糊或扭曲显示器颜色异常显示器出现死点或亮点 画面无显示/黑屏/无HDMI信号输入 ​ 首先应该检查的是显示器电源(真的有人弄掉电源…

一、简单的 Django 服务

一、配置虚拟环境 1.1 创建一个文件夹在导航栏输入cmd打开 1.2 安装依赖两个库 pip install virtualenv virtualenvwrapper-win -i https://pypi.tuna.tsinghua.edu.cn/simple验证是否安装成功 virtualenv --version pip show virtualenvwrapper-win 1.3 创建虚拟环境 mkvi…

k8s黑科技:Linux+Vagrant+VirtualBox开启Kubernetes奇幻之旅

文章目录 1. 准备硬件2. 安装系统3. 安装 VNC4. 基础配置4.1 路由转发4.2 防火墙4.3 selinux4.4 安装包4.5 重启 5. 配置代理6. 安装 virtuabox7. 安装 vagrant8. 配置 kubespray8.1 安装依赖工具8.2 定制 Vagrantfile8.3 配置代理与时间同步8.4 配置私有镜像仓库 9. 安装虚拟机…

34% 关税冲击下 LabVIEW 开发的变局

2025 年 4 月 4 日,中国国务院关税税则委员会宣布,自 4 月 10 日起对原产于美国的所有进口商品加征 34% 关税。这一举措,给 LabVIEW 开发领域带来显著影响,相关使用者和用户亟需采取应对策略。 ​ 从成本层面看,LabVI…

Http代理服务器选型与搭建

代理服务器选型-Squid 缓存加速 缓存频繁访问的网页、图片等静态资源,减少对原始服务器的重复请求,提升响应速度支持HTTP、HTTPS、FTP等协议,通过本地缓存直接响应客户端请求 访问控制 基于ACL(访问控制列表)实现精细…

Linux主要开发工具之gcc、gdb与make

此系列还有两篇,大家想完整掌握可以阅读另外两篇 Linux文本编辑与shell程序设计-CSDN博客 Linux基础知识详解与命令大全(超详细)-CSDN博客 1.gcc编译系统 1.1 文件名后缀 文件名后缀 文 件 类 型 文件名后缀 文 件 类 型 .c C源…

C++初阶-C++入门基础

目录 ​编辑 1.C的简介 1.1C的产生和发展 1.2C的参考文档 1.3C优势和难度 1.4C学习的建议 2.C的第一个程序 2.1打印Hello world 2.2头文件 2.3namespace命名空间 2.4::作用域限定符 2.5namespace的延伸 2.6C的输入输出 3.总结 1.C的简介 …

idea手动创建resources文件夹

有时maven没有构建成功可能造成,resources文件夹不创建的现象 此时我们可以手动创建 手动创建

第十五届蓝桥杯大赛软件赛省赛Python 大学 C 组题目试做(中)【本期题目:回文数组,挖矿】

OK,继续写我们的第十五届蓝桥杯大赛软件赛省赛Python 大学 C 组题目,后面的题目比较麻烦了,所以我们再分两期讲。 这一期的题有 : 回文数组,挖矿 文章目录 回文数组基本思路第一步,获取半个数组每个数需要…

Qt动画 QAbstractAnimation

文章目录 简介QVariantAnimation 数值动画QPropertyAnimation 属性动画 QAnimationGroup 一组动画QParallelAnimationGroup 并行动画组QSequentialAnimationGroup 串行动画组 简介 QAbstractAnimation 是所有 Qt 动画的基类。 该类定义了所有动画应该都会有的功能函数。 要想实…

SpringMvc的请求-获得请求参数

客户端请求参数的格式是: namevalue&namevalue..… 服务器端要获得请求的参数,有时还需要进行数据的封装,SpringMVC可以接收如下类型的参数: 基本类型参数 POJO类型参数 数组类型参数 集合类型参数 获得基本类型参数 Controller中的业务方法…

flutter开发音乐APP(前提准备)

1、项目的一些环境: 2、接口文档: 酷狗音乐 NodeJS 版 API 3、接口数据结构化 Instantly parse JSON in any language | quicktype UI样式借鉴参考: Coffee-Expert/Apple-Music-New-UI: Apple Music Clone on Flutter, with redesigned UI…

使用docker搭建redis镜像时云服务器无法访问到国外的docker官网时如何解决

下载redis镜像 docker redis:版本号 此时截图中无法访问到国外的docker官网 解决方案&#xff1a; 通过更换镜像源来正常下载redis镜像 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<EOF {"registry-mirrors": ["https://docker.1…