陈红英 张昌明 何 晶 黄 琼
(中国卫星海上测控部 江阴 214431)
基于正则表达式的遥测数据预处理研究*
陈红英 张昌明 何 晶 黄 琼
(中国卫星海上测控部 江阴 214431)
运载火箭遥测数据处理首次运用于海上测控任务中,针对船载设备接收原始遥测事后数据包含许多无效的乱码且记录数据十分庞大、需要在短时间内进行数据处理的难题,首先介绍了遥测数据预处理原理,对预处理方法进行了研究,最后提出了用正则表达式算法将原始数据从庞大的数据帧中解算出来的预处理模式,在短时间内完成了数据的预处理工作,提高了处理效率,解决了遥测数据处理的关键技术问题。
正则表达式; 遥测; 预处理; 测量船
Class Number TP311
为了保护空间环境、减缓空间碎片,型号部门对长征系列火箭进行改进设计,将在星箭分离后进行高压气体和剩余推进剂排空等动作,测量船对火箭三级箭体遥测数据进行跟踪、接收和记录,至信号消失。运载火箭遥测事后数据处理主要完成海上测量任务的长征系列型号星箭分离后遥测数据的质量检查与选优[1];运用数字信号处理方法和随机数据分析方法,以精选的数字模型和精确的计算公式对原始数据进行加工、纠错、误差修正和计算,还原成各种物理量;对速变参数则还要进行各种谱分析;完成满足精度和处理要求的数据、图像等处理结果光盘[2]。
在每次飞行试验任务中如何把磁带、磁盘或光盘上的原始测量数据从记录介质上输入到计算机、剪辑、对接,并准确地从带有干扰的信息中提取数据;如何判帧分路,对时间如何纠错加工,如何去点计算是遥测数据处理中需要解决的主要问题。而遥测事后数据处理软件首次在海上测控任务中使用,由于船载设备USB接收原始遥测数据包含许多无效的乱码,而且记录数据十分庞大,如何将有效的数据从近500M字节的原始数据中分离出来,并且兼顾时间性能和内存资源消耗等因素,成为原始数据预处理的难点[3]。文章将具体介绍利用正则表达式处理遥测事后数据的预处理方法。
2.1 预处理主要内容
遥测数据预处理工作将完成以下任务[4]:
1) 对火箭星箭分离后遥测数据质量检查,自动统计出信号记录的有效起止时间,并记载、打印出错误原始码。
2) 完成测量船记录的遥测数据中绝对时转换到相对时工作,具备形成一个与逐帧数据相对应的时间文件。
3) 完成原始信号中的帧同步判别,剔除乱散点,并进行速、缓变参数的分离及分路。
4) 根据产品的传感器、变换器的校准数据,或在物理量换算的其它与参数有关的系数形成校准数据。
2.2 原始数据
2.2.1 遥测格式的元素
脉冲编码调制(PCM)遥测格式是指用来按比特、字、帧和格式等四个元素的层次来生成串行PCM遥测数据流的一种数据结构[5]。
1) 比特、字和帧
比特是一个取值为“1”或“0”的二元信息符号,亦称二进制码位,是PCM数据流中的最小单元,占有一位的时间间隔。帧同步字:用来传送帧同步码的两个到三个相继遥测字。识别字:航天器地址字、航天器上时钟计数字、帧计数字、格式计数字等遥测字,均称识别字,其数据均需固定在格式中所分配的位置上。
遥测帧是相继的一组遥测字的有序集合。在串行PCM数据流中,每一帧总是由相邻帧同步码的起始点确定。一帧中所包含的遥测字的数目称为帧长。对于一定的遥测格式,帧长总是固定的。副帧:若在格式的若干相继帧的同一字位置,又安排相应路数的较低速率采样遥测参数,则这些按帧相继的遥测字(称为副帧字)的有序集合,称为副帧。一副帧中所包含的副帧字的数目称为副帧长。
2) 波道、路
波道指的是遥测系统某交换子(如正交、副交等)中能单独传送一路信息的通道。某参数的波道号也正是从全帧信号中挑选它的依据。
路指的是某一被测参数的通路,通常占用一个波道(此时路信号与波道号相同),也可占用多个波道。
3) 主帧、副帧、子帧及同步码
主交换子(时分割装置)每采样一周为一主帧。副帧指将主帧的一个时隙(一路)再分割成若干时隙(若干路),这些再分割路循环一周称为一个副帧。副帧信号全部都采样到,需若干个主帧。子帧为两个子帧同步码组之间的分割路循环一周称为一个子帧。全帧,指的是弹(箭)上采编器将子帧、副帧的信号全部都采样一遍称为一个全帧。
2.2.2 原始数据来源
由于测量船的工况设计主要基于对卫星在轨后的关键事件来考虑的,推进剂排放一般在星箭分离后间隔数百秒开始进行,在推进剂排放的弧段,末级火箭所在轨道高度越来越高,测量船通视的时间较长。原始数据(包括PCM体制的数字量方式,PAM体制的模拟量方式及PACM混合体制组成的各种数据帧结构)接收时间一般从星箭分离数百秒开始进行,一条测量船单站积累的遥测原始数据比火箭发射到星箭分离之间积累的数据还要大。数据元素为遥测数据的USB遥测监控台合并方式存盘格式[6],具体格式如表1所示。
表1 箭上遥测存盘格式
其中时间码格式有接口板方式和网络方式两种,设备择优选用其中一种。
表2 箭上遥测传输设备主要技术参数
原始测量数据是以速、缓变全帧群信号记录的,信号需进行判别、分组和分路。首先需判别的是主帧同步码和子帧同步码,除了判别各同步码本身是否正确外,还应判别相邻两同步码之间的路间隔是否正确,以避免当参数码与同步码偶然巧合时而发生误判。必须同步码判别正确分路,否则会因路序错误,造成参数编码值错误,这种情况造成的参数值错误是很难发现的。
分组和分路是在各种同步码判别出来后,依所需处理的参数在主帧、副帧或子帧中的路序来提取。数据对应的时间,应按所取点的帧号或记录号,提取对应帧号或记录号的时间值,并按不同的精度要求进行路间采样及电波延迟修正。
3.1 正则表达式定义
正则表达式(Regular Expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。正则表达式是由普通字符(例如字符a~z)以及特殊字符(称为元字符)组成的文字模式[7]。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。一般用于文本的识别,其描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。确定有限状态自动机(DFA)是由下述五个元素构成的数学模型:
其中:S是有限的,非空的状态集;∑是输入字母表;δ是转移函数。∑δ(s,a)=S′意味着:当现行状态为s输入字符为a时,将换到下一个状态S′。称S′为s的后继状态。
S0∈S是初始状态;F∈S是非空的终结状态集。
3.2 符号描述
表3是元字符及其在正则表达式上下文中的行为的一个简单列表[8]。
表3 正则表达式字符描述
构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与操作符将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。
3.3 算法研究
图1 遥测原始数据预处理主流程图
运载火箭遥测数据处理中原始数据是二进制字符串数据,可以视为广义的文本字符串,通过Python语言读入二进制文件以后,利用正则表达式实现对副帧、子帧的识别,对遥测数据流文件进行副帧、子帧统计,得出遥测数据的起始时间、结束时间,统计出丢帧段落等。如图1所示。
遥测字由相继的8个比特构成,是组成遥测帧的基本单元,亦称“路”或“字节”。根据原始数据的帧结构对YCConst.py函数的内容进行修改以适应具体任务需求,内容如下:
YC_SUBFRAMELENGTH =104 # include Time code and ID code
# 子帧长度,长度包含遥测设备加上的时间码长度和子帧ID长度,默认为104
YC_MAINFRAMELENGTH = 64 # 副帧长度(包含多少子帧),默认为64
YC_SUBFRAMESYNCODE='xebx90' # 子帧同步码,默认为'xebx90'
YC_MAINFRAMESYNCODE='x14x6f' # 副帧同步码,默认为'x14x6f'
YC_TIMECODETYPE='Network' # default is 'Interface'
# 时间码接收类型(包括网络方式或接口板方式),默认为网络方式
YC_T0 = [1,0,2,2,0,0,0,0,4,6,3,0,0]
# 任务T0的B码方式,下面表示第102天20时00分04秒630.0毫秒
由于多种原因,设备接收原始遥测数据包含许多无效的乱码,为了保证每一个完整的副帧计数都是有效的必须通过其特征字来验证。根据《遥测大纲》约定在帧结构中W(波道)47、W48、W71、W72的特征字为3F、1F、55、AA(F01变帧结构后W71、W72特征字为AA、55)。副帧同步码为146F,子帧同步码为EB90[9]。
具体程序如下:
# read onefile another
def readData (inFile, outFile, wordList, subFrameList, timeMin=-1,
timeMax=-1):
frameP=re.compile('(.{54}\?\x1f.{22}\xaa\x55.{22}\xeb\x90){63}.{54}\?\x1f.{22}\xaa\x55.{22}\x14\x6f',re.DOTALL)
ii = frameP.finditer(open(inFile,'rb').read())
f = open(outFile,'w')
上面函数中“(.{54}\?\x1f.{22}\xaa\x55.{22}\xeb\x90){63}.{54}\?\ x1f.{22}\xaa\x55.{22}\x14\x6f'”该语句只利用正则表达式的基本元素“.”、“(”、“{”、“”、“?”等字符,就实现了读取完整全帧数据的功能。副帧结构(F01变帧结构后)如表4所示。
表4 副帧结构表
如表4中的副帧结构所示,在打开原始数据文件后,逐字读文件,首先读取任意54个字符(包括时间码和ID计数),用语句“.{54}”表示,读取1个任意字符,用语句“?”表示,如果第56个字符也就是W48的特征码为1F时,用语句“\x1f”,继续读取任意的22个字符,如果第79和80个字符的特征码为AA和55时,再往下读22个任意字符,如果第103和104个字符的特征码为EB和90时(子帧同步码),就读取到一个完整的子帧,用同样的语句“(.{54}\?\ x1f. {22}\xaa\x55. {22} \xeb\x90)”读63个子帧,如果第64个子帧的W95和W96特征码为14和6F时(副帧同步码),这样就读取到一个完整的副帧,将其计入文本,如果读到的字符不满足上面的条件将其跳过,继续读原始文件直到文件结束,图2中绘制了某任务原始数据预处理丢帧情况的统计结果,从图中可以看出使用此函数代码有效地去掉了原始数据中无效的乱码,通过对特征字的验证避免了当参数码与同步码偶然巧合时发生误判的情况,确保了录取完整有效的副帧。由于识别帧结构的工作变成了正则表达式的模式,而这种模式存储在配置文件中即可[10]。如果二进制文件格式发生变化时,无需改变程序逻辑,只需修改配置文件的帧结构模式。利用这种设计使得程序使用和维护极为方便,大大提高了遥测数据处理的速度。
图2 某任务遥测原始数据预处理结果统计
总而言之,用正则表达式解析文本数据文件具有高效、缩短开发时间的优点,能够节省大量分析文件、根据复杂的条件提取有用数据的时间。在一个迅速发展的环境中仍会有许多传统的数据可资利用,掌握如何构造高效的数据分析例程将是一种宝贵的技能。
通过几次海上测控实战任务的运用,正则表达式高效、方便的字符串模式匹配技术,将遥测记录原始二进制码数据进行分析,较好地解决了原始数据的预处理工作,解决了运载火箭遥测事后数据处理中的关键问题。
[1] 沐俊山.星箭分离后箭遥数据处理的特点和方法[C]//第十一届全国遥感遥测遥控学术研讨会,2009:47-53.
[2] 简仕龙.航天测量船海上测控技术概论[M].北京:国防工业出版社,2009:84-99.
[3] 江文达.航天测量船[M].北京:国防工业出版社,2002:13-129.
[4] 刘利生.外弹道测量数据处理[M].北京:国防工业出版社,2002,2:225-318.
[5] 陈以恩.遥测数据处理[M].北京:国防工业出版社,2002:176-243.
[6] 李辉芬.船载设备测量数据处理结果的综合分析方法[J].飞行器测控学报,2008,27(6):65-70.
[7] Jeffrey E. F. Friedl.精通正则表达式[M].北京:电子工业出版社,2007:230-254.
[8] 丁晶.基于正则表达式的深度包检测算法[J].计算机应用,2007,27(9):2184-2187.
[9] 李信真,车刚明,欧阳洁,等.计算方法[M].西安:西北工业大学出版社,2000:99-126.
[10] 陈红英,李辉芬.航天测量船角度系统误差偏大问题的分析与解决[J].电讯技术,2011,51(10):71-75.
Telemetering Data Preprocessing Based on Regular Expressions
CHEN Hongying ZHANG Changming HE Jing HUANG Qiong
(China Satellite Maritime Tracking and Controlling Department, Jiangyin 214431)
Telemetering data preprocessing of carrier rocket handle is first appied in the ship for tracking and controlling. Aiming at the shortcoming of original telemetering data including many invalid disorderly code of the record data is very huge and need to preprocessing on the equipment of measurement ship in a short time, first the telemetering data preprocessing principle is introduced, the method of preprocessing is researched, finally the preprocessing mode is put forward to use regular expressions calculate original data from the huge data frames. In a short time, the work of data preprocessing is completed, processing efficiency is improved, and the key technique problem of telemetering data processing is solved.
regular expressions, telemetering, data preprocessing, measurement ship
2015年6月4日,
2015年7月26日
陈红英,女,工程师,研究方向:数据处理与精度分析。
TP311
10.3969/j.issn.1672-9730.2015.12.036