高振江,喬社娟,王 琪
(1.西安航空學(xué)院 能源與建筑學(xué)院,西安710077;2.西安航空學(xué)院 電子工程學(xué)院,西安710077;3.陜西四海測控技術(shù)有限公司 技術(shù)研發(fā)部,西安710075)
高速網(wǎng)絡(luò)技術(shù)在各種研究型工程試驗(yàn)中的廣泛應(yīng)用[1-2],解決了多個(gè)子系統(tǒng)之間的實(shí)時(shí)數(shù)據(jù)共享與交互問題。 飛機(jī)仿真試驗(yàn)對數(shù)據(jù)的實(shí)時(shí)性要求非常高,要求實(shí)時(shí)獲取、處理數(shù)據(jù),確保飛行環(huán)境真實(shí)性。
目前,航空、航天領(lǐng)域中多使用以太網(wǎng)進(jìn)行數(shù)據(jù)交互[3-4],文獻(xiàn)[5-6]分別采用以太網(wǎng)與本地硬盤數(shù)據(jù)管理模式和以太網(wǎng)與SQL Server 數(shù)據(jù)庫管理模式,時(shí)延僅達(dá)毫秒級。 毫秒級的時(shí)延會造成不真實(shí)的飛行環(huán)境和條件;長時(shí)間、高頻次訪問也會造成數(shù)據(jù)庫響應(yīng)延遲增大[7],因此,開發(fā)設(shè)計(jì)一套時(shí)延小、響應(yīng)快、安全可靠的網(wǎng)絡(luò)型數(shù)據(jù)庫管理系統(tǒng)非常重要。
本文采用時(shí)延僅400 ns 的GE PCI-5565 反射內(nèi)存卡構(gòu)建數(shù)據(jù)共享型實(shí)時(shí)網(wǎng)絡(luò),采用Oracle 數(shù)據(jù)庫存儲各子系統(tǒng)的實(shí)時(shí)數(shù)據(jù),中央控制中心系統(tǒng)實(shí)現(xiàn)歷史數(shù)據(jù)同步快速回放,在不影響各子系統(tǒng)試驗(yàn)狀態(tài)的前提下,提高了飛行機(jī)動性,保證了飛機(jī)飛行環(huán)境的真實(shí)性。
飛機(jī)仿真試驗(yàn)是一種綜合性試驗(yàn), 主要由飛控、液壓、溫度等子系統(tǒng)提供飛行環(huán)境數(shù)據(jù),經(jīng)仿真子系統(tǒng)對應(yīng)算法運(yùn)算后, 將結(jié)果數(shù)據(jù)提供給加載、頻響、能源、視頻監(jiān)視等子系統(tǒng)。 一方面要求整個(gè)系統(tǒng)之間必須實(shí)現(xiàn)無縫連接,確保在數(shù)據(jù)交互、模式轉(zhuǎn)換、接口匹配和數(shù)據(jù)管理等方面達(dá)到最高的兼容性;另一方面要求高速響應(yīng)實(shí)時(shí)傳輸數(shù)據(jù)、快速運(yùn)算仿真數(shù)據(jù),以保證對當(dāng)前飛行狀態(tài)做出定量定性分析,對當(dāng)前飛行環(huán)境做出真實(shí)確切判斷,從而確保進(jìn)一步的飛行動作;同時(shí)對于過程較長的復(fù)雜試驗(yàn)需要將多個(gè)子系統(tǒng)同一時(shí)刻的歷史數(shù)據(jù)按照同一時(shí)間軸回放,分析決策下一步動作。 因此,飛機(jī)仿真數(shù)據(jù)管理是整個(gè)試驗(yàn)運(yùn)行效率和飛行品質(zhì)的關(guān)鍵技術(shù)所在。 本次設(shè)計(jì)選用時(shí)延400 ns 的反射內(nèi)存卡構(gòu)建網(wǎng)絡(luò)結(jié)構(gòu)、安全快速的Oracle 數(shù)據(jù)庫存儲管理多個(gè)系統(tǒng)的實(shí)時(shí)數(shù)據(jù)、中央控制中心系統(tǒng)整體協(xié)調(diào)同步規(guī)劃試驗(yàn)與同步回放多系統(tǒng)同一時(shí)刻的海量數(shù)據(jù)。
試驗(yàn)對象是1∶1 大型飛機(jī)模型, 各測控系統(tǒng)分散布置在模型周圍,相隔距離小于200 m,飛控、液壓、溫度試驗(yàn)是非常重要的原理性試驗(yàn),為了防止某個(gè)節(jié)點(diǎn)出現(xiàn)故障影響整個(gè)網(wǎng)絡(luò),整個(gè)系統(tǒng)采用星形網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),選用專用交換機(jī)和多模光纖進(jìn)行數(shù)據(jù)交互。 數(shù)據(jù)庫系統(tǒng)和中央控制中心系統(tǒng)選用主流高端配置服務(wù)器機(jī)作為高性能工作站,本系統(tǒng)設(shè)計(jì)了23 個(gè)節(jié)點(diǎn),其中,飛控系統(tǒng)3 個(gè)、液壓系統(tǒng)5個(gè)、溫度系統(tǒng)1 個(gè)、仿真系統(tǒng)5 個(gè)、加載系統(tǒng)2 個(gè)、頻響系統(tǒng)2 個(gè)、視頻監(jiān)控2 個(gè)、能源1 個(gè)、數(shù)據(jù)庫系統(tǒng)1 個(gè)、中央控制中心系統(tǒng)1 個(gè),需要4 臺8 口光纖交換機(jī)完成全部組網(wǎng),圖1 所示是基于反射內(nèi)存卡的系統(tǒng)實(shí)時(shí)網(wǎng)絡(luò)結(jié)構(gòu)。
圖1 系統(tǒng)實(shí)時(shí)網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 System real-time network structure
數(shù)據(jù)庫是整個(gè)系統(tǒng)數(shù)據(jù)存儲和管理的核心部分, 不同試驗(yàn)選取的子系統(tǒng)和通道不完全相同,而且靜態(tài)試驗(yàn)和動態(tài)試驗(yàn)的采樣率也不盡相同,因此數(shù)據(jù)庫設(shè)計(jì)需要滿足以下要求:
完整性和實(shí)時(shí)性要求數(shù)據(jù)庫在獲取試驗(yàn)數(shù)據(jù)的同時(shí),具有快速響應(yīng)存儲和查詢;
同步性特性分析需要將各個(gè)子系統(tǒng)同一時(shí)刻的數(shù)據(jù)顯示在同一時(shí)間軸進(jìn)行數(shù)據(jù)回放,保證還原試驗(yàn)過程中綜合狀態(tài)于環(huán)境等因素的真實(shí)性,各種數(shù)據(jù)表需要帶有同步性時(shí)標(biāo);
綜合性和模塊化試驗(yàn)種類繁多,單個(gè)子系統(tǒng)通道多達(dá)256 路,每個(gè)通道具有測量類型、濾波、增益、隔離等多種配置方式,既要將各個(gè)試驗(yàn)項(xiàng)目集中管理,又要將各個(gè)子系統(tǒng)的試驗(yàn)配置、通道配置與試驗(yàn)數(shù)據(jù)單獨(dú)模塊化管理。
擴(kuò)展性針對大型飛機(jī)研發(fā)項(xiàng)目的不斷更新,要求本數(shù)據(jù)庫采用分布式設(shè)計(jì)、 最小化共享資源,能夠并行增加或刪減內(nèi)容。
針對以上需求和反射內(nèi)存卡信息共享型的網(wǎng)絡(luò)結(jié)構(gòu)特點(diǎn), 本系統(tǒng)在安全實(shí)時(shí)的Linux 環(huán)境下采用Oracle 數(shù)據(jù)庫建立分布式模塊化數(shù)據(jù)存儲與管理系統(tǒng)。 飛機(jī)仿真試驗(yàn)的多樣性,子系統(tǒng)試驗(yàn)配置參數(shù)、通道配置參數(shù)與試驗(yàn)數(shù)據(jù)通過反射內(nèi)存網(wǎng)將數(shù)據(jù)共享給數(shù)據(jù)庫,本數(shù)據(jù)庫系統(tǒng)按照模型關(guān)系和結(jié)構(gòu)層次設(shè)計(jì)多種數(shù)據(jù)表,為了保證數(shù)據(jù)不被任意篡改設(shè)計(jì)用戶信息權(quán)限管理表,表1 是數(shù)據(jù)庫設(shè)計(jì)的主要數(shù)據(jù)表。
表1 數(shù)據(jù)庫設(shè)計(jì)的主要數(shù)據(jù)表Tab.1 Main data tables of database design
數(shù)據(jù)庫中各表信息采用分布式層次設(shè)計(jì),各表須同步,如某次沖擊試驗(yàn)的子系統(tǒng)選取、子系統(tǒng)試驗(yàn)配置與通道配置、 子系統(tǒng)數(shù)據(jù)均需保持一致性,因此,每個(gè)試驗(yàn)的相關(guān)信息都需帶有時(shí)標(biāo),同時(shí)帶有試驗(yàn)啟動、停止時(shí)標(biāo)。 同一試驗(yàn)反復(fù)多次進(jìn)行方可得到普遍性結(jié)論,高頻動態(tài)試驗(yàn)數(shù)據(jù)量大、存儲頻率高,本文重點(diǎn)闡述試驗(yàn)項(xiàng)目管理表和各子系統(tǒng)數(shù)據(jù)表的結(jié)構(gòu)。 實(shí)現(xiàn)由中央控制中心系統(tǒng)單獨(dú)完成試驗(yàn)過程中海量數(shù)據(jù)回放, 確保系統(tǒng)分工合理、性能最佳。
項(xiàng)目管理表定義了36 個(gè)字段,包括22 子系統(tǒng)選取、試驗(yàn)名稱、啟停標(biāo)識、啟動時(shí)標(biāo)、停止時(shí)標(biāo)、操作者、環(huán)境等信息,項(xiàng)目操作由中央控制中心系統(tǒng)統(tǒng)一管理,由于仿真試驗(yàn)類型較多,試驗(yàn)中各子系統(tǒng)以及子系統(tǒng)配置不同,為避免同一試驗(yàn)中各個(gè)子系統(tǒng)可能提前結(jié)束或者異常終止影響整個(gè)試驗(yàn)進(jìn)行, 表設(shè)計(jì)時(shí)采用試驗(yàn)名稱和啟動時(shí)標(biāo)作為主鍵,縮短檢索時(shí)間。
各系統(tǒng)數(shù)據(jù)表采用相同結(jié)構(gòu), 方便批量操作,如加載1 數(shù)據(jù)表定義了5 個(gè)字段, 主要包含時(shí)標(biāo)、系統(tǒng)狀態(tài)、傳輸數(shù)據(jù)序號、通道批數(shù)據(jù)、備注。 查詢數(shù)據(jù)時(shí)首先通過試驗(yàn)名稱和啟動時(shí)標(biāo)查詢相應(yīng)配置表,根據(jù)加載1 通道配置表中的通道選擇情況分解對應(yīng)通道數(shù)據(jù), 對于沖擊振動試驗(yàn)數(shù)據(jù)量很大,所有數(shù)據(jù)統(tǒng)一存儲為int32 類型,double 型數(shù)據(jù)轉(zhuǎn)換為int32 型數(shù)據(jù)的系數(shù)存儲于每個(gè)子系統(tǒng)試驗(yàn)配置表中,節(jié)省存儲空間和傳輸時(shí)間,提高反射內(nèi)存網(wǎng)和數(shù)據(jù)庫的利用率。
隨著數(shù)據(jù)庫在大型系統(tǒng)中的廣泛應(yīng)用,數(shù)據(jù)庫的實(shí)時(shí)性要求越來越高,一般從硬件和軟件兩方面解決[8-9]。
硬件方面本系統(tǒng)選用反射內(nèi)存卡和多模光纖組建分布式共享型網(wǎng)絡(luò), 從數(shù)據(jù)寫入RAM 到其它節(jié)點(diǎn)的時(shí)延只有400 ns,各節(jié)點(diǎn)數(shù)據(jù)完全一致,反射內(nèi)存卡通過向每個(gè)節(jié)點(diǎn)提供一套相同的數(shù)據(jù)備份,各節(jié)點(diǎn)可以并發(fā)訪問相同內(nèi)容,也可以訪問組網(wǎng)內(nèi)任意其他節(jié)點(diǎn)內(nèi)存數(shù)據(jù),與訪問自身內(nèi)存數(shù)據(jù)沒有差別。 反射內(nèi)存卡的數(shù)據(jù)傳輸速率高,沒有以太網(wǎng)的多層協(xié)議,峰值傳輸速率43 MB/s~174 MB/s,而且無需開發(fā)額外通信軟件, 通信開放透明,大大提高了傳輸速率、避免了網(wǎng)絡(luò)堵塞、節(jié)省了軟件開發(fā)。
軟件方面在安全、 高效的Linux 環(huán)境下選用ORACLE 數(shù)據(jù)庫,此數(shù)據(jù)庫是一款可調(diào)性較強(qiáng)的復(fù)雜軟件[10]。數(shù)據(jù)庫的性能既取決于設(shè)計(jì)結(jié)構(gòu),又取決于存儲和查詢優(yōu)化(如CBO(Cost Based Optimizer)、SQL 語句解析優(yōu)化)[11-12]。 本數(shù)據(jù)庫系統(tǒng)結(jié)合飛機(jī)仿真試驗(yàn)多而繁的特點(diǎn),采用分布式、模塊化、層次性結(jié)構(gòu)設(shè)計(jì),通過試驗(yàn)啟停標(biāo)識(Test_startstop)與傳輸數(shù)據(jù)序列(Data_id)字段判斷數(shù)據(jù)更新,從對應(yīng)節(jié)點(diǎn)內(nèi)存獲取批量數(shù)據(jù)保存在對應(yīng)子系統(tǒng)通道批數(shù)據(jù)(Channels_data)字段中。在CBO 優(yōu)化模式下通過優(yōu)化器參數(shù)optimizer_mode 控制ORACLE 優(yōu)化器生成不同模式下的執(zhí)行計(jì)劃[13-14],本數(shù)據(jù)庫系統(tǒng)采用ALL_ROWS 模式以最快的速度將SQL 執(zhí)行完畢,返回全部結(jié)果集, 可以通過下面語句修改optimizer_mode:
alter system set optimizer_mode=all_rows scope=both。
試驗(yàn)過程中多系統(tǒng)海量數(shù)據(jù)同步回放和試驗(yàn)后期數(shù)據(jù)分析是試驗(yàn)結(jié)論或試驗(yàn)改進(jìn)的一個(gè)重要環(huán)節(jié),因此,查詢工作是本數(shù)據(jù)庫系統(tǒng)的又一個(gè)重要操作, 原本的SOL 語句消耗數(shù)據(jù)庫資源高達(dá)90%,實(shí)時(shí)查詢技術(shù)的關(guān)鍵在于SQL 語句優(yōu)化[15],中央控制中心系統(tǒng)對數(shù)據(jù)庫查詢設(shè)計(jì)使用的優(yōu)化方式主要為以下幾點(diǎn):
首先,縮小海量數(shù)據(jù)查詢范圍。 不使用‘*’的SELECT 語句,避免全表遍歷。 根據(jù)多個(gè)條件字段逐層準(zhǔn)確定位,使用一個(gè)或多個(gè)字段限定條件;
其次,在ORACLE 中選擇軟解析過程。 通過綁定變量重復(fù)提交相同的SQL 語句,降低了硬解析所消耗的CPU 和重要latch 資源;
再次,盡量少嵌套子查詢。 嵌套子查詢會消耗大量CPU 資源,對于較多or 運(yùn)算的查詢分成用union all 聯(lián)結(jié)起來的多個(gè)查詢;
最后,盡量多用commit 語句提交事務(wù)。 即使釋放資源、解鎖、釋放日志空間、減少管理消耗,同時(shí)應(yīng)減少大事務(wù)查詢操作。
如:查詢試驗(yàn)名稱(Test_name)為“Vibrate”的某次試驗(yàn)數(shù)據(jù),可將名稱都為“Vibrate”以及對應(yīng)的操作者、啟停時(shí)間等相關(guān)信息查詢列示出,后臺根據(jù)時(shí)標(biāo)的唯一性查詢加載1 參數(shù)配置表得出試驗(yàn)選取通道ID 及通道數(shù)目, 再批量獲取所需時(shí)間段內(nèi)的數(shù)據(jù)。 所用語句如下:
sprintf(cTestName,“Vibrate”);
select Operater,Start_time,Stop_time from TestManage where Test_name = cTestName;
select Data from LoadData1 where Time_flag >= Start_time and Time_flag <= Stop_time;
通過綁定變量模塊化逐層查詢,數(shù)據(jù)庫返回10 min 內(nèi)的加載1 采樣率為10 kHz 的64 路通道數(shù)據(jù)(1500 MB),僅耗時(shí)2.46 s。
飛機(jī)仿真試驗(yàn)過程中根據(jù)前期試驗(yàn)數(shù)據(jù)分析情況決策后續(xù)試驗(yàn)操作,本系統(tǒng)設(shè)計(jì)中央控制中心系統(tǒng)與數(shù)據(jù)庫并行管理整個(gè)系統(tǒng)運(yùn)行。 如圖2 所示是管理層功能。
大量數(shù)據(jù)顯示幾乎消耗全部CPU,將數(shù)據(jù)多系統(tǒng)的數(shù)據(jù)回放從子系統(tǒng)中獨(dú)立在中央控制中心系統(tǒng)有兩方面的優(yōu)勢: ①降低了子系統(tǒng)運(yùn)行負(fù)擔(dān),避免了回放數(shù)據(jù)異常時(shí)導(dǎo)致子系統(tǒng)運(yùn)行中斷情況發(fā)生;②可以將多個(gè)子系統(tǒng)同時(shí)刻數(shù)據(jù)在同一坐標(biāo)軸中綜合分析。
圖2 管理層功能圖Fig.2 Management function diagram
本數(shù)據(jù)庫系統(tǒng)和中央控制中心系統(tǒng)均選用專用圖形設(shè)計(jì)工作站HP Z840 作為主機(jī)、 采用GE PCI-5565PIORC 反射內(nèi)存卡和ACC-5595-208 交換機(jī)組建數(shù)據(jù)共享性高效分布式數(shù)據(jù)庫網(wǎng)絡(luò)。 數(shù)據(jù)庫系統(tǒng)采用ORACLE 11g R2 平臺, 中央控制中心系統(tǒng)使用測控領(lǐng)域成熟的LabWindows CVI 2014,系統(tǒng)之間通過數(shù)據(jù)交換傳遞信息。
本文建立了一種基于反射內(nèi)存網(wǎng)的飛機(jī)仿真試驗(yàn)ORACLE 數(shù)據(jù)庫系統(tǒng),針對飛機(jī)仿真試驗(yàn)子系統(tǒng)繁雜的特點(diǎn),介紹了系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì),描述了數(shù)據(jù)庫結(jié)構(gòu),利用響應(yīng)速度快的反射內(nèi)存網(wǎng)達(dá)到了多系統(tǒng)之間的數(shù)據(jù)交互的實(shí)時(shí)性要求, 采用ORACLE 數(shù)據(jù)庫系統(tǒng)和中央控制中心系統(tǒng)實(shí)現(xiàn)了實(shí)時(shí)存儲、管理、維護(hù)和試驗(yàn)過程中同時(shí)刻海量歷史數(shù)據(jù)快速回放等功能。 本方案已應(yīng)用在某型飛機(jī)研究設(shè)計(jì)的仿真試驗(yàn)中,試驗(yàn)結(jié)果表明本方案構(gòu)建的實(shí)時(shí)網(wǎng)路系統(tǒng)之間數(shù)據(jù)交互最大時(shí)延為670 ns; 此數(shù)據(jù)庫系統(tǒng)能夠?qū)崟r(shí)存儲、 管理21 個(gè)節(jié)點(diǎn)的試驗(yàn)配置、通道配置與試驗(yàn)數(shù)據(jù),并能在某子系統(tǒng)出現(xiàn)異常時(shí)不影響整個(gè)系統(tǒng)運(yùn)行的情況下保證試驗(yàn)完整進(jìn)行;同時(shí)開發(fā)中央控制中心系統(tǒng),在數(shù)據(jù)庫優(yōu)化查詢的原則下能夠快速回放液壓、溫度、飛控、能源等多系統(tǒng)至少兩小時(shí)以上的歷史數(shù)據(jù),真實(shí)決策飛機(jī)飛行動作,提高飛行的真實(shí)度和飛行機(jī)動性。