摘? 要: 設計實現(xiàn)了一種能應用在空間機器人" title="空間機器人">空間機器人計算機控制系統(tǒng)中的冷熱雙冗余" title="雙冗余">雙冗余CAN總線系統(tǒng)" title="總線系統(tǒng)">總線系統(tǒng)。詳細論述了這種冗余CAN總線系統(tǒng)的硬件電路設計方案,以及該總線系統(tǒng)相較其他冗余方式的不同特點,并給出了配合硬件結構的軟件容錯策略,建立系統(tǒng)模型進行了可靠性分析。最后對該系統(tǒng)的冗余功能和系統(tǒng)性能進行了實際測試。
關鍵詞: CAN總線; 雙冗余; 容錯; 空間機器人; 星載計算機
?
??? 空間機器人控制系統(tǒng)內(nèi)部總線承擔著所有數(shù)據(jù)和命令的傳輸任務,擁有一種可靠、實時、高容錯的通信總線對于空間機器人系統(tǒng)是至關重要的[1]。在航天領域曾經(jīng)嘗試過RS-485、BITBUS、1553B等串行總線,但存在著價格昂貴、速率低以及可靠性難以保證等問題[2]。
??? 上世紀80年代由德國Bosch公司開發(fā)的CAN(Controller Area Network)總線屬于現(xiàn)場總線的范疇,是一種串行數(shù)據(jù)總線。CAN總線系統(tǒng)以其優(yōu)越的性能、簡單的結構、良好的使用性和容錯性能而引人注目[3]。目前,在航天領域冗余備份的CAN總線系統(tǒng)已經(jīng)得到了比較廣泛的使用和驗證,但是采用的冗余方式對于可靠性和實時性要求都比較高的空間機器人系統(tǒng)來講都存在一些問題??梢圆榈降奈墨I中顯示,大部分的冗余設計都是單純的冷冗余或單純的熱冗余,將冷熱冗余結合到一起的設計較少。冷冗余功耗較低但實時性差,在高速傳輸時不易保證數(shù)據(jù)傳輸?shù)乃俾屎驼_性。熱冗余雖然有較好的實時性,但功耗相對較大。這兩者的特點有較好的互補性。
??? 本文針對空間機器人機械手系統(tǒng)設計并實現(xiàn)了CAN控制器和驅動器的冷熱雙冗余備份的總線系統(tǒng)。該系統(tǒng)有效結合了冷冗余和熱冗余的特點,在保證可靠性的前提下也獲得了較好的傳輸速率。
1 CAN總線系統(tǒng)的基本冗余方式
??? CAN總線系統(tǒng)的基本冗余方式通常有兩個方面:總線控制器" title="總線控制器">總線控制器冗余和總線驅動器冗余。
??? CAN總線控制器冗余方式基本思路如圖1所示,同時使用兩條CAN總線,兩個CAN總線驅動器和兩個CAN總線控制器,CPU通過不同的端口和中斷同時控制兩個CAN控制器。這種冗余方法可以進行熱冗余:即接收時CPU控制器可以同時處理兩路總線上發(fā)來的數(shù)據(jù),進行比較,選擇一組數(shù)據(jù)接收;發(fā)送時可以通過兩條總線發(fā)送同一組數(shù)據(jù)。也可以進行冷冗余:當節(jié)點發(fā)送時,選擇一個總線控制器在一條總線上發(fā)送,接收方只接收其中一個控制器的數(shù)據(jù),在兩個控制器都有數(shù)據(jù)接收時作為兩組有效數(shù)據(jù)處理。
?
??? 這種冗余方法對整個總線系統(tǒng)進行了冗余備份,沒有其他控制電路,整個電路簡單通用。但是這種控制模式在熱冗余的情況下有以下不足:①會導致系統(tǒng)的軟件編寫復雜,降低系統(tǒng)的可靠性;②對兩個控制器進行控制增加了系統(tǒng)的額外開銷,降低了系統(tǒng)的有效利用率;③如果采用接收到1幀后屏蔽另外一路CAN總線中斷,則會導致有用數(shù)據(jù)幀的丟失或者增加系統(tǒng)判斷的難度和復雜度。在冷冗余情況下,為了使得系統(tǒng)使用的CAN總線統(tǒng)一,需要增加總線仲裁節(jié)點,并且系統(tǒng)的總線切換無法做到實時高效切換。
??? CAN總線驅動器冗余方式是針對CAN總線系統(tǒng)出錯的主要環(huán)節(jié)——驅動芯片和通信線路而進行的冗余的方式。該方法使用兩條總線電纜,每個節(jié)點處使用兩個總線驅動器,一個總線控制器,在總線控制器與兩個總線驅動器之間設置一模擬開關,如圖2所示。當節(jié)點發(fā)送數(shù)據(jù)時,總線控制器通過兩個總線驅動器同時向兩條總線發(fā)送相同的報文;在接收時,CPU通過設置模擬開關將一個CAN驅動器的信號送入CAN控制器進行接收。在CPU內(nèi)部為各個節(jié)點設一定時器,該定時器在計數(shù)到預先設定的數(shù)值后發(fā)出中斷,控制器在收到該中斷后,切換模擬開關,將另一個CAN驅動器的信號送人CAN控制器進行接收。
?
??? 該種冗余方法具有控制電路簡單、可控性強、軟件編制方便和系統(tǒng)利用率高等優(yōu)點。但是該系統(tǒng)又有切換的實時性不強,定時器的時間難以確定的缺點。該系統(tǒng)同時使用兩條總線發(fā)送,一條總線接收,因此當接收總線出錯(斷線)而備份總線正常的情況下,在收方定時器時間內(nèi),由于沒有收到物理回應,發(fā)送節(jié)點將自動重發(fā)該數(shù)據(jù)幀,影響其他節(jié)點之間的正常通信。
2 冷熱雙冗余CAN總線系統(tǒng)的設計
2.1 空間機器人機械手控制系統(tǒng)設計概述
空間機器人機械手系統(tǒng)是空間機器人系統(tǒng)的一個重要組成部分,該系統(tǒng)采用的是層次式分布控制系統(tǒng)??刂撇糠纸M成模式如圖3所示。控制器之間通過CAN總線進行通信。
?
為了提高系統(tǒng)的可靠性、實時性和容錯能力,對CAN通信總線采用冷熱雙冗余設計。在CAN總線系統(tǒng)的設計中,CAN控制器采用的是SJA1000控制器,CAN驅動器采用的是82C250驅動器。
2.2 雙冗余CAN總線系統(tǒng)設計
下面主要以中央控制器" title="中央控制器">中央控制器為例來說明雙冗余CAN總線系統(tǒng)的設計。中央控制器主要由互為備份的相同主控單板A、B(含CPU、存儲器、CAN總線控制器、CAN驅動器等),仲裁電路及供電系統(tǒng)組成。如圖4所示。
?
該冷熱冗余的CAN總線系統(tǒng)由主控單板間CAN控制器的冷冗余和單板上CAN驅動器的熱冗余構成。CAN節(jié)點的具體設計如圖5所示。兩個冗余的主控單板之間通過仲裁電路進行仲裁,判斷哪個主控單板具備CAN總線的控制權,成為當班主機,另一主控單板則成為備機,以此實現(xiàn)CAN控制器的冷冗余。每個單板都與兩條冗余的通信總線電纜相連,在CAN節(jié)點的每個冗余的主控單板上使用一個總線控制器和兩個總線驅動器,總線控制器與總線驅動器之間設置有判斷電路,可以進行CAN驅動器的實時切換,實現(xiàn)驅動器的熱冗余。具備CAN總線控制權的主控單板在發(fā)送時,總線控制器通過兩個總線驅動器同時向兩條總線發(fā)送同一報文;而在接收時,判斷電路會根據(jù)報文到達的先后順序,自動選擇兩條冗余總線中的一條來接收報文,并將收到的報文送入總線控制器。
?
(1) 主控單板間的CAN總線控制器的冷冗余
在互為備份的主控單板間,CAN總線控制器冷冗余切換仲裁邏輯是通過在各主控單板的CPU中設置一個基于定時器的主/備機切換邏輯來完成的。在工作時,當班的主控單板在控制周期開始時發(fā)送廣播查詢指令,當該主控單板收到各節(jié)點的廣播查詢返回指令后清除定時器的計數(shù)值,重新計時。如果主控單板發(fā)生故障,該單板的定時器便發(fā)出超時中斷,系統(tǒng)將進行主控單板控制權的切換,完成CAN總線系統(tǒng)控制器的冷冗余切換。該計時器的初始值設定在系統(tǒng)控制周期的1~2倍時間段上比較合適。
空間機械手中央控制器有冷熱備份兩種工作模式。在機械手系統(tǒng)工作時,控制系統(tǒng)處于熱備份模式以提高系統(tǒng)的可靠性和冗余部件切換的實時性;在機械手系統(tǒng)待機時控制系統(tǒng)處于冷備份模式以降低系統(tǒng)的功耗。在系統(tǒng)熱備份模式下,CAN總線控制器冷冗余切換是通過仲裁電路分別置A、B單板選擇位Asel和Bsel有效來實現(xiàn)的;在系統(tǒng)冷備份模式下,CAN總線控制器冷冗余切換是通過把定時器與硬件看門狗相連接,在將發(fā)生故障的主控單板復位的同時,使備份的主控單板加電啟動成為當班機,并使復位的主控單板成為備份機。
(2) 主控單板上的CAN總線驅動器熱冗余
在報文發(fā)送時,單板上兩個驅動器同時分別向兩條總線發(fā)送同一報文。兩條總線均正常工作時,傳送的報文均正確且相同,故接收端無論接收哪一路都可以。當有一條總線發(fā)生故障時,接收端負責總線故障的判斷和錯誤報文的屏蔽。在報文接收時,判斷電路對總線的選擇以時間優(yōu)先為原則。由于任何兩條相同總線在電氣特性上都會有差異,故它們的傳輸延遲不會完全相同,導致報文的到達時間也會有先后之分。這樣,先到達的報文就會被判斷電路選中并送入CAN總線控制器。如果兩條總線均無故障,那么兩條總線上傳輸?shù)膱笪氖窍嗤?,因此選擇哪一路收到的都是正確報文。
用來確定總線報文到達的先后順序并進行驅動器選擇的判斷電路是由2個分別對應2條總線的74LS123單穩(wěn)態(tài)電路和用VHDL語言編寫的CPLD邏輯電路組成的。由芯片手冊知道,74LS123是直流觸發(fā)的單穩(wěn)多諧振蕩器,該電路一旦被觸發(fā),輸出的基本脈沖寬度可以通過可重復觸發(fā)的低電平有效的選通輸入而得到擴展。因此它對不同的總線狀態(tài)有不同的輸出。判斷電路的設計思想就是通過這一輸出脈沖起始上升沿到達的先后和脈沖寬度來完成對兩條總線的報文選擇和對故障總線的屏蔽。當總線上無報文傳輸時,74LS123輸出端為低電平。一旦報文到達,在報文幀起始位觸發(fā)下降沿的作用下,74LS123的輸入端產(chǎn)生一個高電平脈沖輸出,這個高電平脈沖的寬度取決于報文中邏輯位的情況。由于正常情況下報文中連續(xù)出現(xiàn)相同邏輯位的位數(shù)不超過5位,經(jīng)報文中對應的下降沿的不斷觸發(fā),這個高電平脈沖從報文幀起始位下降沿開始一直將持續(xù)到報文結束。根據(jù)CAN總線協(xié)議,CAN幀主動錯誤標志的最大可能時間為12位。這樣一來高電平脈沖長度就大于12位數(shù)據(jù)傳輸?shù)拈L度[3]。兩個單穩(wěn)態(tài)的輸出脈沖的上升沿表示了兩個報文到達的先后關系,通過編寫的CPLD邏輯電路,搶先到達的報文被選中,它產(chǎn)生的持續(xù)12位時間長度的高電平脈沖在邏輯電路里屏蔽了另一路滯后到達的報文。如果其中一個總線因發(fā)生故障而無報文時,則對應的74LS123就不會被觸發(fā),因而被作為滯后者處理,此時對應的信號通道始終被邏輯電路屏蔽。如此就做到了兩路CAN驅動器的熱冗余實時切換。
2.3 CAN總線系統(tǒng)相關軟件措施
結合硬件設計,在CAN總線的上層協(xié)議和軟件設計中采取了如下措施:
(1) 在所有CAN的數(shù)據(jù)幀中增加了一個字節(jié)的CRC校驗來判斷接收數(shù)據(jù)的正確性,如果接收不正確就拋棄數(shù)據(jù)。提高了系統(tǒng)的容錯能力。
(2) 在軟件設計中增加了錯誤重發(fā)機制保證系統(tǒng)數(shù)據(jù)通信的可靠。
(3) 在軟件設計中依據(jù)CAN總線控制器的錯誤標志寄存器設計了總線系統(tǒng)的自檢機制,提前發(fā)現(xiàn)錯誤,提前切換保障系統(tǒng)的運行。
(4) 將中央控制器設置為系統(tǒng)中的主節(jié)點,可以向其他節(jié)點發(fā)送數(shù)據(jù),并可以接收所有其他從節(jié)點的數(shù)據(jù);其他從節(jié)點只能與中央控制器節(jié)點通信,從節(jié)點之間不進行通信。這樣的層次設置有利于CAN總線系統(tǒng)的管理,提高系統(tǒng)的可靠性。
(5) 為了防止由于CAN總線系統(tǒng)的錯誤而導致各節(jié)點主/備機間的乒乓切換,在軟件設計上增加了CAN總線狀態(tài)錯誤標志:當主/備機在約定的時間內(nèi)沒有收到任何CAN總線數(shù)據(jù),則CAN總線狀態(tài)錯誤標志加1;如果正常接收到數(shù)據(jù)幀且CAN總線狀態(tài)錯誤標志不為零時,標志減1;當CAN總線狀態(tài)錯誤標志大于3時系統(tǒng)(中央控制器)向上級或地面發(fā)送總線錯誤標志,由上位機或地面采取相應的措施。
3 CAN總線系統(tǒng)可靠性分析
根據(jù)以上設計,空間機械手CAN總線系統(tǒng)的可靠性模型可以簡化為圖6所示模型。
?
可靠性計算的依據(jù)是串聯(lián)模型與并聯(lián)模型。
串聯(lián)模型:
并聯(lián)模型:
上述兩式中: Rc(t)為子系統(tǒng)的可靠度;Ri(t)為各部件的可靠度;λi(t)為各部件的失效率;n為中央控制器各模塊主要部件的數(shù)目。
經(jīng)分析可知,該串并混合系統(tǒng)的可靠度模型為:
經(jīng)計算該模型的失效率已達到1失效數(shù)/106小時的數(shù)量級,遠遠超出機械手系統(tǒng)設計的在軌壽命要求。
4 驗證與測試
4.1 冗余備份功能測試
冗余備份功能測試主要包括:主控單板間CAN控制器的冷冗余功能和單板內(nèi)CAN總線的熱冗余功能。
CAN總線冷冗余功能的測試方法:將測試設備與中央控制器的CAN總線相連。測試設備可以通過CAN總線與中央控制器進行數(shù)據(jù)通信。中央控制器啟動到熱備份工作模式,設定主控單板A為主機(當班機),具備CAN總線控制權,B為備機。主/備機程序中均設定2 000ms的切換時限。所有定時均在本機CAN總線收到第一幀數(shù)據(jù)時開始啟動。由測試設備向中央控制器發(fā)送10 000幀數(shù)據(jù),幀間隔為50ms(保證一定的通信時間)。
測試結果:經(jīng)過如上測試,被測試機最終接收到數(shù)據(jù)幀的數(shù)目為9 970幀。
CAN總線熱冗余功能的測試方法:通過一塊主控單板設置CAN的幀間隔為50ms,發(fā)送100 000幀(保證一定的通信時間),由被測試的主控單板來接收。在測試過程中進行如下操作:手動斷開A路總線→接好A路總線→斷開B路總線→接好B路總線。
測試結果:經(jīng)過如上測試,被測試機最終接收到數(shù)據(jù)幀的數(shù)目為100 000幀。
結果分析:在熱冗余測試中,實現(xiàn)了冗余CAN總線的無縫切換;在冷冗余測試中,當模擬出現(xiàn)故障時,主控單板間因為需要進行主/備機切換,可能會引起丟幀。測試結果表明,該設計保證了冗余CAN總線的數(shù)據(jù)通信的實時性和可靠性。同時,由于處理器只需要處理一個通信中斷,大大降低了系統(tǒng)控制軟件的復雜性,降低了通信系統(tǒng)對處理器和內(nèi)存的壓力。
4.2 CAN總線測試信道通信速率的驗證
設計中采用了CAN控制器SJA1000和驅動器82C250,具備1Mb/s的最高通信速率的能力。機械手系統(tǒng)設計要求的總線通信能力為500kb/s,在此處測試了器件的最高通信能力和設計要求的500kb/s通信能力。
測試方法:利用一臺通用的CAN總線通信設備(本測試使用的是周立功CAN測試卡),設置通信速率分別為1Mb/s和500kb/s,先后與中央控制器進行一定數(shù)據(jù)量的連續(xù)通信(保證數(shù)據(jù)量不低于100 000幀)。
測試結果如表1所示。
?
根據(jù)以上結果,表明系統(tǒng)具備1Mb/s的通信速率,并且滿足要求的500kb/s的穩(wěn)定通信速率。
本研究在綜合考慮空間環(huán)境及機器人任務特殊性的基礎上,實現(xiàn)了一種獨特的空間機器人冷熱冗余CAN總線系統(tǒng)。經(jīng)過實際測試和項目實踐,證明了該套系統(tǒng)能夠滿足執(zhí)行空間任務的需要,適合在空間機器人系統(tǒng)中應用。
參考文獻
[1] ?向琳,曲峰,崔剛,等.小衛(wèi)星星務計算機的容錯體系結構設計[J]. 航天控制,2005,23(2):92-95.
[2] ?唐心悅, 崔剛,曲峰,等.小衛(wèi)星星務計算機系統(tǒng)總線的研究與實現(xiàn)[J].哈爾濱工業(yè)大學學報,2001,33(6):740-745.
[3] ?饒運濤,鄒繼軍,鄭勇蕓.現(xiàn)場總線CAN原理與應用技術[M]. 北京:北京航空航天大學出版社,2004.
[4] ?禹春來,許化龍,劉根旺,等. CAN 總線冗余方法研究[J].測控技術,2003,22(10):28-30.
[5] ?EMRICH A. CAN application in avionics, omnisys instrument[R]. European Space Technology Centre,?2000-11:29-33.
[6] ?ASHENDEN P J. The designer’s guide to VHDL (Second ?Edition)[M]. China Machine Press, 2005.