本文档主要演示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为运行于Linux系统的免费开源EtherCAT主站程序,框架如下所示。
IgH EtherCAT主站通过构建Linux字符设备,应用程序通过对字符设备的访问实现与EtherCAT主站模块的通信。
IgH EtherCAT开发包提供EtherCAT工具,该工具提供各种可在Linux用户层运行的命令,可直接实现对从站的访问和设置,如设置从站地址、显示总线配置、显示PDO数据、读写SDO参数等。
IgH EtherCAT官网:https://www.etherlab.org/en/ethercat。
案例功能:EtherCAT通讯周期时间为1ms,控制伺服电机正转和反转,并通过串口循环打印EtherCAT通讯周期时间的最大值和最小值。
本案例需基于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
请按下图所示使用网线连接评估板ETH0(RGMII)网口和伺服驱动器A的IN网口,将伺服驱动器A的OUT网口使用网线连接至伺服驱动器B的IN网口。
评估板上电启动后,在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
备注:若使用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
执行如下命令,查询评估板网卡物理地址。
Target# ifconfig
执行如下命令,加载驱动模块,命令中"F2:96:91:7F:03:D7"为评估板网卡物理地址,请根据实际情况修改。
Target# insmod -f /root/_install/modules/ec_master.ko main_devices=F2:96:91:7F:03:D7
执行如下命令,拷贝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
执行如下命令,启动EtherCAT主站。
Target# /root/_install/etc/init.d/ethercat start
执行如下命令,加载ec_generic.ko驱动文件。
Target# insmod -f /root/_install/modules/ec_generic.ko
执行如下命令,添加IgH动态链接库路径。
Target# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/_install/lib
以太网驱动在传输以太网帧时使用到ksoftirq软中断,若ksoftirq软中断不能及时响应,将会影响测试实时性。执行如下命令,查看ksoftirq pid,可看到运行在CPU0上的ksoftirq pid为9,运行在CPU1上的ksoftirq pid为20。
Target# ps aux | grep ksoftirq
执行如下命令,更改ksoftirq软中断调度策略及优先级。设置中断调度策略为SCHED_FIFO,优先级为10。
Target# chrt -f -p 10 9
Target# chrt -f -p 10 20
执行如下命令查询设置结果,打印下图所示信息,表示设置成功。
Target# chrt -p 9
Target# chrt -p 20
将案例bin目录下的igh_ethercat_dc_motor可执行文件拷贝至评估板文件系统,执行如下命令查看参数信息。
Target# ./igh_ethercat_dc_motor --help
执行如下命令,在CPU1核心上运行程序,控制两台伺服电机同时正转。
Target# taskset -c 1 ./igh_ethercat_dc_motor -d 0
按下"Ctrl + C",停止运行程序。
执行如下命令,在CPU1核心上运行程序,控制两台伺服电机同时反转。
Target# taskset -c 1 ./igh_ethercat_dc_motor -d 1
按下"Ctrl + C",停止运行程序。
参数解析:
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/
执行如下命令,安装编译所需的软件。
Host# sudo apt-get install autoconf
Host# sudo apt-get install libtool
执行如下命令,配置交叉编译工具链。
Host# sudo gedit /etc/profile
在文件末尾添加如下内容:
备注:若使用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
执行如下命令,加载环境变量。
Host# source /etc/profile
进入解压目录,执行如下命令修改configure.ac和Makefile.am文件屏蔽pkg-config相关配置,以免影响正常编译。
Host# cd EtherCAT/
Host# vim configure.ac
Host# vim lib/Makefile.am
configure.ac文件修改内容如下:
#PKG_PROG_PKG_CONFIG //添加注释符
#PKG_INSTALLDIR() //添加注释符
Makefile.am文件修改内容如下:
#pkgconfig_DATA = libethercat.pc //添加注释符
执行如下命令生成configure文件。
Host# ./bootstrap
执行如下命令,进行环境配置。其中"/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
执行如下命令,编译主站程序开发包。
Host# make
执行如下命令,编译驱动。
Host# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules
执行如下命令,将生成的IgH EtherCAT主站程序安装至指定路径下。
Host# make instal
执行如下命令,将驱动文件拷贝至"_install/modules/"目录下。
Host# mkdir -p _install/modules
Host# cp ./master/ec_master.ko ./_install/modules/
Host# cp ./devices/ec_generic.ko ./_install/modules/
igh_ethercat_dc_motor案例的编译需基于IgH EtherCAT主站程序,请先编译IgH EtherCAT主站程序。
请将案例src源码目录拷贝至Ubuntu工作目录下,进入src目录执行如下命令修改Makefile相关内容为IgH EtherCAT主站程序对应目录,如下图所示。
Host# vim Makefile
执行如下命令,进行案例编译。编译完成后,将在当前目录下生成可执行文件。
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"。
由于篇幅过长等原因,部分内容均不逐一展示,如需获取完整版详细资料,请关注创龙科技微信公众号或官网,或者评论区留言,感谢您的支持!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。