李駿杰,聶詩亮
(西南科技大學信息工程學院,四川 綿陽 621010)
隨著工業信息化的快速發展,現場總線技術在傳輸速率、數據量以及實時性上已無法滿足當前工業網絡通信的要求,而以太網技術則可以用于應對當前工業通信遇到的問題[1]。然而,傳統工業以太網使用的載波監聽多路訪問/沖突檢測(carrier sense multiple access with collision detection,CSMA/CD)機制會引起數據傳輸的不確定性,也無法確保通信的實時性[2]。
實時以太網(Ethernet POWERLINK,EPL)[3]是一種基于普通工業以太網的實時通信協議。它在數據鏈路層加入了時間槽通信管理機制(slot communication network management,SCNM),避免了數據沖突,實現了通信的確定性[4-5]。本文在基于Linux操作系統的嵌入式設備下實現POWERLINK協議,完成主站的構建,與Windows系統下的多從站進行通信。通過觀察數據的收發狀況與抓包驗證,證明了通信的可行性。
POWERLINK協議是一項由奧地利貝加萊公司設計規劃的,基于標準以太網,無需專用硬件支持,速度快、實時性強的開源以太網技術。
POWERLINK協議是一個三層的通信網絡,規定了物理層、數據鏈路層和應用層。POWERLINK物理層基于標準以太網、遵循IEEE 802.3快速以太網標準。POWERLINK協議的核心是數據鏈路層,主要作用是解決通信問題,提高實時性。應用層遵循CANopen標準。 CANopen 是一個應用層協議,為應用程序提供了一個統一的接口,使得不同的設備與應用程序之間有統一的訪問方式。POWERLINK協議模型如圖1所示。

圖1 POWERLINK協議模型圖
從圖1可以看出,POWERLINK協議與普通以太網最大的區別在于其引入了SCNM,即在整個系統中選定某個節點作為管理節點,其他節點均作為受控節點。系統中數據通信均由管理節點進行控制,受控節點在何時進行上報由管理節點配置的參數決定。管理節點配置完成后,規定不同的受控節點在不同的時間內進行數據通信,避免了發生數據沖突,保證了系統在同一時刻只有一對設備進行數據交互,解決了傳統以太網通信實時性差的問題。
POWERLNK主站基于Linux操作系統的嵌入式設備。該設備基于ARM9處理器構建,支持1個10/100 MB自適應工業以太網接口,支持 Linux3.6操作系統,并裝配RTL8211網卡芯片,因此可以使用POWERLINK協議應用結構模式下的內核模式,在以太網模型的最底層(即物理層)實現協議棧。
POWERLINK從站基于Windows系統的PC機。PC機則在應用結構模式下的用戶空間模式實現協議棧。主、從站使用雙絞線通過以太網接口連接,使用以太網交換機實現主站對多個從站的數據通信。硬件框圖如圖2所示。

圖2 硬件框圖
2.2.1 POWERLINK 主站實現
在內核空間模式下,需要將網卡芯片的驅動程序添加至POWERLINK協議棧中,在OSI模型的最底層(即MAC層)實現POWERLINK協議。將網卡的驅動程序添加至協議后,通過調用芯片的操作函數將芯片注冊入協議棧。將芯片注入協議棧后,便可對POWERLINK進行編譯,生成協議棧可驅動模塊。
POWERLINK協議需要使用相關參數變量來實現節點的對應關系,從而完成通信任務。因此,使用CANopen協議里的對象字典(OD)與過程數據目標(PDO)配置對應的網絡參數和映射參數,為通信對象和數據幀之間建立映射關系。
不同于單個從站通信,多個從站的情況需要在單個的前提下,在主站點完成如下操作:首先添加一一對應的通信對象,用于在協議棧中對交互的數據進行相關操作;接著添加用于建立通信對象與數據幀映射關系的過程數據對象的網絡參數和映射參數;然后使用連接函數將程序實際使用的變量與對象字典中的通信對象連接起來;最后編寫同步回調函數,周期性地完成數據交互。
主站與一號從戰完成數據交互后,關閉主站協議棧,停止與一號從站的數據通信。開啟二號從站后,再重新開啟主站協議棧,開始與二號從站實現數據交互,直到完成主站與多個從站的數據交互過程。主站通信流程如圖3所示。

圖3 主站通信流程圖
2.2.2 POWERLINK 從站實現
從站通信流程如圖4所示。

圖4 從站通信流程圖
POWERLINK在協議棧的用戶模式下進行實現。在該模式下,需要安裝winpcap庫作為網卡的驅動程序。POWERLINK從站的配置過程與主站基本相同。需要注意的是,不同從站的網絡參數和映射參數需要與主站中對應于該從節點的配置參數滿足映射關系,并且針對其同步回調函數,設置不同的從站點設置差值不同的數據流與主站實現數據交互。從站與主站的數據通信主要受到主站的影響,從站須先開啟,等待主站啟動協議棧后才能進行數據通信。
對Linux系統下實現的POWERLINK主站,使用終端仿真軟件運行已編譯成功的POWERLINK協議驅動模塊。在Windows系統下的POWERLINK從站[6-10],使用Visual Studio開發工具運行其工程項目來實現POWERLINK協議棧。
采用兩個從站實現設計目標。首先一號從站開啟,等待主站開啟并開始數據通信,通信結束后關閉主站,主從通信中斷。POWERLINK協議主站發送數據差為2的連續數據給一號從站,一號從站收到數據后同時發送差為1的連續數據給主站。二號從站與主站數據通信過程與一號從站與主站過程相同,POWERLINK協議主站發送的數據不變,二號從站則發送數據差為2的連續數據給主站。在成功通信后,使用網絡工具Wireshark對通信的準確性進行了驗證。最后,通信結果以及抓包結果表明系統成功實現了協議的數據通信。
數據通信的性能指標是衡量一個通信系統傳輸數據信息能力的重要標志。本設計針對誤碼率、丟包率以及傳輸時延,對其進行測試。測試結果如表1所示。

表1 測試結果
通信測試結果表明,隨著測試時間的增加,系統的傳輸延時時間基本保持在3.20 μs。該傳輸延時時間是一個數據幀在本系統中由一個節點傳輸到另一節點所花費的時間。通過在Wireshark工具查看數據包的收發情況可以發現,其丟包率基本不存在;通過查看數據通信結果可以發現,誤碼率隨著時間的增長雖然存在,但仍在預期范圍內,基本維持在0。測試結果說明了本系統的穩定性以及通信的準確性,達到了通信的基本要求。
本文設計了一種基于POWERLINK協議的多客戶端通信系統闡述。在搭建的硬件平臺上,完成了Linux系統下的POWERLINK主站與Windows系統下的POWERLINK多從站的數據通信,通過實際的數據交互以及網絡工具的抓包試驗對其進行驗證。最后針對通信的性能指標,通過試驗對其進行了測試。測試結果證明了系統通信的穩定性與準確性。該系統對今后工業通信的研究具有深遠的意義。