聯(lián)系我們
Contact Us公司總機:020-8998-6280
技術(shù)熱線:020-3893-9734
技術(shù)郵箱:support@tronlong.com
銷售郵箱:sales@tronlong.com
基于全志T507-H的Linux-RT + Igh EtherCAT主站案例分享
2024/03/28
本文將為各位工程師演示全志T507-H工業(yè)評估板(TLT507-EVM)基于IgH EtherCAT控制伺服電機方法,生動說明Linux-RT + Igh EtherCAT的強大之處!
同時,我們對于T3/A40i、T113-i、RK3568、RK3588J、AM62x、AM64x、NXP i.MX 8M Plus等平臺也提供了開源EtherCAT主站IgH案例。
Linux-RT系統(tǒng)的優(yōu)勢
- 內(nèi)核開源、免費、功能完善。
- RT PREEMPT補丁,使Linux內(nèi)核成為硬實時操作系統(tǒng),無需完整的內(nèi)核重寫。
- 既有實時性,又有相同的開發(fā)生態(tài)系統(tǒng)(包括相同工具鏈、文件系統(tǒng)和安裝方法,以及相同的POSIX API等),實現(xiàn)產(chǎn)品快速上市的期望。
Linux-RT實時性測試(Cyclictest工具)
Cyclictest常用于實時系統(tǒng)的基準測試,是評估實時系統(tǒng)相對性能的最常用工具之一。Cyclictest反復(fù)測量并精確統(tǒng)計線程的實際喚醒時間,以提供有關(guān)系統(tǒng)的延遲信息。它可測量由硬件、固件和操作系統(tǒng)引起的實時系統(tǒng)的延遲。
基于全志T507-H(硬件平臺:創(chuàng)龍科技TLT507-EVM評估板),按照創(chuàng)龍科技提供的案例用戶手冊進行操作,使用Cyclictest程序測試系統(tǒng)實時性,得出如下測試結(jié)果。
對比測試數(shù)據(jù),可看到基于Linux-RT-4.9.170內(nèi)核的系統(tǒng)的延時更加穩(wěn)定,最大延時更低,系統(tǒng)實時性更佳。
Linux-RT性能測試
基于全志T507-H(硬件平臺:創(chuàng)龍科技TLT507-EVM評估板),按照創(chuàng)龍科技提供的案例用戶手冊進行操作,測試分別在CPU空載、滿負荷(運行stress壓力測試工具)、隔離CPU核心的情況下,得出如下測試結(jié)果。
備注:測試數(shù)據(jù)與實際測試環(huán)境有關(guān),僅供參考。

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

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

圖5 隔離CPU核心狀態(tài)
隔離CPU核心狀態(tài)測試,CPU0核心Max Latencies值最大,為73us,隔離CPU3核心的Max Latencies值最小,為41us。
測試結(jié)果如下表所示:
|
Max Latencies |
||
|
最小值 |
最大值 |
|
|
CPU空載狀態(tài) |
66us(CPU3) |
69us(CPU0、CPU1) |
|
CPU滿負荷狀態(tài) |
64us(CPU3) |
88us(CPU0) |
|
隔離CPU核心狀態(tài) |
41us(CPU3) |
73us(CPU0) |
根據(jù)CPU空載、CPU滿負荷、隔離CPU核心三種狀態(tài)的測試結(jié)果可知:當程序指定至隔離的CPU3核心上運行時,Linux系統(tǒng)延遲最低,可有效提高系統(tǒng)實時性。故推薦對實時性要求較高的程序(功能)指定至T507-H隔離的CPU核心運行。
T507-H的典型應(yīng)用領(lǐng)域

圖6 T507-H核心板典型應(yīng)用領(lǐng)域
基于全志T507-H的Linux-RT + IgH EtherCAT主站演示
下文主要介紹基于全志T507-H(硬件平臺:創(chuàng)龍科技TLT507-EVM評估板)案例,按照創(chuàng)龍科技提供的案例用戶手冊進行操作得出測試結(jié)果。
本次演示的開發(fā)環(huán)境:
Windows開發(fā)環(huán)境:Windows 7 64bit、Windows 10 64bit
Linux開發(fā)環(huán)境: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
伺服驅(qū)動器:臺達ASD-A2-0121-E
伺服電機:臺達ECMA-C10401GS
*硬件平臺:TLT507-EVM評估板(基于全志T507-H)
IgH EtherCAT簡介
IgH EtherCAT為運行于Linux系統(tǒng)的免費開源EtherCAT主站程序,框架如下所示,官方文檔:https://www.etherlab.org/download/ethercat/ethercat-1.5.2.pdf。

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

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

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


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

圖12

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

圖14
執(zhí)行如下命令,并查詢評估板網(wǎng)卡物理地址。
Target#ifconfig
圖15
執(zhí)行如下命令,加載驅(qū)動模塊。
Target#insmod -f /root/_install/modules/ec_master.ko main_devices=46:99:F6:AB:1F:19

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

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

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

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

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

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

圖22

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

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

圖25

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

圖27
測試結(jié)果如下表所示:
|
工程環(huán)境 |
控制算法 |
點對點控制 x 2軸 |
|
|
循環(huán)周期 |
1ms |
||
|
測試結(jié)果 |
測試項 |
Min(us) |
Max(us) |
|
EtherCAT 任務(wù)調(diào)度抖動(period) |
-186 |
184 |
|
|
測試數(shù)據(jù) |
EtherCAT任務(wù)調(diào)度抖動的區(qū)間為[-186us,184us] |
||
參數(shù)解析:
(1)latency:等待喚醒時間(ns)。
(2)period:EtherCAT通訊周期時間(ns)。
(3)exec:接收和發(fā)送EtherCAT數(shù)據(jù)時間(ns)。
如需選購T507-H工業(yè)核心板,歡迎登錄創(chuàng)龍科技天貓旗艦店:tronlong.tmall.com
T507-H技術(shù)交流群:535860770,歡迎加入!
更多T507-H工業(yè)核心板產(chǎn)品資料
可長按二維碼識別下載
亦可添加如下客服微信進行咨詢
(即刻添加,馬上咨詢)

服務(wù)熱線