1、2023 年第 2 期总第 149 期 民用飞机设计与研究Civil Aircraft Design&Research 2023 No.2Sum No.149http:/ myfj_(021)20866796DOI:10.19416/ki.1674-9804.2023.02.021基于 GMAP.NET 的民机试飞二维电子地图设计与研发刘 涛 冯 灿 李沐益 梁仕杰(中国商飞民用飞机试飞中心,上海 201323)摘 要:电子地图是民机试飞中常见的监控应用,用于实时反映试飞飞机的位置、航迹和空域等信息。但传统的电子地图功能单一,存在无法动态更新空域、不能航后回放以及不支持多架机集中监控等问题,无
2、法满足当前试飞安全监控需求。基于GMAP.NET 组件设计研发了一款新的二维电子地图实时监控软件,采用多线程调度、动态图层等技术,集成了时序数据库,在实现多架机试飞航迹实时监控的同时,支持航迹信息的实时存储、回放和空域信息的在线更新。通过在某国产大型客机试飞现场的测试,软件可满足试飞航迹的安全监控需求。关键词:GMAP.NET;时序数据库;动态图层;空域;回放中图分类号:TP311.56文献标识码:AOSID:0 引言实时监控是民机试飞中保证试飞安全的重要手段,是在试飞过程中,以试飞数据为输入实时驱动各种监控应用,真实反映试飞飞机飞行状态的过程。其中,电子地图是不可或缺的重要应用。电子地图往往
3、部署于地面,使用飞机试飞过程中通过遥测实时传输的定位数据(包括经度、纬度、高度和磁航向角等四个参数)来反映飞机的位置,为地面的指挥人员、飞机设计人员等提供参考依据,以此来提高试飞安全。传统的电子地图功能相对比较单一,空域信息需要提前设置,无法做到监控期间的在线更新,很难满足空域信息动态变化的监控需求;同时,在某些重要试飞科目执行时需要进行试飞航迹的实时回放或者重加载,传统的电子地图软件都很难实现;除此之外,多架机试飞航迹的集中监控也带来了巨大挑战。因此,设计研发一款新的电子地图实时监控软件十分必要。本文采用 GMAP.NET 组件,利用多线程调度、动态图层等技术,设计研发了二维电子地图实时监控
4、软件。软件以某国产大型客机的试飞遥测数据为输入,完成了多架机试飞航迹在实时状态下的集中监控和空域信息的动态加载以及删除,并以时序数据库作为存储介质,实现了试飞航迹信息的存储和回放,满足了试飞监控需求,提高了试飞安全。1 软件架构及功能二维电子地图实时监控软件采用典型的客户端/服务端(C/S)架构,以 WPF 平台为基础,采用 C#语言实现,架构如图 1 所示。软件以 XML 文件维护用户相关配置,服务端主要完成遥测数据的接收、解析,并使用 InfluxDB 时序数据库实现试飞航迹数据的实时存储,同时收集服务端和客户端各个功能模块运行的日志信息,管理异常告警。客户端集成了 GMAP.NET 组件
5、,允许用户通过人机交互界面实时监控试飞航迹和飞机位置,并可通过手动方式添加和删除空域。客户端和服务端之间使用 ZeroMQ721 通信作者.E-mail:fengcan comac.cc引用格式:刘涛,冯灿,李沐益,等.基于 GMAP.NET 的民机试飞二维电子地图设计与研发J.民用飞机设计与研究,2023(2):127-133.LIU T,FENG C,LI M Y,et al.Design and development of two-dimensional electronic map for civil aircraft flight test based on GMAP.NETJ.C
6、ivil Aircraft Design and Research,2023(2):127-133(in Chinese).应用与实践总第 149 期消息队列进行数据、用户指令和配置信息的实时交互。图 1 二维电子地图实时监控软件软件架构软件采用多线程实现,各个功能模块与线程间的调度关系如图 2 所示。当软件启动时,主调度线程会自动加载 XML配置文件中的配置信息,获取实时通信的地址和端口,并传输至数据通信模块,同时侦听客户端控制指令,当获取开启指令时,激活各个功能模块。数据通信模块会根据开启指令,自动创建数据通信线程,并在不同工作模式下提取不同的数据源,例如在实时模式下,数据通信模块会将数据
7、发送至数据解析线程进行实时解析,在回放模式下则会从时序数据库或者文件中直接加载数据传递到实时监控模块。经过解析的工程量数据通过两个独立线程分别存储在文本文件和时序数据库中,同时驱动实时监控线程完成航迹的绘制和显示。图 2 线程调度时序图2 服务端2.1 数据通信与解析数据通信模块部署于服务端,主要实现试飞遥测数据的接收、挑选以及服务端和客户端的数据交互。由于工作模式的不同,数据通信模块加载的数据源不同。如图 3 所示,在实时状态下,数据通信模块完成遥测数据接收并分发给数据存储和实时监控模块,数据存储模块会同时将数据存进时序数据库和文本文件,实时监控模块会利用实时数据和空域信息完成监控;在回放模
8、式下,数据通信模块会提取时序数据库和文本文件中的数据驱动实时监控模块进行数据回放和航迹加载。图 3 数据通信流程8212023 年第 2 期刘涛,等 基于 GMAP.NET 的民机试飞二维电子地图设计与研发 试飞时,处理后的遥测数据经过 UDP 组播形式进行实时分发,应用层协议如图 4 所示:所有的参数均以单精度浮点数进行编码,字节长度为 4 个字节,参数的排列顺序则以 csv 文件形式托管在指定的FTP 服务器上。图 4 遥测数据分发协议对于实时数据流的解析如图 5 所示:首先,软件会登录 FTP 服务器自动下载 csv 文件,提取参数索引和参数名称之间的映射关系,形成字典 DIndex,N
9、ame;其次,软件持续侦听遥测数据的网络数据包,对接收到的数据利用同步字以及校验和进行数据完整性检查,通过校验的数据才会被处理;第三,提取数据包的时间戳 T、数据长度 N,并以 4 字节为单位将参数解析为单精度浮点数 Value,最终形成以参数名称为主键、Value 为值的字典DValueDIndex,Value;最后,通过所需经度、纬度、高度、磁航向角等参数名称进行挑选,挑选后的数据按照对应架机被写入不同的消息队列等待客户端的订阅。2.2 数据存储与管理不同架机的地图驱动数据在挑选后会以多线程形式被同时存储到 InfluxDB 时序数据库和文本文件中,以满足数据回放和历史航迹加载的功能。按照
10、图 6 所示流程,软件在完成数据解析后会创 建 两 个 独 立 的 线 程Thread2InfluxDB和Thread2Txt。在 Thread2InfluxDB 线程中,软件将首先创建对象 pointToWrite,该对象维护了参数名称(name)、架机号(SerialNumber)、绝对时间戳(Time-stamp)以及参数的实时值,然后采用异步模式写入图 5 遥测数据解析流程数据库;软件在写入文本文件时,首先会以架机号建立多个独立的文件,其次将采用“参数名称”+“连接符”+“分割符号”的形式(连接符为#,分隔符为,),构建长字符串,同时循环写入指定文件。图 6 数据存储流程2.3 日志与
11、异常管理为了提高软件的稳定性,集成 Log4Net 组件对运行过程中的异常进行捕捉,并采用分级管理机制对日志进行记录,分为信息(info)、警告(warn)、错误(error)、严重错误(fatal)四个等级,其中:1)信息主要为用户的操作记录,例如工程的加载、空域的更新等;921应用与实践总第 149 期2)警告是指在软件运行过程中出现的不影响软件状态的异常信息;3)错误包括数据的解析异常、存储异常、显示异常等;4)严重错误主要记录软件崩溃的时间和原因。3 客户端3.1 实时监控实时监控是整个软件的核心模块,该模块集成了 GMAP.NET 组件,用于实现飞机位置、飞行航迹以及空域信息的实时显
12、示和更新。GMAP.NET 是开源的跨平台组件,其结构如图 7 所示,包括地图数据源(map)、图层(overlay)和图标(markers)。飞机的实时位置、历史航迹和空域以不同的图层叠加在地图源数据上。图 7 GMAP.NET 组件结构GMAP.NET 支持多种不同类型的地图数据源,本软件使用离线模式加载地图源数据,支持 Arc-GIS、Bing、OpenStreet、百度、高德等多种形式。在软件启动时,通过设置 GMAP.NET 组件 MapProvider属性完成地图数据源的加载,同时根据架机号 Seri-alNumber 动态初始化三个图层:gMapOverlayPlane,gMap
13、OverlayTrack 以及 gMapOverlayAirspace。其中gMapOverlayPlane 图层用于显示飞机的图标和当前的位置,gMapOverlayTrack 显示试飞的航迹,gMa-pOverlayAirspace 加载空域信息。客户端在接收到数据后会在 gMapOverlayPlane图层上更新飞机图标的位置,并在 gMapOverlay-Track 图层上“打点”以显示航迹,实现步骤如图 8所示,包括:1)利用实时接收的纬度(latitude)、经度(lon-gitude)等参数信息初始化 currentPoint 对象;2)以 currentPoint 对象创建并填
14、充点 gMap-Point;3)在 gMapOverlayTrack 图层上添加点 gMap-Point 完成航迹更新;4)删除 gMapOverlayPlane 图层上原有的飞机图标信息;5)以 currentPoint 对象、磁航向角(Magnetic-Heading)的当前值创建新的飞机图标;6)在 gMapOverlayPlane 图层上添加飞机图标完成飞机位置的实时更新;7)最后统一主、辅线程,将 gMapOverlayPlane、gMapOverlayTrack 图层加载至 GMAP.NET 组件上。图 8 飞机和航迹的更新3.2 空域管理空域信息有助于监控人员了解飞机当前的相对位
15、置和地面遥测站的视觉盲区,帮助地面指挥人员进行试飞指挥,对于试飞安全十分重要。空域管理模块利用 GMAP.NET 组件动态图层的特性可以实现空域信息的热加载和即时更新。软件支持添加多边形和圆形空域,实现流程如图 9 所示:1)首先构建类 CreateAirspace,定义用于绘制多边形和圆形空域的静态方法 DrawPolygon 和DrawEllipse;2)第二步准备数据源:绘制多边形的各个数据点可以从文件加载,也可以手动设置,格式为“索引#纬度#经度”的字符串,如图 10(a)所示;圆形空域只需设置圆心坐标和半径,如图 10(b)所示;3)第三是调用 DrawPolygon 和 DrawE
16、llipse 方法在 gMapOverlayAirspace 图层上绘制空域,并将该空域添加至由空域名称和空域信息组成的字典0312023 年第 2 期刘涛,等 基于 GMAP.NET 的民机试飞二维电子地图设计与研发图 9 添加空域流程DNameIndexName,Infor,其中类 AirspaceInfor 维护了包括索引、点坐标、绘制线宽、绘制颜色等信息;4)最后统一主、辅线程,将 gMapOverlayAir-space 图层叠加显示在 GMAP.NET 组件上,如图 10(c)所示。a)添加多边形空域信息添加的空域信息以图 11 的形式展示。删除空域时,通过获取选择空域的索引 m
17、调用方法 gMapOver-layAirspace.Polygons.RemoveAt(m)删除该空域。b)添加圆形空域c)空域信息图 10 空域信息调用与管理图 11 空域信息3.3 工程管理软件的重要配置信息存储在 XML 文件中,用户可通过加载 XML 文件实现工程的快速切换。如图12 所示,节点下管理了不同架机的数据通信信息,包括 UDP 的组播地址和端口;是驱动地图的参数信息,除了参数名称外,表示定时获取数据的延时,单位ms;在中维护了用于不同架机数据131应用与实践总第 149 期储存的时序数据库和文件地址。图 12 XML 配置信息4 试验为了验证二维电子地图实时监控软件的功能完
18、整性和性能,将其部署在某国产大型客机的试飞现场,利用遥测实时数据进行驱动,测试结果如表1 所示。表 1 试验结果测试项目测试结果航迹显示正常数据存储时序数据库、文本文件可正常记录和加载实时回放可正常读取时序数据库数据,并不影响实时存储空域加载可正常加载、删除多边形和圆形空域实时监控可正常完成 3 架机 5 h 全过程监控数据延时 75 ms 试飞航迹的监控状态如图 13 所示。a)单架机试飞航迹监控b)多架机试飞航迹监控图 13 试飞航迹的监控状态5 结论本文设计研发了二维电子地图实时监控软件,弥补了传统电子地图软件的不足:1)利用某国产大型客机试飞遥测数据实现了多架机试飞航迹的实时监控;2)
19、采用时序数据库和文本文件相结合的方式实现了航迹数据的存储、实时回放和事后加载;3)利用 GMAP.NET 组件动态图层特性实现了空域信息的热加载和灵活更新。参考文献:1 黄涛,王伟.大型民机试飞测试发展与挑战J.计算机测量与控制,2016,24(9):5-7;11.2 孙健,霍培锋.大型飞机试飞测试现状与对策J.测控技术,2007,26(3):19-21.3 白效贤,杨廷梧,袁炳南.航空飞行试验遥测技术发展趋势与对策J.测控技术,2010,29(11):6-9.4 李彦辰,艾庆忠,王少非.基于 Redis 的分布式搜索引擎研究J.软件导刊,2018,17(3):201-204.5 秦永刚,张峰
20、.基于 ZeroMQ 的仿真时间同步系统设计J.信息与电脑(理论版),2019(15):113-115.6 祁春,段宝元.遥测数据实时处理软件系统及其应用J.科学技术与工程,2010,10(28):7047-7050.7 MACDONALD M.WPF 编程宝典:第 4 版M.王德才,译.北京:清华大学出版社,2013:17-25.8 刘铁猛.深入浅出 WPFM.北京:中国水利水电出版社,2010:35-50.9 秦永刚,张峰.基于 ZeroMQ 的仿真时间同步系统设计J.信息与电脑(理论版),2019(15):113-115.10 杨哲,王鹏,徐茜.基于 RTR 的遥测数据实时处理软件的设计
21、与实现J.计算机测量与控制,2016,24(1):165-167.11 山寿,郝明哲,孙伟.基于数据分发服务和 WPF 技术2312023 年第 2 期刘涛,等 基于 GMAP.NET 的民机试飞二维电子地图设计与研发的试飞实时监控系统设计J.计算机测量与控制,2020,28(3):119-122,143.作者简介刘 涛 男,硕士,高级工程师。主要研究方向:试飞数据处理与管理。E-mail:liutao2 comac.cc冯 灿 男,博士,研究员。主要研究方向:试飞测试工程。E-mail:fengcan comac.cc李沐益 男,硕士,工程师。主要研究方向:试飞数据实时监控。E-mail:l
22、imuyi comac.cc梁仕杰 男,硕士,工程师。主要研究方向:试飞遥测传输。E-mail:liangshijie comac.ccDesign and development of two-dimensional electronic map for civil aircraft flight test based on GMAP.NET LIU Tao FENG Can LI Muyi LIANG Shijie(COMAC Flight Test Center,Shanghai 201323,China)Abstract:Electronic map is a common monit
23、oring application in civil aircraft flight test,which is used to reflect the position,track and airspace of flight test aircraft in real time.However,the traditional electronic map has a single function,and has shortcomings such as unable to dynamically update the airspace,unable to replay after fli
24、ght,and unable to support centralized monitoring of multiple aircraft,which cannot meet the current test flight safety monitoring requirements.Based on GMAP.NET component,a new real-time monitoring software for two-dimension-al electronic map has been designed and developed,which adopts time series
25、database,dynamic layer and other technologies to realize the real-time monitoring of the test flight tracks of multiple aircrafts,and also supports the storage and playback of track information and the online update of airspace information.Through the field test of large passenger aircraft,the software can meet the safety monitoring requirements of the test flight track.Keywords:GMAP.NET;timeseries database;dynamic layer;airspace;playback331 Corresponding author.E-mail:fengcan comac.cc