3562-IgH EtherCAT主站开发案例(zynq ethercat主站)

1 IgHEtherCAT简介

IgH EtherCAT为运行于Linux系统的免费开源EtherCAT主站程序,框架如下所示。

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

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

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

2案例说明

案例功能:EtherCAT通讯周期时间为1ms,控制伺服电机正转和反转,并通过串口循 环打印EtherCAT通讯周期时间的最大值和最小值。

(1)正转:伺服电机目标速度从0加速到10000,当达到10000速度后,控制伺服电

机减速至0,循环运行。

(2)反转:伺服电机目标速度从0加速到-10000,当达到-10000速度后,控制伺服电

机减速至0,循环运行。

3案例测试

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

为便于测试,我司提供经验证的IgH EtherCAT主站程序为案例igh_ethercatVmages\ "目录下的ethercatstable[版本号-[Git序列号].targz压缩包,将其拷贝至评估板文件系 统任意目录下。版本号、Git序列号请以实际情况为准。将案例bin日录下的Igh_etherca t_dc_motor可执行文件拷贝至评估板文件系统。

执行如下命令,解压IgH EtherCAT主站程序压缩包,得到_install文件夹。

执行如下命令,并查询评估板网卡物理地址

Tar get#

ifconfig

执行如下命令,加载驱动模块,命令中"0A:B4:4A:98:91:E5"为评估板网卡物理地址, 请根据实际情况修改

Tar get# insmod -f /root/_instal/modules/ec_master.ko main_devices=0A:B4:4A:98:91: E5

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

Tar get#

mkdr /ete/sysconfg

Tar get#

cp _installetc/sysconfig/ethercat /ete/sysconfig

Tar get# mkdir -p /lib/modules/S(uname -r)

Target#

cp _instal/modules/ec_master.ko /lib/modules/$(uname -)

Target#

depmod -a

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

Target# /oot/_install/etc/init d/ethercat star

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

Target# in smod -f_jinstall/modules/ec_genericko

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

Target# export LD_UIBRARY_PATH=SLD_UIBRARY_PATH:/rooty_install/lib Target# sync

执行如下命令,可查看igh_ethercat_dc_motor程序相关参数信息。

Target#

./gh_ethercat_dc_motor--help

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

Target# /Agh_ethercat_dc_motor -d 0

按下"Ctrl +C",停止运行程序。 执行如下命令,控制两台伺服电机同时反转。

Target# ./gh_ethercat_dc_motor-d1

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

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

参数解析:

(1)latency:等待唤醒时间(ns)。

(2)period:EtherCAT通讯周期时间(ns)。

(3)exec:接收和发送EtherCAT数据时间(ns)。

4案例编译

4.1 IgHEtherCAT主站程序编译

IgH EtherCAT主站程序的编译需依赖于基于Uinux内核源码,请先参考《Linux系统使 用手册》编译Linux-RT内核,再编译IgH EtherCAT主站程序。

请将案例"igh_ethercat\sre\"目录下的IgH EtherCAT主站程序开发包ethercat-stable- [版本号HGit序列号].tar.gz拷贝至Ubuntu工作目录,执行如下命令进行解压

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

执行如下命令,安装编译所需的软件

Host#sudo apt-get install autoconf

Host#sudo apt-get install lbtoo

执行如下命令,配置交叉编译工具链。

Host#sudo vim /etc/profile

在文件末尾添加如下内容:

export PATH=/home/tronlong/RK3562/k3562_Iinux_sk_release_y1.10/buildroot/output/rockchip_rk356 2/host/bin.SPATH

mnL Ia .1ielontpduAe

执行如下命令,加载环境变量 Host#source /ete/profle

进入解压目录,执行如下命令修改configure.ac和Makefile.am文件屏蔽pkg-config相 关配置,以免影响正常编译

Host#cd EtherCAT/

Host#vim configure.ac

Host#vim lib/Makefle.am

configure.ac文件修改内容如下:

#PKG_PROG_PKG_CONFIG

#PKG_INSTALLDIRO

//添加注释

//添加注释

Makefileam文件修改内容如下:

#pkgconfg_DATAlibetheratp

//添加注释

执行如下命令生成configure文件。 Host#/bootstrap

执行如下命令,进行环境配置。

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

Host#/configure -prefx=
/hoe/tronbong/EtherCAT/_install -with-linux-dir=/home/tronl
ong/RK3562/rk3562_linux_sdk_release_v1.1.0/kernd -enable-8139too=no -enable-generic =yes CC=
arch64-buildroot-Inux-gnu-gee -host=
aarch64-buildroot-linux-gnu 备注:

(1)编译需要依赖交叉编译工具链,请确保已配置交叉编译工具链。

(2)-prefix选择创建的_jnstall目录,-wth-linux-dir选择Linux-RT内核目录,Linux-R T内核需先进行编译

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

Host#make

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

Host#export PATH=/home/tronlong/RK3562/rk3562_linux_sdk_release_v1.1.0/prebuilts/g ce/inux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-noneHinux-gnu/bin:SPATH

//配置交叉编译工具链环境变量

Host#make ARCH=arm64 CROSS_COMPILE=arch64-nonelinux-gnu-modules

执行如下命令,编译生成lgH EtherCAT主站程序。

Host#make install

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

Host#mkdir ·p _instal/modules

Host#cp ./master/ec_master.ko /_nstallmodules Host#cp ./devices/ec_generic.ko /_install/modules/

4.2 Igh_ethercat_dc_motor案例编译

igh_ethercat_dc_motor案例的编译需基于IgHEtherCAT主站程序,请先编译IgH Eth erCAT主站程序

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

Host#vim Makefile

执行如下命令,进行编译。编译完成后,将在当前目录下生成可执行文件。 Host#export PATH=
/home/tronlong/RK3562/rk3562_Iinux_sdk_release_v1.1.0/buildroot/
output/rockchip_rk3562/host/bin:SPATH //配置交叉编译工具链环境变量 Host#make CC=
aarch64-buildroot-inux-gnu-gcc

5关键代码

(1)创建EtherCAT Master。

(2)创建域。

(3)配置PDO。

(4)为域注册PDO条目。

(5)激活Master.

(6)修改当前进程优先级。

(7)进入循环周期任务。

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

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