李駿杰,聶詩(shī)亮
(西南科技大學(xué)信息工程學(xué)院,四川 綿陽(yáng) 621010)
隨著工業(yè)信息化的快速發(fā)展,現(xiàn)場(chǎng)總線技術(shù)在傳輸速率、數(shù)據(jù)量以及實(shí)時(shí)性上已無(wú)法滿足當(dāng)前工業(yè)網(wǎng)絡(luò)通信的要求,而以太網(wǎng)技術(shù)則可以用于應(yīng)對(duì)當(dāng)前工業(yè)通信遇到的問(wèn)題[1]。然而,傳統(tǒng)工業(yè)以太網(wǎng)使用的載波監(jiān)聽(tīng)多路訪問(wèn)/沖突檢測(cè)(carrier sense multiple access with collision detection,CSMA/CD)機(jī)制會(huì)引起數(shù)據(jù)傳輸?shù)牟淮_定性,也無(wú)法確保通信的實(shí)時(shí)性[2]。
實(shí)時(shí)以太網(wǎng)(Ethernet POWERLINK,EPL)[3]是一種基于普通工業(yè)以太網(wǎng)的實(shí)時(shí)通信協(xié)議。它在數(shù)據(jù)鏈路層加入了時(shí)間槽通信管理機(jī)制(slot communication network management,SCNM),避免了數(shù)據(jù)沖突,實(shí)現(xiàn)了通信的確定性[4-5]。本文在基于Linux操作系統(tǒng)的嵌入式設(shè)備下實(shí)現(xiàn)POWERLINK協(xié)議,完成主站的構(gòu)建,與Windows系統(tǒng)下的多從站進(jìn)行通信。通過(guò)觀察數(shù)據(jù)的收發(fā)狀況與抓包驗(yàn)證,證明了通信的可行性。
POWERLINK協(xié)議是一項(xiàng)由奧地利貝加萊公司設(shè)計(jì)規(guī)劃的,基于標(biāo)準(zhǔn)以太網(wǎng),無(wú)需專用硬件支持,速度快、實(shí)時(shí)性強(qiáng)的開(kāi)源以太網(wǎng)技術(shù)。
POWERLINK協(xié)議是一個(gè)三層的通信網(wǎng)絡(luò),規(guī)定了物理層、數(shù)據(jù)鏈路層和應(yīng)用層。POWERLINK物理層基于標(biāo)準(zhǔn)以太網(wǎng)、遵循IEEE 802.3快速以太網(wǎng)標(biāo)準(zhǔn)。POWERLINK協(xié)議的核心是數(shù)據(jù)鏈路層,主要作用是解決通信問(wèn)題,提高實(shí)時(shí)性。應(yīng)用層遵循CANopen標(biāo)準(zhǔn)。 CANopen 是一個(gè)應(yīng)用層協(xié)議,為應(yīng)用程序提供了一個(gè)統(tǒng)一的接口,使得不同的設(shè)備與應(yīng)用程序之間有統(tǒng)一的訪問(wèn)方式。POWERLINK協(xié)議模型如圖1所示。
圖1 POWERLINK協(xié)議模型圖
從圖1可以看出,POWERLINK協(xié)議與普通以太網(wǎng)最大的區(qū)別在于其引入了SCNM,即在整個(gè)系統(tǒng)中選定某個(gè)節(jié)點(diǎn)作為管理節(jié)點(diǎn),其他節(jié)點(diǎn)均作為受控節(jié)點(diǎn)。系統(tǒng)中數(shù)據(jù)通信均由管理節(jié)點(diǎn)進(jìn)行控制,受控節(jié)點(diǎn)在何時(shí)進(jìn)行上報(bào)由管理節(jié)點(diǎn)配置的參數(shù)決定。管理節(jié)點(diǎn)配置完成后,規(guī)定不同的受控節(jié)點(diǎn)在不同的時(shí)間內(nèi)進(jìn)行數(shù)據(jù)通信,避免了發(fā)生數(shù)據(jù)沖突,保證了系統(tǒng)在同一時(shí)刻只有一對(duì)設(shè)備進(jìn)行數(shù)據(jù)交互,解決了傳統(tǒng)以太網(wǎng)通信實(shí)時(shí)性差的問(wèn)題。
POWERLNK主站基于Linux操作系統(tǒng)的嵌入式設(shè)備。該設(shè)備基于ARM9處理器構(gòu)建,支持1個(gè)10/100 MB自適應(yīng)工業(yè)以太網(wǎng)接口,支持 Linux3.6操作系統(tǒng),并裝配RTL8211網(wǎng)卡芯片,因此可以使用POWERLINK協(xié)議應(yīng)用結(jié)構(gòu)模式下的內(nèi)核模式,在以太網(wǎng)模型的最底層(即物理層)實(shí)現(xiàn)協(xié)議棧。
POWERLINK從站基于Windows系統(tǒng)的PC機(jī)。PC機(jī)則在應(yīng)用結(jié)構(gòu)模式下的用戶空間模式實(shí)現(xiàn)協(xié)議棧。主、從站使用雙絞線通過(guò)以太網(wǎng)接口連接,使用以太網(wǎng)交換機(jī)實(shí)現(xiàn)主站對(duì)多個(gè)從站的數(shù)據(jù)通信。硬件框圖如圖2所示。
圖2 硬件框圖
2.2.1 POWERLINK 主站實(shí)現(xiàn)
在內(nèi)核空間模式下,需要將網(wǎng)卡芯片的驅(qū)動(dòng)程序添加至POWERLINK協(xié)議棧中,在OSI模型的最底層(即MAC層)實(shí)現(xiàn)POWERLINK協(xié)議。將網(wǎng)卡的驅(qū)動(dòng)程序添加至協(xié)議后,通過(guò)調(diào)用芯片的操作函數(shù)將芯片注冊(cè)入?yún)f(xié)議棧。將芯片注入?yún)f(xié)議棧后,便可對(duì)POWERLINK進(jìn)行編譯,生成協(xié)議??沈?qū)動(dòng)模塊。
POWERLINK協(xié)議需要使用相關(guān)參數(shù)變量來(lái)實(shí)現(xiàn)節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系,從而完成通信任務(wù)。因此,使用CANopen協(xié)議里的對(duì)象字典(OD)與過(guò)程數(shù)據(jù)目標(biāo)(PDO)配置對(duì)應(yīng)的網(wǎng)絡(luò)參數(shù)和映射參數(shù),為通信對(duì)象和數(shù)據(jù)幀之間建立映射關(guān)系。
不同于單個(gè)從站通信,多個(gè)從站的情況需要在單個(gè)的前提下,在主站點(diǎn)完成如下操作:首先添加一一對(duì)應(yīng)的通信對(duì)象,用于在協(xié)議棧中對(duì)交互的數(shù)據(jù)進(jìn)行相關(guān)操作;接著添加用于建立通信對(duì)象與數(shù)據(jù)幀映射關(guān)系的過(guò)程數(shù)據(jù)對(duì)象的網(wǎng)絡(luò)參數(shù)和映射參數(shù);然后使用連接函數(shù)將程序?qū)嶋H使用的變量與對(duì)象字典中的通信對(duì)象連接起來(lái);最后編寫同步回調(diào)函數(shù),周期性地完成數(shù)據(jù)交互。
主站與一號(hào)從戰(zhàn)完成數(shù)據(jù)交互后,關(guān)閉主站協(xié)議棧,停止與一號(hào)從站的數(shù)據(jù)通信。開(kāi)啟二號(hào)從站后,再重新開(kāi)啟主站協(xié)議棧,開(kāi)始與二號(hào)從站實(shí)現(xiàn)數(shù)據(jù)交互,直到完成主站與多個(gè)從站的數(shù)據(jù)交互過(guò)程。主站通信流程如圖3所示。
圖3 主站通信流程圖
2.2.2 POWERLINK 從站實(shí)現(xiàn)
從站通信流程如圖4所示。
圖4 從站通信流程圖
POWERLINK在協(xié)議棧的用戶模式下進(jìn)行實(shí)現(xiàn)。在該模式下,需要安裝winpcap庫(kù)作為網(wǎng)卡的驅(qū)動(dòng)程序。POWERLINK從站的配置過(guò)程與主站基本相同。需要注意的是,不同從站的網(wǎng)絡(luò)參數(shù)和映射參數(shù)需要與主站中對(duì)應(yīng)于該從節(jié)點(diǎn)的配置參數(shù)滿足映射關(guān)系,并且針對(duì)其同步回調(diào)函數(shù),設(shè)置不同的從站點(diǎn)設(shè)置差值不同的數(shù)據(jù)流與主站實(shí)現(xiàn)數(shù)據(jù)交互。從站與主站的數(shù)據(jù)通信主要受到主站的影響,從站須先開(kāi)啟,等待主站啟動(dòng)協(xié)議棧后才能進(jìn)行數(shù)據(jù)通信。
對(duì)Linux系統(tǒng)下實(shí)現(xiàn)的POWERLINK主站,使用終端仿真軟件運(yùn)行已編譯成功的POWERLINK協(xié)議驅(qū)動(dòng)模塊。在Windows系統(tǒng)下的POWERLINK從站[6-10],使用Visual Studio開(kāi)發(fā)工具運(yùn)行其工程項(xiàng)目來(lái)實(shí)現(xiàn)POWERLINK協(xié)議棧。
采用兩個(gè)從站實(shí)現(xiàn)設(shè)計(jì)目標(biāo)。首先一號(hào)從站開(kāi)啟,等待主站開(kāi)啟并開(kāi)始數(shù)據(jù)通信,通信結(jié)束后關(guān)閉主站,主從通信中斷。POWERLINK協(xié)議主站發(fā)送數(shù)據(jù)差為2的連續(xù)數(shù)據(jù)給一號(hào)從站,一號(hào)從站收到數(shù)據(jù)后同時(shí)發(fā)送差為1的連續(xù)數(shù)據(jù)給主站。二號(hào)從站與主站數(shù)據(jù)通信過(guò)程與一號(hào)從站與主站過(guò)程相同,POWERLINK協(xié)議主站發(fā)送的數(shù)據(jù)不變,二號(hào)從站則發(fā)送數(shù)據(jù)差為2的連續(xù)數(shù)據(jù)給主站。在成功通信后,使用網(wǎng)絡(luò)工具Wireshark對(duì)通信的準(zhǔn)確性進(jìn)行了驗(yàn)證。最后,通信結(jié)果以及抓包結(jié)果表明系統(tǒng)成功實(shí)現(xiàn)了協(xié)議的數(shù)據(jù)通信。
數(shù)據(jù)通信的性能指標(biāo)是衡量一個(gè)通信系統(tǒng)傳輸數(shù)據(jù)信息能力的重要標(biāo)志。本設(shè)計(jì)針對(duì)誤碼率、丟包率以及傳輸時(shí)延,對(duì)其進(jìn)行測(cè)試。測(cè)試結(jié)果如表1所示。
表1 測(cè)試結(jié)果
通信測(cè)試結(jié)果表明,隨著測(cè)試時(shí)間的增加,系統(tǒng)的傳輸延時(shí)時(shí)間基本保持在3.20 μs。該傳輸延時(shí)時(shí)間是一個(gè)數(shù)據(jù)幀在本系統(tǒng)中由一個(gè)節(jié)點(diǎn)傳輸?shù)搅硪还?jié)點(diǎn)所花費(fèi)的時(shí)間。通過(guò)在Wireshark工具查看數(shù)據(jù)包的收發(fā)情況可以發(fā)現(xiàn),其丟包率基本不存在;通過(guò)查看數(shù)據(jù)通信結(jié)果可以發(fā)現(xiàn),誤碼率隨著時(shí)間的增長(zhǎng)雖然存在,但仍在預(yù)期范圍內(nèi),基本維持在0。測(cè)試結(jié)果說(shuō)明了本系統(tǒng)的穩(wěn)定性以及通信的準(zhǔn)確性,達(dá)到了通信的基本要求。
本文設(shè)計(jì)了一種基于POWERLINK協(xié)議的多客戶端通信系統(tǒng)闡述。在搭建的硬件平臺(tái)上,完成了Linux系統(tǒng)下的POWERLINK主站與Windows系統(tǒng)下的POWERLINK多從站的數(shù)據(jù)通信,通過(guò)實(shí)際的數(shù)據(jù)交互以及網(wǎng)絡(luò)工具的抓包試驗(yàn)對(duì)其進(jìn)行驗(yàn)證。最后針對(duì)通信的性能指標(biāo),通過(guò)試驗(yàn)對(duì)其進(jìn)行了測(cè)試。測(cè)試結(jié)果證明了系統(tǒng)通信的穩(wěn)定性與準(zhǔn)確性。該系統(tǒng)對(duì)今后工業(yè)通信的研究具有深遠(yuǎn)的意義。