李樂(lè)意,王蕓,王君陽(yáng),趙敏
(陜西千山航空電子有限責(zé)任公司,西安710065)
機(jī)載燃油管理計(jì)算機(jī)主要完成對(duì)飛機(jī)上燃油的測(cè)量、燃油數(shù)據(jù)的傳輸與加/放油控制等功能,是飛機(jī)燃油系統(tǒng)的核心[1]。隨著航空技術(shù)的不斷發(fā)展,燃油管理計(jì)算機(jī)功能日趨增強(qiáng),重要性日益突出,但其設(shè)計(jì)復(fù)雜度也隨之大大提高,出現(xiàn)問(wèn)題的可能性也隨之增高。為了保障飛行安全和飛行任務(wù)的完成,必須增強(qiáng)燃油管理計(jì)算機(jī)的可靠性和執(zhí)行任務(wù)過(guò)程中的安全性。
雙余度熱備份技術(shù)是指采用兩個(gè)相同模塊執(zhí)行相同的任務(wù),提供相同的服務(wù),當(dāng)其中一個(gè)模塊出現(xiàn)故障時(shí),另一模塊能夠承擔(dān)起相同的任務(wù)以保證系統(tǒng)持續(xù)運(yùn)行[2-4]。這種技術(shù)大大提高了系統(tǒng)的可靠性與安全性。航空電子產(chǎn)品中某些關(guān)鍵產(chǎn)品采用余度備份技術(shù)如飛控計(jì)算機(jī)[3-6]、燃油控制計(jì)算機(jī)[7]、動(dòng)力控制系統(tǒng)[8]等,通常由兩臺(tái)計(jì)算機(jī)互為備份實(shí)現(xiàn)雙余度技術(shù)[3-5],其體積較大、生產(chǎn)成本高。
本文通過(guò)在一臺(tái)計(jì)算機(jī)內(nèi)部進(jìn)行關(guān)鍵板卡的雙余度備份,設(shè)計(jì)了一種雙余度的機(jī)載燃油管理計(jì)算機(jī)系統(tǒng),在提高可靠性和安全性的同時(shí),有效控制了系統(tǒng)體積和成本。
雙余度燃油管理計(jì)算機(jī)中,關(guān)鍵板卡是具有數(shù)據(jù)管理和控制功能的管理模塊和具有控制功能的接口模塊,因此將它們進(jìn)行雙余度設(shè)計(jì)。即計(jì)算機(jī)中含有管理模塊A、管理模塊B、接口模塊A、接口模塊B 和其他板卡,其他板卡未進(jìn)行余度設(shè)計(jì)。雙余度板卡對(duì)外采集和輸出掛接到同一通道,由板卡內(nèi)FPGA 控制輸出開(kāi)關(guān)。
為了方便表述,以下稱(chēng)相同功能的兩個(gè)板卡的組合稱(chēng)之為模塊組,即管理模塊A 和管理模塊B 作為一個(gè)管理模塊組,接口模塊A 和接口模塊B 作為一個(gè)接口模塊組,組內(nèi)相同功能板卡彼此之間稱(chēng)對(duì)方為對(duì)等模塊。雙余度燃油管理計(jì)算機(jī)硬件總體設(shè)計(jì)如圖1 所示。
圖1 雙余度燃油管理計(jì)算機(jī)硬件總體設(shè)計(jì)
從圖1 可以看到,燃油管理計(jì)算機(jī)內(nèi)部各板卡之間通過(guò)內(nèi)部RS-422 總線(xiàn)通信,同時(shí)對(duì)等模塊之間通過(guò)檢測(cè)心跳線(xiàn)相互檢測(cè)對(duì)方的工作狀態(tài)。
通過(guò)RS-422 總線(xiàn)交互狀態(tài)信息,當(dāng)板卡切換時(shí)能夠及時(shí)獲取全系統(tǒng)的狀態(tài)。同時(shí)也能夠提高系統(tǒng)狀態(tài)監(jiān)控能力。例如本系統(tǒng)設(shè)計(jì)時(shí),對(duì)外HB6096 總線(xiàn)接口接收不到數(shù)據(jù)時(shí),板卡自身無(wú)法判斷是板卡芯片故障還是前端無(wú)數(shù)據(jù)。由于兩塊板卡具有相同功能,如果另一塊板卡也報(bào)出該條總線(xiàn)無(wú)數(shù)據(jù),則認(rèn)為芯片正常,反之認(rèn)為芯片故障,須進(jìn)行切換邏輯。
心跳線(xiàn)是模塊組內(nèi)對(duì)等模塊之間的交聯(lián)硬線(xiàn),輸出端輸出1000Hz 的方波,接收端以方波反轉(zhuǎn)的周期判斷板卡運(yùn)行是否正常。
對(duì)等模塊之間采用主從模式,處于主狀態(tài)的板卡正常采集并輸出,處于從狀態(tài)的板卡正常采集和計(jì)算但不輸出。軟件在初始化時(shí),通過(guò)母板上的槽位接口判斷自身板卡所處的位置,將管理模塊A、接口模塊A置于主狀態(tài),而管理模塊B、接口模塊B 置于從狀態(tài)。
當(dāng)發(fā)生故障或接收到切換命令時(shí),板卡狀態(tài)進(jìn)行切換,每個(gè)模塊組內(nèi)狀態(tài)轉(zhuǎn)移關(guān)系相同。圖2 表示功能組內(nèi)模塊的狀態(tài)轉(zhuǎn)移關(guān)系,其中大寫(xiě)字母表示處于主狀態(tài),小寫(xiě)字母表示處于從狀態(tài),'表示處于故障狀態(tài)。如A 表示模塊A 處于主狀態(tài)且無(wú)故障,b'表示模塊B 處于從狀態(tài)并有故障,虛線(xiàn)框內(nèi)的狀態(tài)為中間狀態(tài)。
圖2 功能組內(nèi)模塊狀態(tài)轉(zhuǎn)移關(guān)系
雙余度燃油管理計(jì)算機(jī)系統(tǒng)實(shí)現(xiàn)的功能較為復(fù)雜,包含了數(shù)據(jù)采集、數(shù)據(jù)輸出等接口,本節(jié)僅以描述與雙余度備份相關(guān)的硬件設(shè)計(jì),對(duì)外圍接口不再詳細(xì)敘述。模塊實(shí)現(xiàn)雙余度的核心是采用CPU+FPGA+總線(xiàn)+心跳線(xiàn)的方式進(jìn)行硬件設(shè)計(jì)。模塊組內(nèi)板卡的數(shù)據(jù)采集來(lái)自于同一個(gè)數(shù)據(jù)源端,兩個(gè)板卡都進(jìn)行采集。板卡對(duì)外輸出時(shí),同一時(shí)間僅有一個(gè)對(duì)外輸出,F(xiàn)PGA 通過(guò)開(kāi)關(guān)邏輯實(shí)現(xiàn),硬件框圖如圖3 所示。
在圖3 中,含有3 個(gè)槽位引腳,上電時(shí),當(dāng)3 個(gè)I/O口中兩個(gè)以上為低時(shí)認(rèn)為該板卡為B 板卡,該板卡初始狀態(tài)為從狀態(tài);兩個(gè)以上I/O 為高時(shí)認(rèn)為該板卡為A板卡,初始狀態(tài)為主狀態(tài)。FPGA 檢測(cè)這3 個(gè)I/O 將其值存入緩沖區(qū)共CPU 讀取。
在板卡內(nèi)部,CPU 與FPGA 間通過(guò)FPGA 虛擬寄存器交互故障信息,F(xiàn)PGA 檢測(cè)到CPU 關(guān)鍵故障信息時(shí),須關(guān)斷輸出。同時(shí)CPU 輸出的心跳線(xiàn)經(jīng)過(guò)FPGA,當(dāng)FPGA 檢測(cè)到CPU 心跳停止時(shí),認(rèn)為CPU 故障,須關(guān)斷輸出。
圖3 板卡硬件設(shè)計(jì)框圖
在雙余度燃油管理計(jì)算機(jī)設(shè)計(jì)中主要由軟件實(shí)現(xiàn)邏輯的切換,工作狀態(tài)轉(zhuǎn)移過(guò)程遵守圖2 所示的狀態(tài)轉(zhuǎn)移圖。板卡故障狀態(tài)的判定主要通過(guò)RS-422 總線(xiàn)周期通信和心跳線(xiàn)完成。板卡所遵循的基本切換原則如下:
(1)心跳線(xiàn)是模塊組內(nèi)對(duì)等模塊之間通過(guò)硬線(xiàn)相連,輸出1000Hz 的方波。組內(nèi)主狀態(tài)板卡和從狀態(tài)板卡之間通過(guò)心跳線(xiàn)判斷對(duì)等板卡是否正常活動(dòng),如果處于主狀態(tài)的模塊板卡失效則切換工作狀態(tài);
(2)模塊組內(nèi)通過(guò)RS-422 總線(xiàn)周期性通信接收對(duì)等模塊狀態(tài)字并發(fā)送自身狀態(tài)字,判斷出當(dāng)前板卡和對(duì)等模塊的狀態(tài),如果處于主狀態(tài)的模塊板卡失效則切換工作狀態(tài);模塊組間也是通過(guò)RS-422 總線(xiàn)進(jìn)行周期通信發(fā)送自身狀態(tài)接收對(duì)應(yīng)的其他模塊的狀態(tài)信息,綜合狀態(tài)信息數(shù)據(jù)判斷系統(tǒng)狀態(tài),在需要切換工作時(shí)通過(guò)發(fā)送切換命令。
(3)當(dāng)檢測(cè)到自身故障時(shí),停止進(jìn)行心跳反轉(zhuǎn),以通知對(duì)等模塊。同時(shí)發(fā)送RS-422 狀態(tài)信息給其他接口模塊。
綜上,故障檢測(cè)方式主要有心跳線(xiàn)故障、通信鏈路故障、接收到切換信息、自身檢測(cè)故障這4 種故障檢測(cè)方式,其軟件設(shè)計(jì)流程如下:
(1)一端輸出1000Hz 的方波,另一端通過(guò)檢測(cè)方波電平變化判斷是否正常。如果沒(méi)有輸出,則認(rèn)為輸出端故障。檢測(cè)對(duì)等模塊心跳線(xiàn)時(shí),為了避免誤判,采用連續(xù)10 次不反轉(zhuǎn)則認(rèn)為模塊故障的判斷邏輯。因此如果對(duì)等模塊故障,模塊能夠在5ms 的時(shí)間內(nèi)獲得信息并開(kāi)始切換操作,其軟件設(shè)計(jì)流程如圖4 所示;
圖4 心跳線(xiàn)檢測(cè)流程
(2)內(nèi)總線(xiàn)采用RS-422 總線(xiàn),模塊間也通過(guò)該總線(xiàn)發(fā)送測(cè)量和控制信息,通信異常時(shí),系統(tǒng)接收關(guān)鍵數(shù)據(jù)可能出錯(cuò),導(dǎo)致災(zāi)難性的后果。為確保相互之間數(shù)據(jù)交互和鏈路正常,設(shè)計(jì)了周期發(fā)送自身的狀態(tài)信息的任務(wù)。該任務(wù)周期性向其他模塊發(fā)送信息,信息中包含確定的包格式,當(dāng)格式正確并且能夠周期收到數(shù)據(jù)時(shí)認(rèn)為正常。當(dāng)連續(xù)多次接收不到或接收到錯(cuò)誤的其他模塊數(shù)據(jù),認(rèn)為其他模塊故障,周期通信的周期設(shè)置為30ms,因此當(dāng)模塊通信鏈路異常時(shí),被發(fā)現(xiàn)的時(shí)間約為300ms,其軟件設(shè)計(jì)流程如圖5 所示;
(3)接收到切換信息時(shí),根據(jù)圖2 的方式進(jìn)行狀態(tài)切換;
(4)模塊本身檢測(cè)到故障以后,可根據(jù)當(dāng)前工作狀態(tài)以及故障源進(jìn)行工作狀態(tài)切換,自身故障后通過(guò)關(guān)閉心跳線(xiàn)的方式將狀態(tài)告知對(duì)等模塊。
檢測(cè)到故障以后,應(yīng)當(dāng)切換工作狀態(tài),軟件設(shè)計(jì)流程圖如圖6 所示。管理模塊切換工作狀態(tài)時(shí),須給接口模塊發(fā)送切換信息,以確保所有板卡間狀態(tài)相互透明。接口模塊接收到命令后,應(yīng)回復(fù)狀態(tài)信息給管理模塊。當(dāng)接口模塊因模塊內(nèi)板卡失效而切換工作狀態(tài)時(shí),須給管理模塊發(fā)送切換信息。管理模塊接收到命令后,應(yīng)響應(yīng)模塊工作狀態(tài)給接口模塊。
圖5 通信故障檢測(cè)流程圖
圖6 系統(tǒng)狀態(tài)切換流程
另外,在燃油管理計(jì)算機(jī)工作工程中,周期發(fā)送狀態(tài)信息。如果遇到外部接口無(wú)數(shù)據(jù)的情況,應(yīng)當(dāng)對(duì)比對(duì)等板卡的故障字,如果發(fā)現(xiàn)對(duì)等模塊采集數(shù)據(jù)正常則認(rèn)為本模塊采集芯片故障。該故障邏輯能夠判斷采集芯片是否故障,提高了系統(tǒng)的可靠性。
經(jīng)過(guò)實(shí)驗(yàn)室測(cè)量分別模擬自身故障、主狀態(tài)模塊心跳故障、通信鏈路故障、發(fā)送故障切換信息測(cè)量到產(chǎn)品進(jìn)行狀態(tài)切換。切換時(shí)間大約為500ms 以?xún)?nèi),響應(yīng)速度快,實(shí)時(shí)性強(qiáng)。在外場(chǎng)試驗(yàn)也取得良好的效果。
在一臺(tái)計(jì)算機(jī)內(nèi)部,采用關(guān)鍵板卡互為備份的方式,設(shè)計(jì)了雙余度燃油管理計(jì)算機(jī)系統(tǒng)。當(dāng)系統(tǒng)正常工作時(shí),互為備份的兩塊板卡通過(guò)總線(xiàn)相互監(jiān)控,提高了產(chǎn)品的狀態(tài)檢測(cè)能力;當(dāng)主狀態(tài)板卡故障時(shí),備份板卡能夠通過(guò)心跳線(xiàn)檢測(cè),迅速切換工作狀態(tài),保障系統(tǒng)持續(xù)正常工作;與傳統(tǒng)的雙機(jī)備份方式相比,由于只采用一臺(tái)計(jì)算機(jī),因此體積更小、生產(chǎn)成本更低;多型關(guān)鍵板卡的備份使得產(chǎn)品有多種重構(gòu)方式,提高了產(chǎn)品的容錯(cuò)能力;由于采用硬件心跳線(xiàn)檢測(cè)故障的方式,因此響應(yīng)更快。該雙余度燃油管理計(jì)算機(jī)系統(tǒng)試驗(yàn)和使用過(guò)程中取得了良好的效果。