本文將為各位工程師演示全志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
+關注
關注
87文章
11090瀏覽量
207596 -
ethercat
+關注
關注
18文章
544瀏覽量
38169 -
全志
+關注
關注
24文章
224瀏覽量
52877 -
T507
+關注
關注
2文章
48瀏覽量
1507
發布評論請先 登錄
相關推薦
評論