本文將為各位工程師演示全志T507-H工業評估板(TLT507-EVM)基于IgH EtherCAT控制伺服電機方法,生動說明Linux-RT + Igh EtherCAT的強大之處!
同時,我們對于T3/A40i、T113-i、RK3568、RK3588J、AM62x、AM64x、NXPi.MX 8M Plus等平臺也提供了開源EtherCAT主站IgH案例。
Linux-RT系統的優勢
-內核開源、免費、功能完善。
- RT PREEMPT補丁,使Linux內核成為硬實時操作系統,無需完整的內核重寫。
-既有實時性,又有相同的開發生態系統(包括相同工具鏈、文件系統和安裝方法,以及相同的POSIX API等),實現產品快速上市的期望。
Linux-RT實時性測試(Cyclictest工具)
Cyclictest常用于實時系統的基準測試,是評估實時系統相對性能的最常用工具之一。Cyclictest反復測量并精確統計線程的實際喚醒時間,以提供有關系統的延遲信息。它可測量由硬件、固件和操作系統引起的實時系統的延遲。
基于全志T507-H(硬件平臺:創龍科技TLT507-EVM評估板),按照創龍科技提供的案例用戶手冊進行操作,使用Cyclictest程序測試系統實時性,得出如下測試結果。

圖1Linux-RT-4.9.170內核測試結果

圖2Linux-4.9.170內核測試結果
對比測試數據,可看到基于Linux-RT-4.9.170內核的系統的延時更加穩定,最大延時更低,系統實時性更佳。
Linux-RT性能測試
基于全志T507-H(硬件平臺:創龍科技TLT507-EVM評估板),按照創龍科技提供的案例用戶手冊進行操作,測試分別在CPU空載、滿負荷(運行stress壓力測試工具)、隔離CPU核心的情況下,得出如下測試結果。
備注:測試數據與實際測試環境有關,僅供參考。

圖3CPU空載狀態
CPU空載狀態測試,CPU0、CPU1核心Max Latencies值最大,為69us,CPU3核心的Max Latencies值最小,為66us。

圖4CPU滿負荷狀態
CPU滿負荷狀態測試,CPU0核心Max Latencies值最大,為88us,CPU3核心的Max Latencies值最小,為64us。

圖5隔離CPU核心狀態
隔離CPU核心狀態測試,CPU0核心Max Latencies值最大,為73us,隔離CPU3核心的Max Latencies值最小,為41us。
測試結果如下表所示:
| Max Latencies | ||
| 最小值 | 最大值 | |
| CPU空載狀態 | 66us(CPU3) | 69us(CPU0、CPU1) |
| CPU滿負荷狀態 | 64us(CPU3) | 88us(CPU0) |
| 隔離CPU核心狀態 | 41us(CPU3) | 73us(CPU0) |
根據CPU空載、CPU滿負荷、隔離CPU核心三種狀態的測試結果可知:當程序指定至隔離的CPU3核心上運行時,Linux系統延遲最低,可有效提高系統實時性。故推薦對實時性要求較高的程序(功能)指定至T507-H隔離的CPU核心運行。
T507-H的典型應用領域
圖6T507-H核心板典型應用領域
基于全志T507-H的Linux-RT + IgH EtherCAT主站演示
下文主要介紹基于全志T507-H(硬件平臺:創龍科技TLT507-EVM評估板)案例,按照創龍科技提供的案例用戶手冊進行操作得出測試結果。
本次演示的開發環境:
Windows開發環境:Windows 7 64bit、Windows 10 64bit
Linux開發環境:Ubuntu18.04.4 64bit
虛擬機:VMware16.2.5
U-Boot:U-Boot 2018
Kernel:Linux-RT-4.9.170
LinuxSDK:LinuxSDK-[版本號].tar.gz(基于全志官方V2.0_20220618)
IgH EtherCAT:ethercat-stable-1.5-gcd0d17d-20210723
伺服驅動器:臺達ASD-A2-0121-E
伺服電機:臺達ECMA-C10401GS
*硬件平臺:TLT507-EVM評估板(基于全志T507-H)
IgH EtherCAT簡介
IgH EtherCAT為運行于Linux系統的免費開源EtherCAT主站程序,框架如下所示,官方文檔:https://www.etherlab.org/download/ethercat/ethercat-1.5.2.pdf。

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

圖8
為便于測試,我司提供已驗證的基于Linux-RT編譯生成的內核鏡像文件和內核模塊,位于產品資料“4-軟件資料LinuxKernelimagelinux-4.9.170-[版本號]-[Git系列號]”目錄下。
請將Linux-RT內核鏡像boot-rt.fex和Linux-RT內核配套的內核模塊modules-rt目錄下4.9.170-[版本號]-[Git系列號].tar.gz壓縮包的拷貝至評估板文件系統目錄下。
執行如下命令,將boot-rt.fex重命名為boot.fex,同時將內核模塊壓縮包解壓。
Target#mv boot-rt.fex boot.fex
Target#tar -zxf 4.9.170-rt129-g4c65c66.tar.gz

圖9
執行如下命令替換內核鏡像和內核模塊,評估板重啟生效。
備注:mmcblk1為Micro SD對應的設備節點,如需固化至eMMC,請將設備節點修改為mmcblk0。
Target#dd if=boot.fex of=/dev/mmcblk1p3conv=fsync
Target#rm /lib/modules/* -rf
Target#cp $(uname -r) /lib/modules/ -r
Target#sync
Target#reboot

圖10

圖11
案例測試
請按下圖所示使用網線連接評估板ETH0 RGMII網口和伺服驅動器A的IN網口,將伺服驅動器A的OUT網口使用網線連接至伺服驅動器B的IN網口。

圖12

圖13
為便于測試,我司提供的經驗證的IgH EtherCAT主站程序為案例"igh_ethercatimages"目錄下的ethercat-stable-1.5-gcd0d17d.tar.gz壓縮包,將其拷貝至評估板文件系統任意目錄下。
執行如下命令,解壓ethercat-stable-1.5-gcd0d17d.tar.gz壓縮包將會得到_install文件夾。
Target#tar -zxf ethercat-stable-1.5-gcd0d17d.tar.gz

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

圖15
執行如下命令,加載驅動模塊。
Target#insmod -f/root/_install/modules/ec_master.ko main_devices=46:99:F6:AB:1F:19

圖16
執行如下命令,拷貝EtherCAT主站相關文件至評估板文件系統。
Target#mkdir /etc/sysconfig
Target#cp /root/_install/etc/sysconfig/ethercat /etc/sysconfig
Target#ls /lib/modules/$(uname -r)//查看是否已創建modules目錄
Target#cp ./_install/modules/ec_master.ko /lib/modules/$(uname -r)
Target#depmod-a //同步模塊依賴關系,同步過程中打印警告請忽略

圖17
執行如下命令,啟動EtherCAT主站。
Target#/root/_install/etc/init.d/ethercat start

圖18
執行如下命令,加載ec_generic.ko驅動文件。
Target#insmod -f /root/_install/modules/ec_generic.ko

圖19
執行如下命令,添加IgH動態鏈接庫路徑。
Target#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/_install/lib

圖20
將案例bin目錄下的igh_ethercat_dc_motor可執行文件拷貝至評估板文件系統,執行如下命令查看參數信息。
Target#./igh_ethercat_dc_motor --help

圖21
執行如下命令,控制兩臺伺服電機同時正轉。
Target#./igh_ethercat_dc_motor -d 0

圖22

圖23
按下"Ctrl + C",停止運行程序。

圖24
執行如下命令,控制兩臺伺服電機同時反轉。
Target#./igh_ethercat_dc_motor -d 1

圖25

圖26
按下"Ctrl + C",停止運行程序。

圖27
測試結果如下表所示:
| 工程環境 | 控制算法 | 點對點控制 x 2軸 | |
| 循環周期 | 1ms | ||
| 測試結果 | 測試項 | Min(us) | Max(us) |
|
EtherCAT 任務調度抖動(period) |
-186 | 184 | |
| 測試數據 | EtherCAT任務調度抖動的區間為[-186us,184us] | ||
參數解析:
(1)latency:等待喚醒時間(ns)。
(2)period:EtherCAT通訊周期時間(ns)。
(3)exec:接收和發送EtherCAT數據時間(ns)。
審核編輯 黃宇
-
Linux
+關注
關注
88文章
11758瀏覽量
219009 -
ethercat
+關注
關注
19文章
1507瀏覽量
45174 -
全志
+關注
關注
25文章
310瀏覽量
54728 -
T507
+關注
關注
2文章
49瀏覽量
2145
發布評論請先 登錄
DR1M90 開源 IgH EtherCAT 主站案例:伺服電機正反轉實時控制方案
Linux-RT特點及簡單應用
基于 DR1M90 的 Linux-RT 內核開發:從編譯配置到 GPIO / 按鍵應用實現(1)
基于BL350與IGH?EtherCAT的硬實時控制解決方案
【米爾RK3506國產開發板評測】3、實時補丁以及EtherCAT IGH移植
創龍 瑞芯微 RK3588 國產2.4GHz八核 工業開發板—IgH?EtherCAT主站開發案例(下)
創龍 瑞芯微 RK3588 國產2.4GHz八核 工業開發板—IgH?EtherCAT主站開發案例(上)
如何米爾RK3576開發板上移植EtherCAT Igh
創龍 瑞芯微 RK3588 國產2.4GHz八核 工業開發板—Linux-RT應用開發案例
【米爾NXP i.MX 91開發板評測】移植運行IGH EtherCAT主站
國產!全志T113-i 雙核Cortex-A7@1.2GHz 工業開發板—Linux-RT應用開發案例
【米爾RK3576開發板免費體驗】3、移植EtherCAT Igh
基于米爾安路飛龍派FPGA FPSoC+移植SOEM實現EtherCAT主站控制功能
延時僅9μs!Linux-RT實時性能測試分享,基于RK3576國產平臺
基于全志T507-H的Linux-RT + Igh EtherCAT主站案例分享
評論