1.5 实现
实现测试系统,有很多现有、成熟的技术可供使用,如虚拟仪表、TestStand等。很多厂商会提供商用的测试系统框架,本节描述几个用于实现测试系统的成熟技术。
1.5.1 虚拟仪表
在测试领域中,有流行的虚拟仪表技术。“软件即仪器”,虚拟仪器利用高性能的模块化硬件、结合高效灵活的软件来完成各种测试、测量、自动化应用,利用计算机技术实现和扩展仪器的功能,利用软件技术方便、快捷地实现各种数据采集、分析等功能。
基本原理是使用各种数据采集卡采集数据,计算机软件实现功能,编写指定测试需求的软件功能,用硬件和软件实现一台仪表,完成特定的测试。
实现虚拟仪表可以使用知名的虚拟仪表软件LabView。
1.LabView
LabView是NI的一款知名的虚拟仪表软件,是一种测试系统开发工具。在测试领域中,很多人使用LabView,采用NI的软、硬件平台可以很快搭建一套测试系统。LabView已经是事实上的标准,各种厂商生产的通信、采集板卡,都提供LabView驱动、LabView示例代码。
LabView是专为测试、测量和控制而设计的系统工程软件,可快速访问硬件和数据信息。LabView编程环境简化了工程应用的硬件集成,使用户可以采用一致的方式采集NI和第三方硬件的数据。LabView降低了编程的复杂性,使用户可以将注意力放在其独特的工程问题上。LabView还提供了拖放式工程用户界面创建和集成的数据查看器,可帮助用户即时可视化结果。为了将所采集的数据转化为真正的商业成果,用户可以使用内含的数学与信号处理来开发数据分析和高级控制算法,或者复用其他各种工具的程序库。
为了确保与其他工程工具的兼容性,LabView可以与其他软件和开源语言相互支持,并运行这些软件和语言的程序库。
LabView的图形化编程,比文本代码的使用体验要好很多。然而,图形化编程仍然是编程,需要专业人士编写程序。查看复杂的LabView程序,图形上也要一层一层地嵌套,LabView图形程序如图1-2所示。
2.开发工具
LabView是软件开发工具,既可以开发测试系统,也可以开发其他软件系统。在LabView中可以便捷地访问各种数据采集卡、测量仪器,可以快速地实现采集、数据显示等基础功能。除此以外,还有很多编写常规软件的技术主题,如数据库、计算机网络通信、文件系统、多线程、进程通信等,应用这些技术还可以开发其他种类的软件。LabView还不是直接可用的测试系统。
图1-2 LabView图形程序
3.航天测控——VITE
航天测控是国内很早研发虚拟仪表软件的公司,其产品在早期是国内对标LabView的一套虚拟仪表软件。然而,NI的LabView在测试领域的龙头地位很难撼动。
航天测控的虚拟仪表软件称为VITE,从网上可以找到一些公开的资料。这个系统应用了很多测试理论、专业知识,包括很多IEEE标准、很多专业术语(TPS、IVI-C、IVI-COM)、面向信号-支持ATLAS标准、面向信号-支持ATML标准、支持图形编程等。
其他功能很常规,和各个厂家的测试系统千篇一律,如图形建立测试流程脚本、数据采集、界面自定义、测试程序集、二次开发接口等。
可以看出VITE不是开发工具,而是一套直接可用的测试系统。
4.其他虚拟仪表
近些年,一些国内测试测量公司也在研发虚拟仪表软件。例如,一家上海企业的核心人员中有从NI LabView团队离职的高级人员,他们用C#、面向对象、控件化的思路,建立虚拟仪表3.0的理论,对标LabView,而且建立了一些生态联盟,要抗衡LabView。因为微软的C#新特性支持Linux跨平台开发,所以他们用C#的方式也做到了跨平台。
微软这些年也开始持开放态度,拥抱开源、搞跨平台、考虑兼容等,而且巨头们也在搞低代码/无代码的开发方式。
1.5.2 TestStand
在工业自动化测试领域中,有一款知名产品TestStand。TestStand是可用于构建测试系统的测试管理软件,是测试系统领域的一个标杆软件。
在NI的软件产品中有测试管理软件TestStand,打开NI的官网定位到TestStand的主页中,可以看到详细的介绍信息,各种应用场景、丰富的功能,其中主要推荐的是图形化建立测试流程,以类似流程图的方式执行测试。
TestStand用于帮助工程师快速开发强大的自动化测试和验证系统。用户可以在TestStand中开发测试序列,从而扩展系统的功能,而且这些测试序列可集成使用任何编程语言编写的代码模块。此外,在将测试系统部署到生产环境之前,用户可以使用内置功能来分析和优化速度与并行性。TestStand还提供可扩展的插件,用于报告生成、数据库记录及与其他系统的连接,可满足任意环境的需求。借助TestStand,用户可以放心地部署测试系统,并以生产级运行速度获得更高的产量。
1.5.3 C++/Java/C#
在测试领域中,除使用LabView外,也有很多人使用C++/C#/Java等编程语言来构建测试系统。这些编程语言强大、灵活、应用范围广泛,能够用来构建各种软件系统,构建测试系统也是绰绰有余的。
1.程序库
除编程语言本身外,在构建软件时,最重要的是这个软件用到的各种程序库。常见的是图形界面库,如C#有.Net环境的WinForm/WPF、C++有MFC/Qt。在研制某类行业软件时,选择编程语言,除了应考虑语言本身,还要考虑软件需要哪些库,是否有合适的程序库可用。在测试系统领域中,主要的程序库包括图形界面库、硬件接口库、驱动调用库等。在各种编程语言中,C++面向硬件、性能高,适合用于开发测试系统。
2.构建测试框架软件
复杂的测试系统,往往要实现为一套框架软件,有各种丰富的功能、插件、开发接口等。此时,使用C++等语言就非常适合;同时,C++的图形界面库Qt非常适合用于构建框架软件。在后面的章节中详细描述C++和Qt。
3.测试框架软件厂商
对外承接测试系统研制项目的企业有很多,这些企业面向各种领域,如航空、航天、车辆、船舶等。这些企业都会有自己的测试框架软件,名目也五花八门。
在这些有测试系统业务的企业中,有排前的上市大公司、研究所,也有垫底的几人小公司、小团队。这些企业都有自己的测试系统产品,以及自己的特色。
一些厂家使用LabView、C++、C#、Java等,开发一套通用测试系统,在市场上面向各类企业、研究所,承接测试类的项目,包括航空、航天、车辆、船舶等行业中的各类测试项目,每家的产品都有自己特点,很多功能十分相似。