测控设备运行流程远程定制技术研究

2016-01-21 03:39董广然苟茹君
无线电工程 2016年1期

党 琦,董广然,苟茹君,秦 勃

(1.西安卫星测控中心,陕西 西安 710043;

2.航天器在轨故障诊断与维修重点实验室,陕西 西安 710043)



测控设备运行流程远程定制技术研究

党琦1,2,董广然1,苟茹君1,秦勃1,2

(1.西安卫星测控中心,陕西 西安 710043;

2.航天器在轨故障诊断与维修重点实验室,陕西 西安 710043)

摘要针对我国航天测控设备监控软件采用固定的自动化流程,提出了一种远程流程定制的方法,设计了基于Lua的自动化流程架构。通过分析研究设备的自动化流程,对关键技术及脚本执行效率进行了测试验证,结果表明提出的方法可行。Lua脚本和C++语言的效率比在一个量级之内,完全胜任航天测控领域实时任务对测控流程的性能需求。这种方法能减少软件的重复开发,实现对设备的精细化操作。

关键词脚本语言;测控设备;流程定制;自动化运行;Lua

0引言

流程是测控设备自动化运行的核心。我国航天测控设备的自动化运行是固定过程的自动化运行,设备以测控计划为依据,按照时间段划分为若干个自动化运行流程。这种方式在单站跟踪时能够较好地完成任务,但是当需要多站接力测控或需要调整某个自动化运行流程时,就凸现出固定过程的缺陷:

① 多站接力跟踪。测控设备自动按照固定过程运行,完成双捕后自动加上行,这会对前站上行造成影响。此时需要人工对后跟踪的设备进行操作,以降低对前站设备影响的程度。随着发射任务越来越密集,这种方式已经不适应任务要求,严重影响了测控网自动化运行的工作进程。

② 设备自动化运行流程调整。测控资源监控软件由设备研制部门设计开发,自动化流程为固定过程,要对流程进行优化或更改时,需要对所有的测控设备监控分系统软件进行修改和测试,涉及面广、人员工作强度大,工作效率低、影响域大,并且无法满足多种应急预案的实施。

针对上述问题提出了一种基于Lua构建测控设备控制流程引擎的方法,实现测控设备自动化运行流程的动态调整,增强测控设备的适应性。

1Lua

Lua语言小巧、高效,能很好地与C语言一起工作[1,2],属嵌入式脚本语言,它与PHP、Tcl、Perl、JavaScript和Python等不同,支持数据描述机制扩展功能[2],具有以下特点:

① 轻量级。Lua官方版本只包括一个精简的核心和最基本的库,体积小、启动速度快,适合嵌入到别的程序里[3]。

② 可扩展。Lua以简洁的API实现与宿主语言的接口,可通过宿主语言实现许多扩展功能,且在所有操作系统和平台上都可以编译和运行[4]。

③ 配置功能。Lua可以作为普通的配置文件,代替XML和INI等文件,容易理解和维护,并能以函数形式来控制变量等之间的逻辑关系,具有更大的灵活性[5]。

④ Lua具备自动内存管理,提供多线程支持功能。

由此可见,Lua很适合嵌入式流程定制技术中的设备控制语言的设计。

2航天测控设备自动流程分析

测控设备的监控分系统担负着系统内各个设备运行状态监视、工作参数设置、系统配置、自检、测试、标校以及跟踪测控等任务[6]。

正常情况下,监控分系统接收任务中心发送的测控计划,根据计划分解生成单圈次或多圈次的工作流程,包括系统自检、设备标校、转等待点、捕获跟踪和事后处理等[7-9]。系统的基本工作流程如图1所示,其中T0为测控计划中的跟踪开始时间。自动化运行流程一旦中断,后续工作只能通过设备监控客户端手动操作实现。

图1 基于计划驱动的自动化运行流程

3基于Lua的自动化流程架构设计

3.1测控设备自动流程分解

测控设备自动化流程实际上是一种业务流程,可以被定义为一个由各种不同功能的活动组成的一系列相互关联的任务,依照一定的业务逻辑和顺序依次执行,业务流程管理正在迅速成为软件开发获得敏捷性和适应性的重要方法[10]。测控设备任务执行过程的自动化程度取决于系统是否支持流程可定制、可更改和可运行的目标。

现有测控设备的自动化流程相当于一种程序化的流程,一旦流程运行中断,后续的所有工作,都需要操作员在监控客户端以监控命令的方式手动操作。还有,当要对给定的流程进行调整,需要更动监控分系统的程序,影响域比较大,因此考虑采用流程定制的方式,远程对流程进行控制和维护,以增强设备的适应性。

依据前面对测控设备自动化流程的分析,将自动化流程分解为以下6个子流程,如图2所示。

图2 测控设备自动化流程分解

对于∀fi,∃sik与之对应,sik包含OP的一个子集及对应的逻辑判断。

测控设备流程执行过程如图3所示。

图3 流程执行过程

本文选用Lua作为脚本语言,用其定义测控设备各个自动化子流程,由此提高系统的灵活性、扩展性和高效性。

3.2流程引擎架构设计

流程引擎的主要功能是执行业务流程,而业务流程是指包含那些为用户创造价值的行为[11],流程引擎设计的好坏、效率高低直接影响到整个业务流程管理的性能高低。

流程引擎架构如图4所示。

图4 流程引擎架构

本文将流程引擎分为以下5个部分:

① 远程通信。负责与远程中心之间的信息交互,接收远程中心的流程配置和查询命令,接收远程中心发送的流程脚本文件,接收远程中心的控制命令。

② 流程管理。包括流程装订和流程存储2部分功能,负责完成远程脚本文件的存储和验证,为流程执行提供流程索引服务。

③ 流程执行。包括流程加载、流程解析和流程控制3部分功能,负责流程的解析执行和执行控制。

④ 流程存储。包括设备原子操作动态库、脚本文件以及脚本与流程之间对应关系的配置文件。

⑤ 流程监视。负责展示流程的执行过程,为流程执行过程中的控制操作提供辅助支持。

3.3脚本与引擎交互方式

3.3.1通过堆栈的交互

Lua通过虚拟机内部的堆栈实现与宿主语言之间的交互。Lua提供了对堆栈操作的API,包括出入栈操作以及通过索引值随机读写栈元素[12]。

3.3.2Lua调用引擎函数

Lua调用函数采用了函数指针的形式,在C++中定义函数时要遵守一定的规则。

Lua可通过栈传递无穷个参数。当Lua调用引擎函数的时候,使用和引擎调用Lua相同类型的栈来交互。获取某变量值的代码段如下:

static intLuaCallC(1ua_State *LState)

{

int d = luaL_checknumber(LState,1);//检查值

lua_pushnumber(Lstatue,d);//值入栈

return1;

}

3.3.3引擎调用Lua函数

Lua通过栈传递参数及返回值。引擎调用Lua函数时,先把这个函数压入栈,然后顺序压入所有参数,函数返回后,返回值存放在栈中[10]。

例如在Globa1.1ua文件中有设置UI窗口内容的Lua函数如下:

function SetWindowText(win,txtContent)

Ken_ApiManager.SetWindowText(win,txtContent)

Return 1

end

4测试与分析

测试环境:计算机采用Intel Core i7 CPU,主频3.4 GHz,内存3G,支持工具为Lua-5.2.2。

4.1功能验证

根据前面的论述,以现有测控设备监控客户端程序为基础,对设备自动化运行流程远程定制进行了技术上的验证。主体功能包括:

① 自动化运行流程测试脚本开发:对应6个自动化运行过程,分别编制了以下6个脚本文件:

SetParameter.lua设置任务参数

AngleAdjust.lua角度标校

DistanceAdjust.lua距离校零

Guide.lua转等待点

Track.lua跟踪

Aftertrack.lua事后处理

按照图1实现了一个顺序执行的自动化运行脚本,在对应的时间节点调用设置任务参数、角度标校、距离校零、转等待点、跟踪和事后处理等6个自动化运行流程,按照顺序及时间符合执行6个脚本的C++代码片段如下:

……

lua_State *m_plua;

PlanTime = GetPlanTime();//读取计划时间

while(TRUE)

{

CurrentTime = GetLocalTime();

DiffTime = Difftime(CurrentTime,PlanTime);

if(DiffTime <= 300)

{//执行任务参数设置流程

dofile(“SetParameter.lua”);

}

else if(DiffTime <= 240)

{//执行角度标校流程

luaL_dofile(m_plua,“AngleAdjust.lua”);

}

else if(DiffTime <= 180)

{//执行距离校零流程

luaL_dofile(m_plua,“DistanceAdjust.lua”);

}

else if(DiffTime <= 60)

{

luaL_dofile(m_plua,“Guide.lua”);//执行转等待点流程

luaL_dofile(m_plua,“Track.lua”);//执行跟踪流程

luaL_dofile(m_plua,“Aftertrack.lua”);//事后处理流程

}

}

② 脚本控制过程测试:编制了一个脚本,测试控制开始、暂停、继续和终止等过程操作的脚本片段如下:

lua_line = 0

debug.sethook(hook,“l”)—注册hook

—hook函数

Function hook()

lua_line = debug.getinfo(1).linedefined

while 1 do

local state = myControlState()

if state==1 then—跳出循环 继续

break

end

if state==0 then—退出

error(aexit)

end

if state==2 then—暂停

sleep(10)

end

end

end

③ 数据显示测试:根据需要,显示流程运行过程中的数据和状态信息,让用户充分掌握流程各运行环节执行状态,控制数据显示脚本片段如下:

—实现距离和速度的显示切换,按照时间,每2 s切换一次

……

Timevalue=2—定义时间间隔初值

d=mytime()—利用宿主语言功能计算时间间隔

Speedvalue()—取速度

if d==0then

RVvalue()—取距离

end

4.2效率测试

4.2.1逻辑测试过程

在宿主语言中定义接口函数l_add,在流程文件test.lua中定义流程模块Test_Module。脚本测试逻辑序列如图5所示。该测试用例表征了流程引擎和流程脚本的双向交互测试。

图5 逻辑测试序列

4.2.2效率测试过程

配置2个测试流程,分别执行1×106次业务逻辑判断和1×106次浮点运算。

4.3测试结果分析

分别编写对应于4.1节的Lua脚本和C++程序,使用预先准备的测试数据完成了4.2.1的逻辑测试,说明本文采用的方法是可行的。为了说明脚本及流程引擎的执行效率,用Lua脚本和C++实现流程业务逻辑判断效率测试过程和流程浮点运算速度测试过程,各进行了5组测试,测试结果如图6和图7所示。

图6 业务逻辑判断测试结果比对

图7 浮点运算测试结果比对

测试结果表明,流程业务逻辑判断效率测试中Lua脚本和C++语言的效率比近似值是7,流程浮点运算速度测试中Lua脚本和C++语言的效率比近似值是3.6。Lua脚本和C++语言的效率比在一个量级之内,完全胜任航天测控领域实时任务对测控流程的性能需求。

5结束语

根据航天测控设备的自动化流程,采用Lua脚本语言,设计了流程引擎架构,通过实验说明,Lua能够将程序核心和逻辑控制分离开来,在系统开发过程中,测控设备流程引擎只需提供的测控设备原子操作接口,就可以通过配置不同脚本,实现对设备的逻辑控制。

基于Lua的测控设备自动化流程定制技术很好地兼顾了灵活性和效率,并且能为软件的后期维护提供便捷的服务支持,能节省大量的程序维护和测试时间,可节约大量的人力资源,为后续测控设备监控系统的设计有一定的参考意义。

参考文献

[1]Roberto Ierusalimschy,Luiz Henrique de Figueiredo,Waldemar Celes.Lua-an Extensible Extension Language[J].Software-Practice and Experience,1996,26(6):635-652.

[2]Reberto Ierusalimschy,Luiz Henrique de Figueiredo,Waldemar Celes.The Imp1ementation of Lua 5.0[J].Journal of Universal Computer Science,2005,11(7):1 159-1 176.

[3]尹佳,王祖林,冯文全,等.航天器数据管理系统通用测试平台的设计[J].北京航空航天大学学报,2010,36(3):346-349.

[4]斯库特码,玛尼恩.Lua游戏开发指南实践[M].田 剑,译,北京:机械工业出版社,2013.

[5]邓正阳,陈和平,苏鹏.动态脚本语言Lua与C++交互方法的研究与实现[J].计算机系统应用,2010,19(5):198-201.

[6]党琦,吴东星,白大明,等.基于Web的航天测控设备集中监视体系实现[J].宇航动力学学报,2013,3(2):95-98.

[7]刘军,王轶,马明,等.典型测控系统自动化运行的设计与实现[J].电讯技术,2005(5):197-199.

[8]高京龙.航天测控站无人值守技术分析[J].无线电工程,2011,41(12):38-40.

[9]侯锦,余军.测站天线目标自动捕获跟踪设计要点[J].电子设计与工程,2011,19(10):77-79.

[10]王剑冰.一种基于流程的高效引擎开发[J].井冈山大学学报(自然科学版),2012,33(4):61-65.

[11]BAI Liang,LIANG Jiye,DANG Chuangyin,et a1.A Novel Attribute Weighting Algorithm for Clustering High-Dimensional Categorical Data[J].Pattern Recognition,2011,44(12):2 843-2 861.

[12]Reberto Ierusalimschy.Lua程序设计(第2版)[M].周惟迪,译.北京:电子工业出版社,2008.

党琦男,(1972—),硕士,高级工程师。主要研究方向:计算机网络、应用软件技术等。

苟茹君女,(1971—),硕士,高级工程师。主要研究方向:航天器遥测信息处理、应用软件技术等。

引用格式:党琦,董广然,苟茹君,等.测控设备运行流程远程定制技术研究[J].无线电工程,2016,46(1):16-19,64.

Research on Automation Process Remote Customizing

Technology of TT&C Equipment

DANG Qi1,2,DONG Guang-ran1,GOU Ru-jun1,QIN Bo1,2

(1.Xi’anSatelliteControlCenter,Xi’anShaanxi710043,China;

2.KeyLaboratoryforFaultDiagnosis&MaintenanceofSpacecraftinOrbit,Xi’anShaanxi710043,China)

AbstractTo address the problems in the fixed automation process of monitoring&control software for TT&C equipment,a new method for remote process customization is proposed,and an automation process architecture based on Lua is designed.Through analyzing the equipment automation process,the key technologies and script execution efficiency are tested and validated,and the result shows the feasibility of the method.The efficiency ratios of Lua script and C++ language are in the same level,so the Lua meets the capability requirement of real-time mission in space TT&C.The method can also reduce software re-development and enable the fine operation of equipment.

Key wordsscript language;TT&C equipment;process customizing;automated operation;Lua

作者简介

收稿日期:2015-09-30

中图分类号TP391

文献标识码A

文章编号1003-3106(2016)01-0016-04

doi:10.3969/j.issn.1003-3106.2016.01.04