创龙首页 >关于创龙 > 新闻资讯 > 技术文章

联系我们

Contact Us

公司总机:020-8998-6280

技术热线:020-3893-9437

技术邮箱:support@tronlong.com

销售邮箱:sales@tronlong.com

开源IgH EtherCAT主站方案,基于IMX8、ZYNQ、AM335x、T3等平台

2021/09/17

前 言:创龙科技已基于IMX8、ZYNQ、AM5728、AM5708、AM437x、AM335x、T3/A40i等平台提供了开源EtherCAT主站IgH案例。本文档主要演示TLIMX8-EVM评估板基于IgH EtherCAT控制伺服电机方法。如需其他平台相关资料,请与我们联系。


本文档适用开发环境:

Windows开发环境:Windows 7 64bit、Windows 10 64bit

Linux开发环境:Ubuntu 18.04.4 64bit

虚拟机:VMware15.1.0

Linux SDK:5.4.70_2.3.0

Kernel:linux-5.4.70-xenomai-g8d94618-v1.0

IgH EtherCAT:ethercat-stable-1.5-gcd0d17d-20210723

Xenomai:xenomai-v3.1.1-g8b2052e

伺服驱动器:台达ASD-A2-0121-E

伺服电机:台达ECMA-C10401GS


硬件平台:TLIMX8-EVM评估板(NXP i.MX 8M Mini)


(点击图片查看产品详细介绍)

图 2 TLIMX8-EVM评估板



案例详细说明请扫描下方二维码或点击下载链接:

http://site.tronlong.com/pfdownload

1、IgH EtherCAT简介

IgH EtherCAT为运行于Linux系统的免费开源EtherCAT主站程序,框架如下所示,官方文档:https://www.etherlab.org/download/ethercat/ethercat-1.5.2.pdf。



图 1

IgH EtherCAT主站通过构建Linux字符设备,应用程序通过对字符设备的访问实现与EtherCAT主站模块的通信。

IgH EtherCAT开发包提供EtherCAT工具,该工具提供各种可在Linux用户层运行的命令,可直接实现对从站的访问和设置,如设置从站地址、显示总线配置、显示PDO数据、读写SDO参数等。

IgH EtherCAT官网:https://www.etherlab.org/en/ethercat。

2、案例说明

案例功能:控制伺服电机正转和反转。

  1. 正转:伺服电机目标速度从0加速到10000,当达到10000速度后,控制伺服电机减速至0,循环运行。
  2. 反转:伺服电机目标速度从0加速到-10000,当达到-10000速度后,控制伺服电机减速至0,循环运行。

图 2

为便于测试,我司提供已验证的基于Xenomai编译生成的内核镜像文件和设备树镜像文件,位于案例"igh_ethercat_dc_motor\kernel-xenomai\images\linux-5.4.70-xenomai-g8d94618-v1.0\"目录下,请替换至Linux系统启动卡BOOT分区下。同时将linux-5.4.70-xenomai-g8d94618-v1.0目录下的module驱动压缩包5.4.70-g8d94618.tar.gz,解压至Linux系统启动卡rootfs分区"lib/modules/"目录下。

备注:如需使用由内核源码重新编译生成的内核镜像文件、设备树文件和modules驱动,请参考Linux系统使用手册将编译的module驱动安装至Linux系统启动卡中,默认安装后module驱动目录为5.4.70。


图 3

3、案例测试

请按下图所示使用网线连接评估板RGMII ETH网口和伺服驱动器A的IN网口,将伺服驱动器A的OUT网口使用网线连接至伺服驱动器B的IN网口。


图 4


图 5

为便于测试,我司提供的经验证的IgH EtherCAT主站程序为案例"igh_ethercat_dc_motor\igh_ethercat\images\ethercat-stable-1.5-gcd0d17d-20210723\"目录下的ethercat-stable-1.5-gcd0d17d-20210723.tar.gz压缩包,在Ubuntu下解压即可得到IgH EtherCAT主站程序文件夹。

将IgH EtherCAT主站程序文件夹整个拷贝至评估板文件系统,执行如下命令查询评估板网卡物理地址。本次测试将IgH EtherCAT主站程序文件夹命名为__install。

Target# ifconfig


图 6

执行如下命令,加载驱动模块。

Target# insmod /home/root/EtherCAT/__install/modules/ec_master.ko main_devices=ce:bb:9d:3b:d3:6b


图 7

执行如下命令,拷贝EtherCAT主站相关文件至评估板文件系统。

Target# cp /home/root/EtherCAT/__install/etc/sysconfig/ethercat /etc/sysconfig

Target# cp /home/root/EtherCAT/__install/modules/ec_master.ko /lib/modules/5.4.70-g8d94618 //模块驱动名称可通过"uname -r"查看

Target# depmod //同步模块依赖关系


图 8

执行如下命令,启动EtherCAT主站。

Target# /home/root/EtherCAT/__install/etc/init.d/ethercat start


图 9

执行如下命令,加载ec_generic.ko驱动文件。

Target# insmod /home/root/EtherCAT/__install/modules/ec_generic.ko


图 10

执行如下命令,添加IgH动态链接库路径。

Target# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/root/EtherCAT/__install/lib



图 11

将案例igh_ethercat_dc_motor可执行文件拷贝至评估板文件系统,执行如下命令查看参数信息。

Target# ./igh_ethercat_dc_motor --help


图 12

执行如下命令,控制两台伺服电机同时正转。

Target# ./igh_ethercat_dc_motor -d 0


图 13


图 14

按下"Ctrl+C",停止运行程序。


图 15

执行如下命令,控制两台伺服电机同时反转。

Target# ./igh_ethercat_dc_motor -d 1



图 16


图 17

按下"Ctrl+C",停止运行程序。


图 18

备注:案例设置EtherCAT周期为1.1ms,同时串口循环打印EtherCAT周期的最小值和最大值。

参数解析:

  1. latency:等待唤醒时间。
  2. period:EtherCAT通讯周期时间。
  3. exec:接收和发送EtherCAT数据时间。

4、案例编译

4.1IgH EtherCAT主站程序编译

IgH EtherCAT主站程序的编译需依赖于基于Xemomai生成的内核,请参考Linux系统使用手册将案例"igh_ethercat_dc_motor\kernel-xenomai\src\"目录下的linux-5.4.70-xenomai-g8d94618-v1.0内核源码进行编译后,再编译IgH EtherCAT主站程序。

请将案例"igh_ethercat_dc_motor\igh_ethercat\src\"目录下的IgH EtherCAT主站程序开发包ethercat-stable-1.5-gcd0d17d-20210723.tar.gz拷贝至Ubuntu工作目录,执行如下命令进行解压。

Host# mkdir EtherCAT

Host# tar -xvf ethercat-stable-1.5-gcd0d17d-20210723.tar.gz -C EtherCAT/


图 19

进入解压目录,执行如下命令生成configure文件。

Host# ./bootstrap


图 20

执行如下命令,加载SDK环境变量并进行配置。

Host# source /home/tronlong/SDK/environment-setup-aarch64-poky-linux

Host# mkdir __install //创建__install文件夹用于存放生成的文件

Host# ./configure --prefix=/home/tronlong/EtherCAT/__install --with-linux-dir=/home/tronlong/kernel-xenomai/ --enable-8139too=no --enable-generic=yes --host=aarch64-poky-linux

备注:"/home/tronlong/kernel-xenomai/"为案例提供的内核源码目录。


图 21


图 22

执行如下命令,进行编译。

Host# make


图 23


图 24

执行如下命令,编译驱动。

Host# make modules


图 25


图 26

执行如下命令,将生成的IgH EtherCAT主站程序安装至指定路径下。

Host# make install systemdsystemunitdir=/home/tronlong/EtherCAT/__install


图 27


图 28

执行如下命令,将驱动文件拷贝至"__install/modules/"目录下。

Host# mkdir -p __install/modules

Host# cp ./master/ec_master.ko ./__install/modules/

Host# cp ./devices/ec_generic.ko ./__install/modules/


图 29

4.2igh_ethercat_dc_motor案例编译

igh_ethercat_dc_motor案例的编译需基于IgH EtherCAT主站程序,请先编译IgH EtherCAT主站程序。

请将案例"igh_ethercat_dc_motor\src\"目录拷贝至Ubuntu工作目录下,进入src目录执行如下命令修改Makefile相关内容为IgH EtherCAT主站程序对应目录。

Host# vi Makefile


图 30


图 31

然后执行如下命令,加载SDK环境变量并进行编译。编译完成后,将在当前目录下生成可执行文件。

Host# source /home/tronlong/SDK/environment-setup-aarch64-poky-linux

Host# make


图 32

5、关键代码

  1. 创建EtherCAT Master。

图 33

2.创建域。


图 34

3.配置PDO。


图 35

4.为域注册PDO条目。


图 36

5.激活Master。


图 37

6.修改当前进程优先级。


图 38

7.进入循环周期任务。


图 39

8.在周期任务中设置驱动器操作模式、加速度和减速度,分别发送0x6、0x7、0xF使驱动器处于ON状态。


图 40

9.发送目标速度,转动电机。


图 41

6、Xenomai简介

Xenomai是一个免费开源的Linux平台实时框架,通过使用与Linux内核并行运行的实时协同内核(real-time co-kernel)处理所有对时间要求严格的活动,例如处理中断和调度实时线程。Cobalt core比原生Linux与RT-Linux内核具有更高的优先级。


图 42


图 43

6.1编译说明

案例使用的Xenomai版本为3.1.1,开发包为案例"igh_ethercat_dc_motor\xenomai\src\"目录下的xenomai-v3.1.1-g8b2052e.tar.gz,将其拷贝至Ubuntu工作目录下,执行如下命令进行解压。

Host# mkdir Xenomai

Host# tar -xvf xenomai-v3.1.1-g8b2052e.tar.gz -C Xenomai/


图 44

进入解压目录,执行如下命令在当前目录生成configure文件。

Host# ./scripts/bootstrap


图 45

执行如下命令,加载SDK环境变量并进行配置,请确保已正确安装交叉编译工具。

Host# source /home/tronlong/SDK/environment-setup-aarch64-poky-linux

Host# ./configure --build=i686-pc-linux-gnu --host=aarch64-poky-linux --disable-debug --enable-smp --with-core=cobalt


图 46


图 47

Host# mkdir __install //创建__install文件夹用于存放生成的文件

Host# make DESTDIR=/home/tronlong/Xenomai/__install install


图 48

编译完成后,将在__install目录下生成usr文件夹。


图 49

6.2测试说明

为便于测试,我司提供的经验证的Xenomai测试程序为案例"igh_ethercat_dc_motor\xenomai\images\xenomai-v3.1.1-g8b2052e\"目录下xenomai-v3.1.1-g8b2052e.tar.gz压缩包,在Ubuntu下解压即可得到Xenomai测试程序文件夹。

请使用已替换内核的Linux系统启动卡启动评估板,将Xenomai测试程序文件夹整个拷贝至评估板文件系统,执行如下命令拷贝Xenomai相关文件和设置动态链接库。本次测试将Xenomai测试程序文件夹命名为__install。

Target# cp -r Xenomai/__install/usr/xenomai/ /usr/

Target# export LD_LIBRARY_PATH=/usr/xenomai/lib:$LD_LIBRARY_PATH


图 50

Xenomai的测试工具均位于"/usr/xenomai/bin/"目录下,可调用对应测试工具进行测试。


图 51

使用Cyclictest工具进行实时性能基准测试。

Target# echo 0 > /proc/xenomai/latency

Target# /usr/xenomai/demo/cyclictest -t5 -p98 -m -n


图 52

表 1 Cyclictest测试结果说明



Copyright © 2013~2021 广州创龙电子科技有限公司 All Rights Reserved  | 粤ICP备15055271号