羅悅,陶然,趙明,李正天
(1.北京電子工程總體研究所,北京 100854;2.北京航天自動(dòng)控制研究所,北京 100854)
目前,為滿足地面武器裝備車(chē)輛低成本、高可靠、信息化的發(fā)展需求,采用集成化、一體化的綜合控制設(shè)備完成車(chē)輛的一體化控制功能已成為未來(lái)發(fā)展的重要方向[1],車(chē)載綜合控制設(shè)備作為武器裝備可靠執(zhí)行任務(wù)的地面核心控制設(shè)備,主要功能包括流程控制、人機(jī)交互、接收其他車(chē)載設(shè)備狀態(tài)信息并進(jìn)行分析處理、對(duì)外發(fā)送控制命令完成控制功能,其可靠性、安全性將直接影響裝備車(chē)輛的整車(chē)性能,同時(shí)綜合控制設(shè)備作為裝車(chē)設(shè)備,其使用環(huán)境條件惡劣,會(huì)受到外界環(huán)境的各種干擾,可能導(dǎo)致設(shè)備出現(xiàn)死機(jī)、通信故障、程序跑飛等故障,一旦綜合控制設(shè)備出現(xiàn)故障后,地面裝備車(chē)輛的任務(wù)將被迫終止,最終導(dǎo)致武器裝備無(wú)法正常使用。因此車(chē)載綜合控制設(shè)備已逐步采用容錯(cuò)技術(shù)來(lái)提高可靠性[2],即針對(duì)關(guān)鍵設(shè)備、部件、元器件采用冗余熱備份的設(shè)計(jì)方法,但并非余度越多設(shè)備可靠性越高,因?yàn)橛喽忍岣吆髮?duì)應(yīng)的冗余部件也將增加,使得用于故障檢測(cè)和余度切換的部件增多[3],仲裁模塊功能越復(fù)雜,可靠性反而可能降低[4]。本文提出一種基于雙冗余熱備份技術(shù)的綜合控制設(shè)備,通過(guò)仲裁方式實(shí)現(xiàn)主、備狀態(tài)監(jiān)測(cè)及故障切換功能,通過(guò)同步軟件模塊實(shí)現(xiàn)余度間的任務(wù)同步,對(duì)系統(tǒng)軟件改動(dòng)小、易于實(shí)現(xiàn),提高了地面裝備的任務(wù)可靠性。
冗余熱備份即為當(dāng)一個(gè)設(shè)備出現(xiàn)故障后,另一個(gè)熱備份的設(shè)備在無(wú)人為干涉情況下實(shí)現(xiàn)快速、平滑地切換,接管主設(shè)備的所有功能,確保設(shè)備故障切換后執(zhí)行任務(wù)的持續(xù)性[5-6]。
實(shí)現(xiàn)冗余熱備份的方式包括整機(jī)熱備和板級(jí)熱備2種,同時(shí)板級(jí)熱備可采取對(duì)所有板卡進(jìn)行熱備份設(shè)計(jì)或者針對(duì)部分板卡進(jìn)行熱備份設(shè)計(jì),針對(duì)綜合控制設(shè)備的故障模式進(jìn)行分析,發(fā)現(xiàn)電源模塊和CPU模塊是設(shè)備的故障易發(fā)點(diǎn),因此針對(duì)設(shè)備中的關(guān)鍵部件電源模塊、CPU模塊采用雙冗余熱備份設(shè)計(jì)來(lái)提高可靠性,同時(shí)基于仲裁方式對(duì)冗余的2個(gè)CPU模塊進(jìn)行余度管理[7],由于電源模塊的熱備份技術(shù)比較成熟,本設(shè)計(jì)中不再贅述。
數(shù)據(jù)同步技術(shù)是實(shí)現(xiàn)冗余熱備份的關(guān)鍵技術(shù),熱備份的設(shè)備需要知道主設(shè)備的運(yùn)行狀態(tài),并與之保持一致才能保證故障切換后設(shè)備可以接續(xù)當(dāng)前狀態(tài)繼續(xù)運(yùn)行。目前同步方式包括時(shí)鐘同步、任務(wù)同步、松散同步[8],時(shí)鐘同步適用于高精度的實(shí)時(shí)計(jì)算系統(tǒng)中,要求冗余的2個(gè)模塊在時(shí)鐘周期內(nèi)執(zhí)行嚴(yán)格數(shù)據(jù)同步過(guò)程,需要硬件設(shè)計(jì)的支持且實(shí)現(xiàn)難度較大;任務(wù)同步以任務(wù)為單位實(shí)施同步減少了余度之間的交互及同步等待時(shí)間,適用于基于任務(wù)調(diào)度方式工作的設(shè)備中;而松散同步適用于對(duì)雙機(jī)同步精度要求不高的設(shè)備中。數(shù)據(jù)同步可以通過(guò)反射內(nèi)存卡、雙端口RAM的存儲(chǔ)器、磁盤(pán)陣列方式實(shí)現(xiàn)[9-10],也可以通過(guò)串、并行通訊鏈路實(shí)現(xiàn),基于反射內(nèi)存卡或雙端口RAM的數(shù)據(jù)同步方式需要對(duì)設(shè)備硬件進(jìn)行重新設(shè)計(jì),難度大、成本高,通常高精度時(shí)鐘同步方式采用此方法,而基于串、并行通訊鏈路進(jìn)行數(shù)據(jù)同步的方式簡(jiǎn)單易操作、成本低,滿足任務(wù)級(jí)同步的非大數(shù)據(jù)量同步交互需求。由于綜合控制設(shè)備主要執(zhí)行流程控制及通信功能,不進(jìn)行算法處理,在輸入相同情況下每一過(guò)程的執(zhí)行結(jié)果是確定的,因此采取基于通信鏈路的任務(wù)同步方式,即可以降低數(shù)據(jù)同步的復(fù)雜度,同時(shí)也滿足綜合控制設(shè)備的同步功能需求。
綜合考慮可靠性、復(fù)雜度、實(shí)現(xiàn)難度以及成本因素,車(chē)載綜合控制設(shè)備采用板卡級(jí)熱備份方式,針對(duì)CPU模塊及電源模塊進(jìn)行冗余熱備設(shè)計(jì),同時(shí)采用仲裁的方式實(shí)現(xiàn)余度管理共能,并采用基于任務(wù)的數(shù)據(jù)同步方法進(jìn)行同步設(shè)計(jì)。
綜合控制設(shè)備包括2個(gè)硬件完全相同的CPU模塊、1個(gè)仲裁模塊、2個(gè)冗余的電源模塊、1個(gè)背板模塊以及其他功能模塊,各模塊通過(guò)VPX總線與背板模塊相連接,原理圖如圖1所示。其中CPU模塊具有自檢測(cè)功能,通過(guò)模塊上自帶傳感器及自檢程序完成對(duì)自身狀態(tài)的實(shí)時(shí)監(jiān)測(cè),2個(gè)CPU模塊的DVI視頻輸出信號(hào)連接至仲裁模塊,仲裁模塊控制主CPU模塊的視頻信號(hào)輸出至顯示屏,同時(shí)仲裁模塊將外部鍵盤(pán)、鼠標(biāo)的USB信號(hào)進(jìn)行一分為二的分路處理后輸入給2個(gè)CPU模塊,2個(gè)CPU模塊通過(guò)直連網(wǎng)線實(shí)現(xiàn)數(shù)據(jù)通信完成主、備間的任務(wù)同步功能。
仲裁模塊完成對(duì)2個(gè)CPU模塊的心跳檢測(cè),接收CPU模塊的狀態(tài)信息,完成故障的處理,實(shí)現(xiàn)2個(gè)CPU模塊的主備切換功能,完成CPU模塊對(duì)外輸出信號(hào)的切換控制功能,包括鍵盤(pán)、USB、IO信號(hào),仲裁模塊通過(guò) RS422 串口與2個(gè)CPU模塊進(jìn)行數(shù)據(jù)通訊,CPU模塊通過(guò)RS422串口定時(shí)向仲裁模塊發(fā)送心跳數(shù)據(jù)及自身運(yùn)行狀態(tài)信息。仲裁模塊實(shí)施故障的分析處理,完成對(duì)2個(gè)CPU模塊的通、斷電控制功能及對(duì)外輸出信號(hào)的切換控制功能,包括鍵盤(pán)、鼠標(biāo)、視頻信號(hào),從而實(shí)現(xiàn)綜合控制設(shè)備2個(gè)CPU模塊的主備切換功能。
綜合控制設(shè)備上電后,默認(rèn)第1個(gè)槽位上的CPU模塊為主CPU模塊,負(fù)責(zé)與外部的通訊、控制功能,另一個(gè)作為熱備份CPU模塊,只接收外部的數(shù)據(jù),不對(duì)外發(fā)送信息,2個(gè)CPU模塊上電自檢無(wú)誤后開(kāi)始工作,構(gòu)成雙余度系統(tǒng),2個(gè)CPU模塊定時(shí)以10 ms的間隔向仲裁模塊發(fā)送心跳信息,仲裁模塊根據(jù)CPU模塊的健康狀態(tài)信息及心跳監(jiān)測(cè)狀態(tài)[11]判斷CPU模塊是否出現(xiàn)故障。
故障檢測(cè)是完成高可靠仲裁切換的重要保證條件,綜合控制設(shè)備的故障檢測(cè)包括以下幾個(gè)方面:
(1) CPU模塊硬件故障[12]:每個(gè)CPU模塊上電后,采用自檢程序?qū)崟r(shí)對(duì)自身工作狀態(tài)進(jìn)行監(jiān)控,自檢狀態(tài)包括對(duì)CPU模塊溫度、CPU使用率、CPU電壓值、CPU工作頻率、內(nèi)存溫度、內(nèi)存使用率等進(jìn)行快速自檢,若自檢結(jié)果不正常則直接發(fā)送狀態(tài)信息給仲裁模塊;
(2) 2個(gè)CPU模塊定時(shí)向仲裁模塊發(fā)送心跳,如果仲裁模塊連續(xù)5次未接收到某個(gè)CPU模塊的心跳,則認(rèn)為該CPU模塊出現(xiàn)故障;
(3) CPU模塊上運(yùn)行的應(yīng)用軟件中設(shè)置看門(mén)狗,用看門(mén)狗定時(shí)器監(jiān)控程序狀態(tài),當(dāng)程序出現(xiàn)跑飛或鎖死故障時(shí),向仲裁模塊上報(bào)故障狀態(tài);
(4) 通信鏈路故障:CPU模塊與外部節(jié)點(diǎn)通信過(guò)程中,因?yàn)橥ㄐ沛溌饭收蠈?dǎo)致數(shù)據(jù)接收或發(fā)送失敗,CPU模塊向仲裁模塊上報(bào)故障狀態(tài);
(5) 如果2個(gè)CPU模塊之間的直連網(wǎng)線出現(xiàn)鏈路故障,導(dǎo)致數(shù)據(jù)同步失敗,輸出主CPU模塊的結(jié)果,同時(shí)將故障信息上報(bào)給仲裁模塊;
(6) 2個(gè)CPU模塊的同步不一致故障:如果2個(gè)CPU模塊進(jìn)行任務(wù)同步過(guò)程中出現(xiàn)同步結(jié)果不一致,導(dǎo)致2個(gè)CPU模塊的狀態(tài)不一致,此時(shí)綜合控制設(shè)備將輸出主CPU模塊的處理結(jié)果,同時(shí)上報(bào)故障信息。
故障檢測(cè)的流程圖如圖2所示。
綜合控制設(shè)備上電后,主CPU模塊、備CPU模塊同時(shí)上電工作,構(gòu)成雙余度系統(tǒng),仲裁模塊根據(jù)CPU模塊的健康狀態(tài)信息及心跳監(jiān)測(cè)狀態(tài)判斷CPU模塊是否出現(xiàn)故障。當(dāng)仲裁模塊監(jiān)測(cè)到某一CPU模塊出現(xiàn)故障后,立即進(jìn)行故障的切換處理,同時(shí)在綜合控制設(shè)備前面板上通過(guò)狀態(tài)指示燈進(jìn)行故障指示,仲裁模塊的切換處理方式如下:
(1)當(dāng)主CPU模塊出現(xiàn)故障時(shí),仲裁模塊進(jìn)行主備切換處理,切換工作完成將對(duì)外輸出的視頻信號(hào)以及輸入的鍵盤(pán)、鼠標(biāo)等USB信號(hào)從故障CPU模塊切換到正常CPU模塊上,同時(shí)對(duì)主CPU模塊實(shí)施斷電處理,備CPU模塊后續(xù)以單余度狀態(tài)工作,不再進(jìn)行任務(wù)同步操作,并向綜合控制系統(tǒng)內(nèi)的其他節(jié)點(diǎn)發(fā)送切換通知,當(dāng)節(jié)點(diǎn)收到切換通知后,向綜合控制設(shè)備發(fā)送數(shù)據(jù)時(shí)僅對(duì)正常工作的CPU模塊發(fā)送即可。
圖1 一種基于仲裁方式的雙冗余熱備份綜合控制設(shè)備原理框圖Fig.1 Functional block diagram of synthetic control equipment based on dual hot-redundancy
圖2 故障檢測(cè)流程圖Fig.2 Flow chart of fault detection
(2) 如果備CPU模塊出現(xiàn)故障,則直接將備CPU模塊進(jìn)行斷電處理,主CPU模塊后續(xù)以單余度狀態(tài)工作,不再進(jìn)行任務(wù)同步操作,同時(shí)向綜合控制系統(tǒng)內(nèi)的其他節(jié)點(diǎn)發(fā)送切換通知。
(3) 如果2個(gè)CPU模塊均出現(xiàn)故障,則仲裁模塊對(duì)2個(gè)CPU模塊均實(shí)施斷電處理,綜合控制設(shè)備故障,等待維修。
設(shè)備工作過(guò)程中,2個(gè)冗余熱備份CPU模塊運(yùn)行相同的軟件,需要進(jìn)行數(shù)據(jù)同步從而保證彼此狀態(tài)的一致性和任務(wù)同步性[13-15]。本文提出的任務(wù)同步方法包括3個(gè)部分的同步,分別為設(shè)備自身業(yè)務(wù)處理后的狀態(tài)數(shù)據(jù)同步、發(fā)送給外部節(jié)點(diǎn)的輸出數(shù)據(jù)同步、接收外部節(jié)點(diǎn)發(fā)送數(shù)據(jù)的同步。將CPU模塊上的軟件分為業(yè)務(wù)模塊及任務(wù)同步模塊,業(yè)務(wù)模塊實(shí)現(xiàn)單余度時(shí)的設(shè)備功能,任務(wù)同步模塊實(shí)現(xiàn)2個(gè)冗余CPU模塊之間的任務(wù)數(shù)據(jù)同步。具體同步方式如圖3所示。
圖3 一種雙冗余熱備份設(shè)備的任務(wù)同步原理圖Fig.3 Task synchronization schematic diagram of hot-redundancy device
將業(yè)務(wù)模塊按功能分成多個(gè)任務(wù)來(lái)執(zhí)行,當(dāng)任務(wù)執(zhí)行結(jié)束后調(diào)用任務(wù)同步模塊進(jìn)行一次數(shù)據(jù)同步操作,同時(shí)任務(wù)同步模塊實(shí)施心跳狀態(tài)的發(fā)送處理,具體過(guò)程如下:
(1) CPU模塊上電后,應(yīng)用軟件自啟動(dòng)開(kāi)始運(yùn)行,業(yè)務(wù)模塊定時(shí)調(diào)用任務(wù)同步模塊向仲裁模塊發(fā)送心跳信息;
(2) 如果一個(gè)CPU模塊完成任務(wù)1(CPU-A),調(diào)用任務(wù)同步模塊完成任務(wù)同步過(guò)程;
(3) 任務(wù)同步模塊接收到任務(wù)同步請(qǐng)求后,創(chuàng)建一個(gè)同步任務(wù),然后該CPU模塊通過(guò)直連網(wǎng)線向另一個(gè)余度的CPU模塊(CPU-B)發(fā)送同步數(shù)據(jù);
(4) CPU-B接收到同步數(shù)據(jù)后,交給任務(wù)同步模塊,任務(wù)同步模塊等待任務(wù)模塊的任務(wù)同步請(qǐng)求,接收到業(yè)務(wù)模塊發(fā)送的同步請(qǐng)求后,同樣創(chuàng)建一個(gè)同步任務(wù);
(5) CPU-B的任務(wù)同步模塊將2個(gè)CPU模塊的同步任務(wù)數(shù)據(jù)進(jìn)行比對(duì),將同步結(jié)果發(fā)送給CPU-A的任務(wù)同步模塊;
(6) 2個(gè)CPU模塊的任務(wù)同步模塊將同步結(jié)果發(fā)給業(yè)務(wù)模塊,然后結(jié)束同步任務(wù);
(7) CPU模塊收到同步結(jié)果后,如果相同則繼續(xù)下一個(gè)任務(wù),如果不同則將故障狀態(tài)信息發(fā)送給仲裁模塊,同時(shí)將故障狀態(tài)進(jìn)行提示,等待人機(jī)交互的處理結(jié)果;
(8) 在等待過(guò)程中設(shè)置最長(zhǎng)等待時(shí)間,超時(shí)后結(jié)束等待同時(shí)將超時(shí)故障發(fā)送給仲裁模塊,同時(shí)將超時(shí)故障狀態(tài)進(jìn)行提示,等待人機(jī)交互的處理結(jié)果。
設(shè)備接收外部節(jié)點(diǎn)的通信數(shù)據(jù),如果無(wú)需應(yīng)答處理,則2個(gè)CPU模塊接收到數(shù)據(jù)后進(jìn)行輸入同步處理,如果有應(yīng)答機(jī)制,則2個(gè)CPU模塊接收到數(shù)據(jù)后先進(jìn)行接收應(yīng)答然后進(jìn)行輸入同步處理,輸入同步設(shè)計(jì)的具體實(shí)施方式如下:外部節(jié)點(diǎn)發(fā)送數(shù)據(jù)給綜合控制設(shè)備時(shí),同時(shí)向2個(gè)冗余CPU模塊發(fā)送,當(dāng)CPU模塊收到數(shù)據(jù)后,調(diào)用任務(wù)同步模塊完成任務(wù)同步,確保2個(gè)CPU模塊收到數(shù)據(jù)的一致性,如果2個(gè)CPU模塊接收到的數(shù)據(jù)不一致,則將故障狀態(tài)信息進(jìn)行提示,同時(shí)向仲裁模塊上報(bào)故障信息,進(jìn)行異常處理。
設(shè)備向外部節(jié)點(diǎn)發(fā)送數(shù)據(jù)時(shí),2個(gè)CPU模塊進(jìn)行輸出同步設(shè)計(jì),具體實(shí)施方式如下:CPU模塊向外發(fā)送數(shù)據(jù)時(shí),首先調(diào)用任務(wù)同步模塊完成同步,確保輸出數(shù)據(jù)的一致性,主CPU模塊向外部節(jié)點(diǎn)發(fā)送數(shù)據(jù),備CPU模塊不向外發(fā)送數(shù)據(jù),如果兩個(gè)CPU模塊輸出數(shù)據(jù)不一致,則將故障狀態(tài)信息進(jìn)行提示,同時(shí)向仲裁模塊上報(bào)故障信息,進(jìn)行異常處理。
如果在業(yè)務(wù)模塊的某一任務(wù)執(zhí)行中出現(xiàn)故障,仲裁模塊實(shí)施冗余切換同時(shí)通知備份的CPU模塊升級(jí)為主CPU模塊并接管所有系統(tǒng)任務(wù),由于同步是在每次任務(wù)完成后進(jìn)行的,此時(shí)備份的CPU模塊未能獲得主CPU模塊當(dāng)前的同步狀態(tài),因此備份的CPU模塊在接管任務(wù)后,首先進(jìn)行回滾操作,即CPU模塊將業(yè)務(wù)模塊的操作滾回上一次任務(wù)結(jié)束點(diǎn)上重新執(zhí)行該次任務(wù),確保不出現(xiàn)故障切換導(dǎo)致的數(shù)據(jù)丟失或任務(wù)不連續(xù)問(wèn)題。
雙冗余熱備份設(shè)備的數(shù)據(jù)同步技術(shù)是實(shí)現(xiàn)高可靠性余度管理的核心技術(shù),本文提出的針對(duì)綜合控制設(shè)備的任務(wù)級(jí)數(shù)據(jù)同步方法,通過(guò)余度之間的通信鏈路及運(yùn)行在CPU模塊上的任務(wù)同步軟件模塊實(shí)現(xiàn)了2個(gè)CPU模塊間的任務(wù)同步,這種方法易于實(shí)現(xiàn),對(duì)現(xiàn)有設(shè)備的硬件、軟件改動(dòng)量小,可靠性高。
雙冗余熱備份技術(shù)是提高設(shè)備可靠性的重要設(shè)計(jì)手段,本設(shè)計(jì)提出的車(chē)載綜合控制設(shè)備針對(duì)CPU模塊采取雙冗余熱備份的設(shè)計(jì),通過(guò)仲裁模塊實(shí)現(xiàn)故障監(jiān)測(cè)及切換處理,同時(shí)采用基于任務(wù)的數(shù)據(jù)同步,提出一種數(shù)據(jù)同步方法,在不改變?cè)O(shè)備自身業(yè)務(wù)處理軟件的狀態(tài)下實(shí)現(xiàn)主、備間的狀態(tài)同步,保證了綜合控制設(shè)備任務(wù)的不間斷,提高了地面裝備車(chē)輛的整體可靠性。