解夢迪,姜姍姍,郭照峰,賈 凡
(北京航天測控技術有限公司,北京 100041)
目前在地面裝備中為提高系統長期加電工作可靠性,雙機冗余系統已經廣泛應用,但在系統軟件容錯方面存在著一些不足,會因為系統測控軟件的問題導致雙機冗余失效,進而導致雙機系統沒有起到作用。為解決因系統測控軟件異常導致的冗余失效問題,提出一種任務狀態、CPU溫度、CPU占用率[1]、磁盤剩余空間以及IO狀態監測的故障診斷與容錯方法,該方法進一步提高系統穩定性和可靠性,保障測控設備長期連續加電的需求。
系統采用基于龍芯CPU、CPCI總線以及實時操作系統的組合架構,主要實現測控流程、數字量IO的輸入輸出控制、AD/DA模擬量采集與輸出、網絡通訊、串口通訊以及熱備冗余等功能。如圖1所示,為實現雙機冗余[2]功能開發的冗余控制模塊,它是嵌入式測控系統雙機冗余控制和切換的核心模塊,該模塊產生雙機通信信息,并通過對機的信息判斷是否需要本機切換成主機或從機狀態,從而給CPU主從機切換指令,實現主從機的熱備冗余切換,保障雙機系統整體可靠性。

圖1 系統結構圖
如圖1所示,雙機采用冗余控制板構建雙機冗余架構,其中1號機的sd1和sd2是冗余控制板發送的兩路心跳信號,rc1和rc2是冗余控制板接收的對機兩路心跳信號;同樣,2號機也有兩路心跳信號發送和兩路心跳信號接收,如圖2所示。

圖2 雙機心跳檢測結構圖
而系統故障如任務異常、CPU溫度過高、CPU占用率過大、磁盤剩余空間不足以及IO狀態異常等因素沒有被考慮到容錯機制中,文章將基于上述雙機系統開展對系統故障因素的影響研究并提出一種監測與容錯方案設計與實現。
系統主要包括龍芯微處理器(MCU,micro controller unit)模塊、多種外設功能模塊(冗余控制模塊、數字量IO模塊、AD/DA模擬量模塊、RS422串口模塊以及供電模塊等)。

圖3 龍芯控制器原理圖
2J1500+1A500_3U_CPCI板卡是3U計算機模塊,采用龍芯2J1500處理器,實現符合Compact PCI 2.0R3.0規范的3U Compact PCI接口計算機模塊,控制器原理如圖3所示。該計算機模塊具有完整的計算機功能,集成網絡、顯示、PCI-PCI橋、SATA接口、聲卡、串口、VGA、USB接口等功能。同時,為避免因靜電造成的板卡IC器件損壞,故針對各個接口如USB、SATA、PS/2、VGA做了特定的ESD防護設計,將ESD器件放在連接器側放置,同時濾波器件緊挨ESD器件,最大程度地保護因靜電引起的瞬態電流而對板卡器件造成的損壞,延長板卡器件使用周期。
冗余控制模塊是基于CPCI總線和FPGA的高速邏輯控制模塊,如圖4所示。該模塊用于完成包括本機切換控制、報警控制、隔離控制等功能。硬件功能組成包括RS422隔離通信、繼電器驅動、LED驅動、電源管理、電平轉換、電源監控、CPCI總線及FPGA等電路。

圖4 冗余控制模塊原理圖
數字IO模塊輸出TTL電平信號,用于測控組合設備前面板信號指示燈控制,同時采集來自串口通信切換模塊的狀態回采信號用于控制器模塊對設備隔離狀態自檢回采??刂破髂K通過數字IO模塊驅動程序控制指示燈驅動電路實現面板指示燈狀態控制,原理如圖5所示。

圖5 數字量IO模塊原理圖
AD/DA模塊為基于CPCI總線和FPGA的高速邏輯控制模塊,用于完成包括模擬量電壓采集、模擬電壓輸出和開關量IO等功能。硬件功能組成包括AD、DA、IO、電源管理、CPCI總線、FPGA等電路,原理如圖6所示。

圖6 AD/DA模擬量模塊原理圖
RS422串口模塊是基于CPCI總線的4路隔離串行通信接口模塊,如圖7所示。422串口模塊主要基于UART模塊來實現串行通信。主要由UART模塊、電平轉換模塊、422隔離收發模塊、電源管理、CPCI總線、FPGA等電路組成。

圖7 RS422串口模塊原理圖
電源模塊主要功能將輸入直流DC28V通過內部極性保護組件、濾波器組件、輸入濾波電路、DC/DC變換器組件及輸出濾波組件變換一組穩定的直流輸出,給系統供電,原理如圖8所示。

圖8 電源模塊原理圖
系統測控軟件運行在測控設備中,實現自檢、網絡接收指令、控制指令執行、數據采集與控制、組播數據回傳、災備恢復、應用故障診斷等。文章詳細對故障信息采集以及故障診斷設計進行闡述。
文章主要分析任務監測[3]狀態、CPU溫度、CPU占用率、磁盤剩余空間狀態以及IO狀態故障診斷分析,根據故障分類形成一組結果存儲在一維數組中,從數組中查找找到并定位故障,而順序查找和二分查找的實踐復雜度分別是O(n)和O(logn),對于實時系統選擇用復雜度O(1)的查找算法更加合適。而哈希算法是一種復雜度O(1)的查找算法,其中位圖是其中一種應用,本文將采用位圖查找故障元素。
故障因素按照數組設計為element_array[]={“任務狀態”,“CPU溫度”, “CPU占用率”,“磁盤剩余空間”,“IO狀態”}={4,3,2,1,0},根據element_array和切換結果保存數組Listswitch生成位圖映射表BitMap,如表1所示。

表1 位圖映射表BitMap
其中:normal表示無異常;IOabnormal表示IO異常;VHDCabnormal表示硬盤剩余異常;RCPUabnormal表示CPU占用率異常;TCPUabnormal表示CPU溫度異常;TASKabnormal表示任務異常。
圖9Listswitch中各狀態位置排列,D4表示任務狀態、D3表示CPU溫度狀態、D2表示CPU占用率狀態、D1表示磁盤狀態、D0表示IO操作狀態,同理可以處理警告保存數組Listwarn。

圖9 數組示意
通過維護記錄位圖映射表BitMap和故障因素的數組Listswitch,通過計算數組Listswitch所表示的值,然后索引映射表BitMap就可以找到當前哪些因素觸發切換條件。這個數組的值表示的位置和映射表BitMap中的位置是一一對應的,可以快速定位當前系統故障因素。
任務狀態表示實時系統中任務運行狀態,有多種狀態如“STOP”、“DELAY”、“SUSPEND”以及“READY”等。
測控軟件啟動時,測控軟件建立并啟動任務時,有兩類獲取到任務ID的途徑。一類是將其返回的任務ID實時的保存在任務ID列表中。另一類是系統任務,通過系統函數接口使用名稱查找其任務ID,并將其存到任務ID列表中,程序動態維護任務ID列表。
設計注冊所需要監測的任務詳細見表2,任務狀態監測邏輯如圖10所示。

表2 監測任務列表
任務狀態采集與監測設計概述如下:
1)啟動任務時記錄任務返回值為任務的ID值并依次存入到固定數組idarray[n]。
2)動態任務啟動和退出主要包含刪除任務前更新數組idarray[n]的ID和正常退出前更新數組idarray[n]的ID。
3)針對數組idarray[n]進行掃描,判斷其任務狀態,識別到任務“STOP”異常后,完成異常任務切換標志設置;識別到任務“SUSPEND”,設置報警設置,表明系統出現任務SUSPEND的狀態,記錄日志。
動態任務的個數有限,可以設計固定任務在數組前N位,動態任務的ID存入固定的后半段N-1~M,系統任務存入M+1~N,邏輯設計如圖10所示。

圖10 任務狀態獲取與監測邏輯設計圖
在任務狀態采集與監測模塊中,完成任務ID維護、任務狀態實時監測以及監測結果標記等工作,為故障診斷模塊提供處理依據。

表3 系統運行任務狀態監測判據詳細表
軟件設計獨立監測模塊[4],周期性的采集CPU溫度(TCPU)、CPU占用率(RCPU)以及磁盤剩余空間(VHDC)信息,CPU溫度/占用率以及磁盤空間狀態判據如表4所示,傳遞給信息處理模塊使用,如圖11所示。

表4 CPU溫度/占用率以及磁盤監測判據詳細表

圖11 CPU溫度/占用率/磁盤剩余空間監測邏輯
軟件對于系統的運行狀態(CPU溫度、CPU占用率以及磁盤剩余空間)故障進行“故障趨勢分析”,即當表4中的檢測項目的采集值超過“報警門限”或“切換門限”后,軟件會對之后5個檢測周期內該參數的變化趨勢進行預測與判斷,根據其曲線走向執行相應的報警動作或切換動作,防止指標出現極短時間超過閾值后回落到正常范圍情況時出現虛報,從而降低虛警概率。
系統監測過程中,被監測信息(CPU溫度、CPU占用率以及磁盤剩余空間的變化規律隨時間是不斷變化的,為了從監測數據中提取出有效信息,需要對監測數據的走勢做出假設。
本文采用最小二乘法[5]實現對嚴重故障的預測與分析,最小二乘法是一種數據優化技術,它通過最小化誤差的平方和尋找數據的最佳函數匹配。利用最小二乘法可以簡便的預測未來的數據,并使得這些求得的數據與實際數據之間誤差的平方和為最小。
具體過程如下:“報警門限”和“切換門限”可以通過用戶配置文件設置。當采樣值超過“報警門限”或者“切換門限”時,采樣過去5個周期的實測值采用線性擬合的方法擬合出曲線,f(t)=a+b*t+…+c*tn,t表示時刻,f(t)表示t時刻的擬合值,根據此公式預測未來趨勢,進而來預測超過“報警門限”或“切換門限”是否有效發生,完成“報警”或“切換”標志設置,邏輯設計如圖12所示。

圖12 CPU溫度/占用率以及磁盤空間判斷邏輯圖
系統監測IO輸出與采集的結果IOout和IOin比對,設計當結果IOout?IOin,判定IO控制異常,設置切換狀態。

圖13 IO操作監測邏輯
綜合任務狀態、CPU溫度、CPU占用率、磁盤剩余空間以及IO狀態,采用位圖[6-7]查找算法,快速檢測出當前系統中需要切換的因素。
故障診斷[8-22]實時監測任務監測狀態、CPU溫度、CPU占用率以、磁盤剩余空間狀態以及IO狀態等,并根據各項因素保存的“警告”列表Listwarn和“切換”列表Listswitch中狀態,實時識別并做出操作。
識別是normal狀態不做處理;識別是warn狀態記錄日志提示;識別是switch狀態執行停止喂狗并記錄日志。
綜合判斷系統報警與切換條件如表5所示。

表5 綜合判斷表
任務狀態、CPU溫度、CPU占用率以及磁盤剩余空間狀態獨立判斷,形成報警和異常切換結果,依據表邏輯,綜合判斷,設計如圖14所示。

圖14 綜合判斷邏輯設計
1)任務狀態出現“STOP”;
2)CPU溫度TCPU≥85 ℃;
3)CPU占用率RCPU≥80%;
4)磁盤剩余空間VHDC≤1 GB;
5)IO操作異常IOout?IOin。
測控軟件停止給RC模塊發喂狗操作,設備即故障隔離,觸發停止喂狗操作的輸入有任務異常、CPU溫度異常、CPU占用率異常、磁盤剩余空間不足、IO操作異常等。
5.2.1 任務異常識別仿真
任務異常是指所監測任務狀態在運行過程中出現“STOP”狀態(任務異常無法工作)。所監測的具有代表性的任務主要包含任務如表1所示,仿真過程中,通過故障注入軟件[23]向前端測控軟件中注入觸發任務STOP指令,當前端測控軟件響應這一條指令時,任務在t1時刻狀態切換為“STOP”狀態,故障診斷模塊識別到異常狀態執行停止喂狗操作,當前設備故障隔離,對機切換為單主機工作。
5.2.2 CPU溫度異常識別仿真
CPU溫度表示當前主控制器CPU實時溫度,仿真時,通過故障注入軟件向前端測控軟件中注入修改CPU溫度全局變量指令:
1)設置值低于預警值(TCPU<70 ℃),無處理;
2)設置值高于預警值小于切換閾值(70 ℃≤TCPU<85 ℃),設置報警標志并寫日志記錄CPU溫度預警;
3)設置值在預警閾值上下波動,模擬虛警的工況,根據設計通過曲線擬合可以判別出此種虛警情況,記錄虛預警記錄即可;
4)設置值達到切換閾值(TCPU≥85 ℃),執行停止喂狗操作,當前設備故障隔離,對機切換為單主機工作。
5.2.3 CPU占用率異常識別仿真驗證
CPU占用率表示當前系統CPU內存使用情況,仿真時,通過故障注入軟件向前端測控軟件中注入修改CPU占用率指令,指令執行通過CPU設置接口控制當前系統CPU占用率:
1)設置值低于預警值(RCPU<50%),無處理;
2)設置值高于預警值小于切換值(50%≤RCPU<80%),設置報警標志并寫日志記錄CPU占用率預警記錄;
3)設置值在報警閾值上下波動,模擬虛警的工況,根據設計通過曲線擬合可以判別出此種虛警情況,記錄虛預警記錄即可;
4)如果預測值達到閾值(RCPU≥80%),按照切換處理;設置值達到切換閾值(RCPU≥80%),執行停止喂狗操作,當前設備故障隔離,對機切換為單主機工作。
5.2.4 磁盤剩余空間異常識別仿真驗證
嵌入系統中磁盤空間有限,磁盤資源寶貴,剩余空間必須監測。仿真時,通過ftp工具向設備硬盤寫入文件,消耗硬盤空間:
1)剩余空間值高于預警值(VHDC>3 GB),無處理;
2)剩余空間值高于預警值小于切換值(1 GB 3)剩余空間值在預警閾值上下波動,模擬虛警的工況,根據設計通過曲線擬合可以判別出此種虛警情況,記錄虛預警記錄即可; 4)如果預測值低于閾值(VHDC≤1 GB),按照切換處理,執行喂狗操作,當前設備故障隔離,對機切換為單主機工作。 5.2.5 IO操作異常識別仿真驗證 IO操作(IOcontrol)異常表示IO輸出結果IOout與回采結果IOin不一致,表示IO功能失效,直接影響系統的執行結果。仿真時,通過故障注入軟件向測控軟件中注入修改IO回采結果IOin,IOout==IOin表示正常狀態無需處理;IOout?IOin表示異常,執行停止喂狗操作,當前設備故障隔離,對機切換為單主機工作。 5.2.6 故障診斷綜合判斷仿真驗證 綜合設計測試用例組合如表6所示。 表6 實驗組合列表 依據表設計,每種條件開展20次測試,測試結果如表7所示。 表7 實驗結果列表 通過實驗結果表明,文章所設計的系統故障診斷與容錯方法能夠100%識別所監測任務狀態、CPU溫度、CPU占用率、磁盤剩余空間以及IO操作異常的“報警門限”和“切換門限”,并且能夠有效地處理虛報警和虛切換的工況,有效地增強了冗余測控系統的運行可靠性,文章目前只采考慮了任務狀態、CPU溫度、CPU占用率、磁盤剩余空間以及IO狀態等5項異常信息輸入且故障信息分析處理算法比較單一,與實際工況存在著一些差異,實際場景中工作參數會更多,如各個功能板卡工作情況、系統數據來源是否存在嚴重異常,并且在數據分析方面可以引入智能化算法分析研究等。 文章提出一種故障診斷與容錯方法,能夠識別系統中任務異常、CPU溫度過高、CPU占用率過大、磁盤剩余空間不足以及IO操作異常等故障狀態,并對各項結果進行綜合分析判斷以及結果等級分類與處理,有效提高了冗余測控系統工作的可靠性和系統穩定性,但文章也存在輸入參數不足以及數據處理不夠智能的問題,還需要對數據預測和學習進行研究,將來可以延伸應用到小型化多冗余分布式的測控系統。
5.3 實驗數據

5.4 實驗結果分析
6 結束語