?

基于Linux平臺的EtherCAT主站設計與研究

2023-12-18 10:42楊亮亮錢家豪魯文其潘曉銘
計算機時代 2023年11期

楊亮亮 錢家豪 魯文其 潘曉銘

關鍵詞:EtherCAT;Linux;工業以太網;SOEM

中圖分類號:TP273 文獻標識碼:A 文章編號:1006-8228(2023)11-12-04

0 引言

在工業自動化控制領域,控制系統需不斷滿足通信速度、控制精度、抗干擾能力和實時性的要求[1]。傳統總線控制方式已不能滿足要求,工業以太網技術因其高實時性和穩定性成為工業技術發展的重要推動力,如廣泛應用的有EtherCAT、EtherNet/IP、SERCOS等[2]。

EtherCAT 協議使用了一種名為“處理數據”的方式,使得數據可以在網絡上以非常高的速度傳輸,從而獲得實時性能好的控制,在測控領域、工業機器人等領域都有著重要的應用價值。

目前市面上使用EtherCAT 來控制高端數控系統的主站,主要是倍福公司基于傳統的PC 研發的TwinCAT 商業主站,其價格高昂、不開源、靈活性差,正在被嵌入式主站逐步替代[3-4],但傳統的嵌入式主站因其芯片價格一直居高不下,故使用成本高。針對上述問題,本文設計了一種Linux+RT-PREEMPT+SOME 的框架下搭建EtherCAT 主站的方案,采用國產T3 芯片作為主站控制芯片,實現了對二臺伺服電機周期性控制,并對其周期性和實時性進行了測試。此方案即滿足了EtherCAT 主站強實時性和高穩定性的要求,又解決了傳統EtherCAT 主站成本高、便攜性差的缺點。

1 EtherCAT系統架構

EtherCAT 是一種實時以太網協議,其核心是一個分布式控制系統,其中多個設備通過一個物理總線連接[5-6]。其系統總體架構及運行原理如圖1 所示,搭載Linux 實時系統的全志T3 系列芯片與PHY 芯片連接,然后PHY 芯片連接帶有網絡隔離變壓器的RJ45 接口,組成了EtherCAT 主站,從站由多臺伺服驅動器和伺服電機構成,主站通過網線將EtherCAT 報文發送至全部從站。

2 Linux 系統實時性優化

EtherCAT 主站對其搭載的操作系統的實時性提出了要求[7],本文選用的Linux 操作系統內核版本為Linux-3.10.65,其具有豐富軟件資料,穩定性和重構性強的優勢,但本身作為一個通用操作系統內核而設計的,存在實時性能差的缺點,因此選用RT-Preempt 實時補丁優化Linux 系統[8-9]。優化Linux 系統的實時性步驟如圖2 所示,通過SecureCRT 軟件,在其終端上輸入uname -a 來查看當前開發板的Linux 內核的相關信息,用來判斷Linux 操作系統實時性優化是否成功。

3 EtherCAT 主站設計

3.1 應用程序設計

EtherCAT 主站和從站建立通信主要由EtherCAT總線配置和周期實時任務兩個階段組成。如圖3 所示。通過在終端使用ifconfig 命令查看所用的網絡設備并對網口進行配置。其中ec_config_init()函數負責從站的配置信息:包含從站的數量、產品的ID。以便于主站可以和特定的從站進行PDO 數據交換。

EtherCAT 狀態機的通信機制是用來實現主站和從站之間的通信,并且定義了主站和從站在通信過程中可以采取的狀態[10]。EtherCAT 主站要控制從站運行,需要經過四個狀態,分別是Init( 初始化),Pre-Operational( 預運行),Safe-Operational( 安全運行),Operational(運行),必須按照“初始化→預運行→預運行→安全運行”順序進行狀態的轉化,不能越級轉化,從運行狀態返回時可以越級轉化[11]。

EtherCAT 主站控制伺服電機周期同步位置模式模式(Cyclic synchronous position mode, CSP)運行,需要在Pre-Operational 狀態轉向Safe-Operational 狀態期間,需要配置從站的信息,主站按照CiA402 標準協議進行PDO 映射,PDO 可以分為RxPDO(信息寫入從站)和TxPDO(從站發出信息),其配置信息如圖4所示。

伺服電機csp 模式運行之前,需要設置伺服驅動器的模式并且控制其使能,根據CiA402 協議,csp 模式對應的控制模式為8,因此需要將地址60600008h 寫入8,地址60400010h 寫入任意數→6→7→15 的順序使能伺服驅動器。

3.2 周期性實時任務

周期性實時任務的作用是實現主站與從站之間過程數據的交換,其包含了主站周期性實時生成控制指令(邏輯運算指令和運動控制算法)并發送給從站,從站接收完主站指令執行周期性任務以及反饋運行狀態。在SOEM 中實現的代碼如下所示:

ec_send_processdata();

ec_receive_processdata(EC_TIMEOUTRET);

周期時間的控制精度影響著EtherCAT 實時性的精度,因此時鐘函數選用的是擁有納秒級精度的clock_gettime()和clock_nanosleep()。其周期實時任務設計模塊如圖5 所示。其中clock_gettime()和clock_nanosleep()函數的第一參數為CLOCK_MONOTONIC,將以絕對時間為準,獲取的時間為系統重啟到現在的時間,系統時間的更改對其沒有影響,t1 和t2為絕對時間。

4 實驗平臺搭建及測試

本文提出的基于Linux 嵌入式的EtherCAT 主站實驗平臺如圖6所示,其中主要由EtherCAT主站和從站組成,全志T3系列開發板上使用Linux+RT-PREEMPT+SOEM 的開源架構作為EtherCAT 主站,從站選用了兩臺禾川公司開發的X3E 伺服驅動器和伺服電機。

4.1 Linux 內核實時性測試

RT-PREEMPT 移植完成后,需要對其進行實時性測試,以此來用對在實際應用場合中處理多任務高負載的場景,因此使用壓力測試工具模擬系統處于高負載的場景,并且同時運行EtherCAT 主站應用程序,然后使用Cyclictest 工具測量系統的實時性。

使用由圖7 可知,沒有實時內核的Linux 系統的實時線程最大延遲達到了2ms,已經超出了EtherCAT 對實時性的要求。而由圖8 表明,經過實時性優化的Linux 內核的實時線程的性能得到了極大的提升,最大的延遲在60us 左右,平均延遲在18us 左右,最小延遲在11us 左右,其結果表明實時內核的性能更加優于非實現內核,達到了EtherCAT 主站對實時性us 精度的要求。

4.2 EtherCAT 通信測試

周期時間需要實際工程的需求來設定,其中EtherCAT 數據幀收發的時間是一個重要的影響因素,周期時間設定的值必須要大于EtherCAT 一幀數據幀的收發時間,選用clock_gettime() 函數來測量EtherCAT 收發幀的時間,經過長時間的測量,最大時間為420us??紤]到伺服運動控制也需要花費時間,因此將周期時間設為2ms。

啟動EtherCAT 主站應用程序,主站與從站進行周期數據交換后,使用交換機分別與PC 和T3 開發板的網口相連,使用Wireshark 軟件抓取EtherCAT 數據幀并進行統計與分析,EtherCAT 報文如圖9 所示。

EtherCAT通過檢擦字報文中的WKC(Working Cnt)的值并和預期的值進行對比,以此來判斷從站是否有正確的處理報文,當字報文經過一個從站時,進行讀或寫操作成功時,WKC 會加1,在進行讀/寫操作時,讀成功時WKC 加1,寫成功時WKC 加2,讀寫都成功時,WKC 的時便會加3[12]。由圖9 可知,主站連接著兩個伺服從站,執行LRW 和FRMW 的命令后,WKC 的數值從0 分別變為了6 和2,說明了從站正確處理了報文。

4.3 主站實時性測試

在SOEM 中,ecx_context.DCtime 是一個用來表示當前DC 時鐘值的變量,可以通過檢查ecx_context.DCtime 的值來確定從站的同步狀態,因此使用ns 級別精度的clock_gettime()函數來獲取當前以及上一個ecx_context.DCtime 的值,通過當前的DC 值減去上一次的DC 值,便可以計算出當前的數據傳輸時間,經過長時間的測試,其結果如表1 所示,EtherCAT 數據幀傳輸平均周期為2000005ns 左右,符合設定了2ms 周期,并且最大的周期為2139840ns,與設定的2ms 周期相差了130us 左右,符合EtherCAT 對實時性的要求,而且在測試期間伺服電機通信穩定無報錯。

由表1 的結果表明,該方案能穩定運行EtherCAT通信,為了進一步分析其主站的性能,利用tshark 工具將Wireshark 抓取的EtherCAT 數據包中的時間戳提取出來并進行分析,其測試結果如下所示:

由圖10 可知,在Linux+RT-PREEMPT+SOEM 的架構中,EtherCAT 主站和從站能正常的周期性通信,該方案的抖動量在80us 左右,最大的抖動量在160us左右。與系統設置的2ms 周期相比,其延遲是符合預期要求的,并且在保證正常通信的情況下,該方案可以輕松地進行跨平臺移植,從而減少了大量不必要的安裝和部署工作,降低了學習難度。此外,隨著硬件性能的提高,抖動量也會逐漸減少。

5 結束語

本文介紹了基于Linux+RT-PREEMPT+SOEM 的開源框架搭建EtherCAT 主站的主要流程,著重介紹了應用程序設計流程和Linux 內核實時性優化方法,對搭建好的主站進行性能測試,其結果表明,使用優化后的Linux 內核,以本文方案搭建的EtherCAT 主站能順利運行,主站抖動量穩定在80us 左右,具有較高的實時性和穩定性,較好地解決了傳統EtherCAT 成本高昂、便攜性差的問題,為EtherCAT 主站在Linux 平臺搭建提供了一種切實可行的方案。

91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合