紀(jì) 錄,吳國(guó)東,王志軍,尹建平,劉亞昆
(中北大學(xué)機(jī)電工程學(xué)院,太原 030051)
在彈箭飛行仿真系統(tǒng)中,為了避免通信過(guò)程中的不可預(yù)測(cè)性,因此應(yīng)盡量縮短整套半實(shí)物仿真系統(tǒng)的響應(yīng)延遲,從而提高彈箭飛行仿真系統(tǒng)的真實(shí)度。彈箭飛行半實(shí)物仿真技術(shù)對(duì)系統(tǒng)實(shí)時(shí)性及可操作性的要求很高,而現(xiàn)在應(yīng)用最廣泛的Windows操作系統(tǒng)實(shí)時(shí)性較差,難以滿足高精度的彈箭半實(shí)物仿真系統(tǒng)對(duì)實(shí)時(shí)性的要求,但其操作的界面和通用性比較優(yōu)秀,而且其具有良好的人機(jī)交互功能。因此在文中采用在Windows操作系統(tǒng)的內(nèi)核中引入RTX的實(shí)時(shí)通訊和控制系統(tǒng)的方式,形成了Windows + RTX的實(shí)時(shí)系統(tǒng),該系統(tǒng)既保留了Windows系統(tǒng)傳統(tǒng)的優(yōu)勢(shì)又解決了實(shí)時(shí)性較差的問(wèn)題[1-4]。
文中根據(jù)彈箭飛行半實(shí)物仿真平臺(tái)的具體要求和總體方案要求,設(shè)計(jì)了彈箭飛行仿真系統(tǒng)的整體系統(tǒng),并對(duì)彈箭飛行仿真系統(tǒng)的整體通訊協(xié)議進(jìn)行了定義,在引入的RTX實(shí)時(shí)系統(tǒng),采用了VC++對(duì)RTX中的子系統(tǒng)RTSS進(jìn)行開發(fā),并利用開發(fā)的RTSS程序完成彈道控制模型的實(shí)時(shí)解算、彈載計(jì)算機(jī)的實(shí)時(shí)控制、整體飛行質(zhì)量的實(shí)時(shí)評(píng)估及數(shù)據(jù)的實(shí)時(shí)采集和轉(zhuǎn)換等實(shí)時(shí)任務(wù)。
RTX(real-time eXtension)實(shí)時(shí)操作系統(tǒng)是Interval Zero公司的一款嵌入式軟件產(chǎn)品。在Windows 下安裝RTX 實(shí)時(shí)操作系統(tǒng),拓展了Windows操作系統(tǒng)內(nèi)核體系,修改并擴(kuò)展了整個(gè)硬件抽象層HAL(hardware abstraction layer),實(shí)現(xiàn)在Windows下獨(dú)立的內(nèi)核驅(qū)動(dòng)模式,形成與Windows 操作系統(tǒng)并列的實(shí)時(shí)子系統(tǒng)。RTX運(yùn)行于系統(tǒng)內(nèi)核層,實(shí)時(shí)子系統(tǒng)RTSS的線程優(yōu)先于所有Windows線程,提供了對(duì)IRQ、I/O、內(nèi)存的精確直接控制,以確保實(shí)時(shí)任務(wù)的100%可靠性[5-6]。通過(guò)高速的IPC通訊和同步機(jī)制,RTX方便地實(shí)現(xiàn)與Windows之間進(jìn)行高速實(shí)時(shí)的數(shù)據(jù)交換。RTX系統(tǒng)其使用的成本相比其他的實(shí)時(shí)開發(fā)軟件比較低,而且開發(fā)的周期比較短,支持VC++6.0開發(fā)環(huán)境。
圖1 RTX工作原理圖
光纖反射內(nèi)存網(wǎng)絡(luò)(OFRMN, optical fiber reflective memory network)是一種基于光纖的超高速共享內(nèi)存的解決方案,其主要是由光纖反射內(nèi)存板卡通過(guò)光纖等傳輸介質(zhì)相互連接而成,其實(shí)質(zhì)就是一個(gè)雙口可以讀寫的RAM, 本地計(jì)算機(jī)和網(wǎng)絡(luò)端可以自由訪問(wèn)該RAM,進(jìn)行透明的數(shù)據(jù)接收和發(fā)送[7-9]。因此其有以下優(yōu)點(diǎn):
1)高速,最大傳輸速率可達(dá)174 MB/s;
2)簡(jiǎn)單易用,主機(jī)負(fù)載輕,與操作系統(tǒng)和處理器無(wú)關(guān);
3)反射內(nèi)存網(wǎng)絡(luò)上的數(shù)據(jù)傳輸是純硬件操作,只需要幾行代碼就可以完成反射內(nèi)存卡的讀、寫操作,徹底省去軟件開發(fā)開銷和周期;
4)允許采用不同的總線結(jié)構(gòu)和不同操作系統(tǒng)的計(jì)算機(jī)以確定的速率分享實(shí)時(shí)數(shù)據(jù);
5)節(jié)點(diǎn)距離可達(dá)10 km(單模)、300 m(多模);
6)簡(jiǎn)單的軟件,較強(qiáng)的抗干擾能力和傳輸糾錯(cuò)能力。
整個(gè)彈箭飛行的半實(shí)物仿真系統(tǒng)的結(jié)構(gòu)圖和控制系統(tǒng)設(shè)計(jì)圖如圖2和圖3所示。其中圖2主要是對(duì)整個(gè)彈箭飛行仿真系統(tǒng)組成的硬件設(shè)備及各設(shè)備之間的關(guān)系進(jìn)行簡(jiǎn)要的說(shuō)明,各設(shè)備都連接在高速的反射內(nèi)存網(wǎng)絡(luò)中,再通過(guò)實(shí)時(shí)軟件連接,可以滿足彈箭飛行仿真過(guò)程中的實(shí)時(shí)性要求。圖3主要是對(duì)整個(gè)系統(tǒng)的通訊和控制方案做了簡(jiǎn)要的說(shuō)明,該圖顯示了主控機(jī)發(fā)送初始化命令,然后再發(fā)送飛行仿真的位置、姿態(tài)、軌跡、速度及數(shù)防加速度等命令,首先將這些命令傳遞到數(shù)據(jù)服務(wù)器中,然后轉(zhuǎn)臺(tái)、衛(wèi)星信號(hào)模擬器、彈道仿真機(jī)、模擬負(fù)載設(shè)備等設(shè)備從數(shù)據(jù)服務(wù)器中讀取自己所需要的命令或者數(shù)據(jù),最后進(jìn)行彈箭飛行仿真系統(tǒng)試驗(yàn),在此過(guò)程中,評(píng)估系統(tǒng)在不斷的工作,對(duì)轉(zhuǎn)臺(tái)的飛行姿態(tài)和衛(wèi)星信號(hào)模擬器的軌跡進(jìn)行不斷的調(diào)整,從而實(shí)現(xiàn)飛行仿真的準(zhǔn)確性和逼真度,在次過(guò)程中軟件系統(tǒng)的閉環(huán)測(cè)試模塊從硬件系統(tǒng)中讀取轉(zhuǎn)臺(tái)控制模塊收到飛行轉(zhuǎn)臺(tái)的位置數(shù)據(jù),實(shí)現(xiàn)飛行轉(zhuǎn)臺(tái)的閉環(huán)監(jiān)測(cè)。
圖2 彈箭飛行仿真系統(tǒng)的結(jié)構(gòu)圖
圖3 飛行仿真控制系統(tǒng)方案設(shè)計(jì)圖
在彈箭飛行仿真系統(tǒng)中,其通訊協(xié)議方案的設(shè)計(jì)是十分重要的,如果沒有通訊協(xié)議,整個(gè)彈箭飛行仿真系統(tǒng)就不能協(xié)同工作以實(shí)現(xiàn)信息交換及資源共享,因此設(shè)計(jì)的仿真系統(tǒng)采用了UDP+TCP通訊方式,其通訊進(jìn)程為:1)設(shè)備上線廣播發(fā)送上線報(bào)文,在線設(shè)備收到后刷新設(shè)備列表,并回復(fù)收到上線報(bào)文,主設(shè)備記錄各個(gè)從設(shè)備,從設(shè)備至少記錄主設(shè)備和數(shù)據(jù)服務(wù)器;2)設(shè)備下線時(shí)發(fā)下線報(bào)文;3)主設(shè)備心跳方式,間隔時(shí)間發(fā)送更新列表;4)設(shè)備掉線后發(fā)掉線報(bào)文,重新連接;5)設(shè)備發(fā)送消息后,可以要求回復(fù)接收?qǐng)?bào)文;6)設(shè)備間傳輸數(shù)據(jù)使用TCP協(xié)議。
//通訊端口
#define MFSS_UDP_PORT 0x1a85 //6789
#define MFSS_TCP_PORT 0x1a85 //6789
//通訊協(xié)議格式
版本號(hào);消息序號(hào);系統(tǒng)名;設(shè)備名;消息命令;消息內(nèi)容
//協(xié)議版本號(hào)(雙字節(jié))
#define MFSS_VERSION 0x0100//高字節(jié) 版本號(hào) 低字節(jié) 小版本號(hào)
//消息序號(hào) ID(4字節(jié))
唯一ID,時(shí)間函數(shù)獲取 time(),可以轉(zhuǎn)換時(shí)間
//系統(tǒng)名(字符串)
#define MFSS_NAME_SYSTEM_CHS“彈箭飛行仿真系統(tǒng)”
#define MFSS_NAME_SYSTEM_CHS “Missile flight simulation system ”
//設(shè)備名(字符串)
#define MFSS_NAME_DEVICE_CHS“衛(wèi)星信號(hào)模擬器”
#define MFSS_NAME_DEVICE_ENG “GNSS 8000”
#define MFSS_NAME_DEVICE_CHS “飛行轉(zhuǎn)臺(tái)”
#define MFSS_NAME_DEVICE_ENG “Flight turntable”
//各設(shè)備RTX-Win32通訊定義 (可分別定義多個(gè))
//共享內(nèi)存 Shared memory
#define MFSS_SHM_XXX “MFSS_XXX.SHM”
//互斥量 Mutex
#define MFSS_Mutex_XXX “MFSS_XXX.MUTEX”
//信號(hào)量 Semaphore
#define MFSS_SMP_XXX “MFSS_XXX.SMP”
//事件量 Event
#define MFSS_EVENT_XXX “MFSS_XXX.EVENT”
彈箭飛行仿真系統(tǒng)由Windows + RTX實(shí)時(shí)控制系統(tǒng)和光纖反射內(nèi)存網(wǎng)絡(luò)兩大部分組成,Windows + RTX實(shí)時(shí)系統(tǒng)主要是實(shí)現(xiàn)各個(gè)設(shè)備之間的實(shí)時(shí)控制和通訊,而光纖反射內(nèi)存網(wǎng)絡(luò)是實(shí)現(xiàn)在實(shí)時(shí)控制和通訊過(guò)程中的準(zhǔn)確性和穩(wěn)定性的保證。
3.1.1 RTX和Windows通訊對(duì)比
彈箭飛行仿真系統(tǒng)的各個(gè)設(shè)備之間控制和通訊,主要是在RTX實(shí)時(shí)系統(tǒng)下完成的,如圖4和圖5是分別在Windows下和RTX下進(jìn)行通信的傳輸速率及傳輸時(shí)間。在相同的電腦上,同時(shí)進(jìn)行Win32和RTX測(cè)試,可以發(fā)現(xiàn)RTX數(shù)據(jù)傳輸速率可以達(dá)到11.5 MB/s左右,而Win32下只有1.7 MB/s左右,RTX下傳輸速率大約是Win32的6.7倍;傳輸過(guò)程中反應(yīng)時(shí)間在Win32下Minimum Time=489 μs,Maximum Time=1 797 μs,而在RTX下Minimum Time=158 μs,Maximum Time=580 μs,傳輸過(guò)程中的時(shí)間遠(yuǎn)小于Win32下,足以證明RTX系統(tǒng)相比于Windows系統(tǒng)具有更好的實(shí)時(shí)性。
圖4 Windows下網(wǎng)絡(luò)傳輸速率及時(shí)間圖
圖5 RTX下網(wǎng)絡(luò)傳輸速率及時(shí)間圖
3.1.2 實(shí)時(shí)控制系統(tǒng)方案設(shè)計(jì)
整個(gè)彈箭半實(shí)物仿真平臺(tái)的實(shí)時(shí)控制系統(tǒng)由Windows和RTX進(jìn)程兩大部分組成[10],整個(gè)系統(tǒng)的整體架構(gòu)圖如圖6所示。
圖6 實(shí)時(shí)控制系統(tǒng)的架構(gòu)圖
從圖6 可知Win32和RTX是通過(guò)共享內(nèi)存進(jìn)行通信。如圖7所示,采用VC++編寫的共享內(nèi)存程序的Win32界面,經(jīng)過(guò)測(cè)試可以實(shí)現(xiàn)共享內(nèi)存的調(diào)用和回收,能夠滿足Windows和RTX程序的連接及信息的傳遞。如圖8所示,顯示出RTX程序下共享內(nèi)存的建立過(guò)程。
圖7 共享內(nèi)存Win32操作界面圖
圖8 RTX下共享內(nèi)存創(chuàng)建圖
3.1.3 實(shí)時(shí)控制系統(tǒng)接口程序設(shè)計(jì)
對(duì)本系統(tǒng)中實(shí)時(shí)控制系統(tǒng)的接口程序進(jìn)行了設(shè)計(jì)和測(cè)試,其中包括RTX下的PCI總線接口、普通的通信和接收數(shù)據(jù)的串口和并口及MOXA的4 口RS-232 通用 PCI 多串口通訊卡、API 接口的VC++6.0程序的編寫和測(cè)試,通過(guò)對(duì)編寫程序的測(cè)試,可以實(shí)現(xiàn)接口在RTX下實(shí)時(shí)的開關(guān)及數(shù)據(jù)的實(shí)時(shí)傳輸。如圖9~圖11是各個(gè)接口的測(cè)試圖。由于在該系統(tǒng)中工控機(jī)自帶單串口,傳輸速率達(dá)不到實(shí)時(shí)系統(tǒng)串口通訊的速率921.6 kbit/s,滿足不了兩個(gè)分系統(tǒng)之間數(shù)據(jù)的快速傳輸與實(shí)時(shí)通訊的需求,因此本系統(tǒng)外插入了MOXA CP-104UL V2的多串口卡,可以支持4個(gè)接口進(jìn)行實(shí)時(shí)數(shù)據(jù)交換,從而達(dá)到所需要的實(shí)時(shí)性。
圖9 RTX下PCI總線接口測(cè)試圖
圖10 單串口、并口及API接口測(cè)試圖
3.2.1 反射內(nèi)存板卡傳輸速率及工作流程
本系統(tǒng)采用通用電氣公司的VMICPCIE5565反射內(nèi)存卡構(gòu)建拓?fù)浣Y(jié)構(gòu)網(wǎng)絡(luò)。經(jīng)過(guò)反射內(nèi)存卡測(cè)試程序?qū)?shù)據(jù)傳輸速率進(jìn)行了測(cè)試,可以得到連續(xù)接收和發(fā)送數(shù)據(jù)85 082 MB,該板卡組成的網(wǎng)絡(luò)穩(wěn)定傳輸數(shù)據(jù)的速率可以達(dá)到153 MB/s,而且經(jīng)過(guò)測(cè)試在高速數(shù)據(jù)傳輸過(guò)程中,沒有數(shù)據(jù)的丟失,可以滿足彈箭飛行系統(tǒng)的數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性要求,測(cè)試圖如圖12所示。圖13準(zhǔn)確的反應(yīng)了光纖內(nèi)存反射內(nèi)存板卡的整個(gè)工作流程圖,其采用的是中斷式通訊,其主要特點(diǎn)是發(fā)送方和接收方通過(guò)事件進(jìn)行同步,CPU占用少;發(fā)送方可以向多個(gè)指定的接收方發(fā)送數(shù)據(jù),即1→n方式,也可以采用UDP廣播的方式。
圖12 反射內(nèi)存卡速度測(cè)試圖
圖13 光纖反射板卡通訊流程
3.2.2 RTX下反射內(nèi)存板卡程序設(shè)計(jì)及測(cè)試
本系統(tǒng)將反射內(nèi)存板卡在RTX子程序下運(yùn)行,如圖14所示的VMI-PCI-5565板卡進(jìn)行數(shù)據(jù)傳輸測(cè)試的界面,其可以實(shí)現(xiàn)數(shù)據(jù)連續(xù)實(shí)時(shí)的傳輸,傳輸過(guò)程中沒有出現(xiàn)數(shù)據(jù)的丟失,延時(shí)時(shí)間在1 μs左右,可以實(shí)現(xiàn)彈箭飛行仿真系統(tǒng)的實(shí)時(shí)性要求。
圖14 RTX下光纖反射內(nèi)存卡程序測(cè)試圖
本次試驗(yàn),通過(guò)運(yùn)行Win32界面,在RTX下運(yùn)行實(shí)時(shí)系統(tǒng),進(jìn)行飛行姿態(tài)的測(cè)試和飛行軌跡的測(cè)試,其測(cè)試結(jié)果如圖15和圖16所示。經(jīng)過(guò)測(cè)試,通訊命令和通訊數(shù)據(jù)能夠滿足彈箭飛行仿真系統(tǒng)的實(shí)時(shí)性、準(zhǔn)確性和穩(wěn)定性的要求。
圖15 飛行轉(zhuǎn)臺(tái)姿態(tài)試驗(yàn)圖
圖16 GNSS衛(wèi)星信號(hào)模擬器試驗(yàn)圖
文中將Windows良好的人機(jī)交互性和RTX高效實(shí)時(shí)性結(jié)合起來(lái)建立實(shí)時(shí)控制系統(tǒng),并通過(guò)反射內(nèi)存網(wǎng)絡(luò)的設(shè)計(jì),實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)和準(zhǔn)確傳輸,該設(shè)計(jì)系統(tǒng)具有較好通用性和靈活性,可實(shí)現(xiàn)彈箭飛行仿真的實(shí)時(shí)通訊和控制要求。通過(guò)對(duì)整個(gè)系統(tǒng)進(jìn)程進(jìn)行試驗(yàn)測(cè)試,取得了大量的飛行參數(shù)和數(shù)據(jù),試驗(yàn)結(jié)果為以后進(jìn)行某型號(hào)導(dǎo)彈的研究提供了參考。