最大化自动化测试系统的吞吐量
概览
欢迎使用《设计新一代测试系统开发者指南》。该指南收集了众多白皮书,以帮助您降低开发成本、提高测试吞吐量,提高扩展性持未来需求。该白皮书提供了最大化系统吞吐量的相关策略。如阅读完整的开发者指南,您可以下载PDF版本(90多页)
目录
系统吞吐量简介
“应当如何最大化我的自动化测试系统吞吐量?”这是许多工程师与科学家提出的问题。这些年来,工程师们在研发实验室和生产车间已经采用了众多策略,以从系统中获得更快的速度。这些优化策略经常包含强制措施,如削减测试的数目和购置冗余仪器。该白皮书描述了最大化吞吐量而无需任何牺牲的四种策略。详细内容包括:
策略1:为您的应用选用吞吐量最高的总线
表面看来,总线的选择似乎只需根据带宽即可。该理论带宽或许隐含了性能,但不幸的是,事实并非如此简单。实际上,影响仪器总线性能的主要因素有四种——带宽、延时、实现和应用。而且,由于大多数工业测试总线是基于PC的,所以它们也符合PC领域趋势,如PCI和PCI Express 系统总线的性能优于USB和LAN等通信总线。
很多总线性能的比较仅仅关注总线带宽,而忽视了影响总线实际性能的其它软硬件组件。带宽是指数据传输速率,它通常以每秒百万字节数(MB/s)度量。时延是传输时间,它通常是以微妙(µs)度量的。例如,在以太网传输中,大的数据块被分解成小的数据段并以多个分组发送。时延是指传送这些分组中一个分组所需时间。图1比较了主流测试与测量总线的理论带宽与时延。
总线软件、固件和硬件的实现会影响其性能。不是所有的仪器都是被等同地创建。以更快的处理器和更大容量RAM实现的PC,性能要优于具有较慢速处理器和较少RAM的PC。这一点同样适用于仪器。仪器设计者所实现的平衡——无论是与用户定义的虚拟仪器还是与厂商定义的传统仪器——都影响着仪器的性能。虚拟仪器的主要优点在于最终用户可以像仪器设计者那样,决定最佳实现的平衡。
最后一个影响总线性能的主要因素,是其应用和使用。仪器I/O硬件和固件、CPU/RAM组合、软件应用以及测量速度,均影响着总线性能。改变这些组件中的任何一个都可能改变总线性能,就如同改变总线会影响整个系统的性能。在某些应用中,测量子系统是瓶颈所在,而在其它一些应用中,其瓶颈是处理器子系统。通过理解哪个子系统是测量的瓶颈所在,可以提供改进总线性能的一种途径。而且,关键在于,为了使一个特定的总线拥有高性能或者可以使用,该总线必须超过应用需求。
这些因素影响着一个仪器总线是否超出所需性能。使用基准评测以比较潜在仪器的实际性能。
策略2:选择充分利用了最新处理器技术的软件
多核处理器是PC领域的最新创新。第一款多核处理器包含了双核或双计算引擎,因此得名双核处理器。具有超过两个核的处理器也即将推出。双核处理器可以同时执行两项计算任务。这对于多任务环境如Windows XP是非常有效。例如其中运行的两个任务:NI LabVIEW和Microsoft Excel,每项应用可以同时访问一个独立的处理器核,从而改进了应用程序(如数据录入)的整体性能。
双核处理器的另一个优势是通过多线程应用获得。多线应用能够将任务分解成多个单独线程。一个双核处理器可以同时执行这些线程中的两个。双核PC提供了显著的性能改进,特别是对于多线程的应用。NI LabVIEW 8的基准评测表明了,对于单线程应用,NI PXI-8105双核嵌入式控制器,与NI PXI-8105单核嵌入式控制器(2.0 GHz Intel Pentium M 处理器 760)相比,性能改进高达25%,尽管两者具有相同的处理器时钟速率。这一改进是两代Intel架构在处理器和芯片组方面众多增强的结果。在多线程应用基准评测中,您可以看到PXI-8105双核处理器带来的性能改进,PXI-8105处理器与PXI-8196嵌入式控制器相比性能有100%的提升。
多线程可以显著地改进一个测试系统的性能。在待测单元(UUT)测试过程中,一些动作就其功能和资源使用而言是独立的。例如,在测试一台设备时,您或许需要初始化数个仪器。不同仪器的初始化是完全独立的。因此,您可以将那些任务分解成多个线程执行以提高性能。为了充分利用这一功能,您必须选择从驱动层和应用层到测试执行层均支持多线程的软件。例如,您需要选择包含多线程软件驱动程序的硬件设备。因此,所有的NI硬件设备均同相应的多线程驱动程序一起发布。
而且,您应当考虑使用这些多核处理器所需的技能。例如,基于文本的编程语言包含内置的多线程函数库,以创建和管理线程。然而,在基于文本的语言中,通常情况下代码是顺序执行的,构想不同部分代码的并行运行也会比较困难。由于语言的语法是顺序式的,所以代码基本上逐行执行。而且,由于单个程序中的线程间通常有数据共享,为协调数据和资源而进行线程间通信是非常关键的,因此您必须仔细实现多线程的通信,以免在并行运行时产生冲突。您必须编写额外的代码以管理这些线程。因而,将一个单线程应用转化为一个多线程应用可能会相当耗时并容易产生错误。
在共享诸如存储器等资源时,基于文本的编程语言必须包含专门的同步函数。如果您的应用不适合实现多线程,可能会导致错误产生。当多个线程同时请求共享资源或共享存储器中的数据空间,可能会引发冲突。当前的工具如多线程调试程序可以提供大量的帮助,但是在大多数情况下,您必须仔细跟踪控制源码以防止冲突。此外,您必须经常调整您的代码以适应并行编程。
相反的是,图形化编程工具如LabVIEW,由于本质上也是多线程的,可以方便地表示并行过程。例如,两个没有任何依赖关系的独立循环自动地在不同线程中执行。

在带有双核处理器的计算机上,多线程的LabVIEW VI可以提高处理性能而无需您的任何改进。多个线程被调度在不同的处理器核上运行,无需额外指令。欲了解更多详情,敬请查看《使用LabVIEW创建具有最佳性能和可靠性的多线程应用》白皮书。
策略3:使用硬件同步
几乎所有的自动化测试系统都要求工程师们实现两个或更多的仪器/开关的同步。例如,在一个燃料电池测试应用中,一个工程师必须编程控制数字万用表,使用开关模块扫描数百个电池单元。有两种同步类型可供选择,软件定时和硬件定时。软件定时同步使用由一个软件调用生成的触发信号,而硬件定时同步使用由与硬件触发信号线连接的信号线上生成的触发信号。使用软件同步,存在相当的软件依赖性和开销,因为软件定时系统需要由软件编程来产生每次读数所需的触发信号。由于软件与其它应用都需要占用处理器时间,这些扫描的定时受软件系统的性能影响。
硬件定时/同步则避免了处理器的依赖性,使测试吞吐量最大化。硬件同步利用了来自试图通信的两个仪器的触发信号。使用同上的DMM/开关示例,硬件定时不是增加软件延时来支持切换完成时间,而是通过在完成或就绪时互相发送触发信号来实现仪器和开关模块的交互。读数完成时仪器会发送触发信号,而开关装置会在完成切换或准备好下一次测量时发送触发信号。所有触发信号的交互都由硬件控制,这样就使得测量间所浪费的时间最小化了并保证了最大吞吐量。开关装置与仪器间的硬件同步完全独立于软件环境,并不受软件的影响。
此例中,NI PXI-4070 FlexDMM与NI PXI-2530多通道复用开关进行通信。在第一个通道关闭后,开关的触发信号通知DMM进行测量。当DMM完成测量,其触发信号则通知开关切换到下一通道,这样周而复始的进行,无需软件干涉。由于这样的确定性,额外的软件处理(如添加额外的数据处理)如同使用软件扫描一样,并不影响硬件握手测试的结果。
| Standard Run | With Extra Processing | % Change | |
| Software Scanning | 3021 ms | 3840 ms | 27 |
| Hardware Handshaking | 1640 ms | 1655 ms | 0.9 |
| % Throughput Increase Using Hardware Handshaking | 46 | 57 |
表1.DMM切换扫描1000个通道的执行时间比较
使用硬件同步,系统的确定性和吞吐量都被最大化。此外,如果使用PXI仪器,那么所有的触发信号将通过PXI同步背板进行传送,避免了任何外部连线,简化了配置过程。了解更多详情,敬请查看《使用测量硬件同步优化生产测试的吞吐量 》白皮书。
策略4:设计一个支持并行测试和资源共享的系统架构
您或许已经尝试了很多方式来提高测试系统性能。然而,最新的、现成可用的测试管理软件工具简化了并行测试系统的实现。这些工具提高了测试吞吐量,降低了测试系统成本。通常,并行测试涉及多个产品或子组件的同时测试。在典型的情况下,一台并行测试设备会在多个测试接口共享一组测试装备,但在某些情况下,它也会为每个待测单元(UUT)提供一组独立的硬件。大多数的非并行测试系统每次只能测试一个产品或一个子组件,致使昂贵的测试硬件在超过50%的测试时间内处于空闲状态。因此,通过并行测试,您可以提高生产测试系统的吞吐量,却不必花费大量投入复制并分散布置额外的测试系统。下列章节讨论了并行测试用于降低测试成本的方法,并描述了在您的测试系统中实现并行测试的各种方法。
选择一个并行测试架构
虽然您可以在大多数的现有测试系统中实现并行测试,但是,在并行测试环境中使用模块化测试系统架构,将提供最佳的测试结果。测试管理软件(如NI TestStand)和模块化PXI硬件组件,提供了许多可用于从并行测试系统中获取最优性能的特性。然而,您也可以使用您的许多现有测试硬件实现并行测试,而无需额外的硬件投资。一旦您选定了您的测试架构,下一步工作便是基于您需要的UUT测试行为选择最佳的测试模型。
常见的并行处理模块
对于任一个测试系统,当对多个UUT适当组合或单个UUT功能进行测试时,需要完成许多种任务。这些任务包含——模型化专用测试或产品族专用测试以及许多与UUT实际测试无关的步骤。一个过程模型将系统层次任务与专门针对UUT的测试相分离,以显著降低开发工作量并改善代码的重用率。一些由过程模型处理的任务是跟踪UUT的识别号码、初始化仪器、启动测试、收集测试结果、创建测试报告和将测试结果录入到数据库等。TestStand提供了两种过程模型,并行处理模型和分批处理模型,以简化基于您的UUT测试需求的并行测试。
您可以使用一个并行处理模型测试多个独立的测试接口。通过这个模型,您可以随时启动和任意停止UUT测试。例如,您可能有五个测试套接字以完成射频卡的测试。使用并行处理模型,您可以在其它接口测试板卡的同时,将新板卡加载到一个打开接口。图4描述了并行过程的执行方式。
作为另一备选方案,您可以使用批量处理模型,控制用于测试多个UUT构成的一组测试接口。例如,您可能有一组插入到同一个板架的电路板。该批量模型确保您可以同时启动和完成所有板卡测试。该批量模型还提供了同步特性。例如,如果某个特定步骤作用于某批整体,您可以规定该步骤每批只执行一次。使用批量处理模型,您也可以指定某些步骤或步骤分组每次不能在超过一个UUT上执行,或者某些步骤必须同时在所有UUT上执行。
仪器共享
如果您试图在降低成本的同时改善您的测试系统性能,为每个测试接口提供一组专用的仪器,并不是可行的解决方案。实现一个并行测试系统通常不需要任何额外的硬件投资。通过并行测试,您可以在多个测试接口中共享测试系统的已有仪器。一个UUT测试周期中空闲时间的减少,实现了相当程度的性能改进,却没有增加额外的硬件成本。在许多情况下,你可以添加额外的便宜仪器,以进一步优化整个系统的性能,同时在测试接口间共享更为昂贵的硬件。
在提供现成可用的测试管理软件之前,在并行测试系统中,多个测试接口间共享仪器的编程控制,要求您在测试程序中添加大量的底层同步代码。临界段和互斥变量时常与实际的代码相交织,使将来的测试系统编程或代码重用变得困难。
通过利用NI TestStand内置特性实现的并行测试系统,您可以轻松的控制仪器共享,实现多个待测设备同步。还可以针对单个测试使用同步步骤类型和可配置的测试属性,以管理同一序列中不同测试间的资源共享。测试序列中所用的同步类型,通常包括锁定、汇集、排队、通知、等待和批处理等同步类型。图5显示了在测试两个UUT时如何使用锁定步骤。

图5.测试序列示例使用锁定步骤类型的组合,以防止多个测试试图同时访问同一个仪器
欲了解更多详情,敬请查看《并行测试的优势 》白皮书。
总结:最大化一个自动化测试系统吞吐量
当开发一个吞吐量非常关键的系统时(原文中were应为where),您应当选择最高吞吐量的总线,选择充分利用最新处理器的软件,使用硬件同步,并设计一个支持并行测试和资源共享的系统架构。这四条策略的最高主题便是,选择一个充分利用最新PC技术的硬件平台和软件平台,如PXI和LabVIEW。
NI公司相关产品和白皮书
NI公司作为自动化测试领域的领导者,致力于为产品工程师们提供用于设计新一代自动化测试系统所需的硬件和软件。
软件:
•NI TestStand测试管理框架
•LabVIEW图形化编程语言
•LabVIEW SignalExpress交互式测量软件
硬件:
•模块化仪器(示波器、万用表、射频模块、开关等)
•多功能数据采集
•PXI系统部件(机箱和控制器)
•仪器控制(GPIB总线、USB总线和局域网)
技术白皮书
NI公司提供了《设计新一代自动化测试系统开发者指南》。这篇指南是集合了各类白皮书,是用来帮助开发测试系统,降低成本、提高测试吞吐量,可扩展以适应未来的需求。需要下载完整的开发者指南(120页),请访问ni.com/automatedtest/zhs
法律条款
本教程由National Instruments公司(简称“NI”)开发。 尽管National Instruments可为该程序提供技术支持,但是该指南的内容并非完全通过测试和验证,NI不以任何方式保证其质量,也不保证相关产品或驱动程序的新版本出现时继续为其提供技术支持。本教程仅以其“现状”向用户提供,教程没有任何担保。教程使用受ni.com网站上《使用条款》的约束。 (http://ni.com/legal/termsofuse/unitedstates/us/)


