聯系我們
Contact Us公司總機:020-8998-6280
技術熱線:020-3893-9734
技術郵箱: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)
(點擊圖片查看產品詳細介紹)
案例詳細說明請掃描下方二維碼或點擊下載鏈接:
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、案例說明
案例功能:控制伺服電機正轉和反轉。
- 正轉:伺服電機目標速度從0加速到10000,當達到10000速度后,控制伺服電機減速至0,循環運行。
- 反轉:伺服電機目標速度從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周期的最小值和最大值。
參數解析:
- latency:等待喚醒時間。
- period:EtherCAT通訊周期時間。
- 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、關鍵代碼
- 創建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測試結果說明


服務熱線

