天文卫星下传数据处理系统的规划*
2019-07-16赵海升李承奎贾淑梅宋黎明
赵海升,李承奎,贾淑梅,宋黎明
(1. 中国科学院粒子天体物理重点实验室,北京 100049;2. 中国科学院高能物理研究所,北京 100049)
天文卫星获取的数据需要经过一系列步骤生成可以分析的数据产品,同时在这个过程中,还需要监测载荷状态、数据质量及天体源爆发情况等,连同数据接口构成天文卫星下传数据处理系统(简称下传数据处理系统)。卫星发射前,地面需要具备卫星数据处理能力,并在发射后及时调整软件参数及算法,开展标定工作。这样,规划下传数据处理系统就变得非常有意义。目前,爱因斯坦探针卫星(Einstein Probe,EP)[1]已经正式立项,增强型X射线时变与偏振天文台(enhanced X-ray Timing and Polarimetry mission,eXTP)在预研阶段,建设这些卫星的下传数据处理系统也提上了日程。
下传数据处理系统的主要任务包括3方面:(1)发布科学数据产品,这些数据产品为经过标定及初步筛选的数据和经过完整筛选后提取的科学数据,同时要发布标定数据库并实时更新标定数据库;(2)发布处理数据产品的软件,提供软件参数及用户使用手册;(3)实时监测载荷状态和数据质量,并识别暴发源、暂现源等,特别是发现新源。在工作中,下传数据处理系统要完成软件开发,包括软件的需求、设计、开发和测试等步骤,其中还要完成数据处理中关键算法的研究,尤其是要完成仪器地面标定工作。本文主要关注卫星发射前下传数据处理系统的建设,包括数据定义及数据流程,各个子系统的功能及接口,以及系统的运行流程等,并介绍系统建立的主要接口、主要工作内容及软件工程化,目的是使得整个系统能够协调工作,促进科学产生,提高软件的开发和运行效率。
1 系统设计
1.1 数据定义及数据流程
卫星下传的数据一般经过简单的解帧、分组和去重复后形成一系列数据文件,按数据的下传通道将其定义为遥测数据(0T)和数传数据(0L,0级),它们是下传数据处理系统的输入数据。数传数据包括卫星平台采集的数据、载荷采集的工程数据及科学数据。科学数据和工程数据的处理是本系统的关键,它们要经过解包、数据转换、文件拆分和合并等预处理步骤,再进行标定处理,直至发布。定义1U(Unfiltered),1C(Calibrated)和1L(1级)分别表征这些步骤中产生的数据产品:1U为没有经过标定处理的数据产品;1C为标定后的数据产品;1L为对外发布的数据产品,它一般是1C或者1U的子集。2L(2级)是在1L基础上产生的高级数据产品,它们经过完整的数据筛选和标定,可以直接用于科学分析,比如通过对能谱的拟合得到源参数等。监测和快视处理步骤一般比较简单,它的输入可以是遥测数据,也可以是数传数据处理中的一些数据,输出的结果定义为2M(Monitor)。
遥测数据主要用于监测及快视,时效性比较强,但信息比较少,它有助于判断载荷性能,及时发现新源,从而制定观测计划。数传数据时效性比较差,但是数据全面,是科学研究的基础。对外发布的数据产品可以是未标定的数据,也可以是标定的数据,比如硬X射线调制望远镜卫星(Hard X-ray Modulation Telescope, HXMT)[2-3]发布未标定数据,而雨燕卫星(Swift Gamma-Ray Burst Mission)[4]发布标定数据。在处理上,发布未标定数据的优点在于较容易分开预处理和分析这两个阶段,而发布标定数据需要在预处理基础上经过数据分析软件的处理。本文推荐采用后者,这是因为:(1)发布的标定数据可以直接用于监测快视,一方面标定的数据可以识别一部分噪声及本底,这有助于发现新源,另一方面监测需要评估标定参数,为重新标定提供依据;(2)用户不需要重新标定而可以直接提取能谱、光变等,但是如果用户分析的是以往数据,因为标定数据库更新频繁,一般也要重新进行标定处理;(3)标定处理后会降低数据量,利于传输和分析。
数传数据至对外发布的数据产品的过程中,数据文件需要根据观测计划或者监测结果进行重新组合和切割,形成一个完整的观测数据文件,还要在观测中将不同工作模式的数据分开。需要注意的是,正常观测可能被某些情况打断,观测计划需要及时更新,而监测结果容易出现缺失的情况。观测前后的调姿过程数据可以保存在此观测中,也可以单独作为一次观测。
数传数据在传输中可能出现数据和文件重复,后续处理需要有去重复的策略,可以放在数据切割和重组时进行。对每一次数据下发,按观测计划对数据拆分和重组产生新的观测数据,此时需要记录每个新文件的完整性及有效性,并给出版本编号。如果下次下发数据与本次存在数据重复或者文件重复,首先判断两次文件的完整性及有效性,如果后者好于前者,则覆盖已产生的数据文件。完整性表示起止时间是否已经齐备,而有效性指文件的数据缺失情况(数据丢包及循环冗余校验[5]不通过及它们的影响程度)及正确性。
1.2 子系统规划
参照2017年6月发射成功的硬X射线调制望远镜卫星的下传数据处理系统,并改进为4个子系统。图1为4个子系统在整个系统中的规划,它们的关系可以通过整个系统的运行体现。数据接收及发布子系统在整个架构中起调度作用,一旦数据下传,它将调度其它子系统的软件完成数据处理,并将结果进行存储。数据预处理子系统是数据处理的基础[6],它主要完成对载荷原包数据的提取,这一步是数据分析子系统和数据监测与快视子系统的基础,并产生完整的观测数据。数据分析子系统[7]在数据预处理的基础上完成标定,将产生的1L,2L数据发布给数据接收及发布子系统,供其存储、发布。监测与快视子系统对遥测数据、解包后的载荷状态数据及定标后的数据进行处理,将结果发布给数据接收与发布子系统。整个系统运行为文件驱动型。
图1 下传数据处理系统规划示意图
Fig.1 Conceptual view of Data Processing System
各个子系统完成软件开发及其辅助工作,主要规划如下:
(1)数据接收及发布子系统
负责开发数据接收及发布软件,主要完成数据接收,调用其它子系统软件完成数据处理、监测快视等,并调用数据预处理部分模块将产生的数据进行拆分、重组和去重复后归档,并提供1L,2L和2M的发布接口。主要的接口包括输入数据的传输策略、数据发布接口等。数据接收及发布子系统在整个数据下传处理系统中起调度作用。
(2)数据预处理子系统
负责开发数据预处理软件,主要完成工程数据和科学数据的解析,形成科学事例及记录,还原完整科学事例并修正部分信息,产生完整的观测数据文件。主要的接口为软硬件接口,即需要明确硬件数据采集策略和数据结构定义等。主要工作还包括数据分级定义及内容格式设计、数据处理及修正算法研究等。
数据预处理还需要完成空间环境变量的计算,这些变量连同卫星的电压、温度等构成物理分析的筛选条件。
(3)数据分析子系统
负责开发数据分析软件,主要从1U级产品出发,完成数据标定、筛选及高级数据产品的提取,并提供标定数据库(CALDB)。主要接口为软硬件接口及与科学用户接口,前者主要侧重数据分析过程,后者侧重物理条件的选取。 主要工作还包括地面数据的分析及标定工作。地面分析需要注意事例等级、噪声扣除、坏像素识别等,标定则关注增益修正、能量与能道关系、能量响应及探测效率等,还要完成标定数据库的设计与读写。
数据分析软件需要发布给科学用户,参照硬X射线调制望远镜卫星[7],按模块开发,这些模块包括数据标定、时间计算、数据筛选、能谱光变提取、能量响应产生及本底产生模块等,软件还要提供一个串行运行(pipeline)模块,该模块主要完成上述所有的功能,产生的数据为2L。标定数据库作为分析软件的一部分需要一并发布给用户。
(4)数据监测与快视子系统
负责开发数据监测、快视及显示模块。主要完成载荷状态监测、数据质量监测、科学快视及结果显示。主要工作是研究数据特征、搜寻新源及提取源位置等。其建设的重中之重在于快速识别物理现象,利用智能算法代替人员值班。
1.3 系统流程规划
系统中起调度作用的是数据接收及发布软件,它针对每次数据下发调度各个软件完成数据处理。图2为软件的调度情况。当一次数据下发完成时,首先调用数据预处理软件完成数传数据至没有经过标定处理的数据产品的过程,此过程中有许多文件需要处理,一般将此过程分为多个步骤[6]。这些文件可能存在依赖关系,比如对事例文件的时间进行解析时,协调世界时与晶振对应关系[8]存在于工程文件中。处理策略为:记录每次下发信息,包括文件类型、起止时间等,对没有依赖关系的文件直接处理,对存在依赖而文件缺少的情况,将已有文件挂起等待下次数传。数据文件完整性对该过程影响很大,一般来讲没有经过标定处理的数据产品是完整的,这是因为分析软件在对事例文件进行标定和初步筛选时,会使用很多辅助文件,比如温度文件。但是数传数据一次下传的数据可能满足不了完整性要求,比较常见的是存在数据文件缺失,各个文件时间不统一等情况,处理策略为在文件合并和拆分时,如果这些文件不能覆盖一次曝光时间,则该曝光不能处理,直到达到文件数目和时间方面的要求。如果下次数传文件时间与本曝光时间有重叠,且数据文件有版本更新,则重新产生该曝光文件。没有经过标定处理的数据产品经过部分分析软件模块,主要是标定模块、事例筛选模块等,处理为标定后的数据产品。标定后的数据产品部分生成对外发布的数据产品,对外发布的数据产品经过分析软件的串行运行后生成高级数据产品。
遥测数据的下传次数比较多,它在监测及快视中非常重要,对每次遥测下传,调度都要产生2M结果。数传数据至没有经过标定处理的数据产品的过程及标定后的数据产品的部分数据都要用于监测及快视,数传数据至没有经过标定处理的数据产品的过程中,数据主要用于发现新源,而标定后的数据产品主要用于监测标定信息。这样监测和快视主要有3个监测点:遥测数据、数传数据至没有经过标定处理的数据产品中的数据、标定后的数据。对一次数传或者遥测,数据接收及发布软件都需要调用监测和快视软件,3个监测点不会全部使用而是以文件完备为依据使用,特别是数传时,如果未能产生标定后的数据产品,而只能用数传数据至没有经过标定处理的数据产品。3个监测点的侧重点也有所不同:遥测数据侧重监测载荷运行状态及发现新源,数传数据至没有经过标定处理的数据产品侧重发现新源,而标定后的数据产品侧重标定监测。
1L,2L及2M均可以发布。调度将对外发布的文件进行读写权限的控制。表1为各个子系统的数据输入及输出。
图2 数据接收及发布软件调度情况
Fig.2 The process scheduling of Data Receiver and Distributor Software
表1 各个子系统的数据输入、输出以及需要发布的软件Table 1 Input, output and developing software of each subsystem
数据接收及发布需要建立数据库(比如MYSQL数据库[9])存储一些比较重要的信息:(1)每次数传及遥测下传数据情况,特别是数据处理中各中间环节产生文件的情况;(2)处理过程中的一些关键参数,比如时间对应关系、观测信息、探测单元分类信息(坏探测器等);(3)标定相关信息,特别是反映定标移动的参数。这些信息最好通过监测显示呈现。
2 系统工程化
整个系统的建立取决于数据接口、数据流程、标定和本底方法的确立。
数据下传系统需要确定各种接口及实施方法。接口中最为重要的是软硬件接口,这个接口包括数据采集流程和数据结构定义,这两方面主要与卫星载荷系统和平台系统有关。平台采集的数据,比如轨道、姿态及部分载荷运行参数,多由专门机构设计,形式简单,发布格式固定,但是与载荷系统的接口比较复杂。数据采集流程决定数据文件的组织类型及数据格式,数据结构定义则直接决定数据产品解包算法。本系统一般与载荷系统的建设同步进行,所以这部分接口变动比较频繁。过去接口一般通过文档的形式签署和更改,存在很大的滞后性,如果软硬件接口通过某种系统即写即读比较容易实施,本文建议采用配置文件的形式对载荷数据进行定义[6],而配置文件作为软硬件接口可以通过某种系统呈现。
数据处理流程、数据标定、本底、空间环境以及仪器性能的研究是本系统重要的工作,也是完成数据预处理、分析软件及监测快视的基本保障。它们的研究一般基于两种数据,模拟探测器数据和地面测试数据。模拟探测器数据采集有助于研究标定及数据处理,空间环境模拟有助于研究本底,地面也可以依据数据定义单纯地产生载荷事例数据,可以用于数据处理流程的开发和测试。地面测试数据由载荷系统负责,但是数据分析也需要本系统的参与,这些数据比较接近卫星下传数据,数据的研究对数据处理算法、标定、仪器性能有极大的帮助,尤其对确定事例噪声、事例等级重建等有关键作用。
卫星下传系统的规划存在很多不确定性,特别是数据影响因素的不确定性和标定不确定性。这主要来源于强的空间辐射环境难以估计,载荷的形状及位置可能存在形变,探测特性也容易发生变化等。这决定了本系统需要具备较强的可维护性和扩展性。本文建议采用模块化,数据与代码分离及面向对象的开发模式,并从整体上进行软件开发。
天文卫星的数据处理采用模块化方式,每个模块都有自己的输入参数,可以独立运行,而模块之间传递的是数据文件。这种设计降低了步骤上的耦合,使系统有比较强的可维护性,特别是针对一些非线性操作,将这些处理单独作为一个模块可对其维护不影响其它部分。另一方面模块化有利于调用数据接收和发布软件。数据处理中有许多参数:数据选择条件参数、探测器配置参数、标定参数及本底参数等,其中标定、本底参数更新频繁。软件开发中尽量将代码和这些参数分离,使两者的维护互不影响。对于监测快视、数据与显示界面也需要分开。
面向对象的开发一般有比较好的封装和继承特性,有助于系统性开发。图3是目前硬X射线调制望远镜用户分析软件框架图,其顶层(BaseLIB库)为基本功能集合,包括数据读写类、信息输出类、能谱和光变类、标定数据库(Calibration Database, CALDB)读取类、基本数据结构类、算法类等。设计中顶层应重点开发,它可以为所有软件或者载荷服务,推荐使用硬X射线调制望远镜用户分析软件作为参考库开发该库。中间层为面向不同的载荷,包括文件系统的组成类,各种与载荷有关的数据结构类等,如果软件或者载荷比较简单,可以将此层忽略。再下层的libs及modules分别存放与载荷相关的算法及特殊功能类。tasks则为各个模块的实现,主要完成模块的流程操作。这样设计具有层次性,接口、算法、功能实现彼此分开,而流程函数将它们相互连接,如果某一部分需要改变,不会影响其它部分。这种设计还有一个优点,可以降低软件开发和测试成本,如果软件之间彼此孤立,无论是开发还是测试成本都很高昂,而本设计中,模块测试可以反复使用BaseLIB库,从而增加可靠性。
图3 硬X射线调制望远镜用户分析软件框图
Fig.3 Layered software architecture of HXMT Data Analysis Software
数据流程部分的软件开发为系统的重中之重,包括数据预处理、数据分析。两者的开发顺序应该为预处理在先,分析在后,串行运行模块更靠后,甚至在卫星发射之后再提供。数据预处理、分析和监测快视都需要深刻地理解载荷及数据,而数据接收与发布则可以独立于其它3个软件的开发。
3 总结及展望
卫星下传数据处理系统是卫星地面系统的一个重要组成部分,它负责将卫星下传数据进行逐层处理,发布标定处理后的数据,并发布分析软件及标定数据库。同时它还起到监测探测器状态和数据质量的作用,并承担爆发源、新源寻找等重要工作。这些对卫星科学产出起到支撑和促进作用,尤其在发现新源方面,将直接影响科学产出。本文将卫星下传数据处理系统分为4个子系统,分别为数据接收及发布、数据预处理、数据分析、监测与快视子系统,它们协调工作,完成数据接收及发布软件、数据预处理软件、数据分析软件、监测与快视软件的开发和部署,并提供标定数据库。卫星下传数据处理系统的开发需要遵循利用逻辑性降低代码开发量、利用脑力代替体力的原则,从而完成系统设计和开发。工作中还要重点关注数据处理算法的研究和标定工作。
本文没有关注硬件建设,事实上数据存储及计算环境是非常重要的,这对软件的部署和运行有重要影响。