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