萬(wàn)沈文,,吳海然,,方立,吳忠兵,,閆渠成
?。ㄉ虾U袢A重工電氣有限公司,上海 200125)
摘要:動(dòng)力定位系統(tǒng)主要用來(lái)解決船舶深海動(dòng)力定位問(wèn)題,,系統(tǒng)對(duì)網(wǎng)絡(luò)實(shí)時(shí)性和安全性有著極高的要求,。同時(shí)動(dòng)力定位系統(tǒng)網(wǎng)絡(luò)節(jié)點(diǎn)多且網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜,部分單元控制器和數(shù)據(jù)采集器往往需要收發(fā)兩個(gè)網(wǎng)絡(luò)的數(shù)據(jù),。在深入比較分析各種實(shí)時(shí)以太網(wǎng)的基礎(chǔ)上,,選擇了具有實(shí)時(shí)性和安全性的工業(yè)以太網(wǎng)POWERLINK為研究對(duì)象,采用ZYNQ為硬件平臺(tái),,提出了在ZYNQ上建立兩個(gè)MicroBlaze軟核分別運(yùn)行兩個(gè)獨(dú)立POWERLINK協(xié)議的新方法,。該方法能解決控制器雙網(wǎng)絡(luò)平臺(tái)復(fù)用問(wèn)題,同時(shí)還能實(shí)現(xiàn)POWERLINK主從站的任意組合,,達(dá)到優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu)和降低成本的效果,。最后組建了POWERLINK雙協(xié)議網(wǎng)絡(luò)并利用wireshark進(jìn)行抓包測(cè)試,測(cè)得兩組網(wǎng)絡(luò)實(shí)際參數(shù)與設(shè)計(jì)參數(shù)相同且數(shù)據(jù)交互傳輸正確,,實(shí)驗(yàn)結(jié)果證明了該方案的可靠性和正確性,。
關(guān)鍵詞:POWERLINK,;雙協(xié)議;ZYNQ,;動(dòng)力定位系統(tǒng)
中圖分類號(hào):TP23,;TP393.11文獻(xiàn)標(biāo)識(shí)碼:ADOI: 10.19358/j.issn.1674-7720.2017.09.020
引用格式:萬(wàn)沈文,吳海然,,方立,,等.基于ZYNQ的POWERLINK雙協(xié)議組網(wǎng)研究與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2017,36(9):67-70,,77.
0引言
動(dòng)力定位系統(tǒng)(Dynamic Positioning System,DPS)通過(guò)實(shí)時(shí)檢測(cè)船舶的實(shí)際位置與目標(biāo)位置的偏差,,計(jì)算出使船舶到達(dá)目標(biāo)位置所需推力的大小,并對(duì)船舶上各推進(jìn)器進(jìn)行推力分配控制,,從而使船盡可能地保持在所要求的位置和方向上[1],。船舶動(dòng)力定位控制系統(tǒng)對(duì)安全性和實(shí)時(shí)性要求非常高,一旦出現(xiàn)故障,,將帶來(lái)巨大的經(jīng)濟(jì)損失和安全問(wèn)題,。此外動(dòng)力定位系統(tǒng)網(wǎng)絡(luò)節(jié)點(diǎn)多且網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜,部分控制器和數(shù)據(jù)采集單元往往要收發(fā)兩個(gè)網(wǎng)絡(luò)的數(shù)據(jù),。在比較各種實(shí)時(shí)以太網(wǎng)[23]后選擇POWERLINK來(lái)作為動(dòng)力定位控制系統(tǒng)的實(shí)時(shí)以太網(wǎng),。
目前,POWERLINK的研究集中在協(xié)議性能分析與應(yīng)用等方面,,在國(guó)內(nèi)主要用于CNC和機(jī)器人[4]以及安全控制等領(lǐng)域[5],。而POWERLINK在多網(wǎng)絡(luò)平臺(tái)下的使用研究較少,北方自動(dòng)控制技術(shù)研究所研究的雙層POWERLINK網(wǎng)絡(luò)網(wǎng)關(guān)采用的雙芯片架構(gòu)(MCU+FPGA)主要用于實(shí)現(xiàn)兩組網(wǎng)絡(luò)傳輸同步性問(wèn)題[6],,但對(duì)單FPGA芯片上實(shí)現(xiàn)雙網(wǎng)絡(luò)和數(shù)據(jù)傳輸問(wèn)題未做出相關(guān)研究,。國(guó)外研究方面意大利帕多瓦大學(xué)的L.Seno等人將POWERLINK應(yīng)用于報(bào)警處理系統(tǒng)[7];法國(guó)格勒諾布爾大學(xué)的
A.Soury等人將POWERLINK和openSAFETY結(jié)合使用在電梯網(wǎng)絡(luò)化控制系統(tǒng)中[8],。以上多為研究POWERLINK分布式組網(wǎng),、安全性冗余設(shè)計(jì)及POWERLINK仿真[911],,對(duì)雙網(wǎng)絡(luò)組網(wǎng)模式研究較少,。
本文對(duì)船舶動(dòng)力定位控制系統(tǒng)網(wǎng)絡(luò)進(jìn)行了研究,分析網(wǎng)絡(luò)拓?fù)鋱D的結(jié)構(gòu),。根據(jù)控制單元和數(shù)據(jù)采集單元的使用情況,,設(shè)計(jì)了一種以ZYNQ和PHY芯片為硬件平臺(tái),并在ZYNQ上建立兩個(gè)MicroBlaze軟核獨(dú)立運(yùn)行POWRLINK協(xié)議,。最后用wireshark分別對(duì)兩組網(wǎng)絡(luò)進(jìn)行抓包測(cè)試,,網(wǎng)絡(luò)測(cè)試參數(shù)與網(wǎng)絡(luò)設(shè)計(jì)參數(shù)一致,驗(yàn)證了設(shè)計(jì)方案的正確性和可靠性,。
1動(dòng)力定位系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)分析
如圖1所示動(dòng)力定位系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)主要分為3層:信息層,、控制層及設(shè)備層,。信息層主要是由計(jì)算機(jī)組成,在整個(gè)系統(tǒng)中主要是控制各個(gè)設(shè)備的信息傳輸顯示設(shè)備的運(yùn)行狀態(tài),??刂茖又饕煽刂破骱凸I(yè)以太網(wǎng)組成,其中CU為控制單元器,,DAU為數(shù)據(jù)采集器,。CU主要負(fù)責(zé)解析指令、算法執(zhí)行和數(shù)據(jù)通信,,DAU主要負(fù)責(zé)采集外接設(shè)備如風(fēng)傳感器,、無(wú)線電系統(tǒng)、推進(jìn)器等數(shù)據(jù)信息,。設(shè)備層主要是由艏向傳感器,、動(dòng)力系統(tǒng)和推力系統(tǒng)等組成。
POWERLINK網(wǎng)絡(luò)中負(fù)責(zé)管理總線使用權(quán)的節(jié)點(diǎn)被稱為POWERLINK管理節(jié)點(diǎn)(Managed Node,,MN),,通常稱為主站。網(wǎng)絡(luò)上的所有可用節(jié)點(diǎn)都由管理節(jié)點(diǎn)管理操作,,一個(gè)POWERLINK網(wǎng)絡(luò)只能有一個(gè)管理節(jié)點(diǎn),。僅在MN分配的通信時(shí)隙內(nèi)發(fā)送報(bào)文的所有其他節(jié)點(diǎn)被稱為受控節(jié)點(diǎn)(Controlled Node,CN), 通常稱為從站[12],。從站的數(shù)據(jù)收發(fā),,完全由主站控制。
動(dòng)力定位系統(tǒng)設(shè)備數(shù)量多,、網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜,,部分控制器和數(shù)據(jù)采集單元往往要收發(fā)兩個(gè)網(wǎng)絡(luò)的數(shù)據(jù)。如圖2所示,,CU1,、CU2、CU3將指令和算法下發(fā)到DAU1,、DAU2,、DAU3中,在此網(wǎng)絡(luò)中CU1,、CU2,、CU3作為主站使用,DAU1,、DAU2,、DAU3作為從站使用。
動(dòng)力定位系統(tǒng)的單元控制器大多作主站使用,,但在部分網(wǎng)絡(luò)中控制器在特殊情況下被當(dāng)作從站使用,。如圖3所示,,該網(wǎng)絡(luò)中CU1為主站,CU3為從站接受CU1發(fā)出的控制指令和算法,,然后再將指令和算法轉(zhuǎn)發(fā)給DAU4,。
從以上兩組網(wǎng)絡(luò)拓?fù)鋱D中可以看出,CU3在第一種網(wǎng)絡(luò)中作主站使用,,在第二種網(wǎng)絡(luò)中作從站使用,。換而言之,CU3需要分別運(yùn)行POWERLINK主從站兩種協(xié)議才能實(shí)現(xiàn)該功能,。
2系統(tǒng)設(shè)計(jì)
2.1硬件設(shè)計(jì)
考慮到控制器功能復(fù)雜以及FPGA資源等問(wèn)題,,故選擇Xilinx公司的ZYNQ作為硬件平臺(tái)。除了ZYNQ之外,,實(shí)現(xiàn)POWERLINK通信節(jié)點(diǎn)還需要如下硬件:
?。?)一片512 MB×8 bit的NAND Flash芯片S34ML04G100TFI,用作存儲(chǔ)POWERLINK程序和文件系統(tǒng),。
?。?)兩片128 MB×16 bit的DDR3芯片MT41J128M16HA125IT,作為運(yùn)行POWERLINK協(xié)議棧所需要的外部?jī)?nèi)存,。
?。?)POWELRINK是通過(guò)節(jié)點(diǎn)地址來(lái)尋址的,每個(gè)節(jié)點(diǎn)都有一個(gè)NodeID,,需要一個(gè)8 bit撥碼開(kāi)關(guān)來(lái)設(shè)置節(jié)點(diǎn)的NodeID,。
(4)網(wǎng)絡(luò)總路數(shù)為兩路,,選擇兩片型號(hào)為88E1111的芯片作為PHY芯片,。采用IO接口較少的RMII(Reduced Medium Idependent Interface)模式作為PHY的工作模式。在PHY芯片上再外接兩個(gè)RJ45的網(wǎng)口,,每路端口均提供通信與watchdog狀態(tài)指示LED,。
(5)50 MHz的晶振為FPGA和整個(gè)硬件系統(tǒng)提供時(shí)鐘源,。
?。?)JTAG接口用于軟件的調(diào)試和程序的下載。
硬件系統(tǒng)框圖如圖4所示,。
2.2軟件設(shè)計(jì)
目前常用的POWERLINK方案有兩種:基于MCU/CPU的C語(yǔ)言方案和基于FPGA的Verilog HDL方案,。POWERLINK是一種基于C語(yǔ)言的方案,,如果運(yùn)行于FPGA中需要在FPGA內(nèi)實(shí)現(xiàn)一個(gè)軟處理器,,如MicroBlaze[13]。
POWERLINK雙協(xié)議實(shí)現(xiàn)需要在嵌入式處理器中選擇AXI system下的Dual MicroBlaze Processor System模式,,對(duì)每個(gè)MicroBlaze的時(shí)鐘頻率和Local Memory size進(jìn)行設(shè)置,,一般情況下Local Memory設(shè)置為8 KB,。POWERLINK內(nèi)部總共使用了兩種總線,一種是AXI總線,,另一種是LMB總線,。AXI(Advanced eXtensible Interface)總線是一種高帶寬、低延遲的總線,,主要用在片內(nèi)兩個(gè)主從設(shè)備的數(shù)據(jù)傳輸上,。LMB(Local Memory Bus)是本地內(nèi)存總線,用于內(nèi)存總線訪問(wèn)存放指令和數(shù)據(jù)的片上塊RAM,。內(nèi)存總線有指令內(nèi)存總線(ilmb)和數(shù)據(jù)內(nèi)存總線(dlmb)兩種,,分別用于處理器指令和數(shù)據(jù)接口。
如圖5所示系統(tǒng)采用AXI總線作為系統(tǒng)的通信結(jié)構(gòu),,axi2axi_connector實(shí)現(xiàn)AXIlite總線上的slave共享,,兩個(gè)MicroBlaze核之間協(xié)同處理共享slave??偩€上掛處理器通信模塊Mailbox和處理器同步模塊Mutex,。兩個(gè)MicroBlaze各自有一個(gè)BRAM用來(lái)存儲(chǔ)處理器私有的指令和數(shù)據(jù)。表1列出了雙MicroBlaze中系統(tǒng)結(jié)構(gòu)的主要模塊,。
如圖6所示將兩個(gè)POWERLINK IP核的數(shù)據(jù)和寄存器引腳S_AXI_MAC_PKT和S_AXI_MAC_REG以及兩個(gè)MicroBlaze軟核數(shù)據(jù)端口M_AXI_DP共同連至ZYQN內(nèi)部axi2axi_connector IP上,。POWERLINK IP中主要包含物理層HUB和MAC,不同的IP核包含POWERLINK不同的組網(wǎng)模式,,組網(wǎng)模式主要有環(huán)形,、星形和菊花鏈形等。
設(shè)置完XPS中的MicroBlaze,、bram和AXI總線后將硬件設(shè)計(jì)導(dǎo)出至SDK軟件中,,
在SDK中導(dǎo)入POWERLINK開(kāi)源程序后建立BSP(Board Support Package)達(dá)到軟件在硬件主板上運(yùn)行的目的。程序需要配置各站的節(jié)點(diǎn)號(hào),、通信周期,、數(shù)據(jù)量,并將應(yīng)用程序變量和對(duì)象字典對(duì)應(yīng)的對(duì)象關(guān)聯(lián)起來(lái),,需要修改的部分如下:
?。?)主站節(jié)點(diǎn)號(hào)、通信周期和數(shù)據(jù)量設(shè)置:
#define NODEID0xF1//主站節(jié)點(diǎn)號(hào)為241
#define CYCLE LEN 800//通信周期設(shè)置為800 μs
#define CONFIG_TX_PAYLOAD 250//發(fā)250 B
#define CONFIG_RX_PAYLOAD 250//收250 B
?。?)對(duì)象字典主要參數(shù)包括索引,、子索引、對(duì)象類型,、訪問(wèn)類型和數(shù)據(jù)類型等,,具體如下:
EPL_OBD_SUBINDEX_RAM_VAR(0x6000, 0x00, kEplObdTypUInt8, kEplObdAccConst, tEplObdUnsigned8, NumberOfEntries, 0x01)
其中0x6000是索引;0x00是0x6000的子索引;kEplObdTypUInt8是8 bit無(wú)符號(hào)對(duì)象類型,;kEplObdAccConst是訪問(wèn)類型,;tEplObdUnsigned8是8 bit無(wú)符號(hào)數(shù)據(jù)類型;NumberOfEntries是索引名字,;0x01是默認(rèn)值,。
設(shè)置對(duì)象字典參數(shù)時(shí)根據(jù)自己的需要主要修改索引、子索引和數(shù)據(jù)類型的值,。
?。?)POWERLINK通過(guò)對(duì)象字典中的Object數(shù)據(jù)封裝和解析數(shù)據(jù)幀,在demo_main.c程序中有DigitalIn_Domain1和DigitalOut_Domain1兩個(gè)變量,。主站周期性地把DigitalIn_Domain1變量值發(fā)送給節(jié)點(diǎn)1,,周期性地把從節(jié)點(diǎn)1收到的值存入到變量DigitalOut_Domain1中。
//將接收的數(shù)據(jù)放入變量DigitalIn_Domain1中
ObdSize = CONFIG_RX_PAYLOAD;
uiVarEntries = 1;
EplRet = EplApiLinkObject(0x6100, DigitalIn_Domain1, &uiVarEntries, &ObdSize, 0x01);
if(EplRet != kEplSuccessful)
{
goto ExitShutdown;
}
POWERLINK網(wǎng)絡(luò)IP地址最后三位為POWERLINK節(jié)點(diǎn)號(hào),,因此設(shè)置時(shí)節(jié)點(diǎn)號(hào)不能重復(fù),。根據(jù)節(jié)點(diǎn)號(hào)可將POWERLINK程序分主站程序和從站程序,編寫(xiě)腳本文件將主站與主站,、主站與從站,、從站與從站3種模式組合成3個(gè)文件,根據(jù)應(yīng)用需求通過(guò)JTAG下載至硬件系統(tǒng)中,。
3系統(tǒng)測(cè)試及結(jié)果分析
POWERLINK通信過(guò)程比較復(fù)雜,,為了能更好地測(cè)試雙協(xié)議運(yùn)行情況,搭建了一組主站運(yùn)行雙協(xié)議的POWERLINK網(wǎng)絡(luò),,如圖7所示,。主站的兩個(gè)網(wǎng)口各自接入不同的HUB中,其中一個(gè)HUB接入從站節(jié)點(diǎn)1,,通信周期為500 μs,,數(shù)據(jù)量為250 B。另一個(gè)HUB接入從站節(jié)點(diǎn)2和從站節(jié)點(diǎn)3,,通信周期為800 μs,,數(shù)據(jù)量為250 B。在PC上運(yùn)行wireshark軟件接入網(wǎng)絡(luò)中進(jìn)行測(cè)試,,這樣能從抓包數(shù)據(jù)中明顯看出兩組數(shù)據(jù)的區(qū)別及各網(wǎng)絡(luò)的運(yùn)行情況,。
圖8中主站240與從站1通信數(shù)據(jù)量為250 B,POWERLINK通信周期為兩個(gè)相鄰SOC幀時(shí)間間隔,,即500 μs,。圖9中主站240與從站2和從站3通信數(shù)據(jù)量為250 B,通信周期為800 μs,。兩個(gè)網(wǎng)絡(luò)的從站節(jié)點(diǎn)號(hào),、通信周期和數(shù)據(jù)量均與實(shí)驗(yàn)設(shè)計(jì)參數(shù)一致,,故雙協(xié)議網(wǎng)絡(luò)通信正常,能實(shí)現(xiàn)POWERLINK網(wǎng)絡(luò),。
從圖10和圖11中可以得知,經(jīng)過(guò)長(zhǎng)時(shí)間多次測(cè)試數(shù)據(jù)前三位均為0,,沒(méi)有出現(xiàn)錯(cuò)誤計(jì)數(shù)現(xiàn)象,,說(shuō)明POWERLINK雙協(xié)議運(yùn)行數(shù)據(jù)傳輸正確。
4結(jié)束語(yǔ)
本文以動(dòng)力定位系統(tǒng)為應(yīng)用背景,,針對(duì)動(dòng)力系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜,,單個(gè)控制器在兩個(gè)網(wǎng)絡(luò)中同時(shí)使用這一情況,深入研究POWERLINK原理及協(xié)議,,提出了以ZYNQ為硬件平臺(tái),,在雙MicroBlaze軟核平臺(tái)上分別運(yùn)行POWERLINK協(xié)議的方法,然后搭建測(cè)試網(wǎng)絡(luò)從節(jié)點(diǎn)號(hào),、通信周期,、數(shù)據(jù)量和數(shù)據(jù)出錯(cuò)率衡量雙協(xié)議網(wǎng)絡(luò)的正確性和穩(wěn)定性。經(jīng)過(guò)多次測(cè)試得到實(shí)驗(yàn)實(shí)際參數(shù)與實(shí)驗(yàn)設(shè)計(jì)參數(shù)一致且數(shù)據(jù)交互傳輸正確這一結(jié)論,,驗(yàn)證了該方案的可行性,。
參考文獻(xiàn)
[1] FOSSEN T I.Guidance and control of ocean vehicles[M].John Wiley & Sons. Ltd,Chichester,1994.
?。?] 單春榮, 劉艷強(qiáng), 郇極. 工業(yè)以太網(wǎng)現(xiàn)場(chǎng)總線EtherCAT及驅(qū)動(dòng)程序設(shè)計(jì)[J]. 制造業(yè)自動(dòng)化, 2007, 29(11):79-82.
?。?] 謝經(jīng)明, 陳幼平, 周祖德,等. SERCOS總線協(xié)議及其在數(shù)控系統(tǒng)中應(yīng)用[J]. 機(jī)械與電子, 2001(5):3-5.
[4] 劉爭(zhēng)明, 王欽若, 萬(wàn)振磊. 基于工業(yè)以太網(wǎng)Ethernet Powerlink和ARM9的伺服控制系統(tǒng)的設(shè)計(jì)[J]. 工業(yè)控制計(jì)算機(jī), 2011, 24(4):55-56.
?。?] MOYNE J R, TILBURY D M. The emergence of industrial control networks for manufacturing control, diagnostics, and safety data[J]. Proceedings of the IEEE, 2007, 95(1):29-47.
?。?] 趙經(jīng)時(shí), 史貴林, 張靜怡,等. 一種雙層Powerlink網(wǎng)絡(luò)的網(wǎng)關(guān)[J]. 火力與指揮控制, 2015(7):180-183.
[7] SENO L, VITTURI S, ZUNINO C. Analysis of Ethernet powerlink wireless extensions based on the IEEE 802.11 WLAN[J]. IEEE Transactions on Industrial Informatics, 2009, 5(2):86-98.