EtherCAT 是用于自动化控制的最佳实时环形控制总线之一。本文将带您以最简单的方式实际操作ZMC300E EtherCAT总线,使您的EtherCAT电机旋转。
前言
当鼠标插入电脑时会发生什么?
首先,电脑会检测到USB已插入;
然后电脑会提示您安装驱动程序;
最后还可以使用鼠标来移动光标、单击、双击等操作。
这是一个问题吗?目前没有问题,但是作为程序员,有两个地方值得深挖。 1. 电脑上安装了什么驱动程序?当然是鼠标驱动程序,因为我们要连接鼠标。但计算机怎么知道呢?事实证明,USB 规范要求每个USB 设备都有自己的设备描述符。计算机只有通过分析描述符才知道连接了什么设备。 2、为什么可以通过鼠标移动光标?这是双方共同合作的结果。首先,鼠标提供光标位置的数据,然后计算机接收到来自鼠标的数据后,将数据应用到光标位置以产生移动效果。这需要一个前提,那就是鼠标数据的格式。计算机在解释该数据之前需要知道其格式。该数据格式的定义在USB接口描述符规范中定义。
说了这么多,这和EtherCAT有什么关系吗?当然,对于EtherCAT或者任何总线,都需要知道接入设备的类型和数据格式,否则无法解读数据。通常有两种方式:
事先协议:通过事先协议确定工作将如何进行。就像发一条消息说“晚上八点一起看电影吧”一样简单,这就是我喜欢它的原因。但有时这份协议就像友谊之船,一言不合就会倾覆。对方连招呼都不打,只剩下你一个人傻傻地站在电影院门口;
协议规范:定义一套完整的规范,大家都会遵循。规格通常较多且复杂,学习成本较高。按规范开发就像基金定投,短期收益较低,但稳定可靠。
EtherCAT 与USB 一样,使用协议规范。下面简单介绍一下EtherCAT的相关规范和用途:
ESI(EtherCAT从站信息):是从站提供的标准描述规范文件。该文件描述了设备类型、数据格式和一些“特殊情况”。这相当于USB设备描述符+接口描述符。
ENI(EtherCAT网络信息):是主站启动时加载的标准配置规范文件,用于初始化所有从站。该文件描述了从站的数量、每个从站的类型和数据格式、DC等配置信息。
ESI也明白,为什么多了一个ENI呢?为了满足工业控制的复杂性,EtherCAT规范在ESI中提供了非常强大的可配置功能,这使得其使用起来相对困难。因此,EtherCAT采用静态配置,即PC机利用可视化工具进行相应的配置工作。配置完成后,将不可变的ENI配置导出并交给特定的主站设备执行。所谓静态配置是指当EtherCAT网络设备发生变化时,需要重新执行配置。相比USB的全自动配置,功能更强大,但使用起来也比较麻烦。有得必有失,这就是EtherCAT的选择。简单总结一下EtherCAT的开发,可以分为三个步骤:生成ENI、加载ENI、解释输入输出数据。
准备
在开始EtherCAT测试之前,需要准备以下硬件:电脑一台、ZMC300E运动控制器一台、EtherCAT伺服驱动器一台、网线2根。然后使用网线连接设备,如下图所示。
生成ENI文件
1.启动EtherCAT服务
打开putty.exe软件,输入运动控制器NET1的默认IP地址:192.168.1.136,账号和密码均为root。
2. 连接设备
启动ZlgEtherCatStudio上位机配置软件,输入运动控制器NET1的默认IP地址:192.168.1.136,点击回车。
3.扫描网络
扫描EtherCAT 总线以识别连接了多少设备,并将其网络拓扑添加到本地主树节点。
4.导入ESI
如果无法正确识别从站,可以手动导入从站ESI(EtherCAT Slave Information)文件。
5. 配置FMMU
一般应用一般不需要配置从站FMMU/SM,使用从站默认配置即可。当需要改变输入输出变量时,可以配置该配置项。
6.生成ENI文件
导出ENI 并将其命名为text_eni。
加载ENI文件1. 通过WinSCP工具将上一步生成的test_eni.xml文件上传到运动控制器的/opt目录下。
2. 使用控制器在putty.exe 工具中加载ENI 配置/文件。首先输入ctrl+c结束当前主站程序。输入以下命令启动主站并加载网卡配置文件:/opt/ecat_test/master /opt/test_eni。在config.xml中,如果看到输出ethercat start success,则表示成功。
解释输入和输出数据
CiA402规范中定义了伺服设备的数据格式。这里给大家介绍一下最常用的位置控制模式的数据格式。
1、输出数据
Controlword:控制字,16Bit,主要用于控制电机通断电、刹车等;
Target Position:目标位置,32Bit,用于控制电机到指定位置。
2. 输入数据(相对于设备)
Statusword:控制字,16Bit,主要用于控制电机通电、断电、刹车等操作;
Position Actual Value:实际位置,用于反馈电机当前位置。我们要做的就是定期解读以上四个数据,然后进行相应的操作。可以参考下面的代码:
电机测试
在putty.exe工具中,可以使用以下命令对电机进行简单的测试。这些命令是根据CiA402 规范实现的。
1. move_test命令
角度表示电机的旋转角度。输入该指令后,电机会重复执行输出:先正转角度,再反转角度。
输入move_test 90,仔细观察电机的转动情况。如果发现旋转角度小于90度,则说明脉冲当量太小,应适当增大。建议以10 次为增量进行测试。该值默认为1。
2、units指令unit代表脉冲当量,units 1000指令用于设置0轴到1000的脉冲当量。使用单位吗?查看所有轴的脉冲当量。
其他补充剂
1.关于脉冲当量
实际应用中,脉冲当量的预备值是如何计算的?这应该根据实际场景和所需的单位来确定。这是一个常见的以角度为单位的脉冲当量计算公式。
编码器的分辨率可以从伺服驱动器手册中获得。
2. 关于EtherCAT主站
ZMC300E提供的EtherCAT主站采用KPA master主站,该主站是经过商业授权的。其主要特点是高效、稳定,支持通过硬件消除帧抖动(ZMC300E可以实现15us抖动)。我公司已购买其版权。用户可以免费自由使用。