APP下载

一种航天器测试注入数据序列自动生成方法

2020-03-21李宏亮贾茹张悦潘顺良

航天器工程 2020年1期
关键词:程控细则航天器

李宏亮 贾茹 张悦 潘顺良

(中国空间技术研究院载人航天总体部,北京 100094)

航天器综合测试是航天器研制流程中的重要环节,利用遥控指令、程控指令、控制命令等形成测试指令序列是航天器测试的主要手段[1]。当前我国航天器发射密度不断提高,对航天器测试自动化、智能化的需求日益突出,特别是以载人航天、北斗导航为代表的国家重大航天项目,面临着型号批产化、发射密集化的任务态势,航天器综合测试压力巨大。

目前国内对航天器自动化测试已开展了部分实施和应用。按照测试单元和颗粒度划分,覆盖了电缆、单机、软件、系统等各层级[2-4];按照测试环节划分,从测试需求、测试设计、测试实施、测试评估等航天器测试主要环节均有不同程度的自动化手段介入[5-7]。然而,航天器测试准备环节的自动化程度相对较低。当前,用于航天器综合测试的直接依据类文件即测试细则的生成仍然需要测试人员花费大量的时间、精力编写,工作量大,容易出错;更重要的是,编写完成的细则仅是测试实施输入性文件,大量测试准备工作需要在测试细则的基础上形成指令测试序列、遥控注入数据等测试实施输出文件,用于执行航天器综合测试。

以载人航天器模拟飞行(简称模飞)测试准备为例,需要按照被测试航天器的具体模飞细则,形成注入数据序列文件,按照测试细则规定的指令发送时间、发送次数、发送间隔、所在注入文件编号形成模飞测试所需注入数据。传统的注入数据序列生成全部依靠人工进行,需要测试人员对照测试细则,逐步检取需要添加程控指令相关信息,费时费力,且容易出现遗漏或误添加指令的问题,产出效率低,已无法适应高强度载人航天器综合测试需求。

为解决上述问题,本文提出一种航天器测试注入数据序列自动生成方法,设计并实现了航天器综合测试注入数据序列自动生成软件,通过运行此软件实现注入数据序列自动化生成,提高了序列文件生成效率和准确度。该方法可以与航天器综合测试系统的自动化设计进行有机结合,提高综合测试系统的整体运行效率。

1 注入数据序列生成过程

航天器测试注入数据序列生成以相应测试细则为输入条件。细则按照航天器飞行程序,以一定时间比例安排了整个测试的关键事件,并详细规定了各个事件过程中航天器需要执行的指令类型、指令内容、时刻、次数、指令间的时间间隔等具体要求。细则中包含的指令包括测控通信系统发出的遥控指令、航天器数管分系统按照飞行程序自主发出的程控指令、制导导航与控制(Guidance Navigation and Control, GNC)等分系统发出的手控指令等不同类型。注入数据序列生成是将细则中规定由航天器数管分系统自主发出的程控指令及注入数据全部筛选出来,按照一定格式形成序列文件,并将若干数量指令分配至特定序号的注入文件中,以便于其它测试工具进一步完成注入数据的过程。

注入数据序列生成过程需要完成以下功能。

(1)筛选航天器测试细则中,需要由器上数管分系统自主发出的指令集合。

(2)具备对测试细则的时间顺序校对功能,以检查细则中的指令发送时间是否正确(即是否出现排序在后的指令时间先于排序在前的指令时间的现象)。

(3)具备对测试细则的时间格式校对功能,以检查细则中的时间格式是否正确,并兼容时间单位大小写、同一时间量的不同表达方式(即是否出现时间单位不完整、大小写混用、同一时间量纲采用不同单位表述的现象)。

(4)具备对生成的注入数据序列进行自校对功能。受航天器测试方法约束,包含有若干条程控指令的注入数据的发送时刻必须晚于该注入数据所包含指令的最晚发送时刻(若不满足该条件,会造成程控指令漏发,影响航天器测试的正常进行),自校对功能将用于检查生成的序列文件中是否存在违背上述约束的指令分配情况。

2 注入数据序列生成软件实现

航天器测试注入数据序列生成由注入数据序列生成软件实现。该软件读取测试细则,检索细则中的特定关键字,输出注入数据序列文件,并提示生成序列文件的正确性。

2.1 软件功能模块组成

注入数据序列生成软件主要由4个功能模块构成,如图1所示。显示模块用于显示软件界面,提供人机交互接口;文件读取模块用于从外部读取细则文件,按照设计的规则检索关键字;校对模块在文件读取过程后,对细则中的时间顺序、时间格式及指令与注入数据块的相对时序进行逐一校核,若存在错误,则向用户给出醒目提示;序列输出模块在校对模块完成校对后,完成注入数据序列文件的输出。

图1 注入数据序列生成软件模块组成

2.2 接口描述

2.2.1 软件输入

得益于自动化测试程序的应用,航天器测试细则文件按照相对标准化的程序进行编写,所有的测试用例均表达为一个.xls格式的表格文件。该表格文件的每一列代表一组测试细则信息,例如执行序号、测试操作时间、测试操作码、测试操作码参数等。每一个测试操作码可以包含一个或多个测试子操作,且可以包含参数,常见的操作码内容包括:发送指令、发送注入数据、判读遥测参数等[8]。程序化的细则文件格式为注入数据序列生成软件直接读取该文件提供了便利。

以载人航天器测试细则为例,注入数据序列生成软件的直接输入是类似于表1的测试程序表格。

表1 载人航天器测试程序表格

表1中,序号列为对应某一行的操作序号,由1开始逐行递增;时间列为对应某一行操作执行时间,通常以秒为单位从0开始计算;程控指令列为对应某一需要执行的程控指令代号;遥控指令列为对应某一需要执行的遥控指令代号;特殊指令列为对应某一需要执行的特殊指令代号;手控指令列为对应某一需要执行的手控指令代号;指令名称为对应指令的名称;事件说明为通常用于说明测试用例模拟的航天器飞行事件,包括航天器自主处置和地面测试系统辅助处置的事件;指令屏蔽为根据测试用例安排,为保证航天器测试安全,在测试执行过程中禁止执行的某些特殊指令。

注入数据序列生成软件的输入就是表1所示的完整测试程序模块,该程序模块作为Excel文件保存在计算机硬盘中。

2.2.2 数据库接口

注入数据序列生成软件采用开放数据库连接(Open Data Base Connectivity,ODBC)接口作为软件与输入文件的交互接口。

ODBC是微软视窗开放系统架构(Windows Open System Architecture,WOSA)的重要组成部分,它提供了一种应用程序与异构数据库间的共享访问机制,实际上是一组运行在Windows操作系统中的应用程序接口(Application Programming Interface, API)函数[9]。ODBC以其易用性很快成为工程领域的常用数据接口标准,其接口的最大特点是应用程序不与数据库管理系统存在直接接口,而是通过被访问数据库的ODBC驱动与数据库进行信息交互。因此,可以说ODBC是应用程序与被访问数据库的“沟通桥梁”。应用程序、ODBC与被访问数据库的关系如图2所示。

图2 应用程序通过ODBC接口访问数据库示意

在航天器测试中,Excel表格化形式的测试细则文件可以被视作一个数据库,注入数据序列生成软件作为应用程序,通过ODBC接口访问细则文件。

使用ODBC访问Excel文件有两个优点。

(1)访问速度快,Excel文件作为数据库,可以快速对其进行整体读取,相较于单元格读取方式,数据读写速度快。

(2)使用简便,只需保证运行计算机上安装有Microsoft Excel Driver(安装Excel软件)即可调用相关API函数。

2.2.3 软件输出

注入数据序列生成软件的输出是如表2所示的注入数据序列文件。该文件同样是一个.xls格式的表格文件。

表2 注入数据序列文件表格

值得注意的是,表2注入数据序列文件表格的第1~3列是由表1的输入文件中找到相关指令信息后直接复制在对应列的单元格中;第4~6列是软件读取输入文件后提取出的特定信息,其中第4列、第5列来自于输入文件的“事件说明”列。默认情况下,程控指令仅发送1次;特殊情况下,该列中包含了某一指令是否需要多次发送,及多次发送间的时间间隔信息;注入数据序列文件表格的第6列来自于输入文件的“指令名称”列,该列中存在着若干以“ZDP×××”(ZDP为注入数据块代号,×××为数据块的三位数字编号)为名称的记录。软件在读取输入文件后,将记录这些注入数据的信息,并结合所有需要发送的程控指令的数量,按照平均分配的原则,将所有指令分配给不同的注入数据。

2.3 开发和运行环境

注入数据序列生成软件在Microsoft Visual Studio 6(VS6)环境中开发,使用C++语言设计。VS6作为成熟稳定的开发环境,交互界面简洁高效,代码移植性高,对工程应用中开发各类规模和需求的软件都具有很强的适应性。在VS环境中以ODBC接口访问Excel表格,可以通过调用ODBC接口中的CDatabase、CRecordset等类及其成员函数实现[10-11]。

软件运行时的检测结果表明:对运行注入数据序列生成软件的计算机的最低配置要求为CPU主频1.66 GHz,内存1 GB。软件运行中CPU占用率仅2%,内存占用约2 MB。

2.4 软件工作流程

注入数据序列生成软件的工作流程如图3所示。在整体流程上,软件以顺序读写为主,在流程中完成输入文件格式校验、程控指令数量分配计算、序列文件输出等工作。

软件的工作流程可以描述为如下步骤。

(1)软件检索运行计算机上是否安装有Excel软件及相关驱动。

(2)获取应用程序所在路径,并将输出序列文件路径设置为与软件可执行程序同一路径。

(3)文件读取模块读取输入文件。

软件读取文件的关键代码如下:

//打开数据库Excel文件

database.Open(NULL, false, false, sDsn);

//设置SELECT语句检索字段

Sql.Format(“SELECT序号,时间,程控指令,指令名称,事件说明 FROM [%s$] ORDER BY 序号”, m_sheetname_input);

//设置CRecordset类变量

CRecordset recset(&database);

//设置文件读取参数

recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);

//通过查询读取内容是否为空,设置循环方式顺序读取文件

While (!recset.IsEOF())

{

……

}

图3 注入数据序列生成软件工作流程Fig.3 Task procedure of injection data sequence generation software

(4)校对模块对输入文件格式进行校对。校验内容包括:①对输入细则文件的时间格式进行校验,包括去除空格、补充缺失的时间单位等;②按照天、小时、分钟、秒、毫秒的顺序,依次比较前后两行细则文件中的时间关系。

假设用d、h、m、s、ms分别标识时间单位天、小时、分钟、秒、毫秒,则当前行的指令发送时间t1为

t1=D1dH1hM1mS1sN1ms

(1)

式中:D1、H1、M1、S1、N1分别表示t1时刻相对于数管分系统轨道零时所经过的天、小时、分钟、秒、毫秒值。

相邻的后一行的指令发送时间t2为

t2=D2dH2hM2mS2sN2ms

(2)

式中:D2、H2、M2、S2、N2分别表示t2时刻相对于数管分系统轨道零时所经过的天、小时、分钟、秒、毫秒值。

软件进行校对计算后,若判断t1≥t2,则说明细则中的指令发送时间存在错误,软件将给出时间出错行的具体位置的醒目提示,软件关闭数据库,中止程序继续运行。

(5)文件读取模块进行指令分配计算。

软件在输入表格文件中查找SELECT语句中包含的列名称中的信息,在其中查找“程控指令”、“注入文件”关键字,并分别统计数量。假设输入文件全部读取完毕后,程控指令总数为Ncomd,注入数据总数为Nfile,按照所有程控指令平均分配给注入数据的原则,每个注入数据中包含的指令数N为

N=Ncomd/Nfile

(3)

但数据N有可能不是整数,即Ncomd无法被Nfile整除。为了保证软件实现过程中每个注入数据块中包含确定整数的指令,需要对数据N作一变换。

对数据N进行取模运算,得到的整数部分记为Z;假设所有的注入数据中,有x个数据块每个包含Z条指令,剩余的y个注入数据中,每个数据包含Z+1条指令,则可以得到x、y、Z的数学关系为

(4)

通过计算该方程组,就可以得到每个注入数据被分配的指令数量。计算完成后,程序关闭数据库。

(6)序列输出模块输出注入数据序列文件。

序列输出模块按照表2结构将读取的信息分别加入到输出表格中,其中“序号”、“段时间”、“指令代号”三列,根据读取的输入信息直接填写至输出表格中;“发送次数”、“发送间隔”两列,根据读取模块在输入文件“事件说明”列中,查找“发送n次”、“间隔n秒”等信息,填入具体数值;“备注”列按照步骤(5)中的计算结果,在第1、第Z+1、第2Z+1…行及第Ncomd-x·Z+1、第Ncomd-x·Z+1+Z+1、第Ncomd-x·Z+1+2·(Z+1)行写入“写入数管注入文件A分别对应B~C行数管指令”,用于提示对应序号的注入数据中包含哪些行的指令。

创建输出序列表格文件的关键代码如下:

//创建进行存取的字符串

sSqlWrite.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB="%s";DBQ=%s",sDriver, sExcelFile, sExcelFile);

//创建数据库 (Excel表格文件)

if( databaseWrite.OpenEx(sSqlWrite,CDatabase::noOdbcDialog) )

{

//通过SQL语句创建表结构(与表2一致)

sSqlWrite = "CREATE TABLE Comd (序号 TEXT,段时间 TEXT,指令代号 TEXT,发送次数 TEXT, 时间间隔 TEXT, 备注 TEXT, 注入时间校验 TEXT)";

databaseWrite.ExecuteSQL(sSqlWrite);

}

(7)注入数据序列文件生成完成后,文件读取模块读取生成文件,并由校对模块进行注入数据时间与指令时间之间的相对时序校对。

若整个序列文件中所有程控指令的预定执行时刻均早于所在注入数据的发送时刻,则相对时序正确,软件输出正确的注入数据序列文件。

假设某一程控指令C001需要在tx时刻发送出,注入数据序列生成软件将该指令自动分配给注入数据ZDP001,按照测试细则的规定,该注入数据的发送时刻为ty,且ty>tx,则校对模块判断序列文件中存在相对时序错误。在此情况下,将由序列输出模块在输出的序列文件中添加“注入时间校验列”,并在对应的注入数据行提示用户出现相对时序错误。

3 应用实例

航天器注入数据序列生成软件的用户界面如图4所示。用户在使用前需要进行3项操作。

(1)选择作为输入文件的测试细则表格的绝对路径,该路径同样将是软件输出的注入数据序列文件的存放路径。

(2)输入选择的细则表格文件中的具体表单名称,按照Excel新建文件的默认表单名称,软件启动时自动填入Sheet1作为表单名称,用户可根据需要修改该名称。

(3)键入软件最终生成的序列文件的名称,以便在文件生成后查找和使用。

在软件界面的下方,提示使用本软件的一些准备事项,主要包括对输入文件后缀名称、输入文件起始行的单元格名称及单元格内多余字符的约束。这些约束是为了统一输入文件的格式,避免软件在检索关键字的过程中出现检索错误。

图4 注入数据序列生成软件用户界面

以某载人航天器的某项模飞测试为例,选择输入文件路径后,点击软件界面“开始”按钮,程序开始运行。若细则文件无指令时间错误,软件运行仅约1 s后,软件即提示“指令表格文件生成完毕”,生成的注入数据序列文件如图5所示。

若输入的细则文件存在指令时间错误,软件将提示图6所示信息;若软件生成的序列文件中存在指令与注入数据间相对时序错误,则序列文件生成完毕后,软件将提示“有注入文件分配不合理,需调整”。打开序列文件可以看到在“注入时间校验”列存在以“★★★”为提示符的信息,如图7所示,表示该行对应的注入数据的注入时间在当前指令分配情况下,存在指令与注入数据相对时序错误问题,需要用户修改。值得一提的是,序列文件中出现程控指令与注入数据的相对时序错误,是由于编写测试细则文件时注入数据分布不合理引起的。修改细则文件可从源头上杜绝该类问题出现。

图5 软件输出的注入数据序列文件Fig.5 Injection data sequence file generated by software

图6 软件提示:细则文件存在指令时间错误Fig.6 Software information: command time error in the test manual

图7 软件提示:指令与注入数据存在相对时序错误Fig.7 Software information: relative schedule error between command and injection data

在航天器综合测试中使用注入数据序列生成软件,可大幅提高注入数据序列文件的生成速度,提高测试效率。以某载人航天器的某个模飞测试项目为例,以传统方法人工对照细则手动提取序列文件,测试人员将面对平均规模为1500行×9列的测试细则文件,人工检索、校对并完成一个模飞测试的序列文件平均需要1.5 h,按照一个载人航天器型号安排平均8~10个模飞测试项目计算,需要12~15个小时才能完成全部模飞测试的序列文件准备工作,对于测试规模更加庞大的诸如全任务模飞测试、大系统间匹配模飞测试等项目,文件规模将成倍增长;随着航天器测试的不断进行,可能还会出现测试方案更改、细则文件变化的情况,重新修订注入数据序列文件也将花费测试人员的大量精力。

使用航天器注入数据序列生成软件后,在不需要对生成序列文件进行修改的情况下,将测试细则文件格式修订时间计算在内,单次序列文件的生成时间不超过2 min;即使出现需要修订指令与注入数据相对时序错误的情况,单次序列文件的生成时间也不会超过5 min。相比传统方法,文件生成效率可提高95%。对于表格行数在8000~1 0000行的大型模飞测试,该软件的自动化、快速化优势将更加明显。

4 结束语

本文针对航天器综合测试过程中,测试注入数据序列生成效率低、易出错等问题,提出了一种航天器注入数据序列自动生成方法。该方法以航天器自动化测试程序的实施为依托,在不改变自动化测试表格化测试细则文件结构的基础上,设计了航天器注入数据序列生成软件,以ODBC接口为桥梁,实现了在商用计算机上快速自动化生成航天器测试注入数据序列文件,相比于传统人工方法,文件生成效率提高95%。本文讨论的注入数据序列文件自动化生成方法可以在以下两方面进行后续探索:①提高注入数据序列生成序列生成软件的智能化水平,使软件可以自动修正生成序列文件中的相对时序错误;②结合其它测试软件的功能,统一航天器综合测试过程中的程控指令生成、注入数据生成、序列文件生成过程,将以上功能进行有机结合,建立“‘测试细则’输入、‘注入数据(程控指令)序列’输出”的“一键式”系统,进一步提升航天器综合测试准备效率和自动化水平。

猜你喜欢

程控细则航天器
守正创新 追求卓越 《今传媒》征稿细则
2022 年第二季度航天器发射统计
《宇航计测技术》征稿细则
征稿细则
2019 年第二季度航天器发射统计
《复杂油气藏》征稿细则
2018 年第三季度航天器发射统计
基于Multisim10和AD603的程控增益放大器仿真研究
2018年第二季度航天器发射统计
程控增益射频宽带放大器