前 言
本文檔主要演示TLT113-EVM評估板基于IgH EtherCAT控制伺服電機。本文檔適用開發環境:
Windows開發環境:Windows 7 64bit、Windows 10 64bit
Linux開發環境:Ubuntu18.04.464bit
虛擬機:VMware15.5.5
U-Boot:U-Boot-2018.07
Kernel:Linux-RT-5.4.61
LinuxSDK:T113_Tina5.0-V1.0(Linux)
IgHEtherCAT: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文件夾,具體說明如下。

表 1
IgHEtherCAT簡介
IgH EtherCAT為運行于Linux系統的免費開源EtherCAT主站程序,框架如下所示。

圖 1
IgHEtherCAT主站通過構建Linux字符設備,應用程序通過對字符設備的訪問實現與EtherCAT主站模塊的通信。
IgH EtherCAT開發包提供EtherCAT工具,該工具提供各種可在Linux用戶層運行的命令,可直接實現對從站的訪問和設置,如設置從站地址、顯示總線配置、顯示PDO數據、讀寫SDO參數等。
IgH EtherCAT官網:https://www.etherlab.org/en/ethercat。
案例說明
案例功能:EtherCAT通訊周期時間為1ms,控制伺服電機正轉和反轉,并通過串口循環打印EtherCAT通訊周期時間的最大值和最小值。
正轉:伺服電機目標速度從0加速到10000,當達到10000速度后,控制伺服電機減速至0,循環運行。
反轉:伺服電機目標速度從0加速到-10000,當達到-10000速度后,控制伺服電機減速至0,循環運行。

圖 2
本案例需基于Linux-RT系統測試,請按如下方法切換為Linux-RT系統。
我司提供經驗證的Linux-RT內核鏡像文件和內核模塊,位于產品資料“4-軟件資料Demoigh_ethercat_dc_motordrivernand”目錄下,請將nand目錄下的Linux-RT內核鏡像文件和內核模塊拷貝至評估板Linux系統啟動卡任意目錄。
備注:若使用eMMC配置評估板,內核鏡像文件和內核模塊,位于產品資料“4-軟件資料Demoigh_ethercat_dc_motordriveremmc”目錄下。
將評估板上電啟動進入文件系統,執行如下命令,分別替換內核鏡像和內核模塊至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.fexof=/dev/mmcblk0p4
Target#cp modules/5.4.61-rt37-gb1bd4aa/lib/modules/ -r
Target#sync
Target#reboot

圖 3

圖 4Linux-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
為便于測試,我司提供的經驗證的IgHEtherCAT主站程序為案例"igh_ethercatimagesnand"目錄下的ethercat-stable-1.5-gcd0d17d.tar.gz壓縮包。請將其拷貝至評估板文件系統任意目錄下,執行如下命令解壓得到_install文件夾。
備注:若使用eMMC配置評估板,路徑為"igh_ethercatimagesemmc"目錄下。
Target#tar -zxf ethercat-stable-1.5-gcd0d17d.tar.gz

圖 8
執行如下命令,查詢評估板網卡物理地址。
Target#ifconfig

圖 9
執行如下命令,加載驅動模塊,命令中"F2:96:91:7F:03:D7"為評估板網卡物理地址,請根據實際情況修改。
Target#insmod -f/root/_install/modules/ec_master.ko main_devices=F2:96:91:7F:03:D7

圖 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軟中斷不能及時響應,將會影響測試實時性。執行如下命令,查看ksoftirqpid,可看到運行在CPU0上的ksoftirqpid為9,運行在CPU1上的ksoftirqpid為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)。
案例編譯
IgHEtherCAT主站程序編譯
IgH EtherCAT主站程序的編譯需依賴于基于Linux內核源碼,請先參考《Linux系統使用手冊》,配置內核選項為Linux-RT內核,編譯LinuxSDK開發包,再編譯IgH EtherCAT主站程序。
備注:若使用eMMC配置評估板,請參考《Linux系統使用手冊》,在配置編譯環境章節中配置評估板型號為"tlt113-evm-emmc",然后配置內核選項為Linux-RT內核,編譯LinuxSDK開發包,再編譯IgH EtherCAT主站程序。
請將案例"igh_ethercatsrc"目錄下的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() //添加注釋符

圖 31configure.ac
Makefile.am文件修改內容如下:
#pkgconfig_DATA = libethercat.pc //添加注釋符

圖 32Makefile.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

執行如下命令,將生成的IgHEtherCAT主站程序安裝至指定路徑下。
Host#makeinstal

圖 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案例的編譯需基于IgHEtherCAT主站程序,請先編譯IgHEtherCAT主站程序。
請將案例src源碼目錄拷貝至Ubuntu工作目錄下,進入src目錄執行如下命令修改Makefile相關內容為IgHEtherCAT主站程序對應目錄,如下圖所示。
Host#vimMakefile

圖 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
由于篇幅過長等原因,部分內容均不逐一展示,如需獲取完整版詳細資料,請關注創龍科技微信公眾號或官網,或者評論區留言,感謝您的支持!
審核編輯 黃宇
-
開發板
+關注
關注
26文章
6289瀏覽量
118048 -
ethercat
+關注
關注
19文章
1507瀏覽量
45171
發布評論請先 登錄
創龍 瑞芯微 RK3588 國產2.4GHz八核 工業開發板—IgH?EtherCAT主站開發案例(下)
創龍 瑞芯微 RK3588 國產2.4GHz八核 工業開發板—IgH?EtherCAT主站開發案例(上)
國產!全志T113-i 雙核Cortex-A7@1.2GHz 工業開發板—Linux系統使用手冊(三)
國產!全志T113-i 雙核Cortex-A7@1.2GHz 工業開發板—Linux系統使用手冊(二)
國產!全志T113-i 雙核Cortex-A7@1.2GHz 工業開發板—ARM + DSP、RISC-V核間通信開發案例
國產!全志T113-i 雙核Cortex-A7@1.2GHz 工業開發板—RISC-V案例開發手冊(上)
國產!全志T113-i 雙核Cortex-A7@1.2GHz 工業開發板—DSP案例開發手冊
國產!全志T113-i 雙核Cortex-A7@1.2GHz 工業開發板—MQTT通信協議案例
國產!全志T113-i 雙核Cortex-A7@1.2GHz 工業開發板—IgH EtherCAT主站開發案例
評論