趙明,陳彧欣
(北京電子工程總體研究所,北京 100854)
發(fā)射車冗余熱備份CAN總線網(wǎng)絡(luò)實現(xiàn)方法研究*
趙明,陳彧欣
(北京電子工程總體研究所,北京 100854)
研究了一種以發(fā)控系統(tǒng)為核心的車載CAN總線網(wǎng)絡(luò)冗余熱備份實現(xiàn)方法,提出了具體的硬件、軟件設(shè)計思路。通過該方法,可實現(xiàn)整車通信總線網(wǎng)絡(luò)的冗余熱切換,有效提升發(fā)射車的任務(wù)可靠性,保障發(fā)射車的作戰(zhàn)效能。
CAN總線;冗余;熱備份;發(fā)射控制;Vxworks;設(shè)計方法
發(fā)射車是地基導(dǎo)彈武器系統(tǒng)的重要組成部分,以發(fā)控系統(tǒng)作為控制核心,控制其他分系統(tǒng)完成導(dǎo)彈的初始基準(zhǔn)建立、起豎調(diào)轉(zhuǎn)、射前檢測和發(fā)射控制[1]。
通常傳統(tǒng)的設(shè)計方法是將發(fā)控系統(tǒng)與其他分系統(tǒng)以點對點方式進(jìn)行信息交互;但在分系統(tǒng)較多的情況下,這種方式會導(dǎo)致電纜連接關(guān)系復(fù)雜,不利于擴(kuò)展升級。而采用現(xiàn)場總線技術(shù)可以使各分系統(tǒng)間的信息連接和傳遞變得簡單可靠[2]。
控制器局域網(wǎng)絡(luò)(controller area network,CAN)總線作為一個成熟的控制局域網(wǎng)絡(luò),已被廣泛應(yīng)用到機(jī)器人、汽車、數(shù)控機(jī)床、自動化儀表等領(lǐng)域的現(xiàn)場通信中[3]。雖然CAN總線協(xié)議本身有很強(qiáng)的檢錯糾錯能力,但在實際應(yīng)用中硬件電路的連接不牢、傳輸介質(zhì)的損壞、總線驅(qū)動器或控制器的損壞都會影響CAN通信的可靠性。
發(fā)射車的任務(wù)可靠性直接影響到導(dǎo)彈發(fā)射任務(wù)的實施和結(jié)果,而其通信總線網(wǎng)絡(luò)運行的可靠性正是關(guān)鍵因素之一。通常有2種提高可靠性的方法:一種是避錯(fault avoidance),就是通過對系統(tǒng)的完美規(guī)避和設(shè)計,使錯誤、故障不產(chǎn)生,即提高基本可靠性;另外一種是容錯(fault tolerance),就是當(dāng)系統(tǒng)出現(xiàn)故障時,系統(tǒng)也能正常工作,并且執(zhí)行結(jié)果也不會因系統(tǒng)故障而發(fā)生差錯,即提高任務(wù)可靠性[4-5]。
本文針對發(fā)射車的具體特點,采取主動容錯方式提高可靠性,提出了一種冗余熱備份CAN總線網(wǎng)絡(luò)的實現(xiàn)方式。
1.1 總線冗余設(shè)計
為了增加整個總線的可靠性,采用了雙冗余的總線型網(wǎng)絡(luò)結(jié)構(gòu)[6-7],包括A,B 2路總線相互獨立的,互為備份,發(fā)射車內(nèi)部各設(shè)備構(gòu)成總線通信節(jié)點,每個總線設(shè)備同時接A,B總線,互為備份,每個單機(jī)接口電路有獨立2組總線控制芯片和總線接口芯片[8-9],如圖 1所示。
車載系統(tǒng)上電后默認(rèn)選擇一路總線工作,當(dāng)該總線發(fā)生故障后,便迅速切換到另一路總線上來,保證CAN節(jié)點發(fā)送、讀取數(shù)據(jù)幀的正確性和實時性,使CAN總線網(wǎng)絡(luò)仍具備完成信息交互的能力。
由于CAN總線的控制器和驅(qū)動器可以選擇不同芯片,為了提高整個CAN總線網(wǎng)絡(luò)的兼容性,可對CAN總線節(jié)點的電氣接口進(jìn)行了統(tǒng)一設(shè)計:
(1) CAN控制器選擇SJA1000,頻率16 MHz;
(2) CAN驅(qū)動器選擇TJA1040(其管腳STB接低電平)或者82C250;
(3) 控制器與驅(qū)動器之間采用高速光耦進(jìn)行隔離,光耦兩端分別由隔離直流電源進(jìn)行供電。
1.2 總線架構(gòu)設(shè)計
考慮到發(fā)控系統(tǒng)作為發(fā)射車的核心控制系統(tǒng),其他分系統(tǒng)均受其控制,因此將發(fā)控設(shè)備作為CAN總線網(wǎng)絡(luò)的主節(jié)點,其他分系統(tǒng)作為從節(jié)點[10-11]。通過合理的應(yīng)用層協(xié)議設(shè)計,保證從節(jié)點不主動發(fā)送數(shù)據(jù),只有當(dāng)接收到主節(jié)點的命令幀后才能夠回送應(yīng)答幀。
整個CAN總線網(wǎng)絡(luò)結(jié)構(gòu)如圖 2所示。
圖1 接口電路Fig.1 Interface circuit
圖2 CAN總線網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Networkstructure of CAN Bus
2.1 CAN總線應(yīng)用層協(xié)議設(shè)計
為了相對簡化軟件復(fù)雜程度,提升冗余熱備份功能的可靠性。通過應(yīng)用層協(xié)議設(shè)計,定義了5類信息類型,可實現(xiàn)主從節(jié)點之間信息交互為“一問一答”式;從而能夠保證CAN總線的通訊是由主節(jié)點發(fā)起的,從節(jié)點是不允許主動發(fā)送數(shù)據(jù)的。整個CAN總線的故障判定和冗余軟切換由主節(jié)點來進(jìn)行控制。
本文使用了CAN2.0B協(xié)議中的標(biāo)準(zhǔn)幀[12],由7個不同的位域組成,即幀起始、仲裁域、控制域、數(shù)據(jù)域、CRC(cyclic redundancy check)域、應(yīng)答域和幀尾,如圖 3所示。
利用仲裁域提供的用戶自定義的11位,定義了發(fā)送方節(jié)點標(biāo)識、接收方節(jié)點標(biāo)識、總線標(biāo)識、幀標(biāo)識,如表 1所示。
信息類型的定義如表 2所示。
當(dāng)傳輸?shù)臄?shù)據(jù)包長度不足8字節(jié)時,采用單幀格式(數(shù)據(jù)域通用格式見表3);當(dāng)傳輸?shù)臄?shù)據(jù)包長度大于8字節(jié)時,采用多幀格式(數(shù)據(jù)幀通用格式如表4~6所示)。
2.2 冗余軟切換策略
CAN總線故障主要分3種情況:
(1) 數(shù)據(jù)幀發(fā)送錯誤;
(2) 在規(guī)定時間內(nèi)未接收到應(yīng)答幀;
(3) 接收到的應(yīng)答幀無效。
針對以上3種故障應(yīng)采取不同的檢測方式:
(1) 第1種故障情況,可通過底層驅(qū)動程序讀取總線控制器SJA1000的狀態(tài)寄存器看其發(fā)送標(biāo)志位是否被置位,如已置位則表示數(shù)據(jù)幀發(fā)送成功,
圖3 數(shù)據(jù)幀格式
Fig.3 Format of data frame
表1 標(biāo)準(zhǔn)幀格式
表2 信息類型
表3 單幀數(shù)據(jù)域格式
表4 多幀數(shù)據(jù)域格式(首幀)
表5 多幀數(shù)據(jù)域格式(中間幀)
表6 多幀數(shù)據(jù)幀格式(尾幀)
反之則表示發(fā)送錯誤;
(2) 第2種故障情況,主節(jié)點發(fā)送數(shù)據(jù)幀后,啟動定時器,如在100 ms內(nèi)沒收到應(yīng)答幀,則認(rèn)為故障;
(3) 第3種故障情況,當(dāng)接收到應(yīng)答幀時,應(yīng)檢測應(yīng)答幀ID,同時作應(yīng)用層協(xié)議校驗,如ID有誤或校驗和錯誤都說明接收的應(yīng)答幀無效。
針對上述的3種故障,需進(jìn)行總線切換,主節(jié)點通過另外一條總線重新發(fā)送數(shù)據(jù)幀。
2.3 通訊流程設(shè)計
(1) 主節(jié)點
發(fā)控系統(tǒng)作為主節(jié)點,處于實時性、可靠性、安全性的考慮,選擇Vxworks作為操作系統(tǒng)。Vxworks作為嵌入式實時操作系統(tǒng),主要具有如下特點[13]:
1) 多任務(wù)調(diào)度(采用基于優(yōu)先級搶占方式,同時支持同優(yōu)先級任務(wù)間的分時間片調(diào)度);
2) 任務(wù)間的同步(提供信號量機(jī)制);
3) 任務(wù)間的通信機(jī)制(提供消息隊列機(jī)制);
4) 中斷處理;
5) 定時器和內(nèi)存管理機(jī)制。
主節(jié)點命令幀發(fā)送的任務(wù)架構(gòu)和流程如圖4,5所示。命令幀發(fā)送任務(wù)與功能任務(wù)之間通過消息隊列聯(lián)系,共享待發(fā)送的CAN總線數(shù)據(jù)(即命令幀數(shù)據(jù))。功能任務(wù)執(zhí)行時,將需要發(fā)送的命令幀數(shù)據(jù)寫入命令幀存儲消息隊列中。命令幀發(fā)送任務(wù)周期性的監(jiān)測命令幀存儲消息隊列狀態(tài),一旦消息隊列中有了新的消息,立即讀取后,將其發(fā)送出去。
有可能有幾個功能任務(wù)在同時往消息隊列寫入消息,通過消息隊列的存儲容量和先進(jìn)先出的特性,能夠保證所有的數(shù)據(jù)不會覆蓋丟失。一旦命令幀發(fā)送任務(wù)搶占CPU控制權(quán)后,會將所有的命令幀數(shù)據(jù)發(fā)送出去。
圖4 命令幀發(fā)送相關(guān)任務(wù)架構(gòu)Fig.4 Sending- task infrastructure of command frame
主節(jié)點接收應(yīng)答幀的任務(wù)架構(gòu)和流程如圖6,7所示。同時建立A,B總線應(yīng)答幀接收任務(wù),監(jiān)聽A,B總線的狀態(tài)。A,B總線應(yīng)答幀接收任務(wù)與功能任務(wù)之間通過消息隊列聯(lián)系,共享接收到的CAN總線數(shù)據(jù)(即應(yīng)答幀數(shù)據(jù))。
對應(yīng)每個應(yīng)答幀,建立獨立的存儲消息隊列,是為了確保在多個功能任務(wù)同時進(jìn)行CAN總線通信時,不會導(dǎo)致相互沖突。
(2) 從節(jié)點
從節(jié)點只需同時監(jiān)聽A,B總線,一旦接收到命令幀,則按照通信協(xié)議的要求,按照前文所述的總線選擇原則,回送應(yīng)答幀即可。
圖5 命令幀發(fā)送流程Fig.5 Sending flow of command frame
2.4 總線仲裁
由于軟件設(shè)計采取了多條命令并發(fā)處理的機(jī)制,會發(fā)生CAN總線不同的節(jié)點可能會同時發(fā)送數(shù)據(jù)的情況,導(dǎo)致數(shù)據(jù)發(fā)送沖突。此時,依靠CAN總線自身的總線仲裁機(jī)制,來避免出現(xiàn)這樣的問題。
CAN總線采取的是“非破壞性總線優(yōu)先逐位仲裁”技術(shù)[14]:當(dāng)多個節(jié)點開始傳送它們各自的報文時,標(biāo)識符的每一位都被寫到總線上(高位在先,低位在后),而且能夠被每一個節(jié)點讀回。如果一個節(jié)點寫進(jìn)了隱性位“1”而讀回顯性位“0”,它會知道另一個較低標(biāo)識符號碼的(高優(yōu)先權(quán))節(jié)點正在訪問總線,于是停止傳送報文(丟失仲裁)并轉(zhuǎn)入接收狀態(tài)。
圖6 應(yīng)答幀接收相關(guān)任務(wù)架構(gòu)Fig.6 Receiving- task infrastructure of response frame
圖7 應(yīng)答幀接收流程Fig.7 Receiving flow of response frame
通過這種仲裁技術(shù),能夠確保CAN總線的實時性需求,讓優(yōu)先級最高的節(jié)點先發(fā)送數(shù)據(jù),低優(yōu)先級的節(jié)點會在優(yōu)先級高的節(jié)點結(jié)束發(fā)送后再發(fā)送數(shù)據(jù),保證不會丟失任何數(shù)據(jù)。
為驗證本文設(shè)計的CAN總線網(wǎng)絡(luò)冗余熱備份實現(xiàn)效果,按圖 8所示的原理搭建試驗平臺。CAN總線上掛1個主節(jié)點、1個從節(jié)點和1個CAN總線監(jiān)視器,CAN總線監(jiān)視器能顯示主節(jié)點和從節(jié)點發(fā)送的數(shù)據(jù)。其中CAN 0通道為A總線,CAN 1通道為B總線。
CAN總線監(jiān)視器采用周立功CAN- USB分析盒,界面中時間標(biāo)識欄(TimeIdentifier)1個單位表示0.1 ms[15]。
以一組CAN通信數(shù)據(jù)為試驗范例,正常通信結(jié)果在CAN總線監(jiān)視器上的顯示如圖 9的第0~7幀所示所示(回復(fù)間隔時間87.1 ms)。
命令幀:a0
應(yīng)答幀(7幀組成的多幀):
01 07 d0 01 00 00 00 0b
82 01 01 01 01 00 00 04
83 0a 00 0a 00 94 11 b8
84 0b 05 00 06 00 07 00
85 08 00 09 00 0a 00 0b
86 00 0c 00 0d 00 8f 00
c7 cc e9
針對CAN總線的主要故障,分別作出以下3種模擬:
(1) 發(fā)送錯誤
主節(jié)點通過CAN 0通道模擬發(fā)送命令幀a0錯誤,CAN總線監(jiān)視器顯示未收到此命令。隨后主節(jié)點切換到CAN 1通道發(fā)送命令幀a0,從節(jié)點通過CAN 1通道發(fā)送應(yīng)答幀。整個通訊過程如圖10的第8~15幀所示。
圖10 發(fā)送錯誤Fig.10 Send error
(2) 應(yīng)答超時
主節(jié)點通過CAN 1通道發(fā)送命令幀a0,從節(jié)點不應(yīng)答(模擬應(yīng)答超時)。112.1 ms(100 ms超時等待時間加上軟件一定的時間開銷)后主節(jié)點切換到CAN 0通道發(fā)送命令幀a0,從節(jié)點通過CAN 0通道發(fā)送應(yīng)答幀。整個通訊過程如圖11的第16~24幀所示。
(3) 應(yīng)答錯誤
主節(jié)點通過CAN 0通道發(fā)送命令幀a0,從節(jié)點同樣通過CAN 0通道應(yīng)答幀,但模擬應(yīng)答錯誤,其中最后一個數(shù)據(jù)為55(正確的為e9)。隨后主節(jié)點切換到CAN 1通道發(fā)送命令幀a0,從節(jié)點通過CAN 1通道發(fā)送正確應(yīng)答幀(最后一個數(shù)據(jù)為e9),主節(jié)點停止發(fā)送命令。整個通訊過程如圖 12的第25~40幀所示。
圖11 應(yīng)答超時Fig.11 Time out of answer
圖12 應(yīng)答錯誤Fig.12 Answer error
本文針對發(fā)射車的實際特點,通過合理可行的軟硬件設(shè)計,研究建立了一種以發(fā)控系統(tǒng)為核心的車載CAN總線網(wǎng)絡(luò)冗余熱備份實現(xiàn)方法,其具有可靠性高、穩(wěn)定性好、實時性強(qiáng)等特點。通過該方法,可以實現(xiàn)整車通信總線網(wǎng)絡(luò)的冗余熱切換,提升發(fā)射車任務(wù)可靠性,保障發(fā)射車作戰(zhàn)效能。該方法也可適用于其他類似的軍用復(fù)雜系統(tǒng)中。
[1] 趙偉忠.現(xiàn)場總線技術(shù)在導(dǎo)彈發(fā)射控制系統(tǒng)設(shè)計中的應(yīng)用研究[D].上海:上海交通大學(xué),2007. ZHAO Wei- zhong.The Application and Research of the Field Bus Technology in Design of The Missile Launch Control System[D].Shanghai:Shanghai Jiaotong University,2007.
[2] 方曉柯.現(xiàn)場總線網(wǎng)絡(luò)技術(shù)的研究[D].沈陽:東北大學(xué),2006. FANG Xiao- ke.Research on Fieldbus Network Technology[D].Shenyang:Northeast University,2006.
[3] 鄔寬明.CAN總線原理和應(yīng)用系統(tǒng)設(shè)計[M].北京:北京航空航天大學(xué)出版社,1996. WU Kuan- ming.Principle and Application System Design of CAN Bus[M].Beijing:Beihang University Press,1996.
[4] 郭曉松,王振業(yè),于傳強(qiáng),等.基于CAN總線的容錯冗余技術(shù)研究[J].計算機(jī)測量與控制,2009,17(1):60-62. GUO Xiao- song,WANG Zhen- ye,YU Chuan- qiang,et al. Research of the Fault Tolerant Redundant Technology Based on CAN Bus[J].Computer Measurement and Control,2009,17(1):60-62.
[5] 劉承智,丁國良,陳家文,等.基于分組的CAN總線容錯優(yōu)先級分配策略[J].計算機(jī)測量與控制,2012,20(12):3321-3324. LIU Cheng- zhi,DING Guo- liang,CHEN Jia- wen,et al.Fault- Tolerant Priority Assignment Algorithm Based on Classification of CAN[J].Computer Measurement & Control,2012,20(12):3321-3324.
[6] 禹春來,許化龍,劉根旺,等.CAN總線冗余方法研究[J].測控技術(shù),2003,22(10):28-41. YU Chun- lai,XU Hua- long,LIU Gen- wang,et al.Research of the Redundant Methods of CAN[J].Measurement & Control Technology,2003,22(10):28-41.
[7] 朱開銳,羅雄文.CAN總線與串行總線高速接口的設(shè)計[J].探測與控制學(xué)報,2009,31(S1):80-85. ZHU Kai- rui,LUO Xiong- wen.Design of High Speed CAN Bus and Serial Communication Interface[J].Journal of Detection & Control,2009,31(S1):80-85.
[8] 胡光永.CAN總線節(jié)點電路的設(shè)計與實現(xiàn)[J].微計算機(jī)信息,2006,22(2):1-3. HU Guang- yong.Design and Implementation of CAN Bus Node Circuit[J].Microcomputer Information,2006,22(2):1-3.
[9] 朱寶增,黎明也,嚴(yán)華,等.機(jī)載CAN總線節(jié)點的模塊化設(shè)計與實現(xiàn)[J].電子設(shè)計工程,2014,22(16):151-158. ZHU Bao- zeng,LI Ming- ye,YAN Hua,et al.Modular Design and Implementation of Airborne CAN Bus Node[J].Electronic Design Engineering,2014,22(16):151-158.
[10] 史久根,張培仁.CAN總線在實時系統(tǒng)中應(yīng)用的研究[J].中國科學(xué)技術(shù)大學(xué)學(xué)報,2005,35(2):195-201. SHI Jiu- gen,ZHANG Pei- ren.The Study of CAN Network’s Application in Real- Time System[J].Journal of University of Science and Technology of China,2005,35(2):195-201.
[11] 蘇虎平,沈三民,劉文怡,等.基于冗余CAN總線的實時通信系統(tǒng)設(shè)計[J].自動化與儀表,2013,28(1):26-55. SU Hu- ping,SHEN San- min,LIU Wen- yi,et al.Real- Time Communication System Based on Redundancy CAN- Bus[J].Automation & Instrumentation,2013,28(1):26-55.
[12] 謝顏輝.基于CAN協(xié)議的現(xiàn)場總線儀表的設(shè)計[D].重慶:重慶大學(xué),2002. XIE Yan- hui.Design of Fieldbus Instrument Based on CAN Protocol[D].Chongqing:Chongqing University,2002.
[13] 張梅.嵌入式操作系統(tǒng)VxWorks在導(dǎo)彈武器測試發(fā)射控制領(lǐng)域的可行性應(yīng)用研究[J].航天控制,2004,22(4):91-96. ZHANG Mei.Study on Application of Embedded RTOS Vx Works in Test Launch and Control System for Missile Weapon[J].Aerospace Control,2004,22(4):91-96.
[14] 王桂榮,錢劍敏.CAN總線和基于CAN總線的高層協(xié)議[J].計算機(jī)測量與控制,2003,11(5):391-394. WANG Gui- rong,QIAN Jian- min.CAN Bus and the Higher Layer Protocol Based on CAN Protocol[J].Computer Measurement and Control,2003,11(5):391-394.
[15] CANNalyst- l單路CAN分析儀[EB/OL].[2016-06-15].http:∥www.zlgmcu.com/tools/canbus/CANalyst- l.asp. CANNalyst- l Single CAN Analyzer[EB/OL].[2016-06-15].http:∥www.zlgmcu.com/tools/canbus/CANalyst- l.asp.
Design Method of Launch Vehicle’s Dual- Redundancy CAN Bus
ZHAO Ming,CHEN Yu- xin
(Beijing Institute of Electronic System Engineering,Beijing 100854,China)
The design method of launch vehicle’s dual- redundancy CAN(controller area network) bus is summarized. The design of bus architecture, the electrical interface, the communication protocol and the software are introduced. Redundancy backup and auto- switching of launch vehicle’s information- interactive system come true. The mission reliability of launch vehicle is improved, and the operational efficiency of launch vehicle in the battlefield is ensured.
CAN(controller area network) bus; redundancy; hot backup;launch control; Vxworks; design method
2016-06-15;
2016-11-18 基金項目:有 作者簡介:趙明(1980-),男,四川樂山人。高工,碩士,研究方向為測發(fā)控技術(shù)。
10.3969/j.issn.1009- 086x.2017.04.026
TJ768.2;TP393.1
A
1009- 086X(2017)- 04- 0162- 10
通信地址:100854 北京市142信箱30分箱 E- mail:buaazm2000@163.com