飞艇综合处理机测试激励自动发送软件设计*
2023-10-29孙孟宇岳佳欣
邢 浩,孙孟宇,岳佳欣
(中航工业西安航空计算技术研究所,陕西 西安 710065)
0 引言
载人飞艇是一种可操纵的浮空飞行器,它依靠气囊内封闭的氢气或氦气产生浮力,并通过发动机来推进其在空中的持续飞行,具有良好的机动性和稳定性。目前载人飞艇已广泛应用于航空运输、应急救援和商业旅游等场景中。综合处理机(Integrated Processor,IP)作为飞艇航空电子系统的重要组成设备,它主要用于连接各种外部设备和显示器,同时提供各路数据的收发功能,因此综合处理机对飞艇航电系统数据处理功能的实现起到十分关键的作用。
随着民用载人飞艇技术的不断发展,综合处理机软件(Integrated Processor Software, IPS)的功能越来越复杂。为了保证飞艇航电系统的可靠性、稳定性和安全性,必须对IPS进行全方位和多层次的测试[1]。由于综合处理机需要与其他外部设备互连,为了验证IPS的功能是否符合要求,需要模拟各种外设来产生数据激励,并发送给综合处理机进行处理。在实际工作场景中往往需要多种外设同时给综合处理机发送激励,为了解决测试激励的并行发送问题,设计了一种飞艇综合处理机测试激励自动发送软件。该软件采用Python语言开发,能够同时模拟产生多种数据激励,并可根据项目需求选择需要发送的测试激励和对应的目标机。本文提出的测试激励自动发送软件(Test Excitation Auto-send Software, TEAS),既解决了测试激励的并行发送问题,又明显提高了测试效率。此外,该软件只需要进行少量改动即可应用于同类设备的测试,具有很好的通用性。
1 测试激励自动发送软件概述
1.1 测试激励自动发送软件的基本功能
TEAS软件能够模拟各种外设产生数据激励,并根据实际需求随时启动和暂停激励的发送,同时可以实现激励数据的单路发送和多路并行发送,明显提高了测试效率,综合处理机的测试环境如图1所示。
图1 综合处理机测试环境
由图1可知,综合处理机测试环境主要由PC机、NPort串口服务器、2台综合处理机、2台座舱显示器以及各种连接线缆组成。其中2台综合处理机是被测设备,PC机、NPort串口服务器和座舱显示器共同组成了测试设备。NPort串口服务器与2台综合处理机分别通过10路RS422串口线进行连接,这10路RS422数据分别表示左发参、右发参、气囊压控、飞控、矢量、航姿、左油量、右油量、电台和应答机数据。而TEAS软件运行在PC机上,它主要用于测试激励的发送控制与管理;而座舱显示器能够将综合处理机处理后的数据以图形化方式进行显示,同时也可以将结果数据发送给TEAS软件进行分析和处理。
1.2 测试激励自动发送软件的工作原理
在飞艇航电系统中,共有10种外设与综合处理机互连和通信,它们分别是左/右发参采集器、压控计算机、飞控计算机、矢量控制器、航姿控制器、左/右油量传感器、电台以及应答机。TEAS软件可以同时模拟这10种外设并生成激励数据发送给综合处理机,综合处理机将各路数据进行处理分析后发送给座舱显示器,在显示器上可以直观地查看各路数据值。此外,TEAS软件可以直接获取座舱显示器上的数据并进行处理,从而判断综合处理机的功能是否正常。针对不同的测试场景,TEAS软件可以根据实际需求来并行发送多路数据,而且不同数据之间不会相互影响,同时也能随时暂停数据的发送。
2 测试激励自动发送软件的开发工具选择
目前TEAS软件的开发工具主要有MFC、Qt以及PyQt等。MFC由微软公司开发,它可调用的类中包含了大量Windows句柄封装类,以减少应用程序开发人员的工作量。但MFC存在一些明显缺点,比如MFC不能跨平台,程序只能运行在Windows系统,不能运行于Linux等开源系统,这就限制了MFC在工程中的广泛推广。基于上述特点,TEAS软件的开发未使用MFC。
Qt是一款基于C++的跨平台GUI库,它包含跨平台类库、集成开发工具和跨平台的IDE。Qt是完全面向对象的,主要用于GUI程序的开发;同时Qt也是跨平台的,它适用于Windows、linux等多种操作系统。而PyQt是一种基于Qt图形程序框架的Python接口,由一组Python模块构成,它是一个创建GUI应用程序的工具包,由Phil Thompson进行开发,目前已经发布了PyQt3、PyQt4和PyQt5三个主要版本,其中PyQt5.14是目前最新版本。PyQt5的主要特点如下:
1) 对Qt库进行完全封装,使用信号/槽机制进行通信;
2) 提供了一整套进行GUI程序开发的窗口控件;
3) 可以跨平台运行在主要的操作系统上,包括Linux、Windows等;
4) 支持使用Qt的可视化设计器进行图形界面设计。
PyQt将Python和Qt融为一体,允许使用Python调用Qt库中的API,这样做的最大好处就是在保留了Qt高运行效率的同时大大提高了开发效率。相对于C++来说,Python的开发效率要更高,而且其语法简单易学。正是基于上述特点,TEAS软件采用PyQt5进行开发。
3 测试激励自动发送软件的的实现
3.1 人机交互界面的创建
TEAS软件具有友好的人机交互界面,测试人员可根据实际工作场景来点击相应的功能按钮,从而实现测试激励的自动发送。TEAS软件的主界面由RS422串口号提示模块、参数名称提示模块以及测试激励发送控制模块三部分组成。
RS422串口号提示模块和参数名称,提示模块主要由PyQt中的label标签控件来实现,这2个模块清晰地展示了每个串口对应的参数名称,测试人员可以根据串口和参数的对应关系来进行硬件环境的搭建。
测试激励发送控制模块由发送控制模块1和发送控制模块2组成,分别用于向综合处理机1和2发送测试激励。这两部分主要由PyQt中的label控件、groupBox控件和radioButton控件实现,其中radioButton按钮通过绑定自定义的槽函数来实现数据激励的并行发送功能。
3.2 综合处理机测试激励的生成
综合处理机测试激励主要有10种,分别是左发参、右发参、气囊压控、飞控、矢量、航姿、左油量、右油量、电台以及应答机数据,在使用TEAS软件发送测试激励前,需要根据综合处理机的接口控制文件(ICD)提前构造好激励数据,下面以左油量为例,介绍一下测试激励的具体构造方法,其中左油量的结构体定义如下:
typedefstruct
{uint16 HEAD;
uint8 FRAME_LENGTH;
uint16 total_oil;
}DATA_FROM_OIL_SENSOR.
根据左油量的结构体定义,可以确定该激励每个参数的含义及其对应的数据长度,从而计算出整条激励的数据总长度。在构造数据激励时,测试人员需要根据实际情况给每个参数设置特定的值,为了充分验证综合处理机的功能是否符合要求,参数的取值必须具有全面性。其他测试激励的构造方法与左油量类似。
3.3 测试激励自动发送功能的实现
为了实现多路测试激励的并行和自动发送,需要用到Python中的多线程技术。线程是CPU分配资源的基本单位,当一个程序开始运行后,该程序就变成了一个进程,而一个进程相当于一个或者多个线程。在进行多线程编程时,一个进程包含多个线程(含主线程)。此外,多个线程允许在同一个程序中运行,并且每个线程可以完成不同的任务。
在Python中有两种创建多线程的方式,分别是threading.Thread()函数法和threading.Thread类方法,其中后者有利于程序的继承和移植,具有较强的灵活性,因此本文采用threading.Thread类来实现多路测试激励的并行发送。首先在主界面类(Ui_MainWindow)之外新建一个线程类sendThread,然后在sendThread中定义需要的参数和变量,接下来在类函数中定义线程启动后需要执行的功能,sendThread的具体定义如下:
classsendThread(threading.Thread):
def __init__(self,threadName,cond,参数1,参数2,...,参数n):#定义构造函数
super(sendThread, self).__init__(name=threadName)#父类初始化
self.name = threadName #子类成员初始化
def run(self): #定义线程启动后要执行的功能函数
在完成线程类sendThread的定义后,为了完成测试激励的并行发送,只需要在主界面类Ui_MainWindow中定义线程对象,然后通过该对象调用run函数即可启动测试激励发送线程,从而完成测试激励的发送。如果需要同时发送多路数据,只需要多建几个线程对象并启动对应的run函数即可。
4 软件应用效果
TEAS软件的测试运行主界面如图2所示。经过多次测试,TEAS软件运行稳定,在飞艇综合处理机测试中,能够模拟各种外设完成多路数据的并行发送和自动发送。同时,整个软件具有较好的人机交互性,通过点击界面按钮即可完成相应的功能,测试人员使用起来非常方便,明显提高了测试效率,能够很好完成综合处理机的测试任务。此外,TEAS软件具有一定的通用性,可配合不同软件使用。后续根据不同软件的额外需求,也可对程序进行少量适应性改动即可适配。
图2 TEAS软件的测试运行主界面
5 结论
测试激励自动发送软件对飞艇综合处理机测试效率的提高起到了关键作用,该软件具有友好的人机交互界面,可以模拟外部设备向综合处理机并行发送多路数据激励,节省了大量成本,在实际测试工作中取得了很好的效果。此外,该软件具有较好的通用性,只需要对程序进行少量适应性改动即可满足其他设备的测试要求,同时也提高了测试设备的复用率。