基于SpringBoot的运载火箭信息交互指挥平台
2023-04-03陈锴迪欧阳李青马玉璘张海波
陈锴迪,欧阳李青,马玉璘,张海波,徐 玮,徐 昕
(上海航天电子技术研究所,上海 201109)
0 引言
新一代运载火箭测发控系统针对某系列火箭通用化特点进行统型设计,系统简单地适应性更改即可满足不同型号的应用需求。运载火箭信息交互指挥平台运行在运载领域新一代测发控集群上,数据采集终端接收运载火箭箭上、地面、加注库房数据进行处理显示,并存储于MySQL数据库中,以便判读人员对历史数据进行回放和追溯。传统的浏览判读软件大多采用C/S架构,只能一对一查看,一旦更改则需要对每台主机运行的终端进行同步更新,指挥人员查看实时数据和历史数据往往需要在多个终端之间切换,不仅不利于快速数据监测,且容易引发多个软件下接口冲突与兼容的问题。此外,面对国产操作系统推广使用的需求。传统的显示判读平台可移植性不强,对操作系统提供出了极高要求,不利于平台后续的维护和使用。为克服现有技术的不足,解决传统平台不能灵活扩展的问题,以满足新一代运载火箭高密度测试的需求,本文以某系列运载火箭为研究对象,对通用化、一体化、可移植性强的信息交互平台开展分析和研究,创新性地将B/S架构引入火箭数据综合显示系统,提出了以Vue为前端开发框架,采用SpringBoot、Mybatis-Plus等主流技术实现后端软件架构,MySql搭建关系型数据库用于海量试验数据存储的方式,实现了数据实时显示和历史追溯的功能,为后续平台在多型号中推广和国产操作系统中应用奠定了良好的基础。
1 信息交互指挥平台设计原则
1.1 显示判读一体化
信息交互指挥平台部署在新一代运载火箭后端大厅上,为指挥和判读人员提供高效、便捷的数据监测方式。在平台运行过程中能够接收来自火箭电气系统和动力系统的所有箭上及地面数据,将处理后的数据以特定方式呈现在前端界面上,供指挥人员查看,对重要参数进行实时监测,遇到故障情况及时预警。
1.2 兼容某系列运载火箭
某系列运载火箭采用无毒害燃料及总线控制技术,统称为新一代运载火箭。新一代运载火箭测发控系统核心基础统型设计要求各软件配置项具备通用化的特点,能够兼容各型号运载火箭。面对型号任务多、时间紧的特点,一项软件的更改即可满足各型号需求,为测发控系统缩短研制周期提供了有力支撑。
1.3 适应国产操作系统
目前国产化的需求日益紧迫,国产操作系统的推广对软件的跨平台能力提出了新的要求。传统通用判读软件大多采用C#编程,Visual Studio(Windows平台应用程序的集成开发环境)开发,对所部署主机的操作系统有限制。新一代运载火箭信息交互指挥平台以跨平台为设计初衷,为日后移植到国产操作系统中使用奠定基础。
1.4 用户分层管理,自定义显示页面
运载火箭信息交互指挥平台通过权限识别实现用户分层管理,按照各角色特点进行数据授权,管理员可以分配和修改账户,用户也可以对自己权限范围内的数据自定义显示方式,如图表式、卡片式。分层管理可以减少无关信息的干扰,也能防止重要信息泄露。
1.5 安全性及可靠性设计
运载火箭信息交互指挥平台承担运载火箭电气系统和动力系统指挥显示功能,平台需要具备容错性,防止因操作不当造成程序崩溃。同时需要针对试验数据设计灵活、安全机制稳健的数据库系统,实现数据的容灾备份。
2 平台总体设计
运载火箭的信息交互指挥平台是整个运载火箭型号工程项目的重要组成部分,集成了地面和箭上数据的显示和判读任务。该平台的设计原则是在满足功能性需求的前提下尽可能兼容先进性、安全性、轻量化和可扩展性等非功能性需求。平台采用B/S架构搭建总体框架,选取目前Java Web应用的主流框架Spring Boot+Vue.js进行前后端分离式开发。Spring Boot开发框架的引进能够极大地简化项目的配置,与传统开发模式相比,“约定大于配置”的理念让平台的开发、测试和部署变得更加简便。
文献[1]在分析测发控业务需求的基础上,提出了测发控信息全过程可配置、测试数据通用化处理、测试实时判读和试验数据快速后处理的方法,构建了航天通用测发控软件平台。
运载火箭测发控系统的统型设计是实现各型号火箭通用化的必要途径之一。文献[2]为实现新一代运载火箭地面测试、发射和控制的一体化、通用化和智能化,提出了一种运载火箭地面测发控系统的体系架构,整合了传统运载火箭控制、测量、总控网等分系统的测发控共性需求,并在某型号完成了原理性试验和关键技术验证。
为了提高运载火箭遥测参数起始电平的判读效率和覆盖性,文献[3]基于LabVIEW平台和ACCESS数据库设计开发了一款遥测参数起始电平自动判读软件,经过测量系统综合试验的验证,该软件能够实现遥测参数全波道数据的自动测试。
文献[4]设计实现了一个基于SpringBoot的机载CNI系统预置参数生成软件,是SpringBoot框架在航空航天科学与工程中的创新性应用。系统基于B/S架构,通过Spring Boot与Vue框架的结合实现了软件的前后端分离,使软件的配置和功能扩展变得简便。
基于以上研究,本平台将数据接收、处理、显示、存储功能分成4个模块。数据接收模块采用统一的接口形式和标准的通讯约定,数据处理模块根据业务需求从存储模块读取配置信息,并将处理后的数据交还给存储模块进行入库。各模块间分工明确,接口清晰,系统的整体集成度高,信息架构合理高效。
运载火箭信息交互指挥平台架构如图1所示。运载火箭电气系统、测量系统和动力系统的测试数据通过通讯管理软件组播发送给数据接收模块,数据接收模块简单地过滤后传送给数据处理模块按通讯约定进行解析,并将解析后的结果以用户指定格式呈现,部分中间数据通过数据存储模块入库保存。
图1 平台架构图
3 平台软件设计
3.1 软件架构设计
运载火箭信息交互指挥平台采用前后端分离式开发,引入了Swagger框架生成前后端接口文档,能极大程度地提高软件开发的效率。前端只负责人机交互和信息展示,所有数据的接收、处理和存储由后端实现。
软件架构采用经典的MVC(Mode、View、Controller)三层架构,包括视图层、业务逻辑层和数据访问层[5]。视图层是指与用户交互的页面,Web模式下特指由HTML元素构成的网页。业务逻辑层主要是处理业务数据和对数据层的一些操作,包括数据接收模块和数据处理模块。数据访问层与数据库直接交互,主要是对数据库的一些增删改查操作,包括配置信息读取、过程数据存储等。
图2 软件架构
3.2 数据接收模块设计
3.2.1 与外系统通信
与外系统的信息交互包括TCP(transmission control protocol)和UDP(user datagram protocol)两种通讯形式。数据类型有电气有线数据、动力有线数据和遥测数据。平台能接收到的电气有线数据来自通信管理软件A的组播,动力有线数据来自通信管理软件C的组播,遥测数据来自通信管理软件B的组播,此外还有设备自身组播的数据,如地面电源和箭上配电控制器等。除了以上组播数据外,还有一部分箭上数据来自控制系统的广播。因此,指挥平台接收的数据均基于UDP协议,包括组播和广播数据。
电气有线组播数据和动力有线组播数据大多为控制、查询、采样等指令。这类数据有固定帧格式,可以用统一的接口接收,收到的数据帧按帧标识字段进行剔除。
地面电源和箭上配电控制器等设备组播的数据为设备自身的采样信息,实时发送给显示终端用于展示设备状态。
控制系统的数据通过广播形式发送,主要为运载火箭箭上数据,火箭数据接收模块的处理流程如图3所示。
图3 数据接收流程图
3.2.2 浏览器-服务器通信
3.2.2.1 WebSocket通信
WebSocket是基于HTML5提供的一种在单个TCP连接上进行双向通讯的网络协议。这种通讯方式的优势在于浏览器和服务器只需要建立一次握手就可以长久而稳定地连接,且双方都可以主动发起数据请求,进行双向数据传输。
图4 WebSocket通信
为了满足向不同用户展现多样数据的需求,该平台设计了多个WebSocket通信,每个WebSocket服务于特定页面,在用户切入时建立连接,用户选择参数后,后端WebSocket收到信息,给前端推送相应数据。
以上WebSocket都继承了统一的接口,客户端订阅消息时请求的路径名称为WebSocket代号加上用户ID,WebSocket发送数据时统一封装成JSON格式传送给浏览器。
3.2.2.2 AJAX通信
AJAX(Asynchronous JavaScript and XML,AJAX)是基于XML的异步JavaScript,AJAX可以在不加载全部网页的情况下对部分数据进行更新。
AJAX与WebSocket不同,他建立的是短连接,且只能由客户端发起,而非双向通信。因此,对于实时性要求不高的数据,可以采用AJAX进行交互,例如查询页面的配置信息和历史数据等。
服务端设计了统一的数据返回格式,我们将响应封装为JSON格式返回,返回值包括:响应结果、响应码、消息、返回数据。
3.3 数据处理模块设计
数据处理模块的数据来源为网络数据、历史数据和本地文件3种形式。网络数据通过数据接收模块的接口传入至数据解析模块,历史数据通过数据访问层操作数据库导入,电磁阀数据以二进制文件形式存储于本地文件夹中,需要判读人员手动导入查看。
3.3.1 实时数据处理
实时数据来自网络传输,对数据的处理逻辑如图5所示。不同类型数据的传输频率有很大差异,例如测量数据的传输约为20 ms一帧,这对数据处理模块的响应速度提出了很高要求。
图5 实时数据处理逻辑图
本文将接收到的网络数据分为以下几类:指令参数、时串参数、状态参数、测量参数,数据处理流程如图6所示。指令参数由控制命令、查询命令、采样命令等参数组成,例如PLC设备控制命令,配电控制器状态量查询命令等。这类参数需要显示在流程信息栏上,重要程度较高,数据处理模块需要对每一帧的是否合格进行校验,对不合格的帧标记成异常状态进行显示。
图6 数据处理流程图
时串参数包括点火时串、电磁阀时串、综合控制器时串、电爆电路时串。这类数据属于非周期性数据类别,数据帧间隔不固定。数据处理模块收到时串数据实时处理后放入缓存,根据时串类别固定间隔推送,可以防止浏览器因瞬时数据量过大而卡死。电爆电路时串由于通断时间较短,与其他时串同一间隔推送会致使界面上看不出状态变化,因此,电爆电路类时串采用实时推送的方式。
状态参数包括PLC、配电控制器、直流电源、中频电源等设备组播的数据,其中有设备自身状态相关数据和设备采集的信息。数据处理模块将这类数据的模拟量按字节解析为整型或浮点型数值,状态量按位解析为二进制数值并以键值对的形式进行存储。
测量参数与其他参数的不同之处在于数据传输的速度特别快,为了防止浏览器负载过大,经过测试,将以图表形式显示的测量参数的实时推送更改为每一秒刷新一次。这样处理使得图表界面只能查看最新一秒内的数据,若要了解当前参数的全程变化情况,可以在事后浏览模块进行回溯。
3.3.2 历史数据判读
数据库管理终端将所有收到的网络数据解析后存储在本地数据库中,并开启实时同步服务,将数据传输至另一台数据库备份。指挥平台的历史数据来源于备份数据库,配置文件来源于本地数据库,数据判读的处理逻辑如图7所示。
数据判读有在线预览和生成报告两种形式,在线预览模式下,用户可自主修改当前参数的阈值,服务器会将用户录入的判读信息存储到配置数据库中,下一次判读只需从数据库中取出相关信息即可。
用户点击生成报告时可以选择测试项目、判读表、报告是否含有曲线等基本信息,服务器首先会根据用户选择的信息在数据库中查找是否已存在判读结果,若已有结果则将相关数据填入判读报告中,若没有结果则读取相关配置生成判读报告,用户可前往报告管理页面自行下载至本地。
判读类型大致可以分为以下几种:时序数据判读、时刻值判读、全程数据判读、最大最小值判读、指令数据判读。其中全程数据判读和最大最小值判读都属于单一数据判读,是对某一参数的监测,不涉及第二个参数,处理方法比较简单。
3.3.2.1 时序数据判读
时序数据判读主要是对时串数据的实测值以不同时间基准进行判读,某一时串参数通常有多次通断记录,每次通断对应的判读基准和允差都不同,软件应从数据库中提取到该时串的每一次变化并根据配置信息判断其是否合格,标记出不合格项,超出理论通断次数的时串需单独列出,便于判读人员检查异常原因。
图7 数据判读逻辑图
3.3.2.2 单一数据判读
单一数据判读的处理方式较简单,只需读取数据的平均值、最大值或最小值进行上下限判读。但对于数据量庞大的测量参数,即使是简单地查询平均值,单次执行时间也远高于普通参数。因此,设计合理的数据库表结构和软件多线程并行成为解决这个问题的必要方式。
3.3.2.3 时刻值判读
时刻值判读在单一参数的基础上引入了时间点,例如在电池加温指令通时判读电池温度是否合格。这类数据的处理会涉及指令信息存储和电池信息存储两张表,指令信息存储的时间节点会对判读结果产生影响,因此对数据库管理终端的实时数据写入速度有较高要求。
3.3.2.4 指令数据判读
指令数据判读是对配电控制器指令码和操作码状态位变化时对应状态量参数是否变化进行判断。例如,配电控制器收到开锁命令,指令码和操作码变为开锁对应数字,开锁状态位要随即变成“0”,表示开锁成功。数据处理模块应获取配电控制器的所有指令码和操作码,并对相应参数进行判断,将每一条数据以表格形式罗列出来供判读人员查看。
3.3.3 电磁阀数据解析
测试阶段需要对发动机电磁阀、辅助动力电磁阀、增压输送电磁阀电流曲线进行判读。根据电磁阀电流曲线特征,自动识别出电磁阀起始动作时刻(t1)、吸合时间(t2)、稳态电流(I1)、关闭时刻(t3)、释放时间(t4)等参数值,定义如图8所示。
图8 电磁阀电流曲线
发动机电磁阀、辅助动力电磁阀、增压输送电磁阀数据由两个分布式设备采集得到,因此,用户查看电磁阀数据时需要分别导入两个电磁阀数据包才能解析得到所有的电磁阀数据。电磁阀解析模块按通道位顺序依次解析每个电磁阀,将得到的波形和特征点存储至数据库,电磁阀解析的流程如图9所示。
3.4 数据显示模块设计
3.4.1 通用界面
通用界面的显示内容是固定的,包括电气指挥监视界面、测量参数浏览界面、动力指挥监视界面、动力配气台参数浏览界面,只有被授予了权限的用户才可以登录查看。电气指挥监视界面有综合、配控数据、时序数据、状态屏4个页签,如图10所示。该界面涵盖了运载火箭电气系统配电控制器、地面电源、电池等参数的全方位监测。
图10 电气指挥监视界面
测量参数浏览界面展示了动作参数、动力系统参数、测量系统参数、总体参数、热环境参数、热环境非实时参数,如图11所示。用户可选择表格形式查看参数实测值,也可以切换至曲线模式,自由勾选想要显示的参数。
图11 测量参数浏览界面
动力指挥监视界面是对运载火箭动力系统参数的监测,包含了重要参数、状态监控、模拟参数、状态参数、电磁阀、流程屏6个页签,如图12所示。状态量以信号灯的形式显示通断,模拟量以数字或曲线方式显示,并按配置的上下限实时判读,超限参数能够及时预警。
图12 动力指挥监视界面
配气台参数浏览界面是对运载火箭动力系统氮气配气台和氦气配气台相关数据的监测。除了氦气配气台和氮气配气台内部各测点参数外,一二级煤油箱和氧箱的直测参数也以图表形式显示在配气台参数浏览界面上。
图13 配气台参数浏览界面
3.4.2 自定义界面
自定义界面是用户可自主配置的界面,如图14所示。该界面对所有用户开放权限,用户可自主选择显示的内容和形式,配置重要参数、表格数据、绘图数据、卡片参数4个页签。
图14 自定义参数显示界面
3.4.3 用户管理
用户管理包含个人中心和系统配置,如图15所示。个人中心为用户修改个人账号、密码以及配置参数显示形式的页面。系统配置只对管理员开放,管理员可进入系统管理页面新增角色和用户,对同一角色的用户统一更改权限,修改用户的账号和密码,以及查看系统日志。
图15 用户管理界面
3.5 数据存储模块设计
数据存储模块封装了软件后端与数据库和本地文件夹的交互接口,平台在运行过程中产生的判读数据和配置信息会存储在数据库中,而电磁阀原始文件等中间数据和判读报告则存储在本地文件夹中。
3.5.1 数据库存储
数据库存储模块与数据库的交互依赖于Mybatis-Plus框架,Mybatis-Plus是在Mybtis的基础上做了增加,能极大程度简化对数据库的增删改查操作。在SpringBoot框架下只需通过Maven导入依赖,并在配置文件中添加MySQL数据源信息即可快速使用MyBatis-Plus。
本文对数据库存储表进行设计,可以分为用户信息配置表、参数信息配置表、界面信息配置表、过程数据存储表四类,共55张表,如图16所示。
图16 数据库存储表
以参数信息表“itp_param_config”为例,如图17所示。数据库存储表的结构中包含以下几种基本字段:“uuid”,作为行唯一标识;“update_time”,更新时间;“create_time”,创建时间;“deleteflag”,是否删除标志。其中“uuid”为表主键,添加数据库表主键方便表之间存在嵌套时的分表查询,加快了数据库的操作速度。
图17 表结构
3.5.2 本地文件存储
试验过程中上传或下载文件需要通过Nginx(engine x)实现,Nginx是一个高性能的负载均衡和反向代理的服务器,特点是内存占有少,并发能力强[9]。
开启Nignx应用程序前需要在Nginx.conf配置文件中约定存放的目录和文件名后缀。使用Nginx作为资源访问服务器,可以防止用户上传错误文件,把控用户权限。
3.6 效果分析
本文设计的信息交互指挥平台已在某型号运载火箭发射任务中得到验证。基于B/S架构的平台部署在某基地后端指挥大厅的测发控集群上,判读人员通过谷歌浏览器进行访问。相比传统显示判读软件终端个数多、需要重复部署的缺点,基于SpringBoot的运载火箭信息交互指挥平台以其功能完备、部署高效、响应敏捷为特色,为新一代运载火箭快速测试、发射模式提供了强有力的支持。
4 结束语
基于SpringBoot的运载火箭信息交互指挥平台采用B/S架构,前后端分离模式开发,实现了运载火箭地面数据的显示和判读,本文提出了某系列运载火箭通用化数据处理方式,可通过修改配置文件实现多型号运载火箭适应性更改,达到一套软件适用于多个型号的通用化目标,并在某型号发射任务中得到验证。运载火箭信息交互指挥平台具有良好的稳定性和安全性,为指挥和判读人员提供了更高效的工作方式,也为日后国产操作系统的应用奠定了基础。