關鍵詞:工業(yè)以太網(wǎng);時間周期;嵌入式
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2024)26-0091-04開放科學(資源服務)標識碼(OSID) :
0 引言
以太網(wǎng)技術作為當前主流的通信技術,其通用性好、低成本、高效率、高可靠性和高性能在日常生活中得到很好發(fā)展和應用,盡管以太網(wǎng)技術的優(yōu)點很多,但在自動化領域中卻有一個致命的缺點,那就是其實時性無法保證。在自動化控制中,設備之間通信往往數(shù)據(jù)量不大,只是一些寄存器值的讀寫和簡單變量讀寫,但是對于數(shù)據(jù)的實時要求很高,比如讀取一個轉(zhuǎn)動著的伺服的當前位置,如果延時過高,就導致讀取的數(shù)據(jù)位置偏差較大。因為標準以太網(wǎng)采用的是CSMA/CD的訪問查詢控制機制,導致基于以太網(wǎng)的控制難以達到需求的實時性。EtherCAT雖然也是基于標準的以太網(wǎng),但在數(shù)據(jù)鏈路層上進行大量改造和優(yōu)化,只使用物理層和數(shù)據(jù)鏈路層進行數(shù)據(jù)的傳遞,以此獲得更高的實時性。Ether?CAT總線的數(shù)據(jù)刷新周期可以小于100μs,運行調(diào)度周期可以保證在1ms內(nèi),各個從站節(jié)點的同步精度可以小于1μs,滿足同步性和實時性的要求。
1 嵌入式系統(tǒng)介紹
Linux是一個被廣泛使用的開源操作系統(tǒng),擁有非常良好的生態(tài)。在開源性、跨平臺性、豐富的驅(qū)動等方面具有獨特的優(yōu)勢。在開源上,在其開源社區(qū),已經(jīng)產(chǎn)生許多經(jīng)典的開發(fā)案例。在跨平臺上,Linux 具有良好的跨平臺部署和開發(fā)的特點,可以根據(jù)不同的嵌入式平臺部署,主要是通過不同的編譯工具鏈進行應用的部署開發(fā)和內(nèi)核的部署開發(fā)。在豐富驅(qū)動資源上,Linux的應用軟件的代碼內(nèi)容豐富,開源社區(qū)每年都能提供大量高質(zhì)量的開源驅(qū)動代碼。因此,一般通用的軟件都能在Linux上找到合適的開源例程,并且由于世界各地的程序員們樂于分享,提高了Linux軟件的穩(wěn)定性。另外,基于Linux開發(fā)嵌入式應用軟件基本可以參考開源代碼開發(fā),可以選擇一個類似的開源代碼作為原型,在其上進行二次開發(fā),例如常見的函數(shù)庫等、常見的功能都可以基于開源社區(qū)進行開發(fā)。當前成功的嵌入式系統(tǒng)有一半以上都是來源Linux或者基于Linux進行二次開發(fā)。
Linux能夠支持X86、ARM等多種計算機硬件體系架構,Linux基本上可以運行在數(shù)十種不同硬件架構平臺,也幾乎能夠運行在所有流行的多核異構平臺上。同時,Linux擁有相當豐富的開源驅(qū)動程序資源,支持各種常見的驅(qū)動程序,支持各種多核異構的嵌入式硬件設備和軟件調(diào)試技術,甚至可以在沒有完善存儲單元的計算處理器上部署和運行。正是因為這些開源社區(qū)的貢獻,極大地促進了Linux在各種嵌入式軟硬件系統(tǒng)中的部署和應用,并且未來發(fā)展的速度不斷加快[1]。
嵌入式系統(tǒng)一般被認為是一個能夠管理有限計算資源并且需要高效運行代碼程序的系統(tǒng),因此平臺的差異性,需要使用交叉編譯工具鏈,相對于x86平臺,直接在嵌入式系統(tǒng)的平臺上部署軟件相對比較繁雜,尤其在計算資源受限的平臺上,編寫和編譯高效率的軟件代碼,非??简灣绦騿T的技術功底,有時候是因為有嵌入式硬件性能的限制而實現(xiàn)不了各種復雜功能,需要對代碼進行優(yōu)化和裁剪。對于當前主流的開發(fā)中,主要采用的解決辦法是首先在上位機上編寫程序,然后利用交叉編譯工具鏈,通過交叉編譯的方法,生成下位機上可以運行的固件程序,最后再通過串口下載到下位機上的特定位置上運行[2]。
2 總線EtherCAT介紹
2.1 總線EtherCAT原理
EtherCAT(以太網(wǎng)控制自動化技術)是作為一種以太網(wǎng)為物理介質(zhì)基礎的現(xiàn)場總線系統(tǒng),是一種面向高實時性要求的通用的通信架構,其中,EtherCAT名字中的CAT是控制自動化技術(Control Automation Technol?ogy)字首的簡寫。在業(yè)內(nèi),由于對時延的高要求,Ether?CAT往往作為一種確定性的工業(yè)以太網(wǎng)被廣泛使用。自動化作業(yè)中對通信一般會要求較短的信息更新時間(或稱為周期時間)、信息同步時的通訊抖動量低,而且硬件的成本要低,因此,EtherCAT被廣泛使用的目的就是讓以太網(wǎng)可以運用在自動化應用中[3]。
其次,EtherCAT作為一種基于以太網(wǎng)物理介質(zhì)的工業(yè)以太網(wǎng)總線,具備了以太網(wǎng)的全雙工特性。從運行的原理上看,EtherCAT是通過使用主從通信的模式,主站發(fā)送報文給從站,從站讀取數(shù)據(jù)或?qū)?shù)據(jù)拷貝到從站,從站有權限將收到的報文直接處理,例如,讀取或更新相關的數(shù)據(jù),再將報文發(fā)送給下一個EtherCAT從站。在最末尾的EtherCAT從站返回處理完的所有報文,然后由第一個從站發(fā)送給主站。在從整個通信過程中,因為其基于以太網(wǎng)的物理介質(zhì),在全雙工模式的情況下,TX線發(fā)出的報文可以經(jīng)過RX 線原路返回給主站。因此,EtherCAT傳輸機制一般被取名為“On The Fly”。再舉一個例子,假如將Ether?CAT報文想象成一列火車,每個帶有從站地址的車廂對應需要與主站交互數(shù)據(jù)的從站的子報文,讀/寫從站數(shù)據(jù),那么就有一個對應數(shù)據(jù)地址的座位。火車從主站出發(fā),依次在沿路所有站點(從站)停靠,如果沒有自己設備地址的車廂(子報文),則將火車發(fā)往下一站點,如果有自己的車廂,等該車廂上下旅客(數(shù)據(jù))完成后,將火車發(fā)往下一站點,到達終點站后,再返回始發(fā)站,返回過程中不再交互數(shù)據(jù)。
如圖1所示可以看出,EtherCAT從站的設備在通信報文經(jīng)過該節(jié)點時讀取對應的數(shù)據(jù)報文,在輸入數(shù)據(jù)是在報文經(jīng)過時更新到報文中。從各種測試中,可以獲得整個過程報文只有10納秒的時間延遲,因此,相對于以太網(wǎng),系統(tǒng)的總線實時性獲得明顯的提高。
2.2 總線EtherCAT 特性
2.2.1 數(shù)據(jù)高速交互
EtherCAT協(xié)議處理完全在硬件中進行, 協(xié)議可靈活組態(tài),使得工作效率大大提高。通過EtherCAT 控制100個分布式I/O數(shù)據(jù)的刷新周期僅需要3μs,這里面的周期包括了數(shù)據(jù)在各個端口運行的循環(huán)時間。在 對100個伺服軸的通信測試,其只需100μs。在這么短的通信周期內(nèi),可以向總線及掛載在總線上的所有驅(qū)動器提供和廣播設置量和控制量,并通過總線返回它們的實際實時的位置和狀態(tài)。
2.2.2 線纜冗余
線纜的冗余可以滿足日益增長的對提高系統(tǒng)可用性的需求。EtherCAT總線支持熱插拔功能的冗余主站,這樣不需要關閉網(wǎng)絡就可以進行替換設備。由于EtherCAT從站控制器在收到中斷事件時將幀立即自動返回,某個設備發(fā)生故障不會導致整個網(wǎng)絡關閉。另外,可以將線纜保護特別配置為環(huán)形的拓撲結構,以防止設備故障等。
2.2.3 同步與分布式時鐘
EtherCAT 可以在很短的周期內(nèi)控制多個電機, 但是對于多個電機的控制方法上,如何實現(xiàn)多個電機的同步運動,這個是EtherCAT優(yōu)于其他總線。通過同步時鐘,可以實現(xiàn)各個關節(jié)的準確同步。在嚴格要求同步動作的算法中至關重要,例如多個伺服軸在執(zhí)行指令的同時進行聯(lián)動的任務,需要同步時鐘和分布式時鐘,對每個關節(jié)電機進行同步,使其同時運動。
2.2.4 彈性的動態(tài)組網(wǎng)
Ethercat具有彈性的動態(tài)組網(wǎng)功能。在開發(fā)過程中,大部分應用都需要在運行的過程中改變I/O組態(tài)。在一些使用場景上,如具備變更特性的處理邏輯中心、多個傳感器的系統(tǒng)、具有智能化功能的傳輸設備以及可單獨關閉印刷功能的機器等。EtherCAT系統(tǒng)充分考慮到了這些需求,因此EtherCAT特別開發(fā)了“特插拔”功能,不但可以處理網(wǎng)絡的各個部分的連接或斷開狀態(tài),而且可以“動態(tài)”進行重新組網(wǎng),并且針對變化的組網(wǎng)提供了靈活多變的響應能力。
2.2.5 開放性
EtherCAT擁有良好的開發(fā)性,不僅與以太網(wǎng)開發(fā)兼容,而且具有設計開放的特點。該協(xié)議是基于以太網(wǎng)的物理介質(zhì),其不僅可以與其他基于以太網(wǎng)的協(xié)議通信,并且可以將與大部分以太網(wǎng)協(xié)議能運行在同一物理介質(zhì)中。即使如此,EtherCAT與其他協(xié)議的通信對整個網(wǎng)絡性能影響小,占用CPU低。通常情況下標準的以太網(wǎng)設備可通過交換機連接到一個基于Ether?CAT為總線的通信系統(tǒng),并且接入到該系統(tǒng)的交換機并不會影響系統(tǒng)通信的循環(huán)時間。在實際開發(fā)中,配備了傳統(tǒng)現(xiàn)場總線接口的設備可通過EtherCAT現(xiàn)場總線主站端口的可以連接集成到EthetCAT和以太網(wǎng)的網(wǎng)絡中。通過TCP/UDP底層協(xié)議,可以實現(xiàn)以太網(wǎng)和EtherCAT的應用層通信,因此EtherCAT是一個完全開放式協(xié)議[4]。
3 基于T113的EtherCAT應用開發(fā)
3.1 開發(fā)流程
基于國產(chǎn)芯片T113開發(fā)的EtherCAT總線應用首先要通過配置驅(qū)動器的PDO,然后通過PDO來使能和運行驅(qū)動器。該過程是基于嵌入式開發(fā)板處理的,因此需要利用T113交叉編譯工具來編譯應用執(zhí)行程序[5]。以下開發(fā)IGH EtherCAT總線應用作為一個樣例。
3.2 IGH EtherCAT 數(shù)據(jù)報發(fā)送流程
數(shù)據(jù)發(fā)送流程如下:
1)請求IGH EtherCAT主機進行操作;
2)創(chuàng)建進程數(shù)據(jù)域;
3)獲取從站配置;
4)指定完整的pdo配置;
5)為進程數(shù)據(jù)域注冊一組PDO項;
6)激活主站;
7)返回域的進程數(shù)據(jù);
8)可選選項:設置進程優(yōu)先級;
9)可選選項:指定進程收到某種信號采取的操作;
10)可選選項:設置定時發(fā)送信號;
11)進入循環(huán),開始循環(huán)任務;循環(huán)任務的操作如下:
1)從硬件獲取接收的幀并處理數(shù)據(jù)報;
2)確定域數(shù)據(jù)報的狀態(tài);
3)檢查域的狀態(tài)(可選項);
4)周期性檢查主站狀態(tài)和從站配置狀態(tài)(可選項);
5)計算將要發(fā)送流水燈數(shù)據(jù)和數(shù)據(jù)改變周期大??;
6)將數(shù)據(jù)放入數(shù)據(jù)域;
7)將主數(shù)據(jù)報隊列中的所有域數(shù)據(jù)報排隊;
8)發(fā)送隊列中的所有數(shù)據(jù)報。
3.3 動態(tài)PDO映射靜態(tài)PDO映射
是將PDO變量“寫死”在從站中,對于實際應用場景是十分不友好的,例如某個機型的電機需要實時傳輸電機溫度,但在另一個機型中不需要溫度信息,如果使用靜態(tài)PDO映射,為了提升傳輸效率,刪除溫度PDO,則需要修改代碼,燒寫固件,更新XML文件。這樣會帶來巨大的工作量。特別是基于滿足CiA402協(xié)議的驅(qū)動器來說,經(jīng)常要根據(jù)上位機軟件的需求動態(tài)修改傳輸變量。
動態(tài)PDO映射允許定制PDO以滿足客戶各種需求,在X86平臺上,TwinCAT和KPA studio等上位機軟件都支持以勾選的形式動態(tài)配置PDO。為了使得上位機能夠修改PDO assign,需要在xml中配置manda?tory為false(SSC在EXCEL) 中可以配置。
動態(tài)PDO 映射的基本原理是操作對象字典的0x1C12和0x1C13對象,這兩個對象分別管理輸出和輸入的PDO映射。過程如下:
1)將EtherCAT狀態(tài)機切換到PreOP狀態(tài),此狀態(tài)可以用SDO來配置PDO映射;
2)清除PDO 指定對象的PDO 映射對象,即設置0x1C12-00,與0x1C13-00為0;
3)PDO 映射對象無效,即對0x1600-0x1603/0x1A00-0x1A01的子索引設置為0;
4)重新配置PDO映射內(nèi)容;0x1600-01開始的是RxPDO內(nèi)容,0x1A00-01開始的是TxPDO;
5)設置PDO映射對象總數(shù);
6)寫有效的PDO映射對象索引到PDO指定對象;7)設置PDO指定對象的總個數(shù),即將映射對象個數(shù)寫入到1C12-00h和1C13-00h;8)轉(zhuǎn)換EtherCAT狀態(tài)機到安全操作以上,配置的PDO映射將有效。
3.4 EtherCAT 主站協(xié)議棧
EtherCAT 主站協(xié)議棧包含:
1) EtherCAT-Master-Core:EtherCAT 主站的主要功能都在 Core 層中實現(xiàn)。所有協(xié)議的處理也都在這里執(zhí)行,例如過程數(shù)據(jù)傳輸和郵箱協(xié)議(CoE,EoE,F(xiàn)oE,SoE,AoE)。
2) EtherCAT-Link-Layer:主從站的數(shù)據(jù)交換,將零拷貝(Zero Copy)和輪詢(Polling)技術與 Core 層配合使用,實現(xiàn)最好的實時性性能和最大限度減少 CPU 負載。
3) OS 層:操作系統(tǒng)的調(diào)用被封裝在 OS 層。為了能夠?qū)崿F(xiàn)最好的性能,絕大多數(shù)功能使用簡單的 C 語言宏編寫
4 仿真測試
4.1 基于嵌入式平臺T113開發(fā)的框架
通過網(wǎng)線將伺服驅(qū)動器 CN0 EtherCAT(IN)網(wǎng)口連接到評估板 RGMII0 ETH 千兆網(wǎng)口(ETH0),并連接好伺服電機,硬件連接如圖2所示。
IGH EtherCAT 主站通過構建 Linux 字符設備,應用程序通過對字符設備的訪問實現(xiàn)與IGH EtherCAT 主站模塊的通信。
IGH EtherCAT 開發(fā)包提供 EtherCAT工具,該工具提供各種可在 Linux 用戶層運行的命令,可直接實現(xiàn)對從站的訪問和設置,如設置從站地址、顯示總線配置、顯示 PDO 數(shù)據(jù)、讀寫 SDO 參數(shù)等。
4.2 通過EtherCAT 總線控制電機測試
EtherCAT 通訊周期時間為 1ms,控制伺服電機正轉(zhuǎn)和反轉(zhuǎn),并通過串口循環(huán)輸出 EtherCAT 通訊周期時間的最大值和最小值。
1) 正轉(zhuǎn):伺服電機目標速度從 0 加速到 80000,當達到 80000脈沖值速度后,控制伺服電機減速至 0,依次循環(huán)運行。
2) 反轉(zhuǎn):伺服電機目標速度從 0 加速到-80000,當達到-80000速度后,控制伺服電機減速至 0,循環(huán)運行。
這里以基于國產(chǎn)芯片平臺T113部署為例子,該平臺是兩個A7核,具有高性價比的特點,也是工業(yè)級的開發(fā)板,具有可靠性強的特點。在仿真測試過程中,使用網(wǎng)線連接評估板 千兆以太網(wǎng)口作為Ether?CAT的主站的輸出網(wǎng)口,同時配置和優(yōu)化了實時網(wǎng)卡,減少了EtherCAT報文的丟失。用伺服驅(qū)動器 A 的 IN 網(wǎng)口,將伺服驅(qū)動器A的 OUT 網(wǎng)口使用網(wǎng)線連接至伺服驅(qū)動器 B 的 IN 網(wǎng)口。此伺服驅(qū)動器作為從站接入到嵌入式平臺T113開發(fā)板。
執(zhí)行命令,控制兩臺伺服電機同時正轉(zhuǎn),測試結果如圖3所示。
4.3 EtherCAT總線抖動性優(yōu)化
從前面的移植和測試數(shù)據(jù)發(fā)現(xiàn),其總線的抖動性最大達到了11ms左右,這個對于時間精度要求高的工業(yè)以太網(wǎng),這個是需要優(yōu)化的。我們通過優(yōu)化實時內(nèi)核,使用實時線程等方式進行了優(yōu)化,其抖動性優(yōu)化到30us左右,達到了預期的效果。如圖4所示。
5 結論
本文基于國產(chǎn)高性價比的嵌入式平臺T113開發(fā)和部署機器人所需要的高實時、高可靠性的通信總線,并基于該總線開發(fā)機器人控制系統(tǒng)。該嵌入式平臺可以高效地部署機器人總線,在魯棒性、精度方面都表現(xiàn)良好。同時,通過該機器人總線開發(fā)控制系統(tǒng),取得了調(diào)度周期在1ms以內(nèi)的效果,讓整個運動控制更加順滑和靈巧。同時為了達到更加好的效果,我們優(yōu)化了實時操作系統(tǒng),優(yōu)化了內(nèi)核以及優(yōu)化了實時網(wǎng)卡,使得實時抖動性優(yōu)化到30us,滿足了產(chǎn)品開發(fā)的性能需求。