数控系统软件的测试与故障诊断
仪器信息网 · 2009-08-02 21:40 · 31428 次点击
王轶辰
摘要介绍了如何有效和快速地对设备中软件故障进行诊断。从嵌入式软件的特点入手,利用系统软件测试平台来进行软件测试与故障诊断,并以实例加以进一步说明,最后得出这种方法具有一般性的结论。
自从上个世纪80年代数控装置广泛采用32位CPU组成多微处理器系统以来,计算机软件在数控设备中的地位逐渐变得重要起来。90年代以后,随着计算机技术的飞速发展,利用PC机丰富的软件及硬件资源开发出来的开放式体系结构的数控系统中的软件,对于智能化和网络化的支持更加强大,软件的规模和功能进一步的增强了。数控设备已经成为一种硬件与软件高度集成化的综合性系统。
一、数控系统中软件的特点
数控系统中的软件大多数都是嵌入式软件,与硬件有着紧密关系并且运行在特定的硬件环境中。其最大的特点就是与硬件环境有着密不可分的关系,整个数控系统的性能、智能化水平的高低以及可靠性的优劣等都是由硬件环境和软件共同决定的。但当前技术条件下,软件的可靠性比硬件的可靠性要低一个数量级。据资料统计,嵌入式系统的运行失效中有75%是由其中的软件失效所引起的。事实上软件失效所导致的系统故障已经成为数控设备故障诊断中一个不容忽视的问题了。
二、数控系统中软件的测试与诊断方法
与硬件相比软件失效主要有以下两个特点:(1)软件失效不会随时间而发生变化。硬件的有很大一部分是由于设备的磨损和材料的老化所致,而在软件中则不存在这样的问题。一旦软件运行正确,它是不会随着时间的推移而退化的。(2)软件的失效多数是由程序代码中的固有错误所导致,而对于嵌入式软件来说,软硬件之间的接口错误也是导致失效的一个重要因素。
因为失效机理的不同,软件的诊断方法与硬件通常所使用的故障诊断方法也不尽相同。从保证设备可靠性的角度来看,硬件设备在出厂之前要做一系列的可靠性试验,目的就是要把设计和加工过程中产生的问题提前暴露出来,而到了用户使用阶段,工作的重点就是对设备的运行状态进行监测,对出现的故障进行诊断和维修。而软件则在于出厂前和使用初期对其进行的测试,尤其是对软件与硬件集成之后所进行的系统测试。即系统测试是发现嵌入式系统中软件问题的最行之有效的方法之一。
在软件测试的理论中,系统测试属于一种动态黑盒测试,即测试人员不必深入软件代码的细节,只需通过控制软件的输入条件驱动被测软件的真正运行。简单的说,动态黑盒测试就是要尽量模拟出被测系统的真实使用情况,并通过对被测系统的实际操作来达到发现故障的目的。根据系统测试原理,实验室自主设计开发出一种具有一定通用性的嵌入式软件系统测试环境,并在此基础上总结出一套有效的系统测试方法。下面结合一个具体测试实例对系统测试环境以及测试方法进行介绍。
三、数控系统中的软件系统测试
1.系统测试环境
对一个数控设备中的嵌入式软件进行系统测试的第一步就是要搭建系统测试的环境。系统测试环境的作用就是能够让软件在真实的硬件环境下运行,而且还能够让测试人员把测试用例施加到被测软件中,并且可以收集到测试的结果数据。系统测试环境是一个由硬件和软件共同组成的测试平台。
图1所示为某型号发动机的数控系统软件测试时所设计开发的系统测试环境。
图1软件系统测试环境简图
整个测试环境由三大部分组成:测试用例及测试脚本生成环境、系统检测软件以及系统检测箱。其中的测试用例及测试脚本生成环境和系统检测软件属于测试平台的软件部分,而系统检测箱以及与之相连的I/O设备都属于硬件部分。
测试用例及测试脚本生成环境是一个图形化的编辑环境,测试人员可以在这个环境中把设计好的测试用例通过画图或是写文本的方式转换成测试脚本,它是测试用例的可执行形式。测试脚本中包含了一系列对被测系统的操作动作,它的实质作用就是通过控制测试流程来实现测试者的测试意图。
系统检测软件由脚本解释器、模型、测试结果收集和显示模块四个部分组成。脚本解释器是用来把测试脚本解释成为可执行的代码形式,在测试过程中用于控制测试流程。模型则根据测试脚本的要求计算产生测试数据,并发送到被测系统之中。测试结果收集是用来收集被测系统运行过程中的状态信息和输出数据。显示模块用来根据测试人员的要求在测试过程中把被测系统的状态信息和输出数据显示出来,以便测试者可以观察和控制测试的进行。
地面检测装置(系统检测箱)是在设备正常运行之前检测数控系统的完好性和对装置中闪存的读写操作,以及设备运行以后进行数据下载和数据分析的工具。地面检测装置的功能包括对电子控制器及发动机模型的仿真、电子控制器的检测、继电器箱的检测、传感器的检测和电液伺服阀线圈的检测等。在测试环境中,地面检测装置从系统检测软件中获得模型根据测试脚本所产生的测试数据,在装置内部把这些测试数据全都转换为可以输入到被测系统中的数据形式,并通过I/0接口送到被测系统之中,驱动被测系统的运行并完成测试。
这套系统测试环境具有以下几个主要特点:
(1)有一定的通用性。这套环境不仅可以对发动机数控软件进行测试,而且可以对相似的一类嵌入式软件进行测试。
(2)操作简便。测试环境只需要测试者把测试用例编写成测试脚本的形式,即可在测试环境中实现自动化的测试,无须对被测系统进行直接的操作。
(3)测试效率较高。由于有了系统检测软件和系统检测箱的支持,这种自动化测试的执行效率比手工测试有较大的提高。
(4)支持重复性的测试。由于测试用例是以测试脚本的形式存在,所以同一个测试可以毫无差别地无限次执行。重复性测试在故障修改之后的回归测试中有很大的应用。
2.系统测试过程
在建立好测试环境之后,就可以利用它进行系统测试了,具体过程有以下步骤。
(1)设计测试用例。系统测试用例由两部分组成:测试输入序列和测试的预期结果。测试输入序列描述了一次测试中对被测设备的具体操作流程,包括如何启动设备、何时进行加速操作、何时进行停车操作以及何时关闭设备等。测试预期结果描述了被测试的设备在上述的操作下应该产生什么样的动作或处于什么样的状态。
测试用例的质量是能否发现设备软件故障的关键所在。在设计测试用例时,可以根据测试的侧重点不同,从正常功能、边界情况和非正常操作等几个方面进行考虑。正常功能测试就是根据被测试的发动机的正常使用情况,模拟出一些具有代表性的操作。边界情况的测试是指对输入被测系统的模拟量的边界值进行测试,经验表明当输入量在边界上或是边界的临近点取值时是最容易产生错误的,例如发动机在正常转速范围的边界点附近运行时往往容易发生故障。非正常操作主要是考察数控系统软件在处理一些异常情况时的能力,例如在使用者出现错误操作或是在使用中突然发生硬件故障的时候,数控系统软件是否具有一定的保护功能,而不至于出现重大的事故,这项测试主要是考察数控系统的可靠性和健壮性。
(2)运行测试。设计好的测试用例在测试环境提供的图形化编辑环境中,通过画图或是文本方式可以转换成测试环境能够识别的测试脚本形式。每一个测试用例转换成为一个测试脚本,测试脚本可以直接加载到测试环境中进行一次测试。在测试运行过程中,测试用例在操作序中得到依次执行,被测试的系统也因此得到运行。运行过程中还可以通过测试环境提供的显示模块观察到设备运行的状态。
(3)分析测试结果并得出测试结论。一次测试结束之后,测试环境会自动地收集被测试系统的各项运行数据。把这些数据与测试用例中预期结果进行比较,由此判断被测试设备运行是否正常,是否发生了故障。
从正常功能、边界情况和非正常操作三个方面考虑生成了100个测试用例,并在搭建的测试环境中得到成功的运行,最后通过对测试结果数据的分析,发现了几个关键性的问题,例如当飞机的飞行高度超过一定值后,软件所进行的插值计算就会出现错误。另外还有因为软件的设计逻辑有问题而导致发动机在不该停车的时候停车了等。经过分析确定这些故障都是由于数控系统软件的缺陷所导致的。软件设计人员对这些问题进行了正确的修改之后,系统的可靠性和健壮性都得到了很大的提高。
四、结束语
利用上述系统测试环境以及测试方法,已经成功地进行了多个嵌入式软件的测试,发现了许多软件中潜在的重要缺陷,在为提高设备的质量和可靠性方面发挥了重要作用。