基于Qt的地面模拟飞行控制系统软件设计与实现
2022-02-19许梦华
许梦华
(沈阳旋飞航空技术有限公司,辽宁沈阳,110035)
关键字: 无人机;模拟飞行控制系统;Qt5.9.1;软件结构
0 引言
随着航空航天技术几十年的快速发展,新型舵面控制技术呈现快速发展的趋势。地面模拟飞行控制系统作为无人机新型舵面技术验证和评估重要手段,其性能指标、可靠性和安全性就显得尤为重要。本文所介绍的平台软件是基于Qt5.9.1设计,结合地面模拟飞行平台的硬件结构,以XXX型固定翼无人机的新型舵面技术为对象,操纵员在风洞虚拟飞行试验和风洞自由飞行试验两种场景中,采用地面模拟飞行控制系统中的指挥台、俯仰操纵台、偏航/滚转操纵台和推力操纵台实现人机交互式监视、控制,最终完成无人机大气自由飞初步验证阶段的技术保障。
1 地面模拟飞行控制系统的硬件结构
地面模拟飞行控制系统的硬件结构分为指挥台,俯仰操纵台,偏航/滚转操纵台,推力操纵台,各操纵台自动绑定到固定的网络地址组合成局域网络。
图1 地面模拟飞行控制系统的硬件结构
指挥台拥有对整套地面模拟飞行控制系统功能配置、模式配置、飞行器参数调节等功能,是其他操纵台与飞行器通讯连接的接口,由指挥台可以完成其他操纵台操纵指令的上传、飞控状态向其他操纵台的分发等工作;俯仰操纵台主要完成飞行过程中俯仰操作,可以完成所有姿态相关的控制功能;偏航/滚转操纵台:主要完成飞行过程中偏航/滚转操作,用于进行飞机横向人机交互控制;推力操纵台:主要完成飞行过程中油门操作,用于进行推力人机交互控制。地面模拟飞行控制系统的硬件结构如图1所示,可扩展性强、独立简洁。
2 地面模拟飞行控制系统软件设计
2.1 软件结构
根据XXX型固定翼无人机的新型舵面技术验证与评估的实际需求,软件基于Qt5.9.1进行开发,运行在工控机上,运行环境为Win10系统。Qt是一款跨平台C++图形用户界面应用程序开发框架,具备优良的跨平台性能、良好的面相对象性、易用性和运行速度快等优点,该软件界面通过UI完成,底层通过C++完成逻辑通信【1】,操纵台软件架构图如图2所示。
图2 操纵台软件架构
2.2 软件功能
根据操纵台软件架构图,软件的设计分成以网络通信、数据采集与显示2大模块进行开发。
2.2.1 网络通信模块
网络通信模块是基于网络通讯协议实现指挥台软件和各操纵台软件的通讯,软件使用Qt中的QUdpSocket类,指挥台作为服务器端,各操纵台作为客户端,它门能够根据操纵台自身角色显示对应的界面。客户端与服务端通过网络连接,具有良好的独立性,不用拘束于显示器的显示内容,灵活实现,线路简洁,如图3所示。
图3 网络结构
(1)通信协议
指挥台与各操纵台的通讯采用网络组播方式发送。发送内容使用JSON字符串格式标记。指挥台通过数据链路(无线通讯),将接收到的飞行器信息封装成相应的类型,并将封装好的JSON字符串通过有线发送到组播网络中,消息自动发送到网络中的其他监听操纵台,不需关心此时是处于风洞虚拟飞还是风洞自由飞。
现约定其通信协议如下表。
表1 通信协议
表2 TYPE 定义类型
飞行器系统状态(SYSSTATUS)3 位置(POS)经度(LAT) Double,degree纬度(LNG) Double,degree高度(ALT) Float,m空速(AS) Float,m/s地速(GS) Float,m/s相对高度(REL_ALT) Float,m 4席位间心跳包(HEARTBEAT)操纵台会以1Hz的频率向组播网络中发送自己的心跳包,同样会接收到其他操纵台的心跳包,其他操纵台可以判断此种情况下时候正常工作。序列(SEQ) Int,累加发送,999后自动清零数据链路状况(LINKSTATUS),(指挥台发送有效)链路连接状况5温度(TEMPSTATUS) Float,摄氏度电压(VOLTAGESTATUS)Float,v
表3 指令设计
(2)QUdpSocket类类介绍
UDP(User Datagram Protocol,用户数据报协议)是一个轻量级的、不可靠的、面向数据报的、无连接的协议。QUdpSocket是QAbstractSocket的一个子类,允许你发送和接收UDP数据报。使用该类最常见的方法是使用bind()绑定到一个地址和端口,然后调用writeDatagram()和readDatagram()/receiveDatagram()来传输数据。每当有数据报写入网络时,套接字就会发出bytesWritten()信号。每当数据报到达时,就会发出readyRead()信号。在这种情况下,hasPendingDatagrams()返回true。调用pendingDatagramSize()获取第一个待处理数据报的大小,调用 readDatagram() 或 receiveDatagram() 读取它【2】。
该机制由协议、本地地址、本地端口、远程地址、远程端口5个信息构成,其传输速度更快,无需建立连接,实现从Socket建立到传输数据完成后管理连接的功能【3】。
①协议指定了Socket所使用的通信协议,一般用TCP或UDP;②本地地址即网络协议分配给本地主机的地址;③本地端口用以和本地运行的其它程序所区分;④远程地址即依照网络分配给远程主机的网络地址;⑤远程端口号用以和远程主机运行的其它程序所区分。
2.2.2 数据采集与显示模块
数据采集与显示模块实现各操纵台实时采集网络中的数据,采用数字、曲线等形式实时显示在软件界面上,并通过醒目的颜色块提示以消息的形式提示异常情况,便于操纵者及时调整处理。
运用QUdpSocket类,网口接收到数据后,会将数据存入接收缓冲区,并且发出一个信号,因此需要定义一个槽,将其与这个信号相连接,这样每次网口有新数据到来,我们就可以在槽中通过成员函数readDatagram()将接收缓冲区的数据全部读出来,接着根据通信协议,对指挥台发给各操纵台的一帧数据进行解析,将有效数据显示到软件的界面上。
(1)数据流程
指挥台启动,检查硬件设备,包括网络通信,数据链路状态,显示任务类型选择(风洞虚拟飞,风洞自由飞),检查相应的操纵台是否连接。当数据链路通信完成,则转发相应数据到对应操纵台,同时监听各操纵台上传的数据,进行封装并通过数据链路发送到飞行器。各操纵台启动过程相似,软件启动后检查面板以及操纵杆的可行性,网络通信,与指挥台的连接状态。一切正常之后,可等待指挥台发送状态信息以及向指挥台发送操纵指令。
(2)界面说明
①操纵台启动界面
启动界面为在指挥台未能指定操纵台状态或者工作状态时的默认界面,为所有操纵台共有。当操纵台随计算机启动后自动开启后,给操纵者提供一定的信息数据,界面布局如图4所示。
图4 界面布局
②基础界面
a.软件名称
b.软件版本
c.网络状况
d.硬件状况
e.上一次的使用时间
f.上一次使用的模式
g.上一次使用的机型
③俯仰操纵台界面
a.姿态仪表
b.当前场景类型,飞机型号
c.迎角、侧滑角
d.地速,表速
④偏航/滚转操纵台界面
a.姿态仪表
b.当前场景类型,飞机型号
c.舵面状态
⑤推力操纵台界面
a.姿态仪表
b.当前场景类型,飞机型号
c.油门仪表
⑥消息层
a.正在退出系统
b.正在关机
c.正在进入系统
d.正在切换至xx场景
e.正在切换至xx飞机型号
3 结束语
本文对地面模拟飞行控制软件设计和实现分别进行了系统的描述,详细介绍了网络通信协议和软件界面布局,通过在风洞虚拟飞行试验和风洞自由飞行试验两种场景中的全性能测试,实时监测无人机工作状况和状态参数,操纵指挥台、俯仰操纵台、偏航/滚转操纵台、推力操纵台,以及故障报警处置功能,为新型舵面技术提供了有效的评估和验证方式。