胡澤龍,孫 剛,徐 智
(中國直升機設計研究所,江西 景德鎮 333001)
無人直升機從起步到如今,一直飽受關注。無人直升機重量輕,體積小,能夠更有效地完成多種特殊任務。飛控系統作為無人直升機的飛行控制核心,對于飛行安全以及任務的順利完成,起到十分關鍵的作用。飛控應用軟件是飛控系統的關鍵軟件,對于飛控系統能夠順利飛行更是起到決定性作用。
某型無人機飛控軟件基于μC/OS-II操作系統編寫,采取單一余度管理,對于整體飛控系統要求很高。而采用VxWorks作為操作系統,進行雙余度設計,能夠有效地避免單一余度失效導致的各種問題,在單機狀態下依舊可以順利地完成飛行任務,提高了飛控系統的可靠性。
本文通過對某型無人直升機進行改進,實現一款基于VxWorks操作系統的,采用雙余度架構的無人直升機飛控系統應用軟件,能夠實現該型無人直升機飛行控制與管理系統的主要任務,穩定直升機姿態(俯仰、橫滾)和航向,控制發動機風門和直升機飛行航跡(爬升、下降、巡航、左右盤旋、懸停等),完成從起飛到降落整個過程的飛行管理,包括對動力裝置、機載電氣設備和任務設備的管理、故障診斷及處理等多項任務。
VxWorks是專門為實時嵌入式系統而開發的操作系統,提供了高效的實時多任務調度、中斷管理,實時的系統資源以及實時的任務間通信等功能支持,并為應用與各種CPU平臺提供了統一的編程接口和一致的運行特性,為程序開發提供了方便[1-3]。應用程序員可以將盡可能多的精力投入軟件開發,而較少地關注系統資源的管理。
VxWorks的體系結構如圖1所示,其中包括進程管理、存儲管理、文件系統管理、網絡協議及系統應用等幾個部分[1][3]。本文實現軟件僅采用部分VxWorks系統功能,集成開發環境采用Tornado II進行開發,采用C語言程序設計。

圖1 VxWorks 體系結構
飛控計算機硬件設備作為飛控系統應用軟件的開發、運行平臺,采用了FreeScale公司PowerPC處理器MPC8245處理器作為CPU,其內核最高頻率為300MHz;256MB的SDRAM;2個FLASH作為程序及數據的存儲介質,容量分別為8M×8bit和32M×16bit;128K×8bit的NVRAM(非易失存儲儲器)作為系統事件和故障信息記錄的存儲介質;利用FPGA的片內存儲資源,開辟出一片雙口RAM作為飛控計算機雙余度通道之間進行數據交叉傳輸的通訊介質。
計算機采用雙通道設計,每個通道包括一塊核心板和接口板。核心板負責運行操作系統進行軟件運行;接口板負責具體執行模擬量輸入輸出、離散量輸入輸出、數字量輸入輸出。雙通道通過使用背板完成數據信號交換以及輸入輸出,并且共用一個電源模塊,電源模塊實現電源濾波、轉換。硬件平臺結構如圖2所示。

圖2 硬件平臺結構
飛行控制系統軟件包括實時多任務操作系統、底層功能軟件和應用軟件三大部分,系統總體結構如圖3所示。

圖3 系統軟件總體架構
實時多任務操作系統即采用VxWorks操作系統,主要負責任務執行和驅動管理硬件資源。底層功能軟件主要通過FPGA實現對硬件接口數據資源的輸入、輸出。應用軟件作為系統軟件核心,通過對各個程序塊進行執行,完成數據采集、處理、運算、輸出。此外,通過系統參數文件配置,可以對應用軟件執行模擬量數據參數、故障綜合信息進行配置。本文主要針對應用軟件的設計與實現進行詳細的描述。
比較傳統的某型飛控系統應用軟件,該應用軟件新增了一個大功能——系統管理功能,飛行控制與管理功能中增加了三個新功能,BIT功能增加了PUBIT、PBIT。具體功能分布如圖4所示。

圖4 飛控系統功能分布圖
系統管理功能主要實現加電引導、設備驅動、中斷管理、雙機同步及周期任務調度五部分功能。通過系統管理功能將整個飛控系統運行起來,從而完成相應的飛行控制與管理功能。
飛行控制與管理功能分為9個功能模塊,右側三個功能模塊是新增的功能模塊,分別是:
1) 余度管理:包括飛控計算機雙余度通道之間的同步和數據交叉傳輸、輸入信號表決、飛控計算機輸出指令表決;
2)故障綜合功能:將整個飛行控制系統所發生的全部故障,逐一進行判別、分類、記錄,對可恢復型故障提供恢復機制,并根據預先制定的綜合準則,進行系統功能上的裁定,并為故障申報做準備;
3)實時記錄功能:在系統運行過程中,將相關信息記錄到飛控計算機的非易失存儲器(NVRAM)中,包括飛控系統的故障信息記錄、系統事件記錄和掉電保護數據記錄功能。
BIT功能增加PUBIT(上電BIT)、PBIT(飛行前BIT)。上電BIT在電源接通后會自動運行,對CPU、RAM、FLASH、NVRAM進行功能測試,并將結果記錄在NVRAM中。飛行前BIT在系統上電完畢,對應用軟件執行環境進行檢查,作飛行前準備。
3.1.1 任務實時調度
任務實時調度,每個通道都能夠自主地完成所有飛行功能。本文實現的飛控應用軟件采用合理的優先級配置,采用信號量進行任務之間的調度控制,有效地完成整個系統的時間分配以及精準的運行周期。任務調度時序圖如圖5所示。
通過主程序掛接時鐘中斷處理程序,并且設置以20ms為周期的時鐘中斷。系統每20ms發生一次時鐘中斷,通過時鐘中斷處理程序釋放采集信號量,系統開始執行數據采集,采集完畢,釋放監控信號量,設備監控程序開始執行,依次完成余度管理、模態控制、系統輸出。設備監控及余度管理會對數據進行監控并執行故障綜合和實時記錄,限于篇幅,未在圖中畫出。

圖5 任務調度時序圖
3.1.2 余度管理
傳統的單一余度飛控應用軟件,不需要余度管理功能。雙余度飛控系統應用軟件在余度管理上主要通過底層提供的雙口RAM進行兩個通道的數據交叉傳輸。首先,A、B機各自完成數據采集,并且結合相應的監控策略對單通道狀態進行監控,通過故障綜合記錄相應的故障點及故障信息,然后通過交叉傳輸將雙通道監控結果以及數據進行互比,從而使得監控狀態正確并且數據結果有效的計算機擁有輸出控制權,進行正常輸出。如果A、B通道均狀態正常,則系統采用A機輸出數據進行輸出。
單通道工作流程圖如圖6所示。

圖6 單一通道工作流程圖
底層功能軟件通過判斷A、B通道故障控制邏輯確定A、B通道之間哪個通道具備輸出控制權,擁有輸出控制權的輸出通道將輸出結果輸出。無輸出控制權通道的輸出結果僅程序進行執行,不產生相應實際輸出。
3.1.3 故障綜合功能
故障綜合功能與故障記錄功能是搭配工作。故障綜合功能能夠實時監控整個飛控系統應用軟件所設置的故障點,了解每一個故障點是否發生故障,何時故障,故障持續時間,故障是否恢復,然后執行故障記錄功能,將故障信息記錄于NVRAM中。當飛機出現故障并返航之后,NVRAM可以盡可能地還原出當時飛控系統應用軟件的執行情況。
通過周期性的故障綜合,每一個通道能夠識別出自身的運行狀態,從而對通道故障控制邏輯進行控制,確定通道是否進行真實輸出,為雙余度的有效控制提供依據。
本文實現的軟件對全機共87個故障點進行監控,并且進行相應的故障綜合,確保軟件可靠有效地執行。
本文軟件執行的驗證環境如圖7所示。

圖7 測試驗證環境
通過仿真控制計算機給定仿真信號,飛控系統應用程序正常執行,雙通道有效,可以觀察飛機執行飛行任務的效果,如圖8所示,飛機從1處控制飛行至圖中位置,之后選擇繼續按照預定航線飛行,執行放飛。
此時,通過開發PC宿主機使單機失效,即出現單通道故障狀態,測試雙余度中某一余度失效時,單余度是否能夠保證系統繼續正常工作。測試結果如圖9(a)、圖9(b)所示,飛機繼續完成航線任務并且不受任何影響。

圖8 飛機執行航線任務

圖9 飛行航線任務圖
圖9(c)、(d)中,此時飛機狀態依舊正常,并未受到飛控計算機故障影響,正常響應新的航線飛行任務,并且順利完成飛行任務,不出現返回或失效狀態。
驗證表明,基于VxWorks的某型無人直升機雙余度飛控應用軟件能夠可靠有效地完成飛行任務,且發揮雙余度功效,增加系統的可靠性。
飛行控制系統對于軟件的實時性和可靠性有非常高的要求。本文改進與實現的某型無人直升機飛控應用軟件能夠有效地克服該型機飛控應用軟件的缺點,提高實時性、可靠性。采取VxWorks操作系統作為實時嵌入式操作系統,能夠有效地保證軟件的實時性。相比單余度而言,通過雙余度進行的硬件、軟件架構,能夠很好地提高飛控系統的可靠性,并且具備一定的容錯性。通過在模擬環境下的嚴格驗證,該軟件能夠實現所設計的功能,并且能夠使某型無人直升機正確有效地完成飛行任務。