|
前 言 本文档主要演示TLT113-EVM评估板基于IgH EtherCAT控制伺服电机。本文档适用开发环境: Windows开发环境:Windows 7 64bit、Windows 10 64bit Linux开发环境:Ubuntu18.04.4 64bit 虚拟机:VMware15.5.5 U-Boot:U-Boot-2018.07 Kernel:Linux-RT-5.4.61 LinuxSDK:T113_Tina5.0-V1.0(Linux) IgH EtherCAT:ethercat-stable-1.5-gcd0d17d-20210723 伺服驱动器:台达ASD-A2-0121-E 伺服电机:台达ECMA-C10401GS 我司提供的IgH EtherCAT主站开发案例igh_ethercat_dc_motor位于产品资料“4-软件资料\Demo\”目录下,主要包含bin、src、driver、igh_ethercat和doc文件夹,具体说明如下。
IgH EtherCAT简介IgH EtherCAT为运行于Linux系统的免费开源EtherCAT主站程序,框架如下所示。
图 1
IgH EtherCAT主站通过构建Linux字符设备,应用程序通过对字符设备的访问实现与EtherCAT主站模块的通信。 IgH EtherCAT开发包提供EtherCAT工具,该工具提供各种可在Linux用户层运行的命令,可直接实现对从站的访问和设置,如设置从站地址、显示总线配置、显示PDO数据、读写SDO参数等。 案例说明案例功能:EtherCAT通讯周期时间为1ms,控制伺服电机正转和反转,并通过串口循环打印EtherCAT通讯周期时间的最大值和最小值。 - 正转:伺服电机目标速度从0加速到10000,当达到10000速度后,控制伺服电机减速至0,循环运行。
- 反转:伺服电机目标速度从0加速到-10000,当达到-10000速度后,控制伺服电机减速至0,循环运行。
图 2
本案例需基于Linux-RT系统测试,请按如下方法切换为Linux-RT系统。 我司提供经验证的Linux-RT内核镜像文件和内核模块,位于产品资料“4-软件资料\Demo\igh_ethercat_dc_motor\driver\nand\”目录下,请将nand目录下的Linux-RT内核镜像文件和内核模块拷贝至评估板Linux系统启动卡任意目录。 备注:若使用eMMC配置评估板,内核镜像文件和内核模块,位于产品资料“4-软件资料\Demo\igh_ethercat_dc_motor\driver\emmc\”目录下。 将评估板上电启动进入文件系统,执行如下命令,分别替换内核镜像和内核模块至Linux系统启动卡,评估板重启生效。 备注:若使用eMMC配置评估板,需修改Linux系统启动卡对应设备节点为"/dev/mmcblk1p4"。 Target# cd nand/modules/ Target# tar -xf 5.4.61-rt37-gb1bd4aa.tar.gz Target# cd .. Target# dd if=boot.fex of=/dev/mmcblk0p4 Target# cp modules/5.4.61-rt37-gb1bd4aa /lib/modules/ -r Target# sync Target# reboot
图 3 图 4 Linux-RT内核
案例测试请按下图所示使用网线连接评估板ETH0(RGMII)网口和伺服驱动器A的IN网口,将伺服驱动器A的OUT网口使用网线连接至伺服驱动器B的IN网口。
图 5 图 6
评估板上电启动后,在U-Boot倒计时结束之前按下空格键进入U-Boot命令行模式,执行如下命令配置U-Boot环境变量,隔离CPU1,提高CPU1核心线程运行的实时性。 U-Boot=> setenv setargs_sd setenv bootargs clk_ignore_unused initcall_debug=${initcall_debug} console=${console} loglevel=${loglevel} root=${sd_root} init=${init} partitions=${partitions} cma=${cma} snum=${snum} mac_addr=${mac} wifi_mac=${wifi_mac} bt_mac=${bt_mac} specialstr=${specialstr} gpt=1 isolcpus=1 U-Boot=> setenv setargs_nand_ubi setenv bootargs ubi.mtd=${mtd_name} clk_ignore_unused initcall_debug=${initcall_debug} console=${console} loglevel=${loglevel} root=${nand_root} rootfstype=${rootfstype} init=${init} partitions=${partitions} cma=${cma} snum=${snum} mac_addr=${mac} wifi_mac=${wifi_mac} bt_mac=${bt_mac} specialstr=${specialstr} gpt=1 isolcpus=1 U-Boot=> saveenv U-Boot=> reset 图 7
备注:若使用eMMC配置评估板,请执行如下命令配置U-Boot环境变量。 U-Boot=> setenv setargs_emmc setenv bootargs clk_ignore_unused initcall_debug=${initcall_debug} console=${console} loglevel=${loglevel} root=${emmc_root} init=${init} partitions=${partitions} cma=${cma} snum=${snum} mac_addr=${mac} wifi_mac=${wifi_mac} bt_mac=${bt_mac} specialstr=${specialstr} gpt=1 isolcpus=1 U-Boot=> setenv setargs_sd setenv bootargs clk_ignore_unused initcall_debug=${initcall_debug} console=${console} loglevel=${loglevel} root=${sd_root} init=${init} partitions=${partitions} cma=${cma} snum=${snum} mac_addr=${mac} wifi_mac=${wifi_mac} bt_mac=${bt_mac} specialstr=${specialstr} gpt=1 isolcpus=1 U-Boot=> saveenv U-Boot=> reset 为便于测试,我司提供的经验证的IgH EtherCAT主站程序为案例"igh_ethercat\images\nand\"目录下的ethercat-stable-1.5-gcd0d17d.tar.gz压缩包。请将其拷贝至评估板文件系统任意目录下,执行如下命令解压得到_install文件夹。 备注:若使用eMMC配置评估板,路径为"igh_ethercat\images\emmc\"目录下。 Target# tar -zxf ethercat-stable-1.5-gcd0d17d.tar.gz 图 8
执行如下命令,查询评估板网卡物理地址。 Target# ifconfig 图 9
执行如下命令,加载驱动模块,命令中"F2:96:91:7F:03  7"为评估板网卡物理地址,请根据实际情况修改。 Target# insmod -f /root/_install/modules/ec_master.ko main_devices=F2:96:91:7F:03  7 图 10
执行如下命令,拷贝EtherCAT主站相关文件至评估板文件系统。 Target# mkdir /etc/sysconfig Target# cp _install/etc/sysconfig/ethercat /etc/sysconfig Target# cp /root/_install/modules/ec_master.ko /lib/modules/5.4.61-rt37-gb1bd4aa/ //模块驱动名称可通过"uname -r"查看 Target# depmod -a 图 11
执行如下命令,启动EtherCAT主站。 Target# /root/_install/etc/init.d/ethercat start 图 12
执行如下命令,加载ec_generic.ko驱动文件。 Target# insmod -f /root/_install/modules/ec_generic.ko 图 13
执行如下命令,添加IgH动态链接库路径。 Target# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/_install/lib 图 14
以太网驱动在传输以太网帧时使用到ksoftirq软中断,若ksoftirq软中断不能及时响应,将会影响测试实时性。执行如下命令,查看ksoftirq pid,可看到运行在CPU0上的ksoftirq pid为9,运行在CPU1上的ksoftirq pid为20。
Target# ps aux | grep ksoftirq 图 15
执行如下命令,更改ksoftirq软中断调度策略及优先级。设置中断调度策略为SCHED_FIFO,优先级为10。 Target# chrt -f -p 10 9 Target# chrt -f -p 10 20 图 16
执行如下命令查询设置结果,打印下图所示信息,表示设置成功。 Target# chrt -p 9 Target# chrt -p 20 图 17
将案例bin目录下的igh_ethercat_dc_motor可执行文件拷贝至评估板文件系统,执行如下命令查看参数信息。 Target# ./igh_ethercat_dc_motor --help 图 18
执行如下命令,在CPU1核心上运行程序,控制两台伺服电机同时正转。 Target# taskset -c 1 ./igh_ethercat_dc_motor -d 0 图 19
图 20
按下"Ctrl + C",停止运行程序。 图 21
执行如下命令,在CPU1核心上运行程序,控制两台伺服电机同时反转。 Target# taskset -c 1 ./igh_ethercat_dc_motor -d 1 图 22
图 23
按下"Ctrl + C",停止运行程序。 图 24
参数解析: - latency:等待唤醒时间(ns)。
- period:EtherCAT通讯周期时间(ns)。
- exec:接收和发送EtherCAT数据时间(ns)。
案例编译IgH EtherCAT主站程序编译IgH EtherCAT主站程序的编译需依赖于基于Linux内核源码,请先参考《Linux系统使用手册》,配置内核选项为Linux-RT内核,编译LinuxSDK开发包,再编译IgH EtherCAT主站程序。 备注:若使用eMMC配置评估板,请参考《Linux系统使用手册》,在配置编译环境章节中配置评估板型号为"tlt113-evm-emmc",然后配置内核选项为Linux-RT内核,编译LinuxSDK开发包,再编译IgH EtherCAT主站程序。 请将案例"igh_ethercat\src\"目录下的IgH EtherCAT主站程序开发包ethercat-stable-1.5-[Git序列号]-[版本号].tar.gz拷贝至Ubuntu工作目录,执行如下命令进行解压。 Host# mkdir EtherCAT Host# tar -zxf ethercat-stable-1.5-gcd0d17d-20210723.tar.gz -C EtherCAT/ 图 25
执行如下命令,安装编译所需的软件。 Host# sudo apt-get install autoconf Host# sudo apt-get install libtool 图 26
执行如下命令,配置交叉编译工具链。 Host# sudo gedit /etc/profile
图 27
在文件末尾添加如下内容: 备注:若使用eMMC配置评估板,请将路径"tlt113-evm-nand"修改为"tlt113-evm-emmc"。
export PATH=$PATH:/home/tronlong/T113/tina5.0_v1.0/out/t113_i/tlt113-evm-nand/buildroot/buildroot/host/usr/bin 图 28
执行如下命令,加载环境变量。 Host# source /etc/profile
图 29
进入解压目录,执行如下命令修改configure.ac和Makefile.am文件屏蔽pkg-config相关配置,以免影响正常编译。 Host# cd EtherCAT/ Host# vim configure.ac Host# vim lib/Makefile.am 图 30
configure.ac文件修改内容如下:
#PKG_PROG_PKG_CONFIG //添加注释符 #PKG_INSTALLDIR() //添加注释符 图 31 configure.ac
Makefile.am文件修改内容如下:
#pkgconfig_DATA = libethercat.pc //添加注释符 图 32 Makefile.am
执行如下命令生成configure文件。 Host# ./bootstrap 图 33
执行如下命令,进行环境配置。其中"/home/tronlong/T113/tina5.0_v1.0/out/kernel/build/"为内核源码实际路径。 Host# mkdir _install //创建_install文件夹用于存放生成的文件 Host# ./configure --prefix=/home/tronlong/EtherCAT/_install/ --with-linux-dir=/home/tronlong/T113/tina5.0_v1.0/out/kernel/build/ --enable-8139too=no --enable-generic=yes CC=arm-linux-gnueabi-gcc --host=arm-linux-gnueabi
图 34 图 35
执行如下命令,编译主站程序开发包。 Host# make 图 36 图 37
执行如下命令,编译驱动。 Host# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules 图 38 图 39
执行如下命令,将生成的IgH EtherCAT主站程序安装至指定路径下。 Host# make instal 图 40 图 41
执行如下命令,将驱动文件拷贝至"_install/modules/"目录下。 Host# mkdir -p _install/modules Host# cp ./master/ec_master.ko ./_install/modules/ Host# cp ./devices/ec_generic.ko ./_install/modules/ 图 42
igh_ethercat_dc_motor案例编译igh_ethercat_dc_motor案例的编译需基于IgH EtherCAT主站程序,请先编译IgH EtherCAT主站程序。 请将案例src源码目录拷贝至Ubuntu工作目录下,进入src目录执行如下命令修改Makefile相关内容为IgH EtherCAT主站程序对应目录,如下图所示。 Host# vim Makefile 图 43 图 44
执行如下命令,进行案例编译。编译完成后,将在当前目录下生成可执行文件。 Host# CC=/home/tronlong/T113/tina5.0_v1.0/out/t113_i/tlt113-evm-nand/buildroot/buildroot/host/usr/bin/arm-linux-gnueabi-gcc make 备注:若使用eMMC配置评估板,请将路径"tlt113-evm-nand"修改为"tlt113-evm-emmc"。 图 45
?由于篇幅过长等原因,部分内容均不逐一展示,如需获取完整版详细资料,请关注创龙科技微信公众号或官网,或者评论区留言,感谢您的支持!
|