飛機(jī)任務(wù)計(jì)算機(jī)模擬器的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于飛機(jī)航電系統(tǒng)仿真領(lǐng)域。
【背景技術(shù)】
[0002] 航空電子綜合系統(tǒng)(簡(jiǎn)稱航電系統(tǒng))是現(xiàn)代作高性能的航電系統(tǒng)就沒(méi)有高性能的 戰(zhàn)斗機(jī)。任務(wù)計(jì)算機(jī)是飛機(jī)航電系統(tǒng)的重要成件設(shè)備之一,主要承擔(dān)航電系統(tǒng)任務(wù)執(zhí)行、數(shù) 據(jù)傳輸控制和邏輯調(diào)度等功能。
[0003] 由于航電系統(tǒng)使用于惡劣的環(huán)境,所以確保航電系統(tǒng)設(shè)備功能的完備性以及性能 的可靠性是航電系統(tǒng)研制過(guò)程中最核心的任務(wù)。因此,在航電系統(tǒng)研制的過(guò)程中,必須在地 面進(jìn)行各種仿真試驗(yàn),以驗(yàn)證整個(gè)航電系統(tǒng)功能是否正確、完備,性能是否達(dá)標(biāo),為以后的 試飛試驗(yàn)提供必要的依據(jù);其次,各個(gè)航電設(shè)備在研制過(guò)程中通常都需要其他設(shè)備的支持 才能保證該設(shè)備的正確、可靠,而飛機(jī)的研制需要各個(gè)航電設(shè)備成件都要同步研制,這樣往 往造成整個(gè)航電系統(tǒng)或者某個(gè)設(shè)備的研制缺少其他的某個(gè)(些)飛機(jī)成件支持的情況,導(dǎo) 致整個(gè)飛機(jī)的研制無(wú)法順利進(jìn)行。
[0004] 由于任務(wù)計(jì)算機(jī)模擬器是飛機(jī)航電系統(tǒng)的核心控制單元,因此其功能的完整性和 性能的可靠性是飛機(jī)研制過(guò)程中的重中之重。目前,現(xiàn)有的飛機(jī)任務(wù)計(jì)算機(jī)模擬器大多 基于VxWorks和Windows平臺(tái)構(gòu)建,基于VxWorks平臺(tái)的飛機(jī)任務(wù)計(jì)算機(jī)模擬器實(shí)時(shí)性 較好,但是缺乏直觀的顯示模式,使得用戶難以實(shí)時(shí)觀察整個(gè)航電系統(tǒng)的運(yùn)行狀態(tài);基于 Windows平臺(tái)的飛機(jī)任務(wù)計(jì)算機(jī)模擬器具有豐富的顯示界面,便于航電系統(tǒng)的運(yùn)行狀態(tài)顯 示,但是由于受到Windows系統(tǒng)自身性能的影響使得其運(yùn)行過(guò)程中的實(shí)時(shí)性難以保障,因 此飛機(jī)任務(wù)計(jì)算機(jī)模擬器已經(jīng)成為飛機(jī)航電系統(tǒng)仿真和調(diào)試過(guò)程中的瓶頸問(wèn)題。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明是為了解決現(xiàn)有任務(wù)計(jì)算機(jī)模擬器的實(shí)時(shí)性差,且實(shí)時(shí)性和運(yùn)行狀態(tài)顯示 難以兼容的問(wèn)題,本發(fā)明提供了一種飛機(jī)任務(wù)計(jì)算機(jī)模擬器。
[0006] 飛機(jī)任務(wù)計(jì)算機(jī)模擬器,所述模擬器采用工控機(jī)實(shí)現(xiàn),采用Windows+RTX機(jī)制嵌 入工控機(jī)內(nèi)作為任務(wù)計(jì)算機(jī)模擬器內(nèi)部架構(gòu),所述內(nèi)部架構(gòu)包括Windows進(jìn)程和RTX進(jìn)程, Windows進(jìn)程和RTX進(jìn)程之間采用共享內(nèi)存通訊機(jī)制和互斥機(jī)制進(jìn)行通訊;
[0007] 共享內(nèi)存通訊機(jī)制,實(shí)現(xiàn)Windows進(jìn)程和RTX進(jìn)程之間通過(guò)共享內(nèi)存進(jìn)行數(shù)據(jù)交 互,且由Windows進(jìn)程負(fù)責(zé)建立共享內(nèi)存,
[0008] 互斥機(jī)制,實(shí)現(xiàn)Windows進(jìn)程和RTX進(jìn)程之間共享內(nèi)存讀寫的互斥操作;
[0009] Windows進(jìn)程,用于實(shí)現(xiàn)任務(wù)計(jì)算機(jī)模擬器的運(yùn)行控制、數(shù)據(jù)顯示、數(shù)據(jù)管理和數(shù) 據(jù)記錄;
[0010] RTX進(jìn)程,用于實(shí)現(xiàn)任務(wù)計(jì)算機(jī)模擬器的任務(wù)執(zhí)行、數(shù)據(jù)傳輸控制和邏輯調(diào)度。
[0011] Windows進(jìn)程和RTX進(jìn)程共享的數(shù)據(jù)基本單位為協(xié)議數(shù)據(jù),共享的數(shù)據(jù)包括:訂購(gòu) 數(shù)據(jù)和發(fā)布數(shù)據(jù),
[0012] 訂購(gòu)數(shù)據(jù),是任務(wù)計(jì)算機(jī)模擬器通過(guò)各種通訊總線接收到的各飛機(jī)成件協(xié)議數(shù)據(jù) 信息,
[0013] 發(fā)布數(shù)據(jù),是任務(wù)計(jì)算機(jī)模擬器通過(guò)各種通訊總線發(fā)送到各飛機(jī)成件的協(xié)議數(shù)據(jù) 信息。
[0014] 所述共享內(nèi)存分為四部分:
[0015] 發(fā)布狀態(tài)區(qū),由發(fā)布協(xié)議的標(biāo)志位組成,用于標(biāo)識(shí)發(fā)布協(xié)議的數(shù)據(jù)更新?tīng)顟B(tài), Windows進(jìn)程更新數(shù)據(jù)后設(shè)置發(fā)布狀態(tài),RTX進(jìn)程檢查發(fā)布狀態(tài)去獲取已經(jīng)更新的發(fā)布協(xié) 議數(shù)據(jù),更新的最小單位為整個(gè)協(xié)議數(shù)據(jù)包;
[0016] 發(fā)布數(shù)據(jù)區(qū),存儲(chǔ)任務(wù)計(jì)算機(jī)模擬器發(fā)布的協(xié)議數(shù)據(jù)信息,在仿真運(yùn)行前確定格 式,其發(fā)布協(xié)議的數(shù)量由規(guī)劃文件中的初始化數(shù)據(jù)確定,
[0017] 訂購(gòu)狀態(tài)區(qū),由訂購(gòu)協(xié)議的標(biāo)志位組成,用于標(biāo)識(shí)訂購(gòu)協(xié)議的數(shù)據(jù)更新?tīng)顟B(tài),訂購(gòu) 狀態(tài)區(qū)由RTX進(jìn)程在更新訂購(gòu)數(shù)據(jù)后置位,Windows進(jìn)程讀取數(shù)據(jù)后置零;
[0018] 訂購(gòu)數(shù)據(jù)區(qū),存儲(chǔ)任務(wù)計(jì)算機(jī)模擬器訂購(gòu)的協(xié)議數(shù)據(jù)信息,在仿真運(yùn)行前確定格 式,其訂購(gòu)協(xié)議的數(shù)量由規(guī)劃文件中的初始化數(shù)據(jù)確定。
[0019] 互斥機(jī)制,實(shí)現(xiàn)Windows進(jìn)程和RTX進(jìn)程之間共享內(nèi)存讀寫的互斥操作的具體過(guò) 程為:
[0020] 在發(fā)布數(shù)據(jù)的情況下,
[0021] 當(dāng)Windows進(jìn)程中維持的協(xié)議數(shù)據(jù)信息有狀態(tài)更新時(shí),首先查詢RTX進(jìn)程是否發(fā) 出釋放共享內(nèi)存發(fā)布數(shù)據(jù)區(qū)事件,
[0022] 結(jié)果為是,則先清除發(fā)布狀態(tài)區(qū)標(biāo)志,重新對(duì)發(fā)布狀態(tài)區(qū)相應(yīng)標(biāo)志置位,更新發(fā)布 數(shù)據(jù)區(qū)相應(yīng)位置的數(shù)據(jù),然后Windows進(jìn)程向RTX進(jìn)程發(fā)出讀取共享內(nèi)存發(fā)布數(shù)據(jù)區(qū)通知 事件,
[0023] 結(jié)果為否,則Windows進(jìn)程在下一個(gè)周期繼續(xù)查詢,
[0024] RTX進(jìn)程始終等待Windows進(jìn)程發(fā)出的讀取共享內(nèi)存發(fā)布數(shù)據(jù)區(qū)通知事件,當(dāng)接 到該事件,則讀取共享內(nèi)存發(fā)布數(shù)據(jù)區(qū)數(shù)據(jù),根據(jù)發(fā)布狀態(tài)區(qū)的相應(yīng)標(biāo)志,提取出狀態(tài)更新 數(shù)據(jù),然后向Windows進(jìn)程發(fā)出釋放共享內(nèi)存區(qū)事件;
[0025] 在訂購(gòu)數(shù)據(jù)的情況下,
[0026] 當(dāng)各飛機(jī)成件向任務(wù)計(jì)算機(jī)模擬器發(fā)送數(shù)據(jù)時(shí),各硬件板卡通過(guò)中斷模式向RTX 進(jìn)程提供協(xié)議數(shù)據(jù),當(dāng)RTX進(jìn)程需要更新訂購(gòu)協(xié)議數(shù)據(jù)時(shí),RTX進(jìn)程首先查詢Windows進(jìn)程 是否發(fā)出釋放共享內(nèi)存訂購(gòu)數(shù)據(jù)區(qū)事件:
[0027] 結(jié)果為是,則先清除訂購(gòu)狀態(tài)區(qū)標(biāo)志,重新對(duì)訂購(gòu)狀態(tài)區(qū)相應(yīng)標(biāo)志置位,更新訂購(gòu) 數(shù)據(jù)區(qū)相應(yīng)位置的數(shù)據(jù),然后RTX進(jìn)程向Windows進(jìn)程發(fā)出讀取共享內(nèi)存訂購(gòu)數(shù)據(jù)區(qū)通知 事件;
[0028] 結(jié)果為否,則RTX進(jìn)程在下一個(gè)周期同步幀繼續(xù)查詢。
[0029] Windows進(jìn)程每個(gè)同步幀都查詢RTX進(jìn)程是否發(fā)出讀取共享內(nèi)存訂購(gòu)數(shù)據(jù)區(qū)通知 事件,如果有該事件發(fā)生,則讀取共享內(nèi)存訂購(gòu)數(shù)據(jù)區(qū)數(shù)據(jù),根據(jù)發(fā)布狀態(tài)區(qū)的相應(yīng)標(biāo)志, 提取出狀態(tài)更新協(xié)議數(shù)據(jù),然后Windows進(jìn)程向RTX進(jìn)程發(fā)出釋放共享內(nèi)存訂購(gòu)數(shù)據(jù)區(qū)事 件。
[0030] 所述Windows進(jìn)程包括主進(jìn)程和輔助進(jìn)程,主進(jìn)程用于更新發(fā)布協(xié)議數(shù)據(jù),輔助 進(jìn)程用于讀取訂購(gòu)協(xié)議數(shù)據(jù),且主進(jìn)程與輔助進(jìn)程同時(shí)進(jìn)行,
[0031] Windows進(jìn)程的具體工作流程如下:
[0032] 任務(wù)計(jì)算機(jī)模擬器啟動(dòng)運(yùn)行后,根據(jù)規(guī)劃文件內(nèi)容建立共享內(nèi)存,初始化共享內(nèi) 存區(qū)數(shù)據(jù),創(chuàng)建訂購(gòu)協(xié)議數(shù)據(jù)查詢線程后,同時(shí)進(jìn)入主進(jìn)程和輔助進(jìn)程;
[0033] 進(jìn)入主進(jìn)程后,啟動(dòng)RTX進(jìn)程,啟動(dòng)仿真,根據(jù)用戶操作指令控制整個(gè)任務(wù)計(jì)算機(jī) 模擬器的運(yùn)行仿真和停止仿真過(guò)程,在仿真運(yùn)行過(guò)程中,當(dāng)需要人工干預(yù)方式進(jìn)行任務(wù)計(jì) 算機(jī)模擬器數(shù)據(jù)注入時(shí),通過(guò)用戶界面輸入發(fā)布數(shù)據(jù)信息,并通過(guò)共享內(nèi)存將待發(fā)布的協(xié) 議數(shù)據(jù)傳遞給RTX進(jìn)程,完成更新發(fā)布協(xié)議數(shù)據(jù)后,再次根據(jù)用戶操作指令控制整個(gè)任務(wù) 計(jì)算機(jī)模擬器的運(yùn)行仿真和停止仿真過(guò)程;
[0034] 進(jìn)入輔助進(jìn)程后,判斷是否更新訂購(gòu)協(xié)議數(shù)據(jù),直到判斷結(jié)果為"是"時(shí),Windows 進(jìn)程在輔助進(jìn)程中等待RTX進(jìn)程發(fā)出的讀取共享內(nèi)存發(fā)布數(shù)據(jù)區(qū)通知事件,獲取共享內(nèi)存 發(fā)布數(shù)據(jù)區(qū)操作權(quán),讀取共享內(nèi)存發(fā)布數(shù)據(jù)區(qū),建立數(shù)據(jù)鏡像,查找要進(jìn)行數(shù)據(jù)更新的訂購(gòu) 協(xié)議數(shù)據(jù),獲取更新了的協(xié)議數(shù)據(jù)信息,更新Windows進(jìn)程自身的數(shù)據(jù)緩沖區(qū),
[0035] 當(dāng)訂購(gòu)協(xié)議數(shù)據(jù)查詢線程更新訂購(gòu)數(shù)據(jù)后,根據(jù)數(shù)據(jù)緩沖區(qū)中的訂購(gòu)協(xié)議信息提 供當(dāng)前任務(wù)計(jì)算機(jī)模擬器狀態(tài)數(shù)據(jù)綜合顯示功能,完成更新數(shù)據(jù)顯示,綜合顯示用于提供 表格和圖形化的數(shù)據(jù)顯示模式;
[0036] 當(dāng)訂購(gòu)協(xié)議數(shù)據(jù)查詢線程更新訂購(gòu)數(shù)據(jù)后,根據(jù)數(shù)據(jù)緩沖區(qū)中的訂購(gòu)協(xié)議信息提 供當(dāng)前任務(wù)計(jì)算機(jī)模擬器狀態(tài)數(shù)據(jù)記錄功能,數(shù)據(jù)記錄以文件方式提供,數(shù)據(jù)文件名稱為 啟動(dòng)任務(wù)計(jì)算機(jī)運(yùn)行的時(shí)間,文件格式為"年_月_日_時(shí)_分_秒",完成數(shù)據(jù)記錄,
[0037] 在數(shù)據(jù)記錄完成后,根據(jù)記錄時(shí)間信息對(duì)數(shù)據(jù)文件進(jìn)行綜合管理,該綜合管理包 括數(shù)據(jù)導(dǎo)入導(dǎo)出、曲線分析和備份,完成數(shù)據(jù)管理。
[0038] 所述RTX進(jìn)程的具體工作流程包括對(duì)發(fā)布協(xié)議的發(fā)送處理和對(duì)訂購(gòu)協(xié)議的接收 處理,
[0039] A:RTX進(jìn)程對(duì)發(fā)布協(xié)議的發(fā)送處理如下:
[0040] RTX進(jìn)程啟動(dòng)運(yùn)行后,打開(kāi)Windows進(jìn)程建立的共享內(nèi)存,初始化各種通訊板卡, 安裝硬件板卡中斷回調(diào)函數(shù),建立協(xié)議數(shù)據(jù)的數(shù)據(jù)緩沖區(qū),創(chuàng)建發(fā)布協(xié)議數(shù)據(jù)查詢線程, 直到查詢到Windows進(jìn)程存在發(fā)布數(shù)據(jù)更新時(shí),RTX進(jìn)程讀取共享內(nèi)存發(fā)布數(shù)據(jù)區(qū)數(shù)據(jù)更 新自身緩沖區(qū);調(diào)