掌桥专利:专业的专利平台
掌桥专利
首页

一种无人机综合模块航电故障激励测试方法

文献发布时间:2023-06-19 10:43:23


一种无人机综合模块航电故障激励测试方法

技术领域

本发明属于航电测试技术领域,尤其涉及一种无人机综合模块航电故障激励测试方法。

背景技术

随着现代机载航电设备技术的不断发展,无人机航电系统已从分立式航空电子系统,历经数据信息传输、显示、数据处理的综合,发展至数据融合、传感器融合与天线综合的新一代综合模块化航空电子系统。综合模块化航空电子(Integrated Modular Avionics,IMA,综合航电)旨在合理优化航电功能和性能以及解决软件升级、硬件老化和故障。健康监控是IMA的系统功能,通过对应用软件进行监控,并且进行错误诊断后把错误上报到操作系统,由操作系统进行鉴别和分类后产生相应的错误恢复动作,从而在最短时间内将软件错误进行排查。

先进的IMA系统以统一的总线网络连接通用的模块构成硬件基础,由操作系统提供任务功能的信息交换和处理。采用特定的有限种类的通用模块、具有标准设备结构和互连接口是开放式模块化系统的基本特征。使用的通用外场可更换模块(LRM)依据航电系统共同特点设计,不只针对特定的飞机型号,这为组成满足各种电子系统要求的综合航电系统奠定了基础。同时在软件层面,把所有应用软件集成到一个平台,使用统一的多分区操作系统进行管理,使得开发人员可以在统一的平台上进行应用软件的开发,降低了对开发人员的技术要求,同时实现了容错和重构能力,降低了成本、体积和重量,同时又提高了性能。IMA架构通过通用功能模块的适应性,并且通过软件的配置来实现,其优点是:在少量机柜上采用标准硬件模块、软件不局限特定的硬件之中而可被重用、硬件模块可在不同飞机上使用、系统容易升级和重新配置、仅需少量的备用资源。

健康监控是综合模块化航空电子的一个重要功能。由于综合模块化航空电子系统的所有软件都集成在一个平台上,软件的交互上升到了一个新的层次,这就使得平台化的综合化的健康监控技术得以实现。健康监控是IMA系统中的一个功能,与具体的航电软件无关。它通过对应用软件进行监控,并且进行错误诊断后把错误上报到操作系统,由操作系统进行鉴别和分类后产生相应的错误恢复动作,从而在最短时间内将软件错误进行排查。这样的设计大大提高了航电系统的可靠性和安全性,对系统的健壮性和维修周期也具有很重要的贡献。

目前,大型无人机综合模块化航电系统中健康监控功能在测试时主要存在如下问题:

(1)航电软件复杂度激增,呈现出规模大、软件密集程度高、复杂度高、具有网络特征等复杂软件的特点。软件复杂性和各个系统之间交联程度的提高,使得软件行为更加多样化、不可预测,导致软件错误定位难度更大,给软件的测试方法和技术提出了严峻挑战。

(2)软件体系结构发生巨变,新一代复杂装备软件体系结构已从传统的集中式控制结构发展为以分区操作系统、软硬件隔离为特征的模块化结构。模块采用分层设计方法,软件分为应用层、操作系统层和驱动层,各模块采用一个通用操作系统,实现了应用程序与操作系统和硬件的隔离。软件体系结构的变化对软件测试提出了新的要求,传统的基于外总线的测试方法已经无法满足要求。

(3)相比于传统的机内自检测(Build-in Test,BIT),健康监控(Health Monitor,HM)更加智能和安全,系统安全监测和错误监测模式发生重大变化。由BIT的功能单一、结构冗长转变为健康监控的多层次、多任务、结构紧凑,在通常核心调度和健康监控独占一个分区对其余分区进行监控和处理,系统在空间和时间上都产生隔离的情况下,传统的针对嵌入式软件和综合模块化航空电子软件的测试方法针对健康监控本身是无效的。

(4)健康监控的主旨是对软件中出现的错误进行诊断、检测和恢复。那么,它的运行和测试场景有别于传统嵌入式软件的功能要求,而是面向软件错误的测试场景。因此测试的过程中需要施加的测试用例的功能并不是完成某项应用软件的功能,而是需要对指定的错误类型进行“激发”,这样就需要生成一些具有产生错误功能的测试用例。

发明内容

本发明的技术解决问题:克服现有技术的不足,提供一种无人机综合模块航电故障激励测试方法,基于生成的错误激励的测试用例,根据构建的测试模型,进行有针对性的错误类型的错误激励,并且根据综合模块化航空电子自身的特点进行多种激励方式的研究,并以此为依据产生相应的测试用例,解决了目前中大型无人机综合模块化航电系统中健康监控功能的测试问题。

为了解决上述技术问题,本发明公开了一种无人机综合模块航电故障激励测试方法,包括:

采用AADL对IMA体系结构进行建模,得到初始模型;

确定IMA健康监控的错误类型,从测试用例库中查找得到与所述确定的IMA健康监控的错误类型相匹配的错误激发手段;根据查找得到的与所述确定的IMA健康监控的错误类型相匹配的错误激发手段,构建得到错误模型附件;将错误模型附件添加至初始模型中,得到故障激励测试模型;

将故障激励测试模型作为IMA健康监控系统的输入,激发IMA健康监控系统程序内部的相应故障模式,并引发IMA健康监控系统对激发的相应故障模式进行处理,得到在IMA的健康监控激发后进行处理后的故障激励测试结果。

在上述无人机综合模块航电故障激励测试方法中,还包括:对IMA健康监控的体系结构进行解析,确定IMA健康监控的错误类型;针对IMA健康监控的不同错误类型,分别生成相应的错误激发手段;根据错误类型、错误激发手段、以及错误类型与错误激发手段的对应关系,构建得到测试用例库。

在上述无人机综合模块航电故障激励测试方法中,采用AADL对IMA体系结构进行建模,得到初始模型,包括:从IMA体系结构的框架中抽象出过程和结构;使用图形化的AADL语言插件包,将抽象出的过程和结构的内部通信和连接关系以模型形式表示出来,即得到初始模型。

在上述无人机综合模块航电故障激励测试方法中,将错误模型附件添加至初始模型中,得到故障激励测试模型,包括:在初始模型中添加错误模型,生成图形化的表示;在错误模型中,加入错误模型附件。

在上述无人机综合模块航电故障激励测试方法中,将故障激励测试模型作为IMA健康监控系统的输入,激发IMA健康监控系统程序内部的相应故障模式,并引发IMA健康监控系统对激发的相应故障模式进行处理,得到在IMA的健康监控激发后进行处理后的故障激励测试结果,包括:使用Ocarina工具将故障激励测试模型转换成程序代码,将得到的程序代码与pok的内核一起进行编译,故障激励的用例被集成在程序代码中;随着系统的运行过程,设定的错误激励开始启动,分别产生除零、内存混乱、应用程序错、时间溢出和非法操作系统调用的错误,激发IMA健康监控系统程序内部的相应故障模式;系统分别给出忽略、重启该分区、忽略、忽略、关闭该分区的错误恢复动作,引发IMA健康监控系统对激发的相应故障模式进行处理,得到在IMA的健康监控激发后进行处理后的故障激励测试结果。

在上述无人机综合模块航电故障激励测试方法中,IMA健康监控的错误类型,包括:内存错误、ILLEGAL_REQUEST、divide by 0除零错误、floating point error、segmentation error、STACK_OVERFLOW堆栈溢出、优先级反转错误、partition configerror、partition init error、time duration exceeded和invalid OS call。

本发明具有以下优点:

本申请公开了一种无人机综合模块航电故障激励测试方法,基于生成的错误激励的测试用例,根据构建的测试模型,进行有针对性的错误类型的错误激励,并且根据综合模块化航空电子自身的特点进行多种激励方式的研究,并以此为依据产生相应的测试用例,解决了目前中大型无人机综合模块化航电系统中健康监控功能的测试问题。

附图说明

图1是本发明实施例中一种无人机综合模块航电故障激励测试方法的步骤流程图;

图2是本发明实施例中一种采用AADL建模语言建立的模型的图形化表示的示意图;

图3是本发明实施例中一种AADL的错误模型附件的示意图;

图4是本发明实施例中一种实例的图形化AADL模型。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明公开的实施方式作进一步详细描述。

如图1,在本实施例中,该无人机综合模块航电故障激励测试方法,包括:

步骤1,采用AADL对IMA体系结构进行建模,得到初始模型。

在本实施例中,可以先从IMA体系结构的框架中抽象出一些过程和结构,然后使用图形化的AADL语言插件包调用模块,将抽象出的过程和结构的内部通信和连接关系以模型形式表示出来,得到初始模型,也即健康监控AADL模型。

其中,需要说明的是,由于IMA系统使用分区的方式管理各种应用,所以在CPU和内存中都需要对分区进行描述。CPU被划分为两个分区,内存被划分为两个分区,对外的总线采用时间片轮转的方式进行通信,系统内部有两个进程,分别以不同的周期发送和接收通信流,以实现IMA的分区调度的架构。如图2,为采用AADL建模语言建立的模型的图形化表示,用来描述IMA体系架构。在图2中,CPU被划分为两个分区(partition),内存被划分为两个分区(part),网络(eth)在时间上划分为多个模块进行轮转,pr1和pr2为两个进程,pr1以一定的时间间隔向pr2发送信息。

步骤2,确定IMA健康监控的错误类型,从测试用例库中查找得到与所述确定的IMA健康监控的错误类型相匹配的错误激发手段;根据查找得到的与所述确定的IMA健康监控的错误类型相匹配的错误激发手段,构建得到错误模型附件;将错误模型附件添加至初始模型中,得到故障激励测试模型。

在本实施例中,使用AADL模型中的错误模型附件,在步骤1中的AADL模型中进行错误模型的添加,并可以生成图形化的表示。在模型中,需要加入错误模型附件。然后在分区1的进程中添加错误激励的错误类型和错误恢复动作的相应属性,添加属性成功后,可以在其中可以添加错误模型附件。

优选的,如图3,为AADL的错误模型附件,描述了IMA系统中健康监控对不同的故障模式的处理方式。在图3中,Error free为初始无故障状态,当输入数据异常(InBadData)时会由从无故障转化为应用异常(Application_Error)状态,并由健康监控进行进程重启(Process_Restart)处理,并输出异常数据。当无输入数据(InNoData)时会引发无响应(Deadline_Missed),并由并由健康监控进行分区重启(Partition_Restart)处理,并输出无数据(OutNodata)。如果出现Numeric_Error问题,健康监控选择忽视(Ignore);如果出现非法请求(Illegal_Request),则健康监控的响应为关闭分区(Shutdown)。即,针对无输入数据、异常输入数据以及不合法请求等错误都有相应的健康监控应对方式,在模型中进行了表述。

步骤3,将故障激励测试模型作为IMA健康监控系统的输入,激发IMA健康监控系统程序内部的相应故障模式,并引发IMA健康监控系统对激发的相应故障模式进行处理,得到在IMA的健康监控激发后进行处理后的故障激励测试结果。

在本实施例中,可以使用Ocarina工具将故障激励测试模型转换成程序代码,将得到的程序代码与pok的内核一起进行编译,故障激励的用例被集成在程序代码中;随着系统的运行过程,设定的错误激励开始启动,分别产生除零、内存混乱、应用程序错、时间溢出和非法操作系统调用的错误,激发IMA健康监控系统程序内部的相应故障模式;系统分别给出忽略、重启该分区、忽略、忽略、关闭该分区的错误恢复动作,引发IMA健康监控系统对激发的相应故障模式进行处理,得到在IMA的健康监控激发后进行处理后的故障激励测试结果。

在本发明实施例中,该无人机综合模块航电故障激励测试方法还可以包括:

步骤4,对IMA健康监控的体系结构进行解析,确定IMA健康监控的错误类型;针对IMA健康监控的不同错误类型,分别生成相应的错误激发手段;根据错误类型、错误激发手段、以及错误类型与错误激发手段的对应关系,构建得到测试用例库。

在本实施例中,IMA健康监控的错误类型包括但不仅限于:内存错误、ILLEGAL_REQUEST、divide by 0除零错误、floating point error、segmentation error、STACK_OVERFLOW堆栈溢出、优先级反转错误、partition config error、partition init error、time duration exceeded和invalid OS call。

内存错误:通常是通过访问不合法的内存发生的。每个分区具有一定的分区量,如果再一个分区中不匹配的内存空间则会发生内存非法访问。内存错误可以使用非法指针调用来激励该错误。

ILLEGAL_REQUEST:通常是产生了不合理的请求,多出现在非法调用系统管理的API的情况。

divide by 0除零错误:一般需要在代码中插入除零的语句进行此类型错误的激励,可以通过在代码中插入除零语句来实现。

floating point error:主要是由于用户的非法浮点数值计算或者所用计算机的限制所引起的错误,主要包括两种情况:(1)上溢或下溢:这种错误是数据太大或太小造成的,数据太大称为上溢,太小称为下溢。这样的数据在计算机中不能被处理器的算术运算单元进行计算。(2)舍入错误:当对数据进行舍入时,一些重的数字会被丢失并且不可再恢复。例如,如果对0.1进行舍入取整,得到的值为0,如果再对它又进行计算就会导致错误。

segmentation error段错误:访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址、访问了只读的内存地址、访问了系统保护的内存地址等等情况。此外,嵌入式系统中进程之间是不直接共享内存的,他们的数据通信都是要专门的通信机制的,比如:黑板、消息队列,信号量等等,如果再这些方面出现调度错误也会引起段错误。

STACK_OVERFLOW堆栈溢出:IMA系统中的许多应用程序都是用C语言编写的,C语言不检查堆栈的边界。在某些情况下,用户输入的数据长度超过了应用程序给定的缓冲区的长度,就会覆盖其他数据区。这称作“堆栈溢出或缓冲溢出”。

priv.Violation:嵌入式程序中经常会遇到的优先级反转的错误。有三个任务a、b和c,优先级a>b>c。如果在c运行的过程中a需要使用共享的系统资源,而c尚未运行完毕,此时a将处于阻塞状态;而当c运行完毕时可能会受到b的运行请求,此时会进行b的任务运行,此时a的请求被搁置,从外界看的现象是b的优先级高于a,这样就产生了优先级反转的错误。通过对信号量和优先级的控制可以产生这样种类的错误。

partition config error:属于分区级错误,主要针对分区配置时产生的错误。分区的配置主要由蓝图或系统API完成。通过API也可以对一些关于分区的信息进行修改,以激励对分区的调度错误。

partition init error:分区在初始化时发生的错误,那么该错误需要使用基于蓝图的方式进行激励,而代码的方式对此显得无能为力。同样地,通过在蓝图中对分区初始化的信息进行配置,可以得到相应的分区初始化的错误。

time duration exceeded:在分区的运行中出现了时间调度的错误,这类错误可以通过对分区的配置进行修改,也可以再配合代码级的错误激励方式进行错误激励。

invalid OS call:通常是由于分区中添加了了不合理的操作系统调用,这种错误的起因通常是分区中的应用程序操作系统提供的API时无法得到系统配置的满足,如蓝图中没有定义的端口或分区ID被API调用。

在本实施例中,错误模型(初始模型)的建立主要是从测试的需求中抽象出一些共同的过程和结构,需要我们使用定义更加严格,更容易被计算机识别的通用建模语言进行模型构建。由于IMA属于嵌入式实时系统的范畴,而且具有一些特殊的体系结构,可以使用AADL建模语言进行测试需求错误建模,因此需要在已有的IMA体系结构模型中插入错误模型的部分。在建立错误模型时,需要按照以下步骤进行分析和建模:

1)提取测试需求,即明确研究的错误类型、所需的健康监控层次、健康监控系统针对该错误做出的错误恢复动作。

2)确定错误位置,错误发生的位置是整个研究过程的关键,同时错误模型附件是一段文本化的代码,不能以图形化的方式存在,也不能以单独的构件形式存在,需要挂载到一个构件中才能运行,因此确定了错误发生的位置也就找到了挂载的构件。同时,构件的软硬件绑定关系

3)状态转换判定。错误一般会出现在某个分区或者进程中,那么分区或者进程的初始状态和状态转换都是需要考虑的重点。首先,错误发生时的状态会影响到健康监控对该错误的处理措施;其次,错误发生的过程也会影响到系统的状态,两者是密不可分的。需要将初始状态、错误发生时系统的状态和错误发生后状态的改变进行需求和实际情况的验证,进而确定建模过程中的选择。

4)端口和错误传播。错误的载体构件(进程或分区)在模型表示中都具有对外的端口,通过端口进行输入和输出,建模时需要根据系统的结构,将可能进行传播的端口和连接的路径列入错误模型的内部,进行错误传播的建模。同时,针对AADL语言中软硬件的绑定(分区和处理器、内存的绑定以及进程与虚拟处理器、虚拟内存的绑定以及端口和总线之间的路径),确定错误在软硬件之间的传播情况。

5)确定错误的属性。即发生该错误的概率和错误通过该路径进行传播的概率,这个概率数值由于设备环境的限制,目前只能通过经验的方式获取,如果能够得到真正的目标操作系统和硬件,可以通过一系列的实验获得相应的错误发生和传播的概率。

进一步的,在建立的错误模型主要定义了以下错误模型类型:

1)初始错误状态:无错误

2)错误状态:重启进程、重启分区、忽略、关机

3)错误事件:截止时间溢出、应用错、数值错误、非法访问

4)错误传播:无接收数据、错误接收数据、无发送数据、错误发送数据

有别于故障注入的“由外向内”的实现方式,IMA软件错误激励的方式更多来自于系统软件内部,这样可以有效地解决IMA架构中存在的应用软件和系统硬件隔离的问题。

进一步的,错误激励的过程主要由以下的一些机制来实现:

1)通过代码段中寻找相应的语句,进行错误指定的修改,如除零可以寻找除法语句进行修改;截止时间超出可以通过修改循环语句中的条件使得执行时间加长的方式来引出这样的错误。

2)通过在代码中插入带有相应错误类型的语句,并且添加一些控制和触发的语句,以实现对相应错误的可控激励。

测试用例的生成方法主要来自于错误激励的方式。测试用例依据需求进行编写。而考虑到健康监控的特殊结构和特殊功能,区别于面向应用软件功能的测试方法,面向健康监控的测试用例不针对具体的软件功能,具有指向性和目的性明确的特点,因此可以考虑针对这些错误类型构建相应的测试用例库,测试过程中将库中的测试用例加载到代码或者模型中,即可进行针对健康监控的软件测试。

进一步的,面向各种错误构件测试用例库,可以以上述的多种错误激励的方式进行使用或组合,产生多个用例。测试用例库构建完成后,面向健康监控的测试过程就可以由测试用例库中的行为进行选择或组合,形成相应的测试用例,对所有健康监控可处理的错误的激励就构成了对健康监控测试过程的覆盖率。而这些测试用例的激励方式也可以进行控制,如果需要以时间进行触发,那么可以在测试用例的判断条件里添加计时器,使得相应的错误在精确的运行时间片段内得到触发;如果需要以事件进行触发,则可以在测试用例的判断条件里添加触发该错误的事件,使得需要触发的错误伴随指定的事件进行同步或者互斥的触发结果。

实际测试中,使用一综合模块化航电系统作为被测系统,设置2个分区,通过配置表对相应的参数进行设置,分区1其中包括一个数据发送进程,通过一个子程序周期性向分区2发送一带时间标记的参数;分区2包括一个数据接收进程,通过一个子程序周期性接收分区1发送的参数,并进行相应错误激励过程。使用pok中提供的AADL模型框架,在其中进行错误模型的添加,该模型可以由OSATE工具进行编辑和语法检查,并可以生成图形化的表示。在模型中,需要加入错误模型附件。然后在分区1的进程中添加错误激励的错误类型和错误恢复动作的相应属性,添加属性成功后,可以在其中可以添加错误模型附件。图4即为实例的图形化AADL模型。自动生成代码后还不能实现完整的IMA系统。需要使用pok提供的内核,将ocarina生成的代码与pok的内核一起使用gcc make的编译指令,可以生成一系列完整的可执行的系统,并生成相应的配置信息的XML文件,也就是于IMA系统中的蓝图。查找测试用例库,从中选取模型中相应测试类型的基于错误激励的测试用例的代码,插入到分区2中,使得从分区1每次传输到分区2的递加的参数可以在不同的周期产生不同的错误,然后可以将生成的代码与pok的内核一起进行编译。随着系统的运行过程,设定的错误激励开始启动。分别产生除零、内存混乱、应用程序错、时间溢出和非法操作系统调用的错误,系统分别给出了忽略、重启该分区、忽略、忽略、关闭该分区的错误恢复动作。说明相应的错误用例被正确执行,达到了用户预设的要求,测试用例是可用的。

本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。

本发明说明书中未作详细描述的内容属于本领域专业技术人员的公知技术。

相关技术
  • 一种无人机综合模块航电故障激励测试方法
  • 一种察打无人机的一体化综合航电系统
技术分类

06120112657448