[color=rgba(0, 0, 0, 0.9)]本文將為各位工程師演示 全志T507-H工業(yè)評估板(TLT507-EVM)基于IgH EtherCAT控制伺服電機(jī)方法,生動說明 Linux-RT + Igh EtherCAT的強(qiáng)大之處! [color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]同時,我們對于 T3/A40i、T113-i、RK3568、RK3588J、AM62x、AM64x、NXP i.MX 8M Plus等平臺也提供了開源EtherCAT主站IgH案例。 [color=rgba(0, 0, 0, 0.9)]
Linux-RT系統(tǒng)的優(yōu)勢 [color=rgba(0, 0, 0, 0.9)]- 內(nèi)核開源、免費(fèi)、功能完善。 [color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]- RT PREEMPT補(bǔ)丁,使Linux內(nèi)核成為硬實(shí)時操作系統(tǒng),無需完整的內(nèi)核重寫。 [color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]- 既有實(shí)時性,又有相同的開發(fā)生態(tài)系統(tǒng)(包括相同工具鏈、文件系統(tǒng)和安裝方法,以及相同的POSIX API等),實(shí)現(xiàn)產(chǎn)品快速上市的期望。
Linux-RT實(shí)時性測試(Cyclictest工具) [color=rgba(0, 0, 0, 0.9)]Cyclictest常用于實(shí)時系統(tǒng)的基準(zhǔn)測試,是評估實(shí)時系統(tǒng)相對性能的最常用工具之一。Cyclictest反復(fù)測量并精確統(tǒng)計線程的實(shí)際喚醒時間,以提供有關(guān)系統(tǒng)的延遲信息。它可測量由硬件、固件和操作系統(tǒng)引起的實(shí)時系統(tǒng)的延遲。 [color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]基于全志T507-H(硬件平臺:創(chuàng)龍科技TLT507-EVM評估板),按照創(chuàng)龍科技提供的案例用戶手冊進(jìn)行操作,使用Cyclictest程序測試系統(tǒng)實(shí)時性,得出如下測試結(jié)果。
圖1 Linux-RT-4.9.170內(nèi)核測試結(jié)果
[color=rgba(0, 0, 0, 0.9)]
圖2 Linux-4.9.170內(nèi)核測試結(jié)果
[color=rgba(0, 0, 0, 0.9)]對比測試數(shù)據(jù),可看到基于Linux-RT-4.9.170內(nèi)核的系統(tǒng)的延時更加穩(wěn)定,最大延時更低,系統(tǒng)實(shí)時性更佳。
Linux-RT性能測試 [color=rgba(0, 0, 0, 0.9)]基于全志T507-H(硬件平臺:創(chuàng)龍科技TLT507-EVM評估板),按照創(chuàng)龍科技提供的案例用戶手冊進(jìn)行操作,測試分別在CPU空載、滿負(fù)荷(運(yùn)行stress壓力測試工具)、隔離CPU核心的情況下,得出如下測試結(jié)果。 [color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]備注:測試數(shù)據(jù)與實(shí)際測試環(huán)境有關(guān),僅供參考。 [color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]
圖3 CPU空載狀態(tài)
[color=rgba(0, 0, 0, 0.9)]CPU空載狀態(tài)測試,CPU0、CPU1核心Max Latencies值最大,為69us,CPU3核心的Max Latencies值最小,為66us。 [color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]圖4 CPU滿負(fù)荷狀態(tài) [color=rgba(0, 0, 0, 0.9)]CPU滿負(fù)荷狀態(tài)測試,CPU0核心Max Latencies值最大,為88us,CPU3核心的Max Latencies值最小,為64us。 [color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]圖5 隔離CPU核心狀態(tài)
[color=rgba(0, 0, 0, 0.9)]隔離CPU核心狀態(tài)測試,CPU0核心Max Latencies值最大,為73us,隔離CPU3核心的Max Latencies值最小,為41us。 [color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]測試結(jié)果如下表所示:
| 最小值 | CPU空載狀態(tài) | 69us(CPU0、CPU1) | 64us(CPU3) | 隔離CPU核心狀態(tài) | 73us(CPU0) |
[color=rgba(0, 0, 0, 0.9)]根據(jù)CPU空載、CPU滿負(fù)荷、隔離CPU核心三種狀態(tài)的測試結(jié)果可知:當(dāng)程序指定至隔離的CPU3核心上運(yùn)行時,Linux系統(tǒng)延遲最低,可有效提高系統(tǒng)實(shí)時性。故推薦對實(shí)時性要求較高的程序(功能)指定至T507-H隔離的CPU核心運(yùn)行。
T507-H的典型應(yīng)用領(lǐng)域 [color=rgba(0, 0, 0, 0.9)]
圖6 T507-H核心板典型應(yīng)用領(lǐng)域
基于全志T507-H的Linux-RT + IgH EtherCAT主站演示
Linux開發(fā)環(huán)境:Ubuntu18.04.4 64bit U-Boot:U-Boot 2018 LinuxSDK:LinuxSDK-[版本號].tar.gz(基于全志官方V2.0_20220618) 伺服驅(qū)動器:臺達(dá)ASD-A2-0121-E
圖7 IgH EtherCAT主站通過構(gòu)建Linux字符設(shè)備,應(yīng)用程序通過對字符設(shè)備的訪問實(shí)現(xiàn)與EtherCAT主站模塊的通信。 IgH EtherCAT開發(fā)包提供EtherCAT工具,該工具提供各種可在Linux用戶層運(yùn)行的命令,可直接實(shí)現(xiàn)對從站的訪問和設(shè)置,如設(shè)置從站地址、顯示總線配置、顯示PDO數(shù)據(jù)、讀寫SDO參數(shù)等。 IgH EtherCAT官網(wǎng):https://www.etherlab.org/en/ethercat。 [color=rgba(0, 0, 0, 0.9)]
(1)正轉(zhuǎn):伺服電機(jī)目標(biāo)速度從0加速到10000,當(dāng)達(dá)到10000速度后,控制伺服電機(jī)減速至0,循環(huán)運(yùn)行。(2)反轉(zhuǎn):伺服電機(jī)目標(biāo)速度從0加速到-10000,當(dāng)達(dá)到-10000速度后,控制伺服電機(jī)減速至0,循環(huán)運(yùn)行。圖8
Target#tar -zxf 4.9.170-rt129-g4c65c66.tar.gz [color=rgba(0, 0, 0, 0.9)]
執(zhí)行如下命令替換內(nèi)核鏡像和內(nèi)核模塊,評估板重啟生效。
備注:mmcblk1為Micro SD對應(yīng)的設(shè)備節(jié)點(diǎn),如需固化至eMMC,請將設(shè)備節(jié)點(diǎn)修改為mmcblk0。 Target#dd if=boot.fex of=/dev/mmcblk1p3 conv=fsync Target#cp $(uname -r) /lib/modules/ -r Target#reboo[color=rgba(0, 0, 0, 0.9)]t [color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]圖10 [color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]圖11
[color=rgba(0, 0, 0, 0.9)]圖12 [color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]圖13
圖14 執(zhí)行如下命令,并查詢評估板網(wǎng)卡物理地址。 Target#ifconfig 執(zhí)行如下命令,加載驅(qū)動模塊。 Target#insmod -f /root/_install/modules/ec_master.ko main_devices=46:99:F6:AB:1F:19
Target#cp /root/_install/etc/sysconfig/ethercat /etc/sysconfig Target#cp ./_install/modules/ec_master.ko /lib/modules/$(uname -r)
圖17
[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]圖18
圖19
|