点击上方“正运动小助手”,随时关注新动态!
本文以正运动技术EtherCAT运动控制器ZMC408CE为例,介绍如何使用LabVIEW对控制器参数进行获取内容并生成示波器波形。
01ZMC408CE硬件介绍ZMC408CE是正运动推出的一款多轴高性能EtherCAT总线运动控制器,具有EtherCAT、EtherNET、RS232、CAN和U盘等通讯接口,ZMC系列运动控制器可应用于各种需要脱机或联机运行的场合。
ZMC408CE支持8轴运动控制,最多可扩展至32轴,支持直线插补、任意圆弧插补、空间圆弧、螺旋插补、电子凸轮、电子齿轮、同步跟随等功能。ZMC408CE支持PLC、Basic、HMI组态三种编程方式。PC上位机API编程支持C#、C++、LabVIEW、Matlab、Qt、Linux、VB.Net、Python等接口。
ZMC408CE支持8轴运动控制,可采用脉冲轴(带编码器反馈)或EtherCAT总线轴,通用IO包含24路输入口和16路输出口,部分IO为高速IO,模拟量AD/DA各两路,EtherCAT最快125us的刷新周期。
ZMC408CE支持8个通道的硬件比较输出、硬件定时器、运动中精准输出,还支持8通道PWM输出,对应的输出口为OUT0-7,支持8个通道同时触发硬件比较输出。
video: https://mp.weixin.qq.com/mp/readtemplate?t=pages/video_player_tmpl&action=mpvideo&auto=0&vid=wxv_2852688440973623297
ZMC408CE视频介绍
02LabVIEW进行运动控制开发
1、创建LabVIEW项目。
2.将“光盘资料”里面LabVIEW的Vi函数库“zauxdll”文件夹下载到电脑中,然后复制到LabVIEW安装路径下LabVIEW/user.lib的文件夹内。
Zauxdll函数库路径
Zauxdll函数库粘贴路径
3、相关PC函数介绍。
PC函数手册也在光盘资料里面,具体路径如下:“光盘资料\8.PC函数\函数库2.1\ZMotion函数库编程手册 V2.1.pdf”。
(1)ZAux_OpenEth()接口说明。
指令3
| ZAux_OpenEth |
指令原型
|
int32 __stdcall ZAux_OpenEth(char *ipaddr, ZMC_HANDLE * phandle)
|
指令说明
|
以太网连接控制器。
|
输入参数
| |
输出参数
| |
返回值
|
成功返回值为0,非0详见错误码说明。
|
指令示例
|
网口连接控制器
|
详细说明
|
1.网口采用RJ45标准网线接口,通讯速率为100Mbit/s。
2.控制器出厂的IP地址为192.168.0.11,端口号为502。对端通讯设备需与控制器处于同一网段,才可进行连接。
3.最常用的控制器连接方式。
4.ZMC_HANDLE 类型:Zmotion库中,专门用于控制卡连接数据定义类型;
| (2)获取table寄存器内容,导入示波器数据源。
指令228
| ZAux_Direct_GetTable |
指令原型
|
int32 __stdcall ZAux_Direct_GetTable(ZMC_HANDLE handle, int tabstart, int numes, float *pfValue)
|
指令说明
|
读取TABLE中的数据。
|
输入参数
|
参数名
|
描述
|
handle
|
连接句柄。
|
tabstart
|
读取Table寄存器的起始编号
|
numes
|
读的个数
|
|
输出参数
| |
返回值
|
成功返回值为0,非0详见错误码说明。
|
指令示例
|
Table寄存器的使用
|
详细说明
|
是控制器自带的一个超大数组,数据类型为32位浮点型(4系列及以上为64位浮点数),掉电不保存。
| (3)获取规划位置。
指令27
| ZAux_Direct_GetDpos |
指令原型
|
int32 __stdcall ZAux_Direct_GetDpos(ZMC_HANDLE handle, int iaxis, float *pfValue)
|
指令说明
|
读取轴当前位置或称控制器发送的需求位置,单位units。
|
输入参数
|
参数名
|
描述
|
handle
|
连接标识。
|
iaxis
|
轴号。
|
|
输出参数
| |
返回值
|
成功返回值为0,非0详见错误码说明。
|
指令示例
|
轴基本运动参数设置获取
|
详细说明
|
/
| (4)获取反馈速度。
指令37
| ZAux_Direct_GetMspeed |
指令原型
|
int32 __stdcall ZAux_Direct_GetMspeed(ZMC_HANDLE handle, int iaxis, float *pfValue)
|
指令说明
|
读取当前实时的轴反馈速度,单位units。
|
输入参数
|
参数名
|
描述
|
handle
|
连接标识。
|
iaxis
|
轴号。
|
|
输出参数
|
参数名
|
描述
|
pfValue
|
返回的实时的轴反馈速度。
|
|
返回值
|
成功返回值为0,非0详见错误码说明。
|
指令示例
|
float fValue;
ret = ZAux_Direct_GetMspeed(handle, 0, &fValue);
//读取轴0当前反馈速度。handle:控制器连续句柄
|
详细说明
|
/
| (5)获取规划速度。
指令38
| ZAux_Direct_GetVpSpeed |
指令原型
|
int32 __stdcall ZAux_Direct_GetVpSpeed (ZMC_HANDLE handle, int iaxis, float *pfValue)
|
指令说明
|
读取控制器发送的轴实时运动速度,单位units/s。
|
输入参数
|
参数名
|
描述
|
handle
|
连接标识。
|
iaxis
|
轴号。
|
|
输出参数
|
参数名
|
描述
|
pfValue
|
返回的控制器发送的轴实时速度。
|
|
返回值
|
成功返回值为0,非0详见错误码说明。
|
指令示例
|
float fValue;
ret = ZAux_Direct_GetVpSpeed(handle, 0, &fValue);
//读取轴0当前命令运动速度。handle:控制器连续句柄
|
详细说明
|
1.当多轴运动时,主轴返回的是插补运动的速度,不是主轴的分速度。
2.非主轴返回的是相应的分速度,与反馈速度效果一致。
3.规划速度在默认情况下是为显示多轴合成速度设计的,是没有负值的,除非把SYSTEM_ZSET(zbasic指令,PC可以用这个函数:
ZAux_Direct_SetParam(句柄, “SYSTEM_ZSET”,轴号, 设置值))的bit0的值设置为0,就可以用来显示单轴的命令速度,可正可负。
| (6)获取反馈位置。
指令29
| ZAux_Direct_GetMpos |
指令原型
|
int32 __stdcall ZAux_Direct_GetMpos(ZMC_HANDLE handle, int iaxis, float *pfValue)
|
指令说明
|
读取轴测量反馈位置,单位units。
|
输入参数
|
参数名
|
描述
|
handle
|
连接标识。
|
iaxis
|
轴号。
|
|
输出参数
|
参数名
|
描述
|
pfValue
|
获取当前轴测量反馈位置。
|
|
返回值
|
成功返回值为0,非0详见错误码说明。
|
指令示例
|
轴基本运动参数设置获取
|
详细说明
|
/
| (7)电子凸轮运动。
指令3
| ZAux_Direct_Cam |
指令原型
|
int32 __stdcall ZAux_Direct_Cam(ZMC_HANDLE handle,int iaxis, int istartpoint, int iendpoint, float ftablemulti, float fDistance)
|
指令说明
|
电子凸轮,CAM指令根据存储在TABLE中的数据来决定轴的运动。
|
输入参数
|
参数名
|
描述
|
handle
|
连接标识。
|
iaxis
|
轴号。
|
istartpoint
|
起始点TABLE编号,存储第一个点的位置。
|
iendpoint
|
结束点TABLE编号。
|
ftablemulti
|
位置乘以这个比例,一般为脉冲当量。
|
fDistance
|
参考运动的距离,用来计算总运动时间。
|
|
输出参数
|
/
|
返回值
|
成功返回值为0,非0详见错误码说明。
|
指令示例
|
凸轮表例程
|
详细说明
|
注:两个或多个CAM指令可以同时使用同一段TABLE数据区进行操作。
运动的总时间由设置速度和第四个参数决定,运动的实际速度根据TABLE轨迹与时间自动匹配。
TBALE数据需要手动设置,第一个数据为引导点,建议设为0。
TABLE数据*table multiplier这个比例=发出的脉冲数。
请确保指令传递的距离参数*units是整数个脉冲,否则出现浮点数会导致运动有细微误差。
|
4、LabVIEW进行运动控制的数据采集数据源获取。
(1)新建Vi,在前面板,右键鼠标,选择控件进行UI设计,如图所示,左边是连接界面以及获取点数、数据源等,右边是示波器图形规划的位置。
(2)在程序编辑框中通过鼠标,在添加的帧里面添加“While循环”,在“While循环”里面又添加“事件结构”,右击选择添加事件分支,选择“超时”事件,获取当前获取到数据源的采样点数,并将数据源数据导入到示波器中按波形显示出来。
(3)选择事件结构,右击选择添加事件分支,在循环结构中,当句柄为空时自动进行获取当前ip的控制器,然后在该事件分支中使用“Z Aux Open Eth.vi”函数对控制器进行连接,以实现连接控制器按钮的功能。
(4)选择事件结构,右击选择添加事件分支,选择“断开”值改变,然后在该事件分支中使用“Z Aux Close.vi”函数对控制器断开连接,以实现断开链接按钮的功能。
(5)选择事件结构,右击选择添加事件分支,选择“触发”值改变,然后在该事件分支中使用“Z Aux Trigger.vi”函数进行触发示波器抓取,以实现触发指令抓取数据源将数据存储到table寄存器中。
(6)选择事件结构,右击选择添加事件分支,选择“启动采集”值改变,然后在该事件分支中使用“Z Aux Execute.vi”函数调用指令SCOPE进行启动获取数据源数据,存放到table寄存器中。
(7)选择事件结构,右击选择事件,选择“XY图:”鼠标改变,然后在该事件分支实时读取XY示波器以及XY2示波器对应范围内鼠标的坐标位置,并显示在界面上。
(8)选择条件结构,当正弦运动按钮按下时两段触发正弦运动使用平铺顺序结构按顺序执行两段电子凸轮运动指令,使用“Z Aux Cam.vi”函数按照提前加载在table寄存器内的数据进行对应电子凸轮运动。
03调试与监控编译运行例程,同时连接ZDevelop软件,并对应使用单轴小例程运动一个正弦波形轨迹,进行抓取波形进行对比LabVIEW示波器波形以及ZDevelop软件波形对比。1.生成正弦波形数据的算法指令如下。DIM num_p,scale,m,t '变量定义num_p=100scale=500FOR p=0 TO num_p TABLE(p,((-SIN(PI*2*p/num_p)/(PI*2))+p/num_p)*scale) 'table存储凸轮表运动参数NEXT
2、ZDevelop软件示波器波形如下图所示。
3、LabVIEW示波器波形,示波器数据源是DPOS数据内容,与ZDevelop软件示波器dpos波形一致。
4、LabVIEW示波器波形,示波器数据源是VP_Speed数据内容,与ZDevelop软件示波器VP_speed波形一致。
本次,正运动技术EtherCAT运动控制器在LabVIEW中的运动控制与实时数据采集,就分享到这里。
更多精彩内容请关注“正运动小助手”公众号,需要相关开发环境与例程代码,请咨询正运动技术销售工程师:400-089-8936。
本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。
回顾往期内容
开奖啦!参与《运动控制系统应用与实践》赠书活动的粉丝们看这里
送书福利!全自主IDE的《运动控制系统应用与实践》
EtherCAT运动控制器在ROS上的应用(下)
EtherCAT运动控制器在ROS上的应用(上)
皮带同步跟随:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(十四)
自定义电子凸轮曲线的运动:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(十三)
连续轨迹加工和速度前瞻:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(十二)
PT/PVT运动模式介绍:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(十一)
项目工程下载与XML配置文件下载:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(十)
EtherCAT驱动器回零与控制器回零:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(九)
二维/三维的多轴PSO视觉飞拍与精准输出:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(八)
单轴PSO视觉飞拍与精准输出:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(七)
硬件位置比较输出和编码器锁存:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(六)
EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(五):通过RTSys进行调试与诊断
EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(四):板载IO与总线扩展IO的编码器与脉冲配置的应用
EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(三):EtherCAT总线CSP,CSV,CST模式切换
EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(二):EtherCAT总线初始化
EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(一):驱动安装与建立连接
全国产EtherCAT运动控制边缘控制器(六):RtBasic文件下载与连续轨迹加工的Python+Qt开发
全国产EtherCAT运动控制边缘控制器(五):IO配置与回零运动的Python+Qt开发
全国产EtherCAT运动控制边缘控制器(四):轴参数配置与单轴运动PC上位机C++控制
全国产EtherCAT运动控制边缘控制器(三):外设读写与RTSys开发诊断
全国产EtherCAT运动控制边缘控制器(二):统一的上位机API接口
全国产EtherCAT运动控制边缘控制器(一):ZMC432H硬件接口
高柔SS加减速曲线在锂电池焊接中的应用
EtherCAT和Ethernet的不同点有哪些, 通信周期又是什么意思?
工业以太网时代,该如何选择总线运动控制器?
EtherCAT运动控制器在数控加工手轮随动中的应用
EtherCAT运动控制器在数控加工手轮随动中的应用之C++
正运动技术运动控制器如何快速实现单轴/多轴同步跟随功能?
运动控制器PSO视觉飞拍与精准输出的C++开发(三):二维/三维/多轴PSO输出
运动控制器PSO视觉飞拍与精准输出的C++开发(二):多轴PSO等距/周期输出
运动控制器PSO视觉飞拍与精准输出的C++开发(一):单轴PSO
运动控制器八通道PSO的视觉飞拍与精准输出
Windows实时运动控制软核(七):LOCAL高速接口测试之Labview
Windows实时运动控制软核(六):LOCAL高速接口测试之Matlab
Windows实时运动控制软核(五):LOCAL高速接口测试之VC6.0
Windows实时运动控制软核(四):LOCAL高速接口测试之VB.NET
Windows实时运动控制软核(三):LOCAL高速接口测试之C++
Windows实时运动控制软核(二):LOCAL高速接口测试之Qt
Windows实时运动控制软核(一):LOCAL高速接口测试之C#
开放式激光振镜运动控制器:C++ 快速调用图形库应用
开放式激光振镜运动控制器:C++振镜矫正方法与实现
开放式激光振镜运动控制器:C++快速开发
开放式激光振镜运动控制器(五):ZMC408SCAN 光纤激光器的能量控制
开放式激光振镜运动控制器(四):ZMC408SCAN振镜控制光纤激光器加工
开放式激光振镜运动控制器(三):ZMC408SCAN轴控光纤激光器加工
开放式激光振镜运动控制器(二):ZMC408SCAN激光接口与控制
开放式激光振镜运动控制器(一):ZMC408SCAN接口与功能
运动控制器PSO位置同步输出(三):高精度等间距二维三维PSO输出
运动控制器PSO位置同步输出(二):PSO模式详解
运动控制器PSO位置同步输出(一):硬件平台与PSO指令简介
经济型EtherCAT运动控制器(十):EtherCAT总线快速入门
经济型EtherCAT运动控制器(九):示波器使用
经济型EtherCAT运动控制器(八):轴参数与运动指令
经济型EtherCAT运动控制器(七):运动缓冲
经济型EtherCAT运动控制器(六):数据储存
经济型EtherCAT运动控制器(五):多任务运行
经济型EtherCAT运动控制器(四):ModbusRTU或ModbusTcp与触摸屏通讯
经济型EtherCAT运动控制器(三):PLC实现多轴直线插补与电子凸轮
经济型EtherCAT运动控制器(二):ZBasic实现多轴直线插补运动
经济型EtherCAT运动控制器(一):功能简介与应用场景
运动控制+机器视觉Demo软件框架(三):视觉纠偏+连续插补的配方编辑
运动控制+机器视觉Demo软件框架(二):移动标定和形状匹配
运动控制+机器视觉Demo软件框架(一):机械参数和配方文件的管理
运动控制+机器视觉Demo软件框架系统概述
开放式激光振镜+运动控制器(六):双振镜运动
开放式激光振镜+运动控制器(五):ZMC408SCAN控制器硬件介绍
开放式激光振镜+运动控制器(四):PSO位置同步输出在激光振镜加工中的应用
开放式激光振镜+运动控制器(三):振镜矫正
开放式激光振镜+运动控制器(二):振镜填充
开放式激光振镜+运动控制器(一):硬件接口
EtherCAT轴扩展模块EIO16084在运动控制系统中的应用EtherCAT运动控制器中脉冲接口的快速调试与诊断EtherCAT运动控制器之ZMIO300模块的使用EtherCAT运动控制器的PLC编程(四) 电子凸轮
EtherCAT运动控制器的PLC编程(三) 电子齿轮
EtherCAT运动控制器的PLC编程(二) 圆弧插补
EtherCAT运动控制器的PLC编程(一) 直线插补
快速入门 | 篇二十一:运动控制器ZHMI组态编程简介一
快速入门 | 篇二十一:正运动技术运动控制器自定义通讯
快速入门 | 篇二十:正运动技术运动控制器MODBUS通讯
快速入门 | 篇十九:正运动技术运动控制器多轴同步与电子凸轮指令简介
快速入门 | 篇十八:正运动技术脉冲型运动控制器的使用
快速入门 | 篇十七:运动控制器多轴插补运动指令的使用
快速入门 | 篇十六:正运动控制器EtherCAT总线快速入门
快速入门 | 篇十五:运动控制器运动缓冲简介
快速入门 | 篇十四:运动控制器基础轴参数与基础运动控制指令
快速入门 | 篇十三:正运动技术运动控制器ZDevelop 编程软件的使用
快速入门 | 篇十二:正运动技术运动控制器U盘接口的使用
快速入门 | 篇十一:正运动技术运动控制器中断的应用
快速入门 | 篇十:运动控制器多任务运行特点
快速入门 | 篇九:如何进行运动控制器示波器的应用?
快速入门 | 篇八:如何进行运动控制器EtherCAT总线的基础使用?
快速入门 | 篇七:如何进行运动控制器ZCAN总线扩展模块的使用?
快速入门 | 篇六:如何进行运动控制器数据与存储的应用?
快速入门 | 篇五:如何进行运动控制器输入/输出IO的应用?
快速入门 | 篇四:如何进行运动控制器与触摸屏通讯?
快速入门 | 篇三:如何进行运动控制器ZPLC程序开发?
快速入门 | 篇二:如何进行运动控制器ZBasic程序开发?
快速入门 | 篇一:如何进行运动控制器固件升级?
EtherCAT与RTEX驱动器轴回零的配置与实现
G代码在运动控制器上的应用
运动控制器的自定义G代码编程应用
离线仿真调试,加快项目进度!
8轴EtherCAT轴扩展模块EIO24088的使用
运动控制器之追剪应用Demo
运动控制器激光振镜控制运动控制器轴回零的配置与实现
运动控制器位置锁存功能的应用
ZMC运动控制器SCARA机械手应用快速入门
运动控制器RTEX总线使用入门
正运动技术CAD导图软件配合控制器的使用方法
EtherCAT总线运动控制器应用进阶一
EtherCAT运动控制卡开发教程之Qt(下):SCARA机械手正反解的建立
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
运动控制卡应用开发教程之激光振镜控制
运动控制卡应用开发教程之硬件比较输出
关于正运动技术
深圳市正运动技术有限公司成立于2013年,专注于纯国产运动控制技术研究和通用运动控制软硬件平台和产品的研发,是国家级高新技术和专精特新“小巨人”企业。
正运动技术汇集了来自华为、中兴等公司的优秀人才。力求创新,目前公司拥有专利、著作权等知识产权五十余项。在坚持自主创新的同时,积极联合各大高校和科研院所协同运动控制基础技术的研究,是国内工控领域发展最快的企业之一,也是国内少有、完整掌握运动控制核心技术和实时工控软件平台技术的企业。
正运动技术除本部研发中心外,设有中山、武汉、上海三个研发分部。为更好地服务客户,本部之外设有苏州、东莞两个区域性服务中心,设有佛山、厦门、青岛、西安、武汉、成都、天津、郑州等销售和技术服务机构。
经过众多合作伙伴多年的开发应用,正运动技术的产品广泛地应用于3C电子、半导体、新能源、机器人、包装印刷、纺织服装、激光加工、医疗制药、数控机床、传统加工等领域。
|