王利偉 劉春光
摘 要: 飛行器的遙測數據幀格式隨型號、批次而不同,給遙測數據處理帶來很大不便。利用ActiveX Scripting 技術能實現VBScript引擎嵌入到遙測處理程序中,使得遙測處理程序在不修改程序的情況下能夠通過VBScript腳本靈活處理多變的數據幀格式。經應用證明,該技術具有配置靈活、可擴展性強等特點,能夠滿足不同格式遙測數據解析的需要。
關鍵詞: 遙測; 數據處理; VBScript; 幀解析模塊
中圖分類號: TN975?34; V557+.3 文獻標識碼: A 文章編號: 1004?373X(2015)11?0117?02
Research on telemetry data processing technology based on VBScript
WANG Li?wei, LIU Chun?guang
(Detachment of 94, Unit 91550 of PLA, Dalian 116023, China)
Abstract: The frame format of telemetry data for aircraft is different with models and batches, so it is inconvenient for the telemetry data processing. VBScript engine embedded into the telemetry processing program is realized by using ActiveX Scripting technology, with no program modification of the telemetry processing programs, the various data frame formats are processed by VBScript. The application proves that the proposed technology has the advantages of flexible configuration, good extensibility and so on, and can satisfy the demands of analysis for telemetry data in different formats.
Keywords: telemetry; data processing; VBScript; frame analysis module
0 引 言
因飛行器型號不同、批次不同,遙測數據幀格式定義也不盡相同。為處理不同格式的遙測數據幀,或者需要重新編制遙測處理程序,或者需要修改原有程序,因軟件開發測試造成的工作量增加、風險增大,給遙測數據處理工作帶來很大不便。
腳本語言具有強大的描述能力和靈活的語法結構,為應用程序提供腳本支持及進行混合語言開發,是實現可擴展和可定制的有效方案[1]。為改變以上不利局面,設想通過在遙測數據處理程序中引入腳本引擎的方式以達到解決上述問題的目的,并進行了有益的嘗試。
1 ActiveX Scripting技術
腳本語言通過腳本引擎解釋執行,通過在應用程序中嵌入腳本引擎,可以使應用程序解釋執行用戶的程序文本,將它譯成計算機能執行的機器代碼,完成一系列的功能,從而達到應用程序可擴展的目的。ActiveX Scripting技術是Microsoft Automation技術和Script技術結合的產物,是Microsoft ActiveX技術的一個組成部分[2]。利用ActiveX Scripting技術,通過在遙測數據處理軟件中嵌入VBScript引擎,從而在軟件中執行VBScript腳本。
現有的腳本引擎的功能不能滿足需要時,可以通過自定義函數或接口擴展腳本。Microsoft Automation技術以COM(組件對象模型)為基礎,所有的Automation對象都實現了標準的IDispatch接口,通過IDispatch接口暴露自定義的屬性和方法,可以在腳本中使用這些屬性和方法,Automation對象提供事件處理。腳本引擎根據對象的類型信息,把其中對對象屬性和方法的引用解釋為對IDispatch接口成員函數Invoke的調用,從而實現對對象的控制。通過這一機制,可以在遙測數據處理軟件中創建Automation對象,將其屬性和方法暴露給腳本引擎,腳本引擎通過IDispatch接口調用屬性和方法的處理。
2 基于VBScript的遙測數據幀解析技術
2.1 遙測數據幀特點
遙測數據幀的數據定義千差萬別,但其結構一般都包含幀頭、幀標志、幀數據、幀校驗、幀尾(有些遙測數據幀定義中不包含幀校驗)[3],可以用以下形式表示:
其中,
幀數據是按一定格式定義的字段組成,用于表示監測的各個物理量參數,其結構構成和表示的物理量的計算公式差別很大。
遙測數據處理過程中一般要經過主幀分路、幀解析、分析顯示等過程,如圖1所示。主幀分路模塊依據分路配置信息進行分路,分路后的數據幀文件作為幀解析模塊的輸入;幀解析模塊首先依據幀格式定義解析幀結構,之后經過物理量還原得到各個參數的物理量結果,該結果作為分析顯示模塊的輸入。
數據幀字段經解析計算后輸出為表示的物理量的值,這一過程是遙測數據處理中非常重要的步驟。由于要處理的遙測數據幀格式種類多,變化比較大,解析計算字段并輸出物理量參數需要經常修改遙測數據處理軟件。
2.2 基于VBScript的遙測數據幀解析技術
現有的遙測數據處理軟件的幀解析模塊使用VC++開發,為了實現通過VBScript腳本靈活處理遙測數據幀的目的,需要在幀解析模塊中嵌入VBScript腳本引擎。利用ActiveX Scripting技術可以方便地實現在解析模塊中嵌入VBScript引擎,從而在軟件中執行VBScript腳本,需要對幀解析模塊進行如下修改:
(1) 實現回調接口IActiveScriptSite
腳本引擎通過IActiveScript->SetScriptSite()實現回調,從而在程序中取得引擎的狀態信息,并提供用戶的自定義變量的自動化對象。
(2) 創建VBScript引擎對象
使用CoCreateInstance()創建VBScript腳本引擎,獲得該引擎的接口IActiveScript。
(3) 擴展腳本方法
現有的腳本引擎的功能不能滿足需要時,可以通過自定義函數或接口擴展腳本。為計算字段的值并給字段賦值,至少需要擴展字段取原始值和賦計算結果接口,即:
VARIANT GetVal (VARIANT fieldID, VARIANT fieldLen);
//根據字段ID取字段原始值,fieldLen表示字段所占字節數
SetVal (VARIANT fieldID, VARIANT newValue);
//設置字段的計算結果值
如果需要處理非整字節字段(即bit位字段),還需擴展位字段取原始值和賦計算結果的接口函數,與上面的方法類似,不再一一列舉。
(4) 解釋執行用戶代碼
通過IActiveScript->QueryInterface()取得IActiveScriptParse接口,IActiveScriptParse用于解釋執行用戶的腳本代碼。
解析軟件內部主控模塊與腳本引擎的關系如圖2所示。
在遙測程序中嵌入VBScript腳本引擎后,通過VBScript腳本能夠進行復雜的邏輯計算,可以實現很靈活的擴展和配置,在不修改解析模塊代碼的前提下可以實現對不同格式的遙測數據解析。
2.3 應用舉例
例一:計算單字段情況
遙測幀中計算壓力字段是較常見的,下面以計算某壓力字段為例進行說明,該壓力字段幀內ID為1,計算公式如下:
[y=1 000x-200] (1)
式中:[x]為壓力字段的原始值;[y]為該壓力物理量的實際值。
根據公式(1),該壓力字段的VBScript計算腳本為:
dim rawX
dim y
rawX = GetVal(1)
y=1000* rawX -200
SetVal(1,y)
上述腳本中,通過SetVal()函數設置該壓力字段的計算結果后,該結果就可作為分析顯示模塊的輸入。
例二:輸出結果需要多個字段的情況
GPS接收機偽距觀測值的計算需要表1中的字段。
字段“偽距觀測值”并不是在遙測數據幀中的字段,加上該字段的配置是為了輸出最終的“偽距觀測值”這一物理量的需要。
表1 字段表
[字段ID\&字段名稱\&類型\&長度\&備注\&12\&GPS周秒\&double\&4\&\&22\&偽碼相位\&int\&4\&\&125\&偽距觀測值\&double\&\&非幀內字段\&]
偽距觀測值計算公式如下:
[p=(S-λ(1 023 000.0×2 048.0))?c] (2)
式中:[p]為偽距觀測值;[S]為GPS周秒;[λ]為偽碼相位;c為光速[4],取為299 792 458.0。
根據式(2)偽距觀測值的取值腳本如下:
Dim xw=GetValue(22) ‘取偽碼相位字段值
Dim S=GetValue(12) ‘取GPS周秒字段值
Dim p=(S-xw/(1 023 000.0 * 2 048.0))* 299 792 458.0 ‘計算偽距觀測值
SetValue(125,p) ‘向偽距觀測值賦計算結果
實際上字段的計算公式比較復雜且格式多,利用VBScript腳本計算不常見公式的字段值大大提高了遙測幀數據處理時的靈活性。
3 結 語
由于工程應用中面對的飛行器型號多遙測數據幀格式多變,要編制一個通用的遙測數據解析軟件存在較大難度,本文在遙測數據幀解析的通用性方面做了有益的嘗試。由于將VBScript引擎嵌入到解析模塊,從而可以利用VBScript的靈活性實現對不同遙測幀格式的處理,無需修改解析模塊源代碼。經過應用證明,該技術具有配置靈活、可擴展性強等特點,能夠滿足不同格式遙測數據解析的需要。
參考文獻
[1] OUSTERHOUT J K. Scripting: higher level programming for the 21st century [J]. IEEE Computer, 1998, 31(3): 23?30.
[2] 呂思偉,潘愛民.ActiveX Scripting技術介紹[J].微電腦世界, 1999(1):1?3.
[3] 展勇忠,柯朝祥,舒海濤.靶場試驗遙測數據實時處理軟件技術[J].國防技術基礎,2007(11):52?56.
[4] 熊志昂.GPS技術與工程應用[M].北京:國防工業出版社,2005.
[5] 羅振貴,鄭永秋,李圣昆.固態記錄器在遙測數據回收中的應用研究[J].現代電子技術,2013,36(7):111?114.
[6] 常樹龍.空空導彈遙測數據三維實時顯示系統設計與實現[J].現代電子技術,2010,33(4):64?66.