楊 璋
(中國西南電子技術研究所,四川 成都 610036)
現場總線在分布式控制系統和實時控制系統中的應用非常廣泛,CAN總線作為現場總線中的重要代表,最早由Bosch公司提出并成功應用在汽車領域[1-2],CAN總線的組網簡單、性能可靠、實時性好及功耗較低,并自帶校驗機制和糾錯機制,使其逐漸在航天領域得到廣泛應用,國內成熟的小衛星平臺上普遍采用CAN總線作為數據通信的主要手段[3-4]。
地球輻射帶、銀河宇宙射線及太陽質子等空間環境因素產生的輻射會對星載設備工作有較大影響[5],其中單粒子翻轉是造成星載設備故障的主要因素[6-7]。國內小衛星主要選用工業級器件SJA1000作為CAN總線控制器,本身抗輻照指標不高,進行防翻轉設計非常必要。目前,小衛星平臺已提出了一些防翻轉的整體方法[8],并進行了一些試驗驗證[9-13],但載荷仍需要根據其自身特點設計總線故障自動恢復方法,以減輕衛星平臺設計的壓力,提高通信穩定性。載荷主控計算機(以下簡稱載控機)作為衛星平臺和載荷分系統數據交換的樞紐,又是載荷分系統的設備控制中心,是載荷發揮作用的關鍵設備,其CAN總線出現故障會導致整個載荷分系統無法正常工作,嚴重時可能干擾衛星通信總線,影響平臺安全,所以載控機的總線翻轉自動恢復功能設計成為載荷設計的重點。本文首先分析了空間單粒子效應對總線寄存器的影響,結合載荷CAN總線結構和工作特點,設計了載荷CAN總線翻轉故障自動恢復方法,最后通過實驗驗證了方法的有效性。
小衛星載荷的CAN總線采用分層多區的多級網絡結構,每一級CAN總線都采用熱備份的雙冗余總線形式,包括A、B兩條總線互為備份,由星務主機和各種類型的下位機組成第一層CAN總線節點,下位機和各種類型的載荷主控機組成第二層CAN總線節點,每類載荷分系統組成第三層CAN總線節點,網絡結構示意圖如圖1所示。

圖1 載荷CAN總線網絡結構
載控機負責管理載荷分系統的總線通信,與2個級別的CAN總線存在數據交互,主控計算機通過二級CAN總線與下位機通信,接收星務主機下發的數據包、控制指令和遙測輪詢,并將載荷分系統的遙測數據上報;主控計算機通過三級CAN總線與分系統內部設備通信,下發指令、任務參數,并查詢、收集載荷設備的遙測數據。國內成熟的小衛星平臺二級CAN總線普遍采用BasicCAN模式,載荷分系統內部的三級CAN總線一般采用PeliCAN模式,以獲得更好的節點擴展性。
空間單粒子主要影響CPU寄存器、SRAM、總線控制器的數據緩沖區和寄存器等具有數據存儲能力的部件,造成其邏輯狀態翻轉,導致工作狀態為非期望值,從而影響正常工作[14-17]。總線異常后不僅自身不能正常工作,還會干擾其他節點工作,最終導致總線癱瘓,根據載荷CAN總線網絡結構,按照總線故障影響范圍對翻轉進行分類,如圖2所示。

圖2 寄存器翻轉異常類別
載控機在二級和三級CAN總線上承擔的節點任務不同,在二級CAN總線上作為下位機類型節點,受星務控制,接收星務下發的數據,一般采用BasicCAN模式工作;在三級CAN總線上作為上位機類型節點,控制其他載荷設備,是數據的發起節點,一般采用PeliCAN模式工作,需要針對二級和三級CAN總線特點,設計總線故障自動恢復方法。
影響單次數據收發的故障,此類型故障發生時會導致載控機需要接收的數據丟失或收到錯誤數據,下次通信寄存器重新置位能自動恢復正常,載控機無需啟動故障恢復措施,但要使上位機知曉本次通信失敗,解決措施為:載控機與上位機之間設計握手機制,未收到合法數據時不響應上位機的握手信息,接收上位機在備份總線上重發的數據。另外,上位機可在A,B總線上皆發送相同信息,降低通信故障的概率(A,B總線同時翻轉概率很小)。
長期影響數據收發的故障,此類型故障發生后不能自動恢復,需要載控機采取相應措施恢復故障,否則有拉垮總線的風險,一般來說,通過復位CAN總線控制器即可解決翻轉導致的故障。故障恢復的策略為:載控機定期查詢CAN總線狀態寄存器,若長時間連續出現總線錯誤標識則對相應的控制器進行復位操作。對于波特率及濾波器錯誤等沒有指示的故障,需利用系統工作特點設計故障恢復方法,衛星平臺的遙測指令和廣播數據在二級CAN總線上是長期存在且定時發送的,若載控機在長時間內都無法接收到正確的信息幀,則認為載控機的總線控制器可能出現故障,需進行復位操作。二級總線故障自動恢復流程如圖3所示。

圖3 二級總線故障自動恢復流程
影響單次數據收發的故障,此類型故障發生時會導致載控機需要發送的數據丟失或發送錯誤數據,同二級總線類似,故障在下次通信時重置恢復,只需在載控機與載荷設備之間設計握手機制,由載控機根據握手情況決定重發數據或切換備份總線發送數據,確保通信數據不丟失。
長期影響數據收發的故障,作為控制端載控機不但要恢復自身故障,還需協助其他載荷設備恢復故障,對于自身總線故障可通過復位總線控制器恢復,對于總線其他節點的故障恢復只能通過對故障設備復位解決。故障恢復策略為:載控機定期查詢RX/TX錯誤計數寄存器,若總線發送或接收錯誤計數超過閾值,則對控制器進行復位操作,防止故障影響擴大;載控機與某節點通信時若出現握手失敗,首先對自身總線控制器進行復位,若與該節點通信連續多次皆失敗,則認為該節點總線故障且不可自動恢復,對此節點進行復位重啟操作,并記錄節點故障,若總線上所有節點均出現節點故障,則認為總線被拉垮,需重啟所有節點。三級總線故障自動恢復流程如圖4所示。

圖4 三級總線故障自動恢復流程
小衛星二級、三級總線故障自動恢復方法驗證在載荷分系統測試網中執行,星務主機采用PC機替代,載荷設備故障通過仿真器運行錯誤注入代碼進行,實驗連接框圖如圖5所示。
實驗1:二級總線單次故障模式,針對可改寫寄存器翻轉,通過載控機執行錯誤注入代碼,修改寄存器值造成接收數據錯誤。載控機在故障情況下能丟棄錯誤數據,并正確接收星務重發的數據,且不影響后續數據的接收和發送。
實驗2:二級總線長期故障模式,在載控機運行過程中執行錯誤注入代碼,重新初始化相關寄存器為錯誤值,模擬翻轉后不能正常接收數據,模擬翻轉后波特率錯誤。載控機在故障情況下能自動復位故障總線,恢復總線正常通信;
實驗3:三級總線單次故障模式,針對可改寫寄存器翻轉,通過載控機執行錯誤注入代碼,修改寄存器值造成發送數據錯誤,與其他節點握手失敗。載控機在故障情況下能自動重發數據,并能切換到備份總線通信。
實驗4:三級總線長期故障模式,在載荷節點1運行過程中執行錯誤注入代碼,重新初始化總線控制器寄存器為錯誤值,模擬翻轉節點故障,載控機在故障情況下能自動復位總線控制器和節點1。使節點1長時間故障,拉垮總線,造成所有節點通信故障,載控機能復位所有節點,最終恢復總線正常通信。

圖5 總線故障恢復驗證實驗框圖
本文分析了空間單粒子翻轉對小衛星載荷主控機CAN總線的影響,單粒子主要造成總線控制寄存器值翻轉,從而造成總線節點之間數據通信失敗,嚴重時會拉垮整條總線,導致所有節點無法正常通信。針對載荷CAN總線單次和長期2種故障模式,結合載控機CAN總線組網和工作特點,分別設計了二級CAN總線和三級CAN總線翻轉自動恢復方法,在總線故障發生后無需地面操作,載控機能自主恢復單粒子翻轉導致的CAN總線故障,提高載荷總線恢復效率,降低載荷在軌維護的壓力。本故障自動恢復方法便于工程實現,且通過實驗驗證了方法的有效性,已成功應用到小衛星平臺工程項目中。