基于VBScript的遥测数据处理技术研究
2015-07-28王利伟刘春光
王利伟 刘春光
摘 要: 飞行器的遥测数据帧格式随型号、批次而不同,给遥测数据处理带来很大不便。利用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.