杜曉海 王剛
(1.海軍裝備部西安710065)(2.電子科技大學(xué)成都610054)
一種魚雷用數(shù)據(jù)傳輸協(xié)議的設(shè)計(jì)
杜曉海1王剛2
(1.海軍裝備部西安710065)(2.電子科技大學(xué)成都610054)
設(shè)計(jì)了魚雷用數(shù)據(jù)傳輸網(wǎng)絡(luò)。通過設(shè)計(jì)合理的數(shù)據(jù)格式,突破了FlexRay協(xié)議規(guī)范中1個(gè)數(shù)據(jù)幀只能傳遞小于254字節(jié)有效數(shù)據(jù)的限制,實(shí)現(xiàn)了大于254字節(jié)數(shù)據(jù)的準(zhǔn)確傳輸。在此基礎(chǔ)之上,開發(fā)了包括數(shù)據(jù)發(fā)送和接收等功能在內(nèi)的數(shù)據(jù)通信協(xié)議,實(shí)現(xiàn)了無(wú)差錯(cuò)數(shù)據(jù)傳輸?shù)墓δ?。最后,通過實(shí)驗(yàn)驗(yàn)證了數(shù)據(jù)通信協(xié)議的可靠性。
魚雷;現(xiàn)場(chǎng)總線;通信協(xié)議;數(shù)據(jù)傳輸
Class NumberTJ630
由于具有高傳輸速率、確定性以及可靠性等優(yōu)點(diǎn),F(xiàn)lexRay技術(shù)受到越來(lái)越多的關(guān)注,并極有可能成為下一代通信網(wǎng)絡(luò)標(biāo)準(zhǔn)[1~13]。本文設(shè)計(jì)了一個(gè)基于FlexRay的數(shù)據(jù)傳輸網(wǎng)絡(luò),開發(fā)了相應(yīng)的數(shù)據(jù)通信協(xié)議,實(shí)現(xiàn)了網(wǎng)絡(luò)中不同節(jié)點(diǎn)之間無(wú)差錯(cuò)數(shù)據(jù)傳輸?shù)墓δ埽蓪⑵鋺?yīng)用于魚雷裝備中。
2.1FlexRay總線的技術(shù)特點(diǎn)
作為適應(yīng)未來(lái)系統(tǒng)需求的高性能總線,相比于以往魚雷型號(hào)中使用的CAN總線來(lái)說,F(xiàn)lexRay總線主要具有以下優(yōu)點(diǎn)[1]:
1)更高的傳輸速率和網(wǎng)絡(luò)負(fù)載率。其支持兩個(gè)獨(dú)立通信信道,每個(gè)信道的最大通信速率為10Mbit/s,因而最大傳輸速率是CAN總線的20倍。同時(shí),F(xiàn)lexRay總線的網(wǎng)絡(luò)負(fù)載率可以超過90%,而CAN總線的網(wǎng)絡(luò)負(fù)載率理論上最大僅僅為30%。
2)通信的實(shí)時(shí)性。由于FlexRay總線是一種基于時(shí)間觸發(fā)機(jī)制的現(xiàn)場(chǎng)總線,整個(gè)總線網(wǎng)絡(luò)的通信是在周期循環(huán)中進(jìn)行的。特定的數(shù)據(jù)幀在通信周期中持有固定位置,因而可以保證數(shù)據(jù)通信的實(shí)時(shí)性。
3)網(wǎng)絡(luò)配置的靈活性。這主要體現(xiàn)在FlexRay的兩個(gè)獨(dú)立信道支持?jǐn)?shù)據(jù)的冗余和非冗余傳輸,并且網(wǎng)絡(luò)支持多種拓?fù)浣Y(jié)構(gòu),網(wǎng)絡(luò)系統(tǒng)的擴(kuò)展無(wú)需調(diào)整現(xiàn)有節(jié)點(diǎn)的軟件等。
2.2FlexRay通信機(jī)制及其數(shù)據(jù)幀格式
FlexRay是一種基于時(shí)間觸發(fā)和柔性時(shí)間觸發(fā)機(jī)制的現(xiàn)場(chǎng)總線,通過通信周期循環(huán)的方式傳輸信息。一個(gè)通信周期包含靜態(tài)段、動(dòng)態(tài)段、符號(hào)窗和網(wǎng)絡(luò)空閑時(shí)間四個(gè)部分。靜態(tài)段由一些固定大小的時(shí)隙組成,主要用于傳輸周期固定的信號(hào)。動(dòng)態(tài)段由一些時(shí)長(zhǎng)可變的時(shí)隙組成,每個(gè)動(dòng)態(tài)時(shí)隙包含若干微時(shí)隙,動(dòng)態(tài)段主要用于傳輸隨機(jī)發(fā)生的信號(hào)。
數(shù)據(jù)幀是FlexRay總線中數(shù)據(jù)傳輸?shù)囊粋€(gè)單元,在有些文獻(xiàn)中也被稱為消息[5]。在FlexRay數(shù)據(jù)鏈路層協(xié)議中,數(shù)據(jù)幀包括幀頭、凈荷段和幀尾三個(gè)部分,詳見圖1。幀頭部分占5個(gè)字節(jié)。從前往后依次為:保留位、凈荷指示位、空幀指示位、同步幀指示位、啟動(dòng)幀指示位、幀標(biāo)識(shí)符、有效數(shù)據(jù)長(zhǎng)度、頭部循環(huán)校驗(yàn)CRC和幀周期計(jì)數(shù)。每個(gè)部分占用的比特?cái)?shù)由圖中的數(shù)字來(lái)表示。
3.1 數(shù)據(jù)格式的定義
目前FlexRay規(guī)范的定義僅僅包含物理層和數(shù)據(jù)鏈路層部分的內(nèi)容[1]。對(duì)魚雷而言,需要根據(jù)自身的需求來(lái)定制FlexRay網(wǎng)絡(luò)的應(yīng)用層協(xié)議。而應(yīng)用層協(xié)議中最主要的一部分就是對(duì)其中數(shù)據(jù)格式的定義。
FlexRay最主要的特點(diǎn)都是在其通信周期中的靜態(tài)段所體現(xiàn)出來(lái)的,一般情況下靜態(tài)段的時(shí)長(zhǎng)可以占到整個(gè)通信周期的70%左右。因而,我們?cè)跀?shù)據(jù)傳輸協(xié)議的設(shè)計(jì)中只考慮FlexRay靜態(tài)段部分的通信,即所有的數(shù)據(jù)和命令都在靜態(tài)段中傳輸。根據(jù)FlexRay協(xié)議規(guī)范的定義[1],所有靜態(tài)段中數(shù)據(jù)幀的長(zhǎng)度都相同,其中凈荷段長(zhǎng)度范圍在0~127字。但在實(shí)際應(yīng)用中,凈荷段的長(zhǎng)度還會(huì)受到通信周期時(shí)長(zhǎng)、靜態(tài)段時(shí)長(zhǎng)、靜態(tài)時(shí)隙數(shù)等因素的制約。一般來(lái)說,靜態(tài)幀中凈荷段長(zhǎng)度無(wú)法達(dá)到127個(gè)字。另外,在有些特殊的應(yīng)用場(chǎng)合往往其基本的通信單元長(zhǎng)度大于127字。為此,就需要根據(jù)實(shí)際需要對(duì)FlexRay的數(shù)據(jù)幀進(jìn)行拆卸和拼接。本文根據(jù)FlexRay協(xié)議規(guī)范,定義了一種較為簡(jiǎn)單的數(shù)據(jù)幀格式,實(shí)現(xiàn)了長(zhǎng)于127字?jǐn)?shù)據(jù)的有效傳輸。同時(shí),該數(shù)據(jù)格式具有一定的普適性,即不需要考慮凈荷段的長(zhǎng)度大小,能夠應(yīng)用于不同配置的FlexRay網(wǎng)絡(luò)中。具體的數(shù)據(jù)格式如表1所示。
表1FlexRay數(shù)據(jù)傳輸網(wǎng)絡(luò)的數(shù)據(jù)格式
根據(jù)表1的內(nèi)容,可以將所定義的數(shù)據(jù)格式描述如下。將應(yīng)用層傳輸?shù)臄?shù)據(jù)分為兩類:命令幀和載荷幀。其分別在于第1字節(jié)內(nèi)容不同,SYM= 0x01表示命令幀,SYM=0x02表示載荷幀。命令幀和載荷幀的第2字節(jié)ADD表示目標(biāo)地址,具體編碼規(guī)則為:廣播信號(hào)為0xFF,第1節(jié)點(diǎn)為0xF1,第2節(jié)點(diǎn)為0xF2,第3節(jié)點(diǎn)為0xF3,第4節(jié)點(diǎn)為0xF4,其后依次類推直至0xFF。網(wǎng)絡(luò)中各個(gè)節(jié)點(diǎn)通過收到的數(shù)據(jù)幀中目標(biāo)地址編碼來(lái)確定是否需要對(duì)其進(jìn)行處理。命令幀的第3字節(jié)FUN表示命令功能碼。具體編碼如下:通信起始0x01,通信結(jié)束0x02,起始確認(rèn)0x04,結(jié)束確認(rèn)0x05,數(shù)據(jù)包確認(rèn)0x03。若命令幀的第3字節(jié)為0x03,即表示數(shù)據(jù)包確認(rèn)時(shí),其第4和第5兩個(gè)字節(jié)被用來(lái)表示接收到的數(shù)據(jù)包的索引號(hào)INDEX。其他情況下命令幀中的其余字節(jié)內(nèi)容均為0。而對(duì)載荷幀而言,第3和第4字節(jié)均被用來(lái)表示對(duì)應(yīng)用數(shù)據(jù)拆分打包處理后生成的數(shù)據(jù)包的索引號(hào)。這里用兩個(gè)字節(jié)來(lái)表示數(shù)據(jù)包的索引號(hào)是為了滿足大數(shù)據(jù)量的傳輸需求而設(shè)計(jì)的。表中的M表示FlexRay靜態(tài)幀中凈荷段的字節(jié)數(shù)。
從上面的描述可以看出,我們?cè)O(shè)計(jì)的數(shù)據(jù)格式可以滿足在1個(gè)FlexRay簇(至多24個(gè)節(jié)點(diǎn))中的點(diǎn)對(duì)點(diǎn)和廣播兩種通信模式,同時(shí)能夠滿足超過127字的數(shù)據(jù)傳輸要求。另外,我們?cè)O(shè)計(jì)的數(shù)據(jù)格式與凈荷段的長(zhǎng)度M無(wú)關(guān)(只需保證M>5即可),能夠在多種不同配置的FlexRay網(wǎng)絡(luò)中使用。
3.2 數(shù)據(jù)傳輸協(xié)議的設(shè)計(jì)
通信過程的實(shí)質(zhì)在于保證信息傳輸?shù)?)效率,即有效性;2)準(zhǔn)確,即可靠性。FlexRay協(xié)議規(guī)范V2.1中定義的物理層和數(shù)據(jù)鏈路層規(guī)范能夠保證在FlexRay網(wǎng)絡(luò)中各種信息傳輸?shù)挠行浴H欢?,在考慮到信道中各種干擾等因素導(dǎo)致可能出現(xiàn)的誤碼的情況下,該協(xié)議規(guī)范本身并不能保證信息傳輸?shù)目煽啃裕?,13]。實(shí)際上,即使在一些較為簡(jiǎn)單的基于FlexRay的分布式應(yīng)用系統(tǒng),除了兩層基本服務(wù)以外,還需要更多的功能才能保證一個(gè)應(yīng)用系統(tǒng)的正常運(yùn)轉(zhuǎn)。因此,在一個(gè)基于FlexRay的應(yīng)用系統(tǒng)中需要有相應(yīng)的應(yīng)用層協(xié)議來(lái)維持整個(gè)系統(tǒng)的正常運(yùn)轉(zhuǎn)。
若一個(gè)簡(jiǎn)單的協(xié)議就可以實(shí)現(xiàn)某種應(yīng)用場(chǎng)合的功能,此時(shí)再采用較為復(fù)雜的通信協(xié)議不僅會(huì)造成系統(tǒng)資源的無(wú)謂浪費(fèi),還可能限制FlexRay總線的靈活性。因而應(yīng)用層協(xié)議的設(shè)計(jì)需要根據(jù)不同應(yīng)用系統(tǒng)的實(shí)際需求來(lái)進(jìn)行。本文中設(shè)計(jì)的通信協(xié)議能夠?qū)崿F(xiàn)在一個(gè)FlexRay網(wǎng)絡(luò)中各種數(shù)據(jù)無(wú)差錯(cuò)地傳輸?shù)幕竟δ?,即能夠保證數(shù)據(jù)傳輸?shù)目煽啃?。在該協(xié)議的基礎(chǔ)上將其進(jìn)行進(jìn)一步的擴(kuò)展就可以滿足更多的實(shí)際需要。
在我們?cè)O(shè)計(jì)的應(yīng)用層通信協(xié)議當(dāng)中,可靠的數(shù)據(jù)發(fā)送與接收是其中最重要的一個(gè)部分。下面著重介紹這部分內(nèi)容。圖2和圖3所示為網(wǎng)絡(luò)中節(jié)點(diǎn)數(shù)據(jù)發(fā)送和數(shù)據(jù)接收的流程。圖4和圖5分別介紹了數(shù)據(jù)接收過程中對(duì)命令幀和載荷幀的處理流程。
這里所描述的數(shù)據(jù)發(fā)送和數(shù)據(jù)接收的流程都是針對(duì)同一次通信進(jìn)程而言的。在實(shí)際的應(yīng)用中可能存在這種情況,即某一個(gè)節(jié)點(diǎn)既是發(fā)送節(jié)點(diǎn)又是接收節(jié)點(diǎn),這時(shí)該節(jié)點(diǎn)上將同時(shí)運(yùn)行著數(shù)據(jù)發(fā)送線程和數(shù)據(jù)接收線程。
從圖2~圖5可以看出,在本文設(shè)計(jì)的數(shù)據(jù)傳輸協(xié)議中發(fā)送節(jié)點(diǎn)與接收節(jié)點(diǎn)是通過一種“應(yīng)答-重傳”機(jī)制來(lái)保證各類信息無(wú)差錯(cuò)地進(jìn)行傳輸。首先,在發(fā)送節(jié)點(diǎn)向其接收節(jié)點(diǎn)發(fā)出通信請(qǐng)求之后,若沒有收到接收節(jié)點(diǎn)的確認(rèn)信號(hào),則通信起始信號(hào)的發(fā)送會(huì)一直持續(xù)下去。同理,在發(fā)送了某一個(gè)數(shù)據(jù)包后,發(fā)送節(jié)點(diǎn)也會(huì)等待接收節(jié)點(diǎn)相應(yīng)的確認(rèn)信號(hào),在收到確認(rèn)信號(hào)后才會(huì)發(fā)送下一包數(shù)據(jù)。而在通信結(jié)束時(shí)的過程也是完全類似的??梢园l(fā)現(xiàn),這個(gè)協(xié)議中數(shù)據(jù)的發(fā)送方始終處于主導(dǎo)地位,而接收方則是在不斷地對(duì)發(fā)送方發(fā)來(lái)的各種信號(hào)作出相應(yīng)的反應(yīng)。這樣既能夠保證數(shù)據(jù)穩(wěn)定、可靠的傳輸,又不至于使發(fā)送方和接收方的系統(tǒng)資源都被大量的消耗。
另外需要指出的是,本文的重點(diǎn)在于探討FlexRay網(wǎng)絡(luò)中應(yīng)用層協(xié)議中保證數(shù)據(jù)可靠通信的部分,而應(yīng)用層協(xié)議中對(duì)應(yīng)用數(shù)據(jù)的處理過程(包括發(fā)送方對(duì)應(yīng)用數(shù)據(jù)的拆裝、接收方將接收數(shù)據(jù)還原為原始信息)不是本文研究的重點(diǎn),在此不做過多的討論。
本文設(shè)計(jì)了一個(gè)魚雷用數(shù)據(jù)傳輸協(xié)議,同時(shí),開發(fā)了相應(yīng)的數(shù)據(jù)傳輸協(xié)議,利用“應(yīng)答-重傳”機(jī)制,實(shí)現(xiàn)了在不同節(jié)點(diǎn)間無(wú)差錯(cuò)傳輸各種應(yīng)用數(shù)據(jù)的功能。
[1]FlexRay consortium.FlexRay communication system protocol specification,version 2.1[S].2005.
[2]KANG MINKOO,PARK KIEJIN,KIM BONGJUN.Determining the Size of a Static Segment and Analyzing the Utilization of In-Vehicle FlexRay Newwork[C]//The Third 2008 International Conference on Convergence and Hybrid Information Technology,Seoul,2008:50-53.
[3]T.POP,P.POP,P.ELES,et al.Timing analysis of the FlexRay commucation protocol[J].Real-Time Systems,2008,39(1):205-235.
[4]XU Chuang-yan,ZHANG Yong.Simulation of FlexRay Communication Using C Language[C]//2008 International Symposium on Computer Science and Computational Technology,Beijing,2008:272-276.
[5]SCHMIDT E.G.,SCHMIDT.K.Message Scheduling for the FlexRay Protocol:The Dynamic Segment[J].IEEE Transactions on Vehicular Technology,2009,58(5):2160-2169.
[6]SCHMIDT.K,SCHMIDT E.G.Message Scheduling for the FlexRay Protocol:The Static Segment[J].IEEE Transactions on Vehicular Technology,2009,58(5):2170-2179.
[7]W.C.LI,M.D.NATALE,W.ZHANG,et al.Optimizations of an Application-Level Protocol for Enhanced Dependability in FlexRay[C]//Design,Automation&Test in Europe Conference&Exhibition,DATE'09,Paris,2009:1076-1081.
[8]ZENG H.,M.D.NATALE.,GHOSAL A.,et al.Schedule Optimization of Time-Triggered Systems Communicating Over the FlexRay Static Segment[J].IEEE Transactions on Industrial Informatics,2011,7(1):1-17.
[9]SRI K.,JEFFREY A.Sensitivity Analysis on Flexray Dynamic Segment Design Parameters[C]//2009 Fourth International Conference on Systems and Networks Communications,Vancouver,2009:12-18.
[10]P.INSEOK,S.W.MYOUNGHO.FlexRay Network Parameter Optimization Method for Automotive Applications[J].IEEE Transactions on Industrial electronics,2011,58(4):1449-1459.
[11]KIM J.H.,SEO S.H.,SON C.W.,et al.Synchronization Performance of FlexRay for OSEKtime[C]//IEEE International Symposium on Industrial Electronics(ISIE 2009),Beijing,2009:438-443.
[12]MARTIN L,MICHAEL G.,JüRGEN T.,et al.FlexRay ScheduleOptimizationoftheStaticSegment[C]// CODES+ISSS’09,London:2009,363-372.
[13]T.BOGDAN,D.B.UNMESH,P E.ETRU,et al.Scheduling for Fault-Tolerant Communication on the Static Segment of FlexRay[C]//2010 31stIEEE Real-Time Systems Symposium,Berlin,2010:385-394.
Design of Data Transmission Protocol for Torpedo
DU Xiaohai1WANG Gang2
(1.Naval Armament Department,Xi'an710065)(2.University of Electronic Science and Technology of China,Chengdu610054)
The data transmission network for torpedo is designed.By use of a reasonable data format,application data more than 254 bytes can be transferred on the FlexRay network.On the basis of such data format,a data communication protocol including the functions of data transmitting and data receiving is developed.By using such protocol,reliable transmission of the data between nodes in one FlexRay network is realized.Experiments are performed to validate the reliability of the protocol.
torpedo,field bus,communication protocol,data transmission
TJ630
10.3969/j.issn.1672-9730.2017.06.003
2016年12月3日,
2017年1月19日
杜曉海,男,工程師,研究方向:魚雷自導(dǎo)控制。