(陜西中天火箭技術(shù)股份有限公司,西安 710000)
彈載飛控系統(tǒng)通常由傳感器(慣組、導(dǎo)引頭)、飛控計(jì)算機(jī)及其內(nèi)嵌飛控軟件、執(zhí)行機(jī)構(gòu)(舵機(jī))組成。飛控計(jì)算機(jī)通過內(nèi)嵌的飛控軟件,處理傳感器數(shù)據(jù)進(jìn)行舵指令計(jì)算,引導(dǎo)和控制導(dǎo)彈沿方案彈道飛行,使得在沒有人為干預(yù)情況下完成自動(dòng)導(dǎo)航、目標(biāo)識(shí)別、精確控制等智能化任務(wù)[1],飛控軟件是飛控系統(tǒng)的核心部分。
飛控軟件實(shí)時(shí)性強(qiáng),軟件的主任務(wù)周期時(shí)間有嚴(yán)格限制,每周期內(nèi)必須完成與各種外設(shè)的通訊、舵指令計(jì)算、數(shù)據(jù)遙測(cè)等任務(wù)[2]。飛控軟件可靠性要求高,飛行中如果軟件出現(xiàn)問題,不但造成飛行失敗,可能還會(huì)造成人員傷亡,飛控軟件要對(duì)飛行中出現(xiàn)的各種可能情況做出冗余處理,保證飛行的安全。
為滿足飛控軟件實(shí)時(shí)性和可靠性的要求,本文從硬件和軟件兩方面進(jìn)行協(xié)同設(shè)計(jì)[3],硬件方面飛控計(jì)算機(jī)采用DSP+FPGA結(jié)構(gòu),軟件則采用模塊化設(shè)計(jì)方法[4-5]。
飛控計(jì)算機(jī)組成如圖1所示,包括主機(jī)模塊、FPGA模塊、DC/DC模塊、通信模塊、輸入輸出開關(guān)量模塊、A/D轉(zhuǎn)換模塊,其中主機(jī)模塊由DSP和時(shí)鐘電路組成,F(xiàn)PGA模塊由通信控制邏輯模塊、開關(guān)量控制模塊等組成。
圖1 飛控計(jì)算機(jī)原理圖
DSP采用TI公司生產(chǎn)的TMS320 C6713核心處理器,具有快速數(shù)據(jù)處理以及高精度和寬動(dòng)態(tài)范圍的浮點(diǎn)計(jì)算能力,保證了飛控軟件的計(jì)算速度和精度,并且外設(shè)接口豐富,可實(shí)現(xiàn)飛控系統(tǒng)的小型化。DSP通過EMIF總線與FPGA相連,使FPGA充當(dāng)一個(gè)協(xié)處理器,F(xiàn)PGA采用成熟的IP核,通過操作寄存器完成接收幀頭、幀尾、幀長、校驗(yàn)方式、發(fā)送幀頭、幀尾、波特率的配置,F(xiàn)PGA根據(jù)配置對(duì)通信數(shù)據(jù)進(jìn)行判斷,如果數(shù)據(jù)格式正確,則將數(shù)據(jù)存儲(chǔ)在相應(yīng)的fifo,并將接收完成狀態(tài)寄存器置為1,否則將數(shù)據(jù)丟棄,接收完成狀態(tài)寄存器置為0。DPS只需查詢接收完成狀態(tài)寄存器,利用與協(xié)處理器的接口函數(shù)就可實(shí)現(xiàn)數(shù)據(jù)接收和發(fā)送。
DSP+FPGA的硬件結(jié)構(gòu)利用了FPGA的控制能力和高度并行化數(shù)據(jù)處理方面的優(yōu)勢(shì),為DSP進(jìn)行流程控制、導(dǎo)航和制導(dǎo)控制算法解算提供了更多的時(shí)間余量,減少了DSP計(jì)算壓力,保證了飛控軟件的實(shí)時(shí)性。
某激光制導(dǎo)彈飛控軟件包括測(cè)試工作模式和正常工作模式。測(cè)試工作模式主要用于導(dǎo)彈交付用戶之后,定期對(duì)彈上設(shè)備的功能測(cè)試、零位測(cè)試和校準(zhǔn),正常工作模式完成彈的發(fā)射和控制。
正常工作模式由離軌前準(zhǔn)備階段和離軌后自主飛行階段組成。離軌前準(zhǔn)備階段主要完成飛控計(jì)算機(jī)硬件初始化、彈上設(shè)備自檢、傳遞對(duì)準(zhǔn)、離軌信號(hào)采集和判斷;離軌后自主飛行階段包括導(dǎo)航計(jì)算、制導(dǎo)控制指令計(jì)算兩部分,其中制導(dǎo)控制系統(tǒng)包括中制導(dǎo)階段、中末制導(dǎo)交接階段、末制導(dǎo)階段。
某激光制導(dǎo)彈飛控軟件正常模式流程圖如圖2所示。
圖2 飛控軟件正常模式流程圖
導(dǎo)彈總體方案要求飛控軟件嚴(yán)格按照?qǐng)D2所示流程進(jìn)行任務(wù)管理和調(diào)度,并且要求軟件實(shí)時(shí)性強(qiáng)。DSP每1ms要查詢一次外部通訊接口接收完成狀態(tài)寄存器,并完成彈上設(shè)備數(shù)據(jù)的接收和解析;每T1周期執(zhí)行一次導(dǎo)航、制導(dǎo)與控制算法計(jì)算,實(shí)現(xiàn)姿態(tài)和過載回路控制;每T2周期向數(shù)據(jù)記錄設(shè)備發(fā)送一幀遙測(cè)數(shù)據(jù)。
由飛控軟件功能和性能要求可知,飛控軟件功能復(fù)雜、實(shí)時(shí)性強(qiáng)。為了程序易于編寫、調(diào)試和維護(hù),提高軟件的可靠性,并且便于功能擴(kuò)展,采用了模塊化設(shè)計(jì)方法。
飛控軟件總的架構(gòu)包括硬件配置、定時(shí)中斷和主程序三部分。飛控計(jì)算機(jī)上電后立即進(jìn)行硬件配置且只進(jìn)行一次,配置完成后進(jìn)入主程序循環(huán),一旦定時(shí)中斷觸發(fā),則跳出主程序執(zhí)行中斷,中斷執(zhí)行完繼續(xù)回到主程序。
硬件配置主要完成飛控計(jì)算機(jī)EMIF總線、PLL、中斷周期配置和RS422通訊串口初始化。根據(jù)寄存器定義,軟件可設(shè)置每個(gè)RS422通道接收幀頭、幀尾、幀長、奇偶校驗(yàn)方式,F(xiàn)PGA按照設(shè)置的幀格式判斷接收的數(shù)據(jù)幀是否正確,如果正確則存放fifo,否則將數(shù)據(jù)丟棄。
為了保證數(shù)據(jù)接收的實(shí)時(shí)性,飛控軟件設(shè)置了1 ms定時(shí)中斷函數(shù),在中斷函數(shù)順序查詢各個(gè)串口接收完成標(biāo)志位,如果標(biāo)志位為1,則讀取fifo數(shù)據(jù),并根據(jù)通信協(xié)議將接收的數(shù)據(jù)解析為十進(jìn)制浮點(diǎn)數(shù),否則繼續(xù)查詢下一個(gè)通信接口。
主程序主要完成導(dǎo)彈測(cè)試、維護(hù)和圖2所示的飛控軟件功能,包括測(cè)試維護(hù)、設(shè)備自檢、傳遞對(duì)準(zhǔn)、離軌信號(hào)判斷、組合導(dǎo)航、制導(dǎo)、控制共7個(gè)模塊,飛控軟件架構(gòu)和模塊結(jié)構(gòu)圖如圖3所示。
圖3 飛控軟件架構(gòu)和模塊結(jié)構(gòu)圖
1)測(cè)試維護(hù)模塊:導(dǎo)彈交付用戶之后,只有飛控計(jì)算機(jī)與發(fā)控單元通信接口,彈上其它設(shè)備通信測(cè)試口均已封閉,為了在全彈狀態(tài)下,完成對(duì)彈上各設(shè)備的測(cè)試和校準(zhǔn),開發(fā)了飛控軟件測(cè)試維護(hù)模塊。該模塊利用飛控計(jì)算機(jī)的轉(zhuǎn)發(fā)功能,首先將接收的測(cè)試指令轉(zhuǎn)發(fā)到相應(yīng)彈上設(shè)備,并將設(shè)備測(cè)試結(jié)果轉(zhuǎn)發(fā)給導(dǎo)彈測(cè)試儀,導(dǎo)彈測(cè)試儀對(duì)測(cè)試結(jié)果進(jìn)行顯示和存儲(chǔ),該模塊實(shí)現(xiàn)了在不打開導(dǎo)彈包裝箱的前提下,完成對(duì)彈上設(shè)備的測(cè)試,且操作簡(jiǎn)單、安全。飛控計(jì)算機(jī)初始化完成后T3時(shí)間內(nèi)必須連續(xù)收到三幀測(cè)試指令,才能進(jìn)到測(cè)試維護(hù)模塊,否則進(jìn)入設(shè)備自檢模塊開始執(zhí)行圖2所示軟件流程。
圖4.測(cè)試維護(hù)模塊功能圖
2)設(shè)備自檢模塊:采用兩次問答形式完成彈上設(shè)備自檢,飛控軟件分別向?qū)б^、舵機(jī)、慣組發(fā)送自檢指令,通過設(shè)備返回的狀態(tài)字判斷自檢是否正常,如果自檢異常,飛控軟件再發(fā)送第二幀自檢指令,并將自檢結(jié)果上報(bào)發(fā)控單元,發(fā)控單元根據(jù)上報(bào)的自檢狀態(tài)決定是繼續(xù)發(fā)射流程還是終止發(fā)射流程。
3)傳遞對(duì)準(zhǔn)模塊:飛控軟件根據(jù)接收的飛機(jī)主慣導(dǎo)數(shù)據(jù)和彈上傳感器輸出數(shù)據(jù),利用卡爾曼濾波在規(guī)定時(shí)間內(nèi)估計(jì)出彈上陀螺零位、加速度計(jì)零位,并對(duì)濾波結(jié)果進(jìn)行收斂性判斷,給出對(duì)準(zhǔn)是否成功的結(jié)論,該模塊包括傳遞對(duì)準(zhǔn)算法、對(duì)準(zhǔn)結(jié)果收斂性判斷、傳遞對(duì)準(zhǔn)結(jié)果輸出三部分。
4)離軌信號(hào)判斷:飛控軟件采集熱電池電壓A/D值,并實(shí)時(shí)查詢離散輸入開關(guān)量(即電氣分離信號(hào)),開關(guān)量為1時(shí),即認(rèn)為脫插已分離。熱電池激活和脫插分離兩個(gè)條件均滿足時(shí),則認(rèn)為彈體離軌,飛控軟件進(jìn)入自主飛行階段。為了提高軟件的可靠性,避免因電器分離信號(hào)采集失敗導(dǎo)致飛控軟件無法進(jìn)入自主飛行階段,對(duì)離軌信號(hào)增加冗余判斷,如果彈體傳感器輸出軸向過載連續(xù)100 ms均大于20 g,則也認(rèn)為導(dǎo)彈已離軌。
5)組合導(dǎo)航模塊:利用四元數(shù)法計(jì)算姿態(tài)矩陣,再從姿態(tài)矩陣中提取彈體的姿態(tài),用姿態(tài)矩陣把加速度計(jì)輸出的沿彈體各軸的過載信息轉(zhuǎn)換到導(dǎo)航坐標(biāo)系,然后進(jìn)行位置、速度計(jì)算,并對(duì)GPS工作狀態(tài)進(jìn)行判斷,如果GPS收星數(shù)大于4,并且通信正常,則用GPS位置修正導(dǎo)航計(jì)算的位置。該模塊包括初始四元數(shù)計(jì)算、導(dǎo)航計(jì)算、GPS修正位置三部分。
6)制導(dǎo)模塊:根據(jù)彈目距離和導(dǎo)引頭跟蹤狀態(tài),制導(dǎo)律計(jì)算分為中制導(dǎo)、中末制導(dǎo)交接、末制導(dǎo)3個(gè)部分。中制導(dǎo)階段采用彈上捷聯(lián)慣導(dǎo)作為測(cè)量設(shè)備,將彈體導(dǎo)向裝訂的目標(biāo)方向;末制導(dǎo)階段利用導(dǎo)引頭信息將彈體導(dǎo)向目標(biāo),直至命中目標(biāo);中末交接段主要為了避免指令跳邊,進(jìn)行中制導(dǎo)到末制導(dǎo)的線性過渡。在飛行過程中受到天氣、導(dǎo)航誤差等因素影響,導(dǎo)引頭會(huì)出現(xiàn)全程不跟蹤、跟蹤后丟失、丟失后又跟蹤、丟失后不再跟蹤等多種可能情況,飛控軟件需對(duì)導(dǎo)引頭各種工作情況做出相應(yīng)的邏輯處理,保證飛行安全。制導(dǎo)邏輯流程圖如圖5所示。
圖5 飛控軟件制導(dǎo)邏輯流程圖
7)控制模塊:控制模塊包括自動(dòng)駕駛儀和舵分配兩部分,自動(dòng)駕駛儀由俯仰通道、偏航通道、滾轉(zhuǎn)通道組成,其中俯仰/偏航采用內(nèi)環(huán)為姿態(tài)角/角速度反饋、外環(huán)為過載反饋的三回路駕駛儀;滾轉(zhuǎn)通道采用角速度反饋和姿態(tài)穩(wěn)定的兩回路駕駛儀。自動(dòng)駕駛儀根據(jù)制導(dǎo)模塊計(jì)算的過載指令和彈上傳感器輸出的彈體姿態(tài)、角速率、過載,分別計(jì)算出俯仰、偏航、滾轉(zhuǎn)3個(gè)通道舵指令。舵分配是將駕駛儀計(jì)算的3個(gè)通道指令轉(zhuǎn)換為4個(gè)舵面指令,并將指令發(fā)送給舵機(jī),舵機(jī)進(jìn)行舵面偏轉(zhuǎn),完成對(duì)彈的控制。
舵指令轉(zhuǎn)換公式如上式所示,其中δx為滾轉(zhuǎn)舵偏,δy為偏航舵偏,δz為俯仰舵偏,δ1~δ4分別為4個(gè)舵面指令,δ1和δ3為聯(lián)動(dòng)舵,兩者大小相等,方向相反。
模塊間數(shù)據(jù)傳遞關(guān)系如圖6所示,飛控軟件定義主慣導(dǎo)數(shù)據(jù)結(jié)構(gòu)體、慣組傳感器數(shù)據(jù)結(jié)構(gòu)體、導(dǎo)引頭數(shù)據(jù)結(jié)構(gòu)體、導(dǎo)航計(jì)算結(jié)果結(jié)構(gòu)體、制導(dǎo)計(jì)算結(jié)構(gòu)體。模塊間數(shù)據(jù)傳遞通過結(jié)構(gòu)體指針完成,保持了模塊在功能及結(jié)構(gòu)方面的獨(dú)立性和完整性,便于模塊間的聯(lián)接與分離。
圖6 模塊間數(shù)據(jù)傳遞關(guān)系圖
飛控軟件采用匯編語言和C語言混合編程。中斷向量表設(shè)置以及搬運(yùn)程序bootload等對(duì)寄存器和存儲(chǔ)器的操作采用匯編語言編寫,指令占用內(nèi)存少,執(zhí)行速度快;飛控軟件的主程序主要對(duì)數(shù)據(jù)進(jìn)行操作,則采用C語言進(jìn)行編程,充分利用編譯器的庫函數(shù)實(shí)現(xiàn)復(fù)雜算法的計(jì)算。軟件主要包括一個(gè)定時(shí)中斷函數(shù)和主函數(shù),主函數(shù)采用switch-case跳轉(zhuǎn)結(jié)構(gòu),根據(jù)發(fā)控單元指令,跳轉(zhuǎn)到相應(yīng)分支,程序的主要部分如下所示:
Interrupt void ExtInt1() //1ms定時(shí)中斷
{
………………
DataNum=ComRev(FKaddr);//查詢發(fā)控單元
if(DataNum==FKLen)
{
……………… //數(shù)據(jù)解析
}
DataNum=ComRev(DYTaddr);//查詢導(dǎo)引頭
if(DataNum==DYTLen)
{
……………… //數(shù)據(jù)解析
}
………………//查詢GPS串口
………………//查詢慣組傳感器
}
{
InitDevice(); //硬件初始化
for(;;) //循環(huán)
{
switch(Order) //發(fā)控指令
{
case 10:
According to the Japanese guidelines on the gastric cancer treatment issued by JGCA (2011)[13], the algorithm of surgical treatment in patients with GC is as follows (Figure 7).
TestMode(); //測(cè)試維護(hù)模塊
break;
case 20:
DeviceCheck(); //自檢模塊
break;
case 30:
TransferAlign(); //傳遞對(duì)準(zhǔn)模塊
break;
case 40:
TransferAlign(); //離軌信號(hào)判斷模塊
break;
case 50:
Navigation(); //導(dǎo)航模塊
Guidance(); //制導(dǎo)模塊
Control(); //控制模塊
break;
default:
break;
}
}
}
為了驗(yàn)證飛控軟件功能、性能是否滿足系統(tǒng)要求,搭建了反射式半主動(dòng)激光末制導(dǎo)仿真系統(tǒng),如圖7所示,由仿真機(jī)、三軸轉(zhuǎn)臺(tái)、二軸轉(zhuǎn)臺(tái)、反射屏、激光器、飛控計(jì)算機(jī)、導(dǎo)引頭、慣組等組成。仿真機(jī)接收舵機(jī)輸出的舵偏角,進(jìn)行彈體運(yùn)動(dòng)學(xué)和動(dòng)力學(xué)模型實(shí)時(shí)解算,并將仿真曲線和結(jié)果實(shí)時(shí)顯示,三軸轉(zhuǎn)臺(tái)接收仿真機(jī)指令模擬彈體姿態(tài)運(yùn)動(dòng),二軸轉(zhuǎn)臺(tái)上裝有反射棱鏡,將激光器輸出的光源反射到發(fā)射屏上,模擬目標(biāo)的運(yùn)動(dòng)。仿真機(jī)與轉(zhuǎn)臺(tái)之間的通信通過反射內(nèi)存網(wǎng),保證了實(shí)時(shí)性。半實(shí)物仿真將硬件連入回路,盡可能的接近真實(shí)飛行環(huán)境,克服了數(shù)學(xué)模型的不精確以及干擾因素的影響[6]。
半實(shí)物仿真試驗(yàn)重點(diǎn)對(duì)制導(dǎo)邏輯和離軌后自主飛行階段的導(dǎo)航、制導(dǎo)和控制算法進(jìn)行了驗(yàn)證,完成了涵蓋典型、近界、遠(yuǎn)界、有無發(fā)射離軸角等近50條彈道仿真,脫靶量均小于2.0 m。
圖7 反射式半主動(dòng)激光末制導(dǎo)仿真系統(tǒng)
設(shè)計(jì)的制導(dǎo)邏輯測(cè)試用例及測(cè)試結(jié)果如表1所示,主要包括導(dǎo)引頭不跟蹤目標(biāo)、跟蹤后丟失、丟失后又跟蹤等情況進(jìn)行測(cè)試,測(cè)試結(jié)果與軟件設(shè)計(jì)狀態(tài)均一致,飛控軟件制導(dǎo)邏輯處理正確。
表1 制導(dǎo)邏輯測(cè)試用例
典型彈道的半實(shí)物仿真試驗(yàn)結(jié)果與數(shù)字仿真結(jié)果對(duì)比曲線如圖8所示,飛控軟件計(jì)算結(jié)果與數(shù)字仿真結(jié)果一致。飛控軟件實(shí)時(shí)性、精度、可靠性均滿足要求。
圖8 彈體俯仰、偏航、滾轉(zhuǎn)角速率
飛控計(jì)算機(jī)采用DSP+FPGA的結(jié)構(gòu),利用了FPGA高度并行化數(shù)據(jù)處理能力,使得DSP更及時(shí)響應(yīng)外部事件請(qǐng)求,并在規(guī)定時(shí)間內(nèi)完成事件的處理工作;飛控軟件的模塊化設(shè)計(jì),便于程序的擴(kuò)展和維護(hù),提高了軟件的可靠性。軟件通過了半實(shí)物仿真試驗(yàn),軟件的實(shí)時(shí)性和可靠性均得到了驗(yàn)證。
飛控軟件采用了1 ms定時(shí)中斷查詢模式,測(cè)試中發(fā)現(xiàn)在自主飛行階段主程序進(jìn)行導(dǎo)航、制導(dǎo)和控制算法解算時(shí)被1 ms定時(shí)中斷打斷,導(dǎo)致算法計(jì)算周期最大達(dá)到1.8 ms,雖然滿足計(jì)算周期小于T1的要求,但增加了舵指令輸出延遲。后續(xù)對(duì)飛控軟件進(jìn)行改進(jìn),在自主飛行階段關(guān)閉所有定時(shí)中斷,將慣組傳感器通信接口由查詢模式改為中斷模式,每產(chǎn)生一次中斷,完成一次導(dǎo)航、制導(dǎo)和控制算法計(jì)算,在計(jì)算過程中不再受定時(shí)中斷干擾。軟件的改進(jìn)方案有待進(jìn)一步驗(yàn)證。