孫雪嬌 劉學(xué)士 束韶光
北京航天自動(dòng)控制研究所,北京 100854
隨著末制導(dǎo)技術(shù)、總線技術(shù)、系統(tǒng)冗余技術(shù)的應(yīng)用,控制系統(tǒng)功能的復(fù)雜多變,導(dǎo)致飛行控制系統(tǒng)的軟件規(guī)模日益龐大,傳統(tǒng)單CPU的中斷+控制環(huán)模式無論從性能還是容錯(cuò)能力方面都已經(jīng)無法滿足現(xiàn)代任務(wù)的需求。隨著飛行控制軟件系統(tǒng)結(jié)構(gòu)越來越復(fù)雜,軟件的復(fù)雜程度也迅速增加。傳統(tǒng)的軟件架構(gòu)已經(jīng)力不從心,尤其在多個(gè)控制任務(wù)并發(fā)時(shí),調(diào)度難度增大,難以保證系統(tǒng)可靠性、實(shí)時(shí)性要求。
本文從功能和性能需求出發(fā),提出了一種基于戰(zhàn)星實(shí)時(shí)操作系統(tǒng)的多核分布式飛行控制軟件架構(gòu)設(shè)計(jì)方案,以4核DSP為硬件平臺(tái),設(shè)計(jì)了具有高可靠性高實(shí)時(shí)性的多核分布式飛行控制軟件架構(gòu),提高了飛行控制系統(tǒng)的處理能力和容錯(cuò)能力。該飛行控制軟件架構(gòu)開發(fā)維護(hù)方便,擴(kuò)展性和可移植性強(qiáng)。
無人機(jī)的飛行軟件架構(gòu)發(fā)展較早,美國Cloud Cap公司自主研發(fā)的無人機(jī)的飛行控制系統(tǒng)Piccolo具有很高的靈活性和可靠性,在國內(nèi)外的小型無人機(jī)系統(tǒng)中得到了多次應(yīng)用[1]。加拿大的MicroPilot公司設(shè)計(jì)了一款性能良好、體積小、功耗也低的飛行控制系統(tǒng)MP2028g,該飛行控制系統(tǒng)集成了多種類型的傳感器,已成功應(yīng)用于Snake eye、Helispy等多款小型無人機(jī)[2]。
歐洲空間局(European Space Agency,ESA)的航天航空開放接口架構(gòu)(Space Avionics Open Interface Architecture,SAVOIR)是在主控單元中基于 CPU 的系統(tǒng)軟件平臺(tái)。它構(gòu)成了一個(gè)通用軟件執(zhí)行平臺(tái),支持上層應(yīng)用,下層使用不同的接口。應(yīng)用層根據(jù)各自的專業(yè)特征構(gòu)建不同的應(yīng)用模塊。
美國國家航空航天NASE(National Aeronautics and Space Administration)開發(fā)的CFS(Core Flight Software)是一種基于CPU和操作系統(tǒng)之上,可以獨(dú)立運(yùn)行的飛行軟件架構(gòu),該架構(gòu)可以直接重用,也可根據(jù)需要二次開發(fā)。CFS可以縮短飛行軟件開發(fā)的時(shí)間,提高質(zhì)量,減少項(xiàng)目計(jì)劃和費(fèi)用的不確定性,提高軟件重用率,降低工程維護(hù)成本,支持多種跨部門的工具和標(biāo)準(zhǔn),允許多組織的協(xié)同合作。目前CFS架構(gòu)已經(jīng)由戈達(dá)德推廣到NASA所屬的各個(gè)航天中心和研究機(jī)構(gòu),以及日本和韓國,應(yīng)用在一些航天任務(wù)中,如月球勘測(cè)軌道器、全球降水測(cè)量衛(wèi)星任務(wù)等。
近年來國內(nèi)飛行控制系統(tǒng)領(lǐng)域也取得了較多研究成果。北京航天控制技術(shù)研究所提出了一種基于構(gòu)件的運(yùn)載器控制系統(tǒng)飛行控制軟件架構(gòu)[3],該軟件架構(gòu)采用分層的控制體系及結(jié)構(gòu)模式,能夠有效提高飛行軟件的研制效率及軟件質(zhì)量。重用技術(shù)可以提高軟件的質(zhì)量和可靠性,縮短任務(wù)研制周期,降低成本[4]。為了改善飛行控制軟件傳統(tǒng)的前后臺(tái)開發(fā)模式,適應(yīng)“多模式”、“多冗余”的需求,研究多任務(wù)的實(shí)時(shí)操作系統(tǒng)成為了重點(diǎn)。
飛行控制軟件的主要功能是實(shí)現(xiàn)飛行器在飛行過程中的實(shí)時(shí)控制算法,包括:輸入信息的采集、轉(zhuǎn)換、導(dǎo)航、制導(dǎo)、姿控、組合導(dǎo)航及時(shí)序控制等功能。飛行控制軟件功能需求越來越復(fù)雜,對(duì)飛行控制軟件的各種要求也越來越高,一方面要求飛行控制軟件能夠?qū)崟r(shí)采集傳感器和外圍設(shè)備信息,獲取當(dāng)前飛行器的飛行狀態(tài),進(jìn)行制導(dǎo)律和控制解算,并根據(jù)解算結(jié)果實(shí)現(xiàn)點(diǎn)火、轉(zhuǎn)級(jí)、關(guān)機(jī)等飛行指令,同時(shí)還要求飛行控制軟件能夠?qū)w行狀態(tài)信息和控制信息等數(shù)據(jù)發(fā)送至遙測(cè)系統(tǒng)。另一方面要求飛行控制軟件能夠?qū)崿F(xiàn)對(duì)多種功能的管理,包括傳感器數(shù)據(jù)信息的綜合管理、故障檢測(cè)功能管理等,飛行控制軟件需要對(duì)這些功能模塊進(jìn)行統(tǒng)一管理,使其有機(jī)結(jié)合并有序運(yùn)行,保證飛行器能夠高效完成要求的飛行任務(wù)[5]。
飛行控制軟件高性能和高可靠性是安全完成飛行任務(wù)的重要保障,因此飛行控制軟件的性能應(yīng)滿足如下條件:
1) 實(shí)時(shí)性要求
實(shí)時(shí)性是飛行控制軟件基礎(chǔ)的要求之一,飛行控制軟件中所有任務(wù)都有嚴(yán)格的時(shí)間性能指標(biāo)。例如對(duì)于執(zhí)行機(jī)構(gòu)輸出延時(shí)和控制周期總延時(shí),如果飛行控制軟件實(shí)時(shí)性超標(biāo)或較差,可能導(dǎo)致飛行控制系統(tǒng)無法正常工作,甚至可能會(huì)造成災(zāi)難性后果[6]。
飛行控制軟件任務(wù)要求多而雜,既包含多種周期性任務(wù),也包含各類非周期性的任務(wù),對(duì)于多個(gè)CPU分布運(yùn)行的飛行控制軟件還需要考慮各CPU間的通信任務(wù)。因此為了能夠保障飛行控制軟件的實(shí)時(shí)性,需要綜合考慮所有任務(wù)執(zhí)行的時(shí)序和要求,合理創(chuàng)建、分配及調(diào)度任務(wù)。
2) 高內(nèi)聚低耦合要求
在傳統(tǒng)的飛行控制系統(tǒng)開發(fā)時(shí),劃分的功能模塊之間常有很高的數(shù)據(jù)耦合性,因?yàn)閱蝹€(gè)功能模塊的開發(fā)往往需要綜合考慮其他模塊的影響、各個(gè)模塊之間的調(diào)度關(guān)系以及各個(gè)模塊的安全性,導(dǎo)致軟件開發(fā)時(shí)間變長(zhǎng),開發(fā)成本增加,研制效率降低。
因此有必要降低各個(gè)模塊之間的耦合性,使各個(gè)功能模塊專注于封裝自己的內(nèi)部屬性。功能模塊之間相互獨(dú)立能夠使飛行控制系統(tǒng)更加安全和可靠。
3) 可靠性要求
由于飛行任務(wù)及飛行環(huán)境復(fù)雜多變,飛行過程中的微小不確定因素都有可能造成系統(tǒng)巨大故障,因此必須要求飛行控制系統(tǒng)在出現(xiàn)異常情況時(shí),能夠及時(shí)準(zhǔn)確識(shí)別故障、處理故障,提高飛行控制軟件容錯(cuò)性,保證飛行控制軟件完成要求的任務(wù)時(shí)不受部分故障的影響,確保飛行器安全可靠飛行。
4) 可擴(kuò)展性與可維護(hù)性要求
傳統(tǒng)的飛行控制軟件各個(gè)功能模塊的信息交互非常復(fù)雜,擴(kuò)展功能會(huì)導(dǎo)致整個(gè)系統(tǒng)發(fā)生變化,造成一定的不確定性。
因此要求飛行控制軟件有良好的可擴(kuò)展性、可維護(hù)性和繼承性,使軟件的設(shè)計(jì)、調(diào)試和維護(hù)更加方便快捷。
基于上一節(jié)的功能性能需求分析,本文結(jié)合飛行控制計(jì)算機(jī)硬件平臺(tái),設(shè)計(jì)了基于戰(zhàn)星實(shí)時(shí)操作系統(tǒng)的飛行控制軟件設(shè)計(jì)方案。飛行軟件架構(gòu)分為5層,從下到上依次為:操作系統(tǒng)層、硬件接口層、框架層、應(yīng)用層、重用構(gòu)件層,通過各個(gè)部分之間協(xié)調(diào)運(yùn)行實(shí)現(xiàn)軟件整體功能。飛行控制軟件架構(gòu)結(jié)構(gòu)圖如圖1所示。
圖1 飛行控制軟件系統(tǒng)結(jié)構(gòu)圖
操作系統(tǒng)采用戰(zhàn)星實(shí)時(shí)操作系統(tǒng),該系統(tǒng)是由北京航天自動(dòng)控制研究所自主研發(fā)的實(shí)時(shí)多任務(wù)操作系統(tǒng),具有以下特點(diǎn):
1) 多任務(wù)調(diào)度管理,支持可搶占調(diào)度策略,最多可管理256個(gè)任務(wù);
2) 透明通信、時(shí)間管理、內(nèi)存管理等功能;
3) 可裁剪、可定制;
4) 支持多種處理器。
戰(zhàn)星實(shí)時(shí)操作系統(tǒng)微內(nèi)核完成任務(wù)管理、調(diào)度,任務(wù)間通信、系統(tǒng)時(shí)間管理、內(nèi)存管理、SDP核間通信等功能。
3.2.1 任務(wù)管理
操作系統(tǒng)實(shí)時(shí)內(nèi)核需要滿足飛行控制軟件實(shí)時(shí)處理多任務(wù)的需求,因此必須支持多任務(wù)并行管理,并為這些任務(wù)分配棧空間,制定優(yōu)先級(jí),每個(gè)任務(wù)提供以下3種狀態(tài):就緒態(tài)、運(yùn)行態(tài)和掛起態(tài),并保證任務(wù)在各狀態(tài)間正確切換。
操作系統(tǒng)的內(nèi)核負(fù)責(zé)管理各個(gè)任務(wù)之間的通信和調(diào)度切換,同時(shí)為每個(gè)任務(wù)分配相應(yīng)的CPU時(shí)間。由于實(shí)時(shí)性要求很高,響應(yīng)時(shí)間要盡量短,操作系統(tǒng)內(nèi)核采用可剝奪型內(nèi)核,確保最高優(yōu)先級(jí)的任務(wù)一旦就緒就可以被調(diào)度運(yùn)行,得到處理器的控制權(quán)。
用戶可以依據(jù)需求進(jìn)行任務(wù)的創(chuàng)建、刪除、掛起、恢復(fù)和調(diào)度等。
3.2.2 任務(wù)間通信
戰(zhàn)星實(shí)時(shí)操作系統(tǒng)的任務(wù)間通信功能提供透明的、任務(wù)到任務(wù)的消息傳輸。操作系統(tǒng)將任務(wù)間通信消息封裝成消息塊,包括消息塊的申請(qǐng)、釋放、發(fā)送、接收、入隊(duì)列和出隊(duì)列,以及請(qǐng)求接收任務(wù)答復(fù)、答復(fù)發(fā)送任務(wù)、消息通信任務(wù)掛起、消息通信任務(wù)恢復(fù),任務(wù)間通信流程。如圖2所示。
圖2 任務(wù)間通信流程圖
3.2.3 時(shí)間管理
戰(zhàn)星實(shí)時(shí)操作系統(tǒng)提供時(shí)間管理功能,用于任務(wù)延時(shí)、超時(shí)判斷、獲取系統(tǒng)執(zhí)行時(shí)間等。按照設(shè)定的時(shí)鐘節(jié)拍中斷處理函數(shù)實(shí)現(xiàn)了時(shí)間管理的相關(guān)功能。其中,時(shí)鐘節(jié)拍由特定頻率的硬件定時(shí)器產(chǎn)生,中斷頻率一般為10~100 Hz。時(shí)鐘中斷頻率如果較高,系統(tǒng)開銷也較大,因此一般根據(jù)應(yīng)用的需要設(shè)置合適的中斷頻率。
時(shí)間管理功能包括:時(shí)鐘中斷處理程序、任務(wù)延時(shí)、獲取系統(tǒng)時(shí)間、改變系統(tǒng)時(shí)間等。
3.2.4 內(nèi)存管理
戰(zhàn)星實(shí)時(shí)操作系統(tǒng)提供內(nèi)存管理功能,包括內(nèi)存分區(qū)管理,新建內(nèi)存分區(qū),內(nèi)存塊的申請(qǐng)、釋放等。
3.2.5 SDP核間通信
針對(duì)多核處理器,戰(zhàn)星實(shí)時(shí)操作系統(tǒng)提供SDP系統(tǒng)服務(wù)用于DSP核間通信。SDP核間通信實(shí)現(xiàn)核間數(shù)據(jù)的交互,通過共享內(nèi)存交互數(shù)據(jù)并同步控制邏輯。共享存儲(chǔ)體用于傳輸數(shù)據(jù),信號(hào)燈控制兩個(gè)DSP核之間的同步。戰(zhàn)星實(shí)時(shí)操作系統(tǒng)將SDP作為一個(gè)系統(tǒng)服務(wù)駐于內(nèi)核中。
核間任務(wù)需要通信時(shí),任務(wù)先將消息發(fā)給SDP服務(wù),SDP服務(wù)將消息寫入對(duì)應(yīng)存儲(chǔ)體,置信號(hào)燈,然后向目的DSP核發(fā)送中斷,通知其接收消息,目的DSP核響應(yīng)中斷從存儲(chǔ)體讀出消息再發(fā)送給相應(yīng)任務(wù)。
SDP核間通信功能包括:SDP系統(tǒng)服務(wù)注冊(cè)、SDP核間通信全局ID路由,IPC消息接收中斷程序及SDP核間通信系統(tǒng)服務(wù)。
硬件接口層實(shí)現(xiàn)CPU初始化、定時(shí)器使用、開關(guān)量輸入、指令輸出、總線通訊、串口收發(fā)、雙口RAM收發(fā)、DA輸出等功能,根據(jù)不同的需求使能不同的硬件接口模塊。
框架層一般由主任務(wù)調(diào)度,基于框架進(jìn)行配置項(xiàng)開發(fā),主要完成信息輸入、數(shù)據(jù)處理、測(cè)試流程調(diào)度、數(shù)據(jù)輸出等功能。
框架層連接硬件接口層及應(yīng)用層,它將常用硬件接口的使用方式抽象為“數(shù)據(jù)結(jié)構(gòu)+API函數(shù)”的方式,當(dāng)應(yīng)用層需要與硬件打交道時(shí),它需要定義相應(yīng)的數(shù)據(jù)結(jié)構(gòu),調(diào)用框架的API來通知框架內(nèi)核要做什么,框架內(nèi)核會(huì)在確定的時(shí)機(jī),根據(jù)應(yīng)用層表達(dá)的需求,完成對(duì)硬件的相關(guān)操作。
應(yīng)用層在框架層的基礎(chǔ)上由用戶進(jìn)行相關(guān)應(yīng)用模塊的開發(fā),根據(jù)飛行控制軟件的功能需求、實(shí)時(shí)性需求、接口需求劃分多個(gè)不同優(yōu)先級(jí)的任務(wù)。
對(duì)于可以并行執(zhí)行的任務(wù)采用雙核或多核的分布式方法,多核之間采用SDP通信,核內(nèi)任務(wù)采用IPC消息。用戶只需要關(guān)注任務(wù)的劃分、任務(wù)功能實(shí)現(xiàn)及任務(wù)間的接口。
應(yīng)用層為用戶根據(jù)不同需求實(shí)現(xiàn)定制化的目標(biāo)功能,具體包括:測(cè)試項(xiàng)目的實(shí)現(xiàn)、制導(dǎo)姿控算法的實(shí)現(xiàn)、輸入輸出的調(diào)度、時(shí)間管理、健康管理等功能。
重用構(gòu)件層由基于功能模塊的重用構(gòu)件組成,用于為應(yīng)用層提供重用服務(wù),重用構(gòu)件是規(guī)模較小、功能較為簡(jiǎn)單獨(dú)立的構(gòu)件。在軟件開發(fā)周期的每個(gè)階段使用經(jīng)過測(cè)試與認(rèn)證過的重用構(gòu)件可以節(jié)省成本、降低風(fēng)險(xiǎn)。
構(gòu)件層由不同類型的重用構(gòu)件組成,包括數(shù)據(jù)通信類、數(shù)學(xué)運(yùn)算類、通用算法類及制導(dǎo)姿控算法類。
各個(gè)構(gòu)件為相對(duì)獨(dú)立的功能模塊,構(gòu)件隱藏了內(nèi)部具體實(shí)現(xiàn),只提供接口函數(shù),可以根據(jù)需求對(duì)構(gòu)件進(jìn)行封裝或調(diào)用。
本文所提出的飛行控制軟件框架適用于多種飛行器軟件,以某飛控制軟件為例,簡(jiǎn)述應(yīng)用情況。
某飛行控制軟件運(yùn)行在4核DSP6713上的兩個(gè)核上,其中,甲核運(yùn)行飛控控制軟件信息的采集及處理部分,乙核運(yùn)行飛行控制軟件主控部分,包括總線信息采集、開關(guān)量采集、串口收發(fā)、指令發(fā)送、測(cè)試流程處理、制導(dǎo)姿控解算、指令輸出等內(nèi)容,兩個(gè)核之間通過SDP核間通信進(jìn)行交互,軟件架構(gòu)如圖3所示。其中:重用構(gòu)件層共使用了21個(gè)構(gòu)件,具體如表1所示。
表1 重用構(gòu)件表
圖3 某型號(hào)飛行控制軟件結(jié)構(gòu)
采用基于本文提出的基于戰(zhàn)星實(shí)時(shí)操作系統(tǒng)的多核分布式飛行控制軟件架構(gòu),兩個(gè)核分布式采集數(shù)據(jù)并計(jì)算,采用SDP核間通信進(jìn)行交互,降低了飛行控制軟件的運(yùn)行負(fù)載,提高了性能和可靠性。該軟件架構(gòu)只需要關(guān)注應(yīng)用層開發(fā)及層間接口,支持快速開發(fā)、可移植性強(qiáng)。
分析了彈箭上軟件的功能需求和性能需求,除了滿足日益復(fù)雜的功能需求外,還要求飛行控制軟件具有強(qiáng)實(shí)時(shí)性,強(qiáng)可靠性,高內(nèi)聚低耦合, 可擴(kuò)展性可維護(hù)性等性能要求?;诠δ芎托阅苄枨蠓治鼋Y(jié)果,提出一種基于戰(zhàn)星實(shí)時(shí)操作系統(tǒng)的分層飛行控制軟件架構(gòu),共有5層,從下至上依次為:操作系統(tǒng)層、硬件接口層、框架層、應(yīng)用層和重用構(gòu)件層。
戰(zhàn)星實(shí)時(shí)操作系統(tǒng)的內(nèi)核實(shí)現(xiàn)各個(gè)任務(wù)的管理及調(diào)度、任務(wù)間通信、系統(tǒng)時(shí)間管理、內(nèi)存管理等。硬件接口層實(shí)現(xiàn)CPU初始化、定時(shí)器使用、開關(guān)量輸入、指令輸出、總線通訊、串口收發(fā)等功能,根據(jù)不同的需求使能不同的硬件接口模塊??蚣軐又饕瓿尚畔⑤斎?、數(shù)據(jù)處理、測(cè)試流程調(diào)度、數(shù)據(jù)輸出等功能。應(yīng)用層在框架層的基礎(chǔ)上由用戶進(jìn)行相關(guān)應(yīng)用模塊的開發(fā),包括項(xiàng)目的實(shí)現(xiàn)、制導(dǎo)姿控算法的實(shí)現(xiàn)、輸入輸出的調(diào)度、時(shí)間管理、健康管理等功能。重用構(gòu)件層由基于功能模塊的重用構(gòu)件組成,用于為應(yīng)用層提供重用服務(wù)。構(gòu)件層由不同類型的重用構(gòu)件組成,包括數(shù)據(jù)通信類、數(shù)學(xué)運(yùn)算類、通用算法類及制導(dǎo)姿控算法類構(gòu)件。
本文所提出的基于戰(zhàn)星實(shí)時(shí)操作系統(tǒng)的飛行控制軟件實(shí)時(shí)性高、可靠性和安全性高,可移植性強(qiáng),適用于多種飛行器軟件。