高振江,喬社娟,王 琪
(1.西安航空學(xué)院 能源與建筑學(xué)院,西安710077;2.西安航空學(xué)院 電子工程學(xué)院,西安710077;3.陜西四海測控技術(shù)有限公司 技術(shù)研發(fā)部,西安710075)
高速網(wǎng)絡(luò)技術(shù)在各種研究型工程試驗中的廣泛應(yīng)用[1-2],解決了多個子系統(tǒng)之間的實時數(shù)據(jù)共享與交互問題。 飛機仿真試驗對數(shù)據(jù)的實時性要求非常高,要求實時獲取、處理數(shù)據(jù),確保飛行環(huán)境真實性。
目前,航空、航天領(lǐng)域中多使用以太網(wǎng)進行數(shù)據(jù)交互[3-4],文獻[5-6]分別采用以太網(wǎng)與本地硬盤數(shù)據(jù)管理模式和以太網(wǎng)與SQL Server 數(shù)據(jù)庫管理模式,時延僅達毫秒級。 毫秒級的時延會造成不真實的飛行環(huán)境和條件;長時間、高頻次訪問也會造成數(shù)據(jù)庫響應(yīng)延遲增大[7],因此,開發(fā)設(shè)計一套時延小、響應(yīng)快、安全可靠的網(wǎng)絡(luò)型數(shù)據(jù)庫管理系統(tǒng)非常重要。
本文采用時延僅400 ns 的GE PCI-5565 反射內(nèi)存卡構(gòu)建數(shù)據(jù)共享型實時網(wǎng)絡(luò),采用Oracle 數(shù)據(jù)庫存儲各子系統(tǒng)的實時數(shù)據(jù),中央控制中心系統(tǒng)實現(xiàn)歷史數(shù)據(jù)同步快速回放,在不影響各子系統(tǒng)試驗狀態(tài)的前提下,提高了飛行機動性,保證了飛機飛行環(huán)境的真實性。
飛機仿真試驗是一種綜合性試驗, 主要由飛控、液壓、溫度等子系統(tǒng)提供飛行環(huán)境數(shù)據(jù),經(jīng)仿真子系統(tǒng)對應(yīng)算法運算后, 將結(jié)果數(shù)據(jù)提供給加載、頻響、能源、視頻監(jiān)視等子系統(tǒng)。 一方面要求整個系統(tǒng)之間必須實現(xiàn)無縫連接,確保在數(shù)據(jù)交互、模式轉(zhuǎn)換、接口匹配和數(shù)據(jù)管理等方面達到最高的兼容性;另一方面要求高速響應(yīng)實時傳輸數(shù)據(jù)、快速運算仿真數(shù)據(jù),以保證對當前飛行狀態(tài)做出定量定性分析,對當前飛行環(huán)境做出真實確切判斷,從而確保進一步的飛行動作;同時對于過程較長的復(fù)雜試驗需要將多個子系統(tǒng)同一時刻的歷史數(shù)據(jù)按照同一時間軸回放,分析決策下一步動作。 因此,飛機仿真數(shù)據(jù)管理是整個試驗運行效率和飛行品質(zhì)的關(guān)鍵技術(shù)所在。 本次設(shè)計選用時延400 ns 的反射內(nèi)存卡構(gòu)建網(wǎng)絡(luò)結(jié)構(gòu)、安全快速的Oracle 數(shù)據(jù)庫存儲管理多個系統(tǒng)的實時數(shù)據(jù)、中央控制中心系統(tǒng)整體協(xié)調(diào)同步規(guī)劃試驗與同步回放多系統(tǒng)同一時刻的海量數(shù)據(jù)。
試驗對象是1∶1 大型飛機模型, 各測控系統(tǒng)分散布置在模型周圍,相隔距離小于200 m,飛控、液壓、溫度試驗是非常重要的原理性試驗,為了防止某個節(jié)點出現(xiàn)故障影響整個網(wǎng)絡(luò),整個系統(tǒng)采用星形網(wǎng)絡(luò)拓撲結(jié)構(gòu),選用專用交換機和多模光纖進行數(shù)據(jù)交互。 數(shù)據(jù)庫系統(tǒng)和中央控制中心系統(tǒng)選用主流高端配置服務(wù)器機作為高性能工作站,本系統(tǒng)設(shè)計了23 個節(jié)點,其中,飛控系統(tǒng)3 個、液壓系統(tǒng)5個、溫度系統(tǒng)1 個、仿真系統(tǒng)5 個、加載系統(tǒng)2 個、頻響系統(tǒng)2 個、視頻監(jiān)控2 個、能源1 個、數(shù)據(jù)庫系統(tǒng)1 個、中央控制中心系統(tǒng)1 個,需要4 臺8 口光纖交換機完成全部組網(wǎng),圖1 所示是基于反射內(nèi)存卡的系統(tǒng)實時網(wǎng)絡(luò)結(jié)構(gòu)。

圖1 系統(tǒng)實時網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 System real-time network structure
數(shù)據(jù)庫是整個系統(tǒng)數(shù)據(jù)存儲和管理的核心部分, 不同試驗選取的子系統(tǒng)和通道不完全相同,而且靜態(tài)試驗和動態(tài)試驗的采樣率也不盡相同,因此數(shù)據(jù)庫設(shè)計需要滿足以下要求:
完整性和實時性要求數(shù)據(jù)庫在獲取試驗數(shù)據(jù)的同時,具有快速響應(yīng)存儲和查詢;
同步性特性分析需要將各個子系統(tǒng)同一時刻的數(shù)據(jù)顯示在同一時間軸進行數(shù)據(jù)回放,保證還原試驗過程中綜合狀態(tài)于環(huán)境等因素的真實性,各種數(shù)據(jù)表需要帶有同步性時標;
綜合性和模塊化試驗種類繁多,單個子系統(tǒng)通道多達256 路,每個通道具有測量類型、濾波、增益、隔離等多種配置方式,既要將各個試驗項目集中管理,又要將各個子系統(tǒng)的試驗配置、通道配置與試驗數(shù)據(jù)單獨模塊化管理。
擴展性針對大型飛機研發(fā)項目的不斷更新,要求本數(shù)據(jù)庫采用分布式設(shè)計、 最小化共享資源,能夠并行增加或刪減內(nèi)容。
針對以上需求和反射內(nèi)存卡信息共享型的網(wǎng)絡(luò)結(jié)構(gòu)特點, 本系統(tǒng)在安全實時的Linux 環(huán)境下采用Oracle 數(shù)據(jù)庫建立分布式模塊化數(shù)據(jù)存儲與管理系統(tǒng)。 飛機仿真試驗的多樣性,子系統(tǒng)試驗配置參數(shù)、通道配置參數(shù)與試驗數(shù)據(jù)通過反射內(nèi)存網(wǎng)將數(shù)據(jù)共享給數(shù)據(jù)庫,本數(shù)據(jù)庫系統(tǒng)按照模型關(guān)系和結(jié)構(gòu)層次設(shè)計多種數(shù)據(jù)表,為了保證數(shù)據(jù)不被任意篡改設(shè)計用戶信息權(quán)限管理表,表1 是數(shù)據(jù)庫設(shè)計的主要數(shù)據(jù)表。

表1 數(shù)據(jù)庫設(shè)計的主要數(shù)據(jù)表Tab.1 Main data tables of database design
數(shù)據(jù)庫中各表信息采用分布式層次設(shè)計,各表須同步,如某次沖擊試驗的子系統(tǒng)選取、子系統(tǒng)試驗配置與通道配置、 子系統(tǒng)數(shù)據(jù)均需保持一致性,因此,每個試驗的相關(guān)信息都需帶有時標,同時帶有試驗啟動、停止時標。 同一試驗反復(fù)多次進行方可得到普遍性結(jié)論,高頻動態(tài)試驗數(shù)據(jù)量大、存儲頻率高,本文重點闡述試驗項目管理表和各子系統(tǒng)數(shù)據(jù)表的結(jié)構(gòu)。 實現(xiàn)由中央控制中心系統(tǒng)單獨完成試驗過程中海量數(shù)據(jù)回放, 確保系統(tǒng)分工合理、性能最佳。
項目管理表定義了36 個字段,包括22 子系統(tǒng)選取、試驗名稱、啟停標識、啟動時標、停止時標、操作者、環(huán)境等信息,項目操作由中央控制中心系統(tǒng)統(tǒng)一管理,由于仿真試驗類型較多,試驗中各子系統(tǒng)以及子系統(tǒng)配置不同,為避免同一試驗中各個子系統(tǒng)可能提前結(jié)束或者異常終止影響整個試驗進行, 表設(shè)計時采用試驗名稱和啟動時標作為主鍵,縮短檢索時間。
各系統(tǒng)數(shù)據(jù)表采用相同結(jié)構(gòu), 方便批量操作,如加載1 數(shù)據(jù)表定義了5 個字段, 主要包含時標、系統(tǒng)狀態(tài)、傳輸數(shù)據(jù)序號、通道批數(shù)據(jù)、備注。 查詢數(shù)據(jù)時首先通過試驗名稱和啟動時標查詢相應(yīng)配置表,根據(jù)加載1 通道配置表中的通道選擇情況分解對應(yīng)通道數(shù)據(jù), 對于沖擊振動試驗數(shù)據(jù)量很大,所有數(shù)據(jù)統(tǒng)一存儲為int32 類型,double 型數(shù)據(jù)轉(zhuǎn)換為int32 型數(shù)據(jù)的系數(shù)存儲于每個子系統(tǒng)試驗配置表中,節(jié)省存儲空間和傳輸時間,提高反射內(nèi)存網(wǎng)和數(shù)據(jù)庫的利用率。
隨著數(shù)據(jù)庫在大型系統(tǒng)中的廣泛應(yīng)用,數(shù)據(jù)庫的實時性要求越來越高,一般從硬件和軟件兩方面解決[8-9]。
硬件方面本系統(tǒng)選用反射內(nèi)存卡和多模光纖組建分布式共享型網(wǎng)絡(luò), 從數(shù)據(jù)寫入RAM 到其它節(jié)點的時延只有400 ns,各節(jié)點數(shù)據(jù)完全一致,反射內(nèi)存卡通過向每個節(jié)點提供一套相同的數(shù)據(jù)備份,各節(jié)點可以并發(fā)訪問相同內(nèi)容,也可以訪問組網(wǎng)內(nèi)任意其他節(jié)點內(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)性較強的復(fù)雜軟件[10]。數(shù)據(jù)庫的性能既取決于設(shè)計結(jié)構(gòu),又取決于存儲和查詢優(yōu)化(如CBO(Cost Based Optimizer)、SQL 語句解析優(yōu)化)[11-12]。 本數(shù)據(jù)庫系統(tǒng)結(jié)合飛機仿真試驗多而繁的特點,采用分布式、模塊化、層次性結(jié)構(gòu)設(shè)計,通過試驗啟停標識(Test_startstop)與傳輸數(shù)據(jù)序列(Data_id)字段判斷數(shù)據(jù)更新,從對應(yīng)節(jié)點內(nèi)存獲取批量數(shù)據(jù)保存在對應(yīng)子系統(tǒng)通道批數(shù)據(jù)(Channels_data)字段中。在CBO 優(yōu)化模式下通過優(yōu)化器參數(shù)optimizer_mode 控制ORACLE 優(yōu)化器生成不同模式下的執(zhí)行計劃[13-14],本數(shù)據(jù)庫系統(tǒng)采用ALL_ROWS 模式以最快的速度將SQL 執(zhí)行完畢,返回全部結(jié)果集, 可以通過下面語句修改optimizer_mode:
alter system set optimizer_mode=all_rows scope=both。
試驗過程中多系統(tǒng)海量數(shù)據(jù)同步回放和試驗后期數(shù)據(jù)分析是試驗結(jié)論或試驗改進的一個重要環(huán)節(jié),因此,查詢工作是本數(shù)據(jù)庫系統(tǒng)的又一個重要操作, 原本的SOL 語句消耗數(shù)據(jù)庫資源高達90%,實時查詢技術(shù)的關(guān)鍵在于SQL 語句優(yōu)化[15],中央控制中心系統(tǒng)對數(shù)據(jù)庫查詢設(shè)計使用的優(yōu)化方式主要為以下幾點:
首先,縮小海量數(shù)據(jù)查詢范圍。 不使用‘*’的SELECT 語句,避免全表遍歷。 根據(jù)多個條件字段逐層準確定位,使用一個或多個字段限定條件;
其次,在ORACLE 中選擇軟解析過程。 通過綁定變量重復(fù)提交相同的SQL 語句,降低了硬解析所消耗的CPU 和重要latch 資源;
再次,盡量少嵌套子查詢。 嵌套子查詢會消耗大量CPU 資源,對于較多or 運算的查詢分成用union all 聯(lián)結(jié)起來的多個查詢;
最后,盡量多用commit 語句提交事務(wù)。 即使釋放資源、解鎖、釋放日志空間、減少管理消耗,同時應(yīng)減少大事務(wù)查詢操作。
如:查詢試驗名稱(Test_name)為“Vibrate”的某次試驗數(shù)據(jù),可將名稱都為“Vibrate”以及對應(yīng)的操作者、啟停時間等相關(guān)信息查詢列示出,后臺根據(jù)時標的唯一性查詢加載1 參數(shù)配置表得出試驗選取通道ID 及通道數(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),僅耗時2.46 s。
飛機仿真試驗過程中根據(jù)前期試驗數(shù)據(jù)分析情況決策后續(xù)試驗操作,本系統(tǒng)設(shè)計中央控制中心系統(tǒng)與數(shù)據(jù)庫并行管理整個系統(tǒng)運行。 如圖2 所示是管理層功能。
大量數(shù)據(jù)顯示幾乎消耗全部CPU,將數(shù)據(jù)多系統(tǒng)的數(shù)據(jù)回放從子系統(tǒng)中獨立在中央控制中心系統(tǒng)有兩方面的優(yōu)勢: ①降低了子系統(tǒng)運行負擔,避免了回放數(shù)據(jù)異常時導(dǎo)致子系統(tǒng)運行中斷情況發(fā)生;②可以將多個子系統(tǒng)同時刻數(shù)據(jù)在同一坐標軸中綜合分析。

圖2 管理層功能圖Fig.2 Management function diagram
本數(shù)據(jù)庫系統(tǒng)和中央控制中心系統(tǒng)均選用專用圖形設(shè)計工作站HP Z840 作為主機、 采用GE PCI-5565PIORC 反射內(nèi)存卡和ACC-5595-208 交換機組建數(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)的飛機仿真試驗ORACLE 數(shù)據(jù)庫系統(tǒng),針對飛機仿真試驗子系統(tǒng)繁雜的特點,介紹了系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計,描述了數(shù)據(jù)庫結(jié)構(gòu),利用響應(yīng)速度快的反射內(nèi)存網(wǎng)達到了多系統(tǒng)之間的數(shù)據(jù)交互的實時性要求, 采用ORACLE 數(shù)據(jù)庫系統(tǒng)和中央控制中心系統(tǒng)實現(xiàn)了實時存儲、管理、維護和試驗過程中同時刻海量歷史數(shù)據(jù)快速回放等功能。 本方案已應(yīng)用在某型飛機研究設(shè)計的仿真試驗中,試驗結(jié)果表明本方案構(gòu)建的實時網(wǎng)路系統(tǒng)之間數(shù)據(jù)交互最大時延為670 ns; 此數(shù)據(jù)庫系統(tǒng)能夠?qū)崟r存儲、 管理21 個節(jié)點的試驗配置、通道配置與試驗數(shù)據(jù),并能在某子系統(tǒng)出現(xiàn)異常時不影響整個系統(tǒng)運行的情況下保證試驗完整進行;同時開發(fā)中央控制中心系統(tǒng),在數(shù)據(jù)庫優(yōu)化查詢的原則下能夠快速回放液壓、溫度、飛控、能源等多系統(tǒng)至少兩小時以上的歷史數(shù)據(jù),真實決策飛機飛行動作,提高飛行的真實度和飛行機動性。