(92124部队 大连 116023)
在飞行器飞行测试中,遥测数据处理是测控系统的重要组成部分,其结果数据是分析和检验飞行器飞行状态和各系统工作性能的重要依据[1]。发动机等部位会安装温度传感器用于监测舱室温度,这些温度参数对监测飞行器的状态非常重要。温度参数数据一般包含在遥测数据中通过遥测系统传输到地面接收设备中。由于温度传感器的输出电压与真实的温度值之间的函数关系是一个分段函数[2],给参数处理带来不便。以往的做法是每次针对温度传感器的分段函数修改相应的遥测处理软件代码。而修改遥测处理软件要求修改的人员专业性比较强,参数处理人员不具备这一能力;软件修改后需要重新编译、测试没问题后再发布给使用人员,这种修改模式不能在测试处理的现场修改,灵活性不强,迫切需要一种能灵活处理温度传感器参数数据的方法[3]。
徐振涛在研究温度传感器时将温度感应电路的输出分段线性化,得到的温度与输出信号的关系是分段函数[3]。在工程应用中,也采用类似方式将温度传感器的输出电压与温度之间的函数关系表示为一个分段函数,用公式表示为
其中T为温度测量值,ULi、UHi分别为第i个电压分段区间的下限和上限;ai、bi为变换系数中斜率和截距,n为段数。
每个温度传感器在使用前会进行严格的测试,标校出其处理式(1)中对应的ULi、UHi、ai、bi及段数n。根据工程应用经验,对于不同的温度传感器,其处理公式中ULi、UHi、ai、bi及段数n不同;同一温度传感器在不同时间内标校的处理公式也不同。在一次飞行测试中,可能会使用多个温度传感器,在不同批次的飞行测试中使用的同一个温度传感器其处理公式中参数也可能不同。这就给温度传感器参数的处理带来了难度。
飞行器测试的遥测数据处理流程如图1所示,地面接收到遥测数据后,首先对数据进行预处理,剔除未接收完全的数据帧;预处理后的数据依据数据协议进行分路(使数据流中各路数据分离的处理就称为分路[4~5]),将各个参数分解为单独的数据文件;之后对每个参数的每个采样点进行配时,形成配时文件;配时完成后依据处理公式对分路的数据文件和配时文件进行物理量还原计算,计算结果以文本文件形式输出。温度传感器参数数据的处理流程跟遥测数据的处理大致相同。
图1 遥测数据处理流程
在还原计算过程中,温度传感器数据还原处理依据式(1)进行。温度传感器处理公式经常变化导致在遥测处理软件中对温度传感器测试数据的处理模块也需要经常变化,以往都是针对每个温度传感器根据其标校的处理公式编写一个处理函数,导致在处理飞行测试数据时需要经常修改处理软件的代码。修改处理软件要求修改的人员专业性比较强,数据处理人员只是处理软件的使用人员,一般情况下不具备这一能力;软件修改后需要重新经过编译、测试通过后,再发布给使用人员。这种修改模式不能在测试处理的现场修改,灵活性不强,迫切需要一种能灵活处理温度传感器参数数据的方法。
JavaScript是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本语言,具有简单性、安全性、动态性、跨平台性优点[6]。JavaScript具有丰富的内置函数,它通过脚本引擎解释执行。利用微软的ActiveX Scripting技术可以实现在应用程序中嵌入和扩展脚本引擎,使应用程序在不被修改的情况下为各种脚本语言所控制[7~10]。嵌入了脚本引擎的应用程序,对于脚本而言就是宿主(Host)程序。
由于JavaScript语言具有相对简单、灵活的优点,采用在遥测处理软件中嵌入JavaScript脚本引擎,在计算温度传感器参数时,参数温度还原计算模块创建并启动脚本引擎,控制脚本引擎读取并装入JavaScript脚本语句,计算模块将原始电压值传递给脚本引擎,脚本引擎计算完温度传感器参数后再将计算结果回传给计算模块,所有的原始值计算完成后计算模块关闭引擎。软件计算模块与脚本引擎的关系如图2所示[11]。
图2 软件计算模块与脚本引擎的关系
微软的ActiveX Scripting技术通过一系列接口能使宿主程序和脚本引擎连接起来,从而可以在宿主程序中动态执行脚本,利用微软的ActiveX Scripting 技术实现脚本计算的过程如下[12~13]:
1)声明并创建脚本引擎对象
CComQIPtr<IActiveScript>pAS; // 声 明脚本引擎对象
pAS.CoCreateInstance(“JavaScript”);// 创 建脚本引擎对象
2)创建解析脚本接口对象
CComQIPtr< IActiveScriptParse > pASP(pAS);
3)设置解析脚本接口对象的宿主
pAS->SetScriptSite(this);
4)初始化解析脚本接口
pASP->InitNew();
5)添加脚本命名,以添加传感器01参数的脚本名为例。
pAS->AddNamedItem(L“Temper01”,SCRIPTITEM_ISVISIBLE|SCRIPTITEM_ISSOURCE);
6)读入脚本并计算脚本
CComBSTR comBstr = ReadFile(Temper01ScriptFile);//读入传感器01参数的脚本
//调用引擎解释运行脚本,计算参数值
hr=pASP->ParseScriptText(comBstr,L“Pack-ageScriptParse”,NULL,NULL,0,0,0,NULL,NULL);
7)关闭脚本引擎
pAS->Close();
宿主程序实现Automation接口,脚本引擎通过宿主程序的Automation接口,可以在动态执行的脚本中访问宿主程序的对象,从而实现计算参数的值传递和计算结果的传出。
在计算温度参数前,事先编辑好计算各个温度参数的脚本文件,并保存为单个脚本文件。在配置中保存温度参数和其对应脚本文件名,宿主程序根据待计算的温度参数匹配脚本文件,在计算开始前读入脚本文件,在计算过程中调用脚本引擎逐点计算温度参数的值,宿主程序将计算结果保存到结果文件中。
温度参数利用式(1)计算温度值的JavaScript脚本的伪代码如下:
计算温度参数的JavaScript脚本调试过程中需要借助宿主程序执行计算过程进行,脚本引擎能够报告脚本的错误信息,宿主程序通过实现IActiveScriptSite的OnScriptError()函数可以捕获到错误信息,宿主程序将这些错误信息显示到界面中可以有效帮助用户排查脚本的错误。
遥测处理软件中采用了JavaScript脚本引擎处理遥测数据中温度参数,可以在不修改处理软件源代码、不重新编译的情况下,仅通过修改JavaScript脚本就能灵活处理不同的温度参数或者公式参数的变动。这一方法具有灵活、适应性强的特点,数据处理人员经过简单培训后就能通过修改和调试JavaScript脚本处理温度参数数据。此方法不仅可以用于温度参数数据的处理,也可以应用于公式复杂多变的其他遥测参数的处理,不足之处是处理速度较慢,对于处理公式简单、公式基本不变的参数不建议采用此方法。