張世欣,韓應都
(中國空空導彈研究院總體部,河南洛陽 471009)
在空空導彈武器系統研制過程中,出于試驗條件和安全性及成本考慮,需研制基于計算機平臺構型的便攜式導彈仿真系統,以取代真實導彈產品完成與機載武器系統的綜合聯試。仿真系統具有與真實導彈產品一致的電氣接口,主要完成模擬真實導彈工作時序的功能,實現對機載武器系統進行供電、工作時序、控制邏輯、飛行任務裝訂參數等方面的正確性檢查,同時還可完成對飛機系統的火控計算算法、信息延遲時間等關鍵參數進行檢查,以保證飛機系統能滿足導彈系統的技術要求,并保證導彈系統與機載武器系統之間工作的正確性、匹配性和協調性。
綜合考慮采購周期、成本、環境以及結構加工等因素,該型導彈仿真系統的主控計算機采用寬溫高可靠性便攜式計算機系統,板卡直接安裝固定在計算機系統上,采用PCI總線進行信號傳輸,該型導彈仿真系統組成框圖如圖1所示。

圖1 導彈仿真系統組成框圖
429總線接口板主要用于接收發射裝置發送的飛行任務信息幀,并按照工作時序形成導彈狀態信息返回載機。根據系統的功能要求,接口板采用即插即用PCI接口,具有4個獨立的總線接收器及兩個總線發送器,兼容ARINC-429規范,最大數據傳輸率100 kbit·s-1。
信號調理板主要將機載火控系統的輸出電壓信號進行變換和隔離,同時對關鍵性的點火信號用大功率電阻做為模擬負載。變換電路將機載火控系統輸出的電壓信號變為TTL電平,輸入到I/O狀態采集模塊供計算機檢測。并將機載火控系統輸出的電壓信號按要求進行變換,輸入到模擬量采集模塊供計算機檢測。隔離輸出電路是將接收I/O狀態采集模塊輸出的TTL電平對繼電器進行控制并按要求形成特定信號返回給載機。
PCI接口數據采集板包括模擬量采集模塊和I/O狀態采集模塊。I/O狀態采集模塊用于完成導彈仿真系統與機載火控系統之間的信號交換。主要采集相應控制信號的狀態,并按導彈工作時序形成符合接口控制文件要求的返回信號。模擬量采集模塊主要采集發射裝置到導彈模擬器的電壓信號,并根據導彈對機載火控系統電壓的要求判定電壓是否滿足要求。數據采集板采用即插即用PCI接口,采用12位A/D轉換器,具有16路單端或8路差分模擬量輸入、2路12位模擬量輸出、16路數字量輸入和輸出。
導彈仿真系統的編程環境采用Windows XP操作系統,軟件使用Borland C++Builder 6.0開發。
該型空空導彈仿真系統要求同時接收、發送和處理總線數字信息、模擬量信息等多種數據源,其中總線數字信息接受和發送分別采用不同格式封包,并采用不同的傳輸速率,模擬量信息包含多路I/O狀態采集和8路時序不同的電壓信號。根據功能至少擁有導彈工作時序模擬、總線數字信息的接收和解碼、總線信息的編碼和發送、I/O狀態量采集、多路模擬量采集、各種信息實時顯示和記錄等并行工作流程,且各流程結構相對獨立,信息處理周期覆蓋從ms到s級,如采用常規的單線程順序查詢,則必須按最短處理周期進行,以確保信息完整,但系統將長時間高負荷運行,不能保證穩定性,同時任何流程的異常容易影響其他流程的正常處理,較難保證采集信息的完整性,因此須采用更加高效、安全的算法。
具體到該系統,主線程是對導彈工作時序的模擬以及對其他模塊的調度和起停控制,導彈從初始化到發射就是系統運行的全過程,其他線程以模塊形式參與到系統中。所有模塊的相互關系如圖2所示。

圖2 各個模塊的相互關系圖
系統控制模塊做為主線程負責對其他功能模塊進行控制和調度,并在其他模塊的配合下完成對導彈工作狀態的模擬。系統控制模塊在進程同步模塊的作用下,主要對其他模塊提供的信息,數據進行收集和整理,并根據實時監控到的模擬量對系統工作時序和工作狀態做出判別、決策,然后按照真實導彈的工作邏輯控制系統硬件做出反應,并實時將各信息提供給顯示控制模塊進行顯示,同時還提供給數據記錄模塊進行數據記載。系統主流程如圖3所示。

圖3 系統主流程框圖
3.3.1 系統定時器精度問題的解決
在Windows操作系統中,可供開發人員使用的常規系統定時器是建立在DOS的1CH中斷基礎上的,其精度約55 ms,在Windows 98系統中只可達到這個精度,在Windows 2000平臺下,這一精度最多可減小為10 ms,且是在系統負載較小的情況下。因此,為提高定時器精度,嘗試利用系統未直接提供的多媒體定時器功能,種定時器主要為滿足計算機的多媒體播放定位功能,一般情況下不對普通用戶開放,要使用此定時器必須深入到Windows平臺內部,可以借助Windows的核心函數庫解決。但這種定時器的缺點是對系統的資源耗費較高,當系統資源耗盡,嚴重的會造成系統崩潰,因此須加以保護措施,在確保系統穩定性的基礎上最大可能利用該定時器。
經過反復試驗,在確保系統穩定性和系統軟件滿負荷運轉的情況下,可以將定時器精度提高到1 ms,且加入保護代碼,實時監控系統資源利用率,當發現系統資源耗費較多時利用間隙強制該定時器終止,同時清理系統現場后再次啟動該定時器,既保證了系統的持續高速運轉,又確保了系統運行的穩定性。
3.3.2 線程同步問題的解決
在系統開發初期,當所有模塊全速運轉一定時間后總會造成系統無故崩潰。在多次跟蹤調試代碼后,發現該問題是由于多個模塊同時高速運行時,系統未能同時響應底層接口板的多個中斷請求,且混雜了大量I/O端口訪問操作。但這些中斷請求大部分是無效的,歸結為系統各模塊間的同步信號未能發揮有效作用,造成特定情況下已發出中斷請求的接口板再次重復發出中斷。
為解決這一問題,采取多種同步措施,并增加了若干邏輯互斥標志,以確保底層接口板在一次中斷請求后必須由系統有效清除中斷標志才允許再次發出中斷,從而保證每個中斷請求都可被有效處理。同時嘗試提高了相對高速的中斷服務程序的邏輯優先級,適當降低相對低速的I/O端口訪問操作的優先級,為大量的實時中斷響應操作節約出CPU工作周期。
3.3.3 系統高速采集問題的解決
在對脈沖信號的高速采集中,因采用的是普通的數據采集板,其多路采集原理是各通道依次輪詢,由于硬件限制,A/D轉換和數據讀取操作相對耗時較多,從而影響了系統定時器的精度,造成數字信息接收模塊大量丟失數據,不能對指令信息及時做出響應,從而會造成系統非正常退出。
為解決這一問題,將模擬量采集工作放到系統定時器之外進行,但又經常遺漏脈沖信號。經過分析,認為有幾路信號的采集只是導彈特定工作時段中發生的,其余時間無需實時監控,因此,只在需要采集的時刻提前做好準備,一旦采集完成,迅速停止采集操作,防止系統負荷過大而造成崩潰。為此,充分利用Windows系統的多線程技術,把各路特殊信號采集工作放在線程中進行,由于在線程中不受定時器控制,可認為一旦線程獲得CPU周期即全速進行采集,這樣既保證了系統主體定時器的正常運行,又確保了有效采集到信息。
圖4所示是系統模擬導彈發射運行畫面,可以看出在多線程作用下系統的數字信息接收處理模塊、數字信息發送處理模塊、模擬量信息監控模塊、顯示控制模塊均在有序運行,相互之間并未因多線程的存在而發生干擾。

圖4 系統運行畫面
目前,該導彈仿真系統已成功應用在型號研制中,為該型導彈的相關試驗提供了可靠的保障,減少了武器系統的試驗風險,同時降低了試驗成本,加快了型號研制進度。
[1]鐘建平,史惠茗.Borland C++Builder使用技巧與配置指南[M].北京:清華大學出版社,2000.
[2]MIANO J,CABANSKI T.Borland C++builder 編程指南[M].北京:電子工業出版社,1998.
[3]魏俊鵬,于秋生.C++Builder 6實用編程100例[M].北京:中國鐵道出版社,2004.
[4]肖健.C++Builder 6編程基礎[M].北京:清華大學出版社,2002.
[5]JIM B.Win32多線程程序設計[M].武漢:華中科技大學出版社,2002.
[6]章秦.Win32多線程同步技術淺析[J].電子設計工程,2011(21):56 -58.61.
[7]張楨,孫沛.基于 FPGA的 ARINC429總線通訊板設計[J].航空計算技術,2010(4):112 -115.
[8]丁猛,郭英.ARINC429信號處理板的設計[J].微計算信息,2008(13):31-32.
[9]姬昕禹,馬捷中,翟正軍.基于ARINC429總線接口板的驅動程序設計與實現[J].計算機工程與設計,2007,28(14):3511-3514.
[10]林良有,張偉.基于FPGA的連續采樣的高速PCI采集卡設計[J].計算機測量與控制,2007(6):813-815.