岳 超,董國(guó)才,喻 戈,張健楠(中國(guó)兵器工業(yè)第203研究所,西安 710065)
基于RTX的導(dǎo)彈半實(shí)物仿真系統(tǒng)設(shè)計(jì)*
岳超,董國(guó)才,喻戈,張健楠
(中國(guó)兵器工業(yè)第203研究所,西安710065)
在導(dǎo)彈半實(shí)物仿真系統(tǒng)中,精確定時(shí)和數(shù)據(jù)同步是保證系統(tǒng)實(shí)時(shí)性的關(guān)鍵因素。傳統(tǒng)的Windows操作系統(tǒng)實(shí)時(shí)性較差,從而給半實(shí)物仿真試驗(yàn)帶來(lái)了諸多不確定因素。文中基于Windows平臺(tái)引入硬實(shí)時(shí)系統(tǒng)解決方案RTX(real-time extension),通過(guò)共享內(nèi)存方式實(shí)現(xiàn)了WIN32進(jìn)程和RTX進(jìn)程之間的數(shù)據(jù)交互,并使用MFC編寫(xiě)了各分系統(tǒng)軟件。該設(shè)計(jì)方法在某型導(dǎo)彈半實(shí)物仿真試驗(yàn)中得到應(yīng)用,試驗(yàn)結(jié)果與理論計(jì)算高度一致,并且整個(gè)系統(tǒng)可靠穩(wěn)定,能夠滿(mǎn)足系統(tǒng)對(duì)實(shí)時(shí)性和確定性的要求。
半實(shí)物仿真;RTX;共享內(nèi)存;實(shí)時(shí)系統(tǒng)
傳統(tǒng)的Windows操作系統(tǒng)在優(yōu)秀的界面設(shè)計(jì),較強(qiáng)的通用功能,良好的人機(jī)交互等方面發(fā)揮了重要作用,但隨著半實(shí)物仿真技術(shù)對(duì)實(shí)時(shí)性與可操作性的要求越來(lái)越高,Windows對(duì)于底層數(shù)據(jù)處理存在優(yōu)先級(jí)太少,不確定的線(xiàn)程調(diào)度及優(yōu)先級(jí)倒置等問(wèn)題,讓其難以滿(mǎn)足導(dǎo)彈半實(shí)物仿真系統(tǒng)對(duì)高實(shí)時(shí)性的要求[1]。
文中引入RTX實(shí)時(shí)開(kāi)發(fā)技術(shù),在保留Windows系統(tǒng)傳統(tǒng)的優(yōu)勢(shì)基礎(chǔ)上,解決了其實(shí)時(shí)性較弱的問(wèn)題。RTX子系統(tǒng)RTSS能夠充分利用Windows系統(tǒng)各種通用資源、大量標(biāo)準(zhǔn)API函數(shù),為用戶(hù)提供了良好的實(shí)時(shí)控制性能和高效的可擴(kuò)展性。因此在導(dǎo)彈半實(shí)物仿真系統(tǒng)設(shè)計(jì)中可以采用Win32進(jìn)程實(shí)現(xiàn)圖形顯示、數(shù)據(jù)存儲(chǔ)等非實(shí)時(shí)性操作,利用RTSS進(jìn)程完成控制模型實(shí)時(shí)解算、數(shù)據(jù)轉(zhuǎn)換與采集等實(shí)時(shí)任務(wù)。
在同一硬件平臺(tái)上同時(shí)完成這兩種進(jìn)程任務(wù)需要完善的數(shù)據(jù)交互機(jī)制才能保證系統(tǒng)設(shè)計(jì)的可靠性,因此作為不同進(jìn)程間通信的橋梁,共享內(nèi)存的訪問(wèn)與操作顯得尤為重要。針對(duì)導(dǎo)彈半實(shí)物仿真的時(shí)序要求,文中采用兩種不同的共享內(nèi)存訪問(wèn)機(jī)制實(shí)現(xiàn)了多進(jìn)程間數(shù)據(jù)交互,通過(guò)調(diào)用RTX高精度定時(shí)和收發(fā)數(shù)據(jù)線(xiàn)程完成了與硬件實(shí)物之間的數(shù)據(jù)通信,有效的保證了仿真系統(tǒng)的高實(shí)時(shí)性和穩(wěn)定性。在此基礎(chǔ)上設(shè)計(jì)了導(dǎo)彈半實(shí)物仿真軟件,通過(guò)對(duì)彈載計(jì)算機(jī)單仿驗(yàn)證了此系統(tǒng)設(shè)計(jì)的合理性和正確性。
RTX(real-time extension)是目前Windows平臺(tái)唯一基于軟件的硬實(shí)時(shí)擴(kuò)展子系統(tǒng)。其具有開(kāi)發(fā)周期短,成本低,支持VC++6.0開(kāi)發(fā)環(huán)境等優(yōu)點(diǎn)。RTX并不對(duì)Windows系統(tǒng)本身進(jìn)行任何封裝或修改,而是通過(guò)在HAL層(硬件抽象層)增加實(shí)時(shí)HAL擴(kuò)展來(lái)實(shí)現(xiàn)搶占式實(shí)時(shí)任務(wù)的管理和調(diào)度,增強(qiáng)了Windows系統(tǒng)的實(shí)時(shí)能力[2]。其主要優(yōu)點(diǎn)如下:
1)高精度時(shí)鐘和定時(shí)器:RTX定時(shí)器時(shí)鐘分辨率為100 ns,最低定時(shí)器周期為100 μs。而Windows定時(shí)器時(shí)鐘分辨率為1 ms。
2)進(jìn)程和線(xiàn)程:RTX最高支持1 000個(gè)獨(dú)立的進(jìn)程,每個(gè)進(jìn)程下可以運(yùn)行的線(xiàn)程數(shù)量不受限制,且RTX線(xiàn)程優(yōu)先級(jí)都高于Win32線(xiàn)程。
3)進(jìn)程間通訊機(jī)制:RTX通過(guò)進(jìn)程間通訊IPC機(jī)制實(shí)現(xiàn)RTSS進(jìn)程與Win32進(jìn)程之間的數(shù)據(jù)交互。
4)實(shí)時(shí)網(wǎng)絡(luò)通信:RTX支持RT-TCP/IP及VMIC發(fā)射內(nèi)存等實(shí)時(shí)網(wǎng)絡(luò)通信。
半實(shí)物仿真是指硬件在回路的仿真,即需要真實(shí)硬件參與到模型解算回路中,以達(dá)到檢驗(yàn)參試硬件的效果。在與硬件進(jìn)行控制信息交互的過(guò)程中,不僅需要良好的可操作性,更要保證系統(tǒng)的高實(shí)時(shí)性,基于Windows平臺(tái)的實(shí)時(shí)擴(kuò)展子系統(tǒng)RTX很好的解決了這方面的問(wèn)題。它既保留了Windows強(qiáng)大通用功能,又提供了對(duì)內(nèi)存的精準(zhǔn)控制,能確保高效的實(shí)時(shí)控制性、可擴(kuò)展性和穩(wěn)定性。同時(shí)采用高速的IPC通信和同步機(jī)制,能夠使RTX快速準(zhǔn)確的實(shí)現(xiàn)與Windows之間的數(shù)據(jù)交換[3]。
常見(jiàn)的IPC通信和同步機(jī)制包括:共享內(nèi)存、置事件、管道、消息隊(duì)列等。文中采用共享內(nèi)存方式進(jìn)行Win32和RTSS不同進(jìn)程間的數(shù)據(jù)交互,利用置事件的方式控制跨進(jìn)程間線(xiàn)程的有序進(jìn)行,從而確保整個(gè)仿真流程的高實(shí)時(shí)性和可靠性。根據(jù)導(dǎo)彈半實(shí)物仿真的時(shí)序要求,需要?jiǎng)?chuàng)建兩片共享內(nèi)存。在仿真開(kāi)始裝訂參數(shù)時(shí),Win32進(jìn)程要向RTSS進(jìn)程傳遞控制信息,此時(shí)Win32進(jìn)程對(duì)該片共享內(nèi)存僅有寫(xiě)的權(quán)限,RTSS進(jìn)程則僅有讀的權(quán)限。在仿真開(kāi)始階段,RTSS進(jìn)程則要將實(shí)時(shí)解算的結(jié)果通過(guò)共享內(nèi)存?zhèn)鞯絎in32進(jìn)程中顯示并保存,此時(shí)RTSS進(jìn)程則僅有寫(xiě)的權(quán)限,Win32進(jìn)程對(duì)該片內(nèi)存僅有讀的權(quán)限[4]。在此過(guò)程中引用IPC事件同步機(jī)制,保證了在對(duì)同一片共享內(nèi)存進(jìn)行讀寫(xiě)操作的有序進(jìn)行。具體流程見(jiàn)圖1所示。
圖1介紹了兩種常用的創(chuàng)建和打開(kāi)共享內(nèi)存的方法。共享內(nèi)存可由Win32和RTX進(jìn)程任意一方創(chuàng)建,另外一方打開(kāi)。在從界面給RTSS實(shí)時(shí)進(jìn)程裝訂仿真模型初始參數(shù)時(shí),首先由RTSS進(jìn)程下的Rtd-DriverRegister函數(shù)創(chuàng)建共享內(nèi)存及參數(shù)變量結(jié)構(gòu)體。Win32進(jìn)程則會(huì)調(diào)用RtdDeviceOpen函數(shù)打開(kāi)此共享內(nèi)存,并通過(guò)RtdDeviceTransfer函數(shù)將初始參數(shù)結(jié)構(gòu)體指針傳遞給共享內(nèi)存,進(jìn)而將初始參數(shù)結(jié)構(gòu)體內(nèi)容復(fù)制到共享內(nèi)存中,并在仿真開(kāi)始時(shí)利用置事件的方式通知RTSS進(jìn)程共享內(nèi)存中數(shù)據(jù)已準(zhǔn)備好。其中采用了互斥、通知機(jī)制,確保數(shù)據(jù)同步單向傳輸。RTSS進(jìn)程收到仿真開(kāi)始事件通知后,會(huì)將共享內(nèi)存中的數(shù)據(jù)復(fù)制到利用Calloc指令申請(qǐng)的緩存區(qū)域中,在RTX下模型解算中調(diào)用此內(nèi)存區(qū)域參數(shù)即可。此過(guò)程稱(chēng)為Win32數(shù)據(jù)下傳到RTX,下傳方式通常適應(yīng)于單次單向數(shù)據(jù)量較少的傳輸。
圖1 共享內(nèi)存數(shù)據(jù)交互原理
在仿真開(kāi)始后,RTSS進(jìn)程要將模型實(shí)時(shí)解算結(jié)果周期性的發(fā)送到Win32界面上顯示并保存,在RTX運(yùn)行主程序中打開(kāi)事先在Win32進(jìn)程中已創(chuàng)建好的共享內(nèi)存,并獲得共享內(nèi)存指針,當(dāng)單個(gè)周期數(shù)據(jù)解算完成之后,直接操作指針將數(shù)據(jù)寫(xiě)入共享內(nèi)存,同時(shí)置事件通知Win32進(jìn)程執(zhí)行數(shù)據(jù)顯示及保存線(xiàn)程,完成RTX到Win32的數(shù)據(jù)上傳。上傳方式通常適應(yīng)于周期性數(shù)據(jù)量較大的傳輸。
3.1仿真系統(tǒng)基本結(jié)構(gòu)
此次半實(shí)物仿真系統(tǒng)以彈載計(jì)算機(jī)單獨(dú)參與仿真為例,即只有彈載計(jì)算機(jī)作為實(shí)物硬件參與到整個(gè)系統(tǒng)回路中,模型解算所需的輸入量均由仿真計(jì)算機(jī)提供,并由接口計(jì)算機(jī)完成仿真計(jì)算機(jī)與彈載計(jì)算機(jī)之間實(shí)時(shí)數(shù)據(jù)交互。為了保證整個(gè)系統(tǒng)的高實(shí)時(shí)性,接口計(jì)算機(jī)在讀取仿真計(jì)算機(jī)數(shù)據(jù)時(shí)采用VMIC反射內(nèi)存網(wǎng)實(shí)時(shí)傳輸,其傳輸速率高,抗干擾能力強(qiáng),支持中斷傳輸。本系統(tǒng)采用GE公司的VMICPCI-5565反射內(nèi)存網(wǎng)卡構(gòu)建了星型拓?fù)浣Y(jié)構(gòu)網(wǎng)絡(luò)。在接口計(jì)算機(jī)與彈載計(jì)算機(jī)進(jìn)行數(shù)據(jù)傳輸時(shí)采用RS422串口通信,其采用差分傳輸,抗干擾能力強(qiáng),支持點(diǎn)對(duì)多的雙向通信。整個(gè)系統(tǒng)見(jiàn)圖2所示。
圖2 實(shí)時(shí)仿真系統(tǒng)基本構(gòu)架
在彈載計(jì)算機(jī)單獨(dú)參與仿真環(huán)節(jié)中,仿真計(jì)算機(jī)使用的導(dǎo)彈控制模型與彈載計(jì)算機(jī)中的一致,且在試驗(yàn)中,仿真計(jì)算機(jī)控制模型根據(jù)其動(dòng)力學(xué)和運(yùn)動(dòng)學(xué)方程生成的慣導(dǎo)位置、角度信息和導(dǎo)引頭的框架角、視線(xiàn)角速度等信息實(shí)時(shí)注入到彈載計(jì)算機(jī)中參與控制模型解算并得到控制指令,控制導(dǎo)彈閉環(huán)飛行。同時(shí)仿真計(jì)算機(jī)也利用本機(jī)控制模型解算出當(dāng)前時(shí)刻的控制指令,通過(guò)與彈載計(jì)算機(jī)解算指令對(duì)比,達(dá)到了驗(yàn)證其控制模型的目的。整個(gè)試驗(yàn)過(guò)程中彈載計(jì)算機(jī)和仿真計(jì)算機(jī)控制模型的輸入量同源,保證了彈載計(jì)算機(jī)單獨(dú)參與仿真試驗(yàn)的單一變量性。
接口計(jì)算機(jī)為仿真計(jì)算機(jī)與彈載計(jì)算機(jī)搭建數(shù)據(jù)交互的橋梁,在仿真過(guò)程中,仿真計(jì)算機(jī)RTX進(jìn)程啟動(dòng)1 ms定時(shí)器將慣導(dǎo)和導(dǎo)引頭信息通過(guò)VMIC實(shí)時(shí)網(wǎng)傳向接口計(jì)算機(jī),接口計(jì)算機(jī)RTX定時(shí)器按照5 ms周期實(shí)時(shí)讀取該浮點(diǎn)數(shù)據(jù),并將其按照通訊協(xié)議轉(zhuǎn)換為十六進(jìn)制數(shù),通過(guò)RS422串口注入到彈載計(jì)算機(jī)進(jìn)行模型解算,接口計(jì)算機(jī)在RTSS進(jìn)程中接收線(xiàn)程實(shí)時(shí)掃描彈載計(jì)算機(jī)輸出的RS422串口信號(hào),一旦有彈載計(jì)算機(jī)數(shù)據(jù)回傳則將其轉(zhuǎn)換并發(fā)送到VMIC實(shí)時(shí)網(wǎng)中,仿真計(jì)算機(jī)讀到回傳數(shù)據(jù)將結(jié)果實(shí)時(shí)顯示到界面上。整個(gè)系統(tǒng)的延遲在微秒級(jí)別,完全符合實(shí)時(shí)系統(tǒng)設(shè)計(jì)要求。
3.2仿真軟件設(shè)計(jì)流程
在導(dǎo)彈半實(shí)物仿真中,導(dǎo)彈擊發(fā)之前需要通過(guò)模擬發(fā)控對(duì)彈載計(jì)算機(jī)裝訂初始諸元參數(shù),此時(shí)需要將發(fā)控界面上的信息通過(guò)共享內(nèi)存下傳到RTSS進(jìn)程中,并利用置事件的方式通知RTSS進(jìn)程開(kāi)啟,進(jìn)而就可以調(diào)用RTSS下高精度定時(shí)器嚴(yán)格按照導(dǎo)彈發(fā)射時(shí)序性將發(fā)控信息通過(guò)RS422串口注入到彈載計(jì)算機(jī)中,并通過(guò)RTSS接收數(shù)據(jù)線(xiàn)程實(shí)時(shí)接收反饋信息,判斷其滿(mǎn)足導(dǎo)彈發(fā)射條件則可擊發(fā)。
在導(dǎo)彈擊發(fā)之后,接口計(jì)算機(jī)控制固態(tài)繼電器通斷產(chǎn)生離軌信號(hào),同時(shí)將離軌信號(hào)通過(guò)VMIC實(shí)時(shí)光纖網(wǎng)發(fā)給仿真計(jì)算機(jī),保證了仿真計(jì)算機(jī)和彈載計(jì)算機(jī)模型解算的同時(shí)進(jìn)行。在試驗(yàn)過(guò)程中,仿真計(jì)算機(jī)進(jìn)行控制模型解算,產(chǎn)生的導(dǎo)引頭和慣導(dǎo)信息通過(guò)接口計(jì)算機(jī)RTSS進(jìn)程實(shí)時(shí)轉(zhuǎn)換成十六進(jìn)制數(shù)并調(diào)用高精度定時(shí)器注入到彈載計(jì)算機(jī)中,同時(shí)通過(guò)RS422串口采集彈載計(jì)算機(jī)模型的解算結(jié)果,在RTSS實(shí)時(shí)接收數(shù)據(jù)線(xiàn)程中將其轉(zhuǎn)換為浮點(diǎn)數(shù)并上傳到共享內(nèi)存,Win32進(jìn)程接收到事件通知后則利用T-Chart控件實(shí)時(shí)顯示解算結(jié)果曲線(xiàn)并保存數(shù)據(jù)。當(dāng)仿真計(jì)算機(jī)模型解算結(jié)束后則會(huì)在VMIC實(shí)時(shí)網(wǎng)發(fā)布結(jié)束指令,接口計(jì)算機(jī)讀到結(jié)束指令后通過(guò)繼電器控制彈載計(jì)算機(jī)模型解算結(jié)束。并停止轉(zhuǎn)換和采集數(shù)據(jù),清理共享內(nèi)存緩存。仿真軟件設(shè)計(jì)流程見(jiàn)圖3所示。
圖3 實(shí)時(shí)系統(tǒng)仿真軟件設(shè)計(jì)流程
3.3仿真結(jié)果及分析
本次試驗(yàn)通過(guò)分析Win32和RTX進(jìn)程間數(shù)據(jù)交互的關(guān)系,針對(duì)導(dǎo)彈半實(shí)物仿真時(shí)序要求,設(shè)計(jì)了實(shí)時(shí)系統(tǒng)仿真軟件。并基于某型導(dǎo)彈彈載計(jì)算機(jī)單獨(dú)參與仿真試驗(yàn)得到如下結(jié)果。
通過(guò)圖4分析可以看到仿真時(shí)間連續(xù)可靠,無(wú)任何丟幀現(xiàn)象。充分證明了基于RTX設(shè)計(jì)的數(shù)據(jù)轉(zhuǎn)換及采集軟件完全滿(mǎn)足系統(tǒng)對(duì)實(shí)時(shí)性的要求。
圖6 彈載計(jì)算機(jī)時(shí)間周期
由圖5和圖6統(tǒng)計(jì)分析可以得出RTX下1 ms和5 ms定時(shí)周期性能如表1所示。
表1 RTX定時(shí)器統(tǒng)計(jì)值
通過(guò)表1可以看出RTX下1 ms和5 ms定時(shí)周期最大偏差不到1 μs,最大偏差率小于千分之一,完全滿(mǎn)足半實(shí)物仿真系統(tǒng)對(duì)實(shí)時(shí)性的要求。由表1也可以得出:定時(shí)精度越高其偏差越大。
圖7 模擬導(dǎo)引頭數(shù)據(jù)與彈載計(jì)算機(jī)輸出對(duì)比
圖7中藍(lán)線(xiàn)表示仿真計(jì)算機(jī)1 ms周期性的向VMIC實(shí)時(shí)網(wǎng)發(fā)送模擬導(dǎo)引頭信息,黑線(xiàn)表示接口計(jì)算機(jī)按照5 ms周期采集轉(zhuǎn)換該數(shù)據(jù)并注入到彈載計(jì)算機(jī)中,紅線(xiàn)表示彈載計(jì)算機(jī)輸出其采集到的模擬導(dǎo)引頭注入信息。通過(guò)對(duì)比可以得出:接口計(jì)算機(jī)完全按照5 ms周期給彈載計(jì)算機(jī)注入相關(guān)信息,數(shù)據(jù)穩(wěn)定且準(zhǔn)確。
圖8 仿真計(jì)算機(jī)指令與彈載計(jì)算機(jī)遙測(cè)指令對(duì)比
通過(guò)對(duì)比可以看出:彈載計(jì)算機(jī)遙測(cè)指令和仿真計(jì)算機(jī)指令高度一致,充分驗(yàn)證了彈載計(jì)算機(jī)控制模型的正確性和穩(wěn)定性。
文中通過(guò)兩種方式闡述了Win32進(jìn)程和RTX進(jìn)程之間創(chuàng)建和打開(kāi)共享內(nèi)存的方法,并針對(duì)不同的通信內(nèi)容分析了兩種方法的優(yōu)缺點(diǎn),將Win32良好的人機(jī)交互特點(diǎn)和RTX高效實(shí)時(shí)性結(jié)合起來(lái)實(shí)現(xiàn)了基于RTX的導(dǎo)彈半實(shí)物仿真系統(tǒng)設(shè)計(jì),并結(jié)合具體例案分析了彈載計(jì)算機(jī)單獨(dú)參與仿真環(huán)節(jié)中這兩種方法的應(yīng)用,通過(guò)結(jié)果數(shù)據(jù)分析得出此方法能夠完全滿(mǎn)足半實(shí)物仿真系統(tǒng)對(duì)實(shí)時(shí)性的要求,并取得了大量的工程應(yīng)用和實(shí)踐。
[1]王偉志,襲著有,王贄.基于RTX實(shí)時(shí)仿真系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2013,21(12):24-27.
[2]韓玉芹.基于RTX子系統(tǒng)的導(dǎo)彈試驗(yàn)實(shí)時(shí)測(cè)控系統(tǒng)研發(fā)[D].西安:西安電子科技大學(xué),2013.
[3]王豐,劉娜,肖雅靜,等.RTX在實(shí)時(shí)控制系統(tǒng)中的應(yīng)用[J].電子專(zhuān)用設(shè)備與技術(shù),2012,214(7):40-43.
[4]孫繼紅.RTX技術(shù)在半實(shí)物仿真中的應(yīng)用及開(kāi)發(fā)[J].計(jì)算機(jī)仿真,2010,27(8):83-86.
[5]黃鍵,宋曉,薛順虎.RTX平臺(tái)下實(shí)時(shí)仿真系統(tǒng)的設(shè)計(jì)方法[J].計(jì)算機(jī)應(yīng)用與軟件,2009,26(4):167-169.
[6]于繼超,劉經(jīng)宇.基于RTX的工程飛行模擬器數(shù)據(jù)采集與存儲(chǔ)系統(tǒng)設(shè)計(jì)[J].系統(tǒng)仿真技術(shù),2014,10(1):73-80.
[7]Ardence公司.RTX技術(shù)白皮書(shū)[Z].北京航天捷越(美斯比)科技有限公司,譯,2004.
Design of Missile Hardware-in-loop Simulation System Based on RTX
YUE Chao,DONG Guocai,YU Ge,ZHANG Jiannan
(No.203 Research Institute of China Ordnance Industries,Xi’an 710065,China)
In hardware-in-the-loop simulation system of missile,accurate timing and data synchronization are key factors for guaranteeing performance of real-time system.The traditional Windows operating system brings many uncertain factors to the Hardware-in-loop simulation test due to limitation in real-time function.In this paper,RTX based on Windows platform was introducesd as one solution of strong real-time system.It realizes data interaction between RTX and Windows processes through the method of shared memory,and the subsystem softwares were completed by MFC based on VC++6.0.The proposed method has been applied in missile hardware-in-loop simulation test.The test results are consistent with theoretical calculations,demonstrating the whole system is reliable and stable.As a result,the method proposed in this paper can satisfy system requirements of real-time and accuracy.
hardware-in-loop simulation;RTX;shared memory;real-time system
TP391.9
A
10.15892/j.cnki.djzdxb.2016.01.005
2015-10-28
岳超(1990-),男,陜西渭南人,助理工程師,碩士研究生,研究方向:半實(shí)物仿真技術(shù)。