之前的课程给大家介绍了ZMC432CL-V2硬件接口(详情点击→步进的光栅尺全闭环EtherCAT运动控制器ZMC432CL-V2(一):硬件接口介绍)。本节主要讲解如何通过LabVIEW编写程序调试ZMC432CL-V2的脉冲闭环功能。
ZMC432CL-V2高性能多轴运动控制器是一款兼容EtherCAT总线和脉冲型的独立式运动控制器,具备高速实时反馈功能,支持脉冲全闭环控制,能够实现高精度、高响应速度的运动控制。高精度定位,有效消除机械传动误差,满足高精密加工场景应用要求。 1.ZMC432CL-V2硬件功能 (1)丰富的运动控制功能:支持直线、圆弧、空间圆弧、螺旋插补等。(2)硬件接口丰富:支持脉冲轴(带编码器反馈)和EtherCAT总线轴,具备24路输入和12路输出的通用IO,部分为高速IO,2路模拟量输出(DA)。(3)EtherCAT刷新周期最快达250us,满足高速通信需求。(4)支持4通道硬件比较输出、硬件定时器、运动中精准输出,适用于多通道视觉飞拍等场合。(5)支持掉电检测、掉电存储,多种程序加密方式,能够有效防止系统故障,保护项目工程文件数据,并提高系统的可靠性。(6)通过纯国产IDE开发环境RTSys进行项目开发,可实时仿真、在线跟踪以及诊断与调试,简便易用,支持多种高级上位机语言联合编程进行二次开发。
更多关于ZMC432CL-V2详情介绍点击→步进控制的光栅尺全闭环解决方案:32轴EtherCAT总线运动控制器ZMC432CL-V2。
二、LabVIEW如何调用ZMotion的动态库进行项目开发 1.找到厂家提供的光盘资料里面的LabVIEW的VI库文件,路径如下。 1)进入厂商提供的光盘资料找到“04PC函数”文件夹,并点击进入。3)选择“Windows平台”文件夹。 4)选择“Labview文件夹”,里面有32位和64位的动态库和例程。 2.将厂商提供的LabVIEW的VI库文件复制到LabVIEW安装路径下LabVIEW/user.lib的文件夹内。1)找到解压的VI库文件夹(zauxdll是32位的VI库,64的VI库是newZauxDll64)。2)选中LabVIEW右击打开文件所在位置(这里以LabVIEW2013-32位为演示)。 3)将整个VI库文件夹直接复制放到user.lib该目录,然后关闭LabVIEW软件重新启动。3.重新启动LabVIEW后,选择新建VI,然后右键点击VI程序框图空白处,选择用户库来找到添加的VI库,或者直接搜索VI,最后将需要的函数直接拖到面板上。
2.控制器接口之链接控制器,获取链接句柄。 指令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库中,专门用于控制卡连接数据定义类型; |
指令1 | ZAux_OpenCom | 指令原型 | int32 __stdcall ZAux_OpenCom(uint32 comid,ZMC_HANDLE *phandle ) | 指令说明 | 串口方式连接控制器。 | 输入参数 | | 输出参数 | | 返回值 | 成功返回值为0,非0详见错误码说明。 | 指令示例 | 串口连接控制器 | 详细说明 | 1.控制器提供多种方式连接,该指令为串口连接方式,较于网口连接,串口 连接,通讯速率不高。 2.ZMC_HANDLE 类型:Zmotion 库中,专门用于控制卡连接数据定义类 型; 3.控制器串口默认的参数 | 有一些使用频率较低的Basic指令我们没有封装到上位机的辅助库中,如果用户上位机需要调用对应的Basic指令的话,可以通过在线命令自行进行相关指令封装。指令265 | ZAux_DirectCommand | 指令原型 | int32 __stdcall ZAux_DirectCommand(ZMC_HANDLE handle, const char *pszCommand,char *psResponse, uint32 uiResponseLength) | 指令说明 | 发送字符串命令到控制器,直接方式(不进缓冲区,有少数命令,暂时不支持)。 | 输入参数 | 参数名 | 描述 | handle | 连接句柄。 | pszCommand | 发送的命令字符串。 | uiResponseLength | 返回的字符长度。 |
| 输出参数 | 参数名 | 描述 | uiResponseLength | 返回的字符串。 |
| 返回值 | 成功返回值为0,非0详见错误码说明。 | 指令示例 | 在线命令函数的使用 | 详细说明 | 上位机调用上位机未封装的Basic指令功能 |
指令264 | ZAux_Execute | 指令原型 | int32 __stdcall ZAux_Execute(ZMC_HANDLE handle, const char *pszCommand, char *psResponse, uint32 uiResponseLength) | 指令说明 | 发送字符串命令到控制器,缓存方式(当控制器没有缓冲时自动阻塞)。 | 输入参数 | 参数名 | 描述 | handle | 连接句柄。 | pszCommand | 发送的命令字符串。 | uiResponseLength | 返回的字符长度。 |
| 输出参数 | | 返回值 | 成功返回值为0,非0详见错误码说明。 | 指令示例 | 在线命令函数的使用 | 详细说明 | 上位机调用上位机未封装的Basic指令功能 |
四、LabVIEW编写例程调试ZMC432CL-V2的脉冲闭环功能 1.脉冲闭环测试例程界面的设计。 2.IP连接按钮和串口连接按钮如何连接控制器。 (1)网口连接 3.闭环按钮如何打开和关闭脉冲闭环功能,更新PID参数按钮如何更新PID参数。 (2)另外一个循环超时事件判断轴参数是否使能
五、通过RTSys的示波器对比开环控制和全闭环控制的情况 1.开环控制情况分析 测试发现:步进驱动器的开环控制,运动过程中随动误差(规划位置和光栅尺反馈位置的差值)一直维持在0.02个用户单位左右(这里一个用户单位即一个UNITS设置的是1mm),当运动结束时光栅尺的反馈位置和指令规划位置也不相等,大概差了0.0015个用户单位,折算为脉冲数是0.0015*用户单位=3个脉冲。2.闭环控制情况分析 测试发现:步进驱动器的闭环控制,运动过程中随动误差(规划位置和光栅尺反馈位置的差值)除了启动和停止以外大部分保持在0个脉冲当量左右,相比较开环控制有较大的提升,当运动结束时光栅尺的反馈位置和指令规划位置也是相等的。1.启用控制器闭环的时候注意要在打开encoder_servo后,打开servo之前要完成一次ATYPE从0到4的切换,这样才可以正常打开控制器闭环的功能。 2.启用控制器闭环同时还需要打开单轴使能axis_enable,这样才能保证控制器闭环的正常启用。 3.为保证控制器闭环功能的完全关闭,在关闭ENCODER_SERVO后需要完成一次 ATYPE从0到4的切换,这样才能保证控制器闭环功能完全关闭。 完整代码获取地址 本次,正运动技术步进的光栅尺全闭环EtherCAT运动控制器ZMC432CL-V2(四):LabVIEW编程调试,就分享到这里。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |