标题：测试测量脚本
科技名词定义
英文：Test and Measurement Scripts
中文：测试测量脚本
定义：在测试和测量应用中提供仪器可编程性的一种强大、便捷的方法。
定义
什么是测试测量脚本？测试测量脚本是在测试和测量应用中提供仪器可编程性的一种强大、便捷的方法。基于脚本的仪器提供结构上的灵活性、提高性能并且降低了许多应用的成本。脚本增强了LXI仪器具有的优点，而且LXI具有支持和增强脚本的特点。适应传统设备的用户将会发现基于脚本仪器的使用既简单又直观。如果需要，基于脚本的仪器还能像传统仪器那样进行编程。然而，轻微调整系统设计和编程，系统配置就能很容易地实现灵活性和性能的提高以及脚本的其它优点。什么是脚本？简单地说，脚本是用脚本语言编写的程序以便管理一系列的动作。
脚本远优于常规使用的宏或记录序列。脚本能充分利用脚本语言，其中包括循环、转移和数据处理。虽然宏可以通过基本循环控制方法实现重复，但是脚本能提供完全执行环境，其中数值可以保存在变量中。然后，这些变量可用于控制循环和转移判定。

区别
测试仪器的脚本与我们说的PC脚本又有什么区别呢？
与其它编程语言的主要区别在于在运行脚本程序之前无需预编译。如果需要，脚本环境可以直接中断程序或自动编译程序。此外，脚本语言还具有编程语言的全部能力，包括存储变量值和创建存储的程序（函数）以便代码重用。
由于脚本无需单独进行编译，所以脚本语言非常适合于测试与测量设备的嵌入式应用。脚本可以下载到仪器上，无需额外的准备工作就能为用户提供更多便利。
PC上运行的脚本语言和嵌到仪器中的脚本语言之间的关键不同在于环境。当脚本语言运行在PC上时，它通常能访问文件系统、几乎无限制的存储器、图形显示以及键盘和鼠标。当脚本语言运行在仪器上时，它不必访问任一种设备，但这些设备通常也不需要。
使用方法
当测试测量仪器增加了脚本支持，最困难的选择是什么呢？
对啦，是如何向用户介绍脚本！
这种困难包括需要回答的一些难题，例如：“如何集成仪器指令集和脚本环境？”“用户如何将脚本载入仪器中？”
如何解决？
比如吉时利选择将脚本环境和指令集完全集成，这意味着所有仪器指令都是完全合法的Lua语句。基本上，送到仪器上的每条指令消息都作为Lua程序执行。
这种选择使用户很容易地从使用单条指令控制仪器过渡到使用脚本控制仪器，因为不需要学习整个新指令集。与脚本中使用的命令相同，指令可以通过GPIB或LXI接口发送到仪器。这极大地简化了从基于指令的简单控制到基于脚本的控制的过渡过程。用户能简单地发送较大的脚本而不是单独的指令到仪器。
解决案例分析
下面我们用代码来举例说明一下：
这种选择的缺点是仪器指令可能对于第一次使用的用户有点陌生。举一些例子有助于说明这一缺点。这些例子比较了吉时利2400型源表（基于SCPI的单元）和吉时利2602型双通道数字源表（基于TSP的单元）。
让2400的源输出电流的指令是：
::SOUR:FUNC CURR
2602对应的指令是：
smua.source.func = smua.DC_AMPS
smua前缀指定双通道仪器2602的通道A。除了等号外，其余的指令类似于SCPI指令。这是Lua的赋值运算，将mua.source.func属性设为smua.DC_AMPS的值。
查询指令有一些陌生。因为指令是有效的Lua语句，所以使用print函数产生输出。SCPI查询返回到2400的源函数是：
:SOUR:FUNC?
2602对应的指令是：
print(smua.source.func)
正如SCPI仪器通过分号分隔单独指令以支持复合指令，基于脚本的仪器也能通过语句分隔符分隔指令以支持复合指令。在Lua中，语句分隔符是空白字符。
假设我们的仪器已经配置为电压源。对于2400，以下指令消息将设置输出电平，然后打开输出：
:SOUR:VOLT 1.0; :OUTP 1
对于2602，相应指令消息是：
smua.source.levelv = 1.0 smua.source.output = 1
上述例子说明脚本仪器可以表现得与传统设备非常类似。仅指令语法稍；有改变。为了利用脚本引擎的全部能力，用户只用发送消息来使用脚本语言功能。
案例分析
介绍实际操作时的一些案例和经验，并且介绍一下LXI和脚本。
仪器测试中脚本案例分享通过发送以下脚本，用户能让仪器执行二分查找法搜索能输出1mA电流的电压源：
<代码略>
这种脚本的好处是避免了读取每个结果和发送指令输出新电平所需的通信时间。虽然有理由询问发送较长消息需要多长时间，但是通常发送一条较长的消息比来回通信许多条较短消息快得多。然而，脚本环境的一个优点是前述代码可以封装为函数定义，然后重用，用的时候就能完全避免发送长消息。例如：
<代码略>
前面的指令不会让仪器立刻执行，但是它创建了一个命名为“Search（搜索）”的存储程序，之后可以用搜索指令调用：
Search(2.5, 0.001)
仪器有一些特点能补充脚本引擎。如果脚本环境提供仪器前面板的编程访问，那么用户就能创建交互式脚本提示用户在前面板输入参数或显示结果。仪器还能提供非易失的板上脚本存储，因此当仪器上电时，这些存储的脚本就能自动执行。这允许执行预先载入的应用，无需任何用户动作，只需要打开仪器的电源。
嵌入式脚本为测试和测量仪器用户提供显著的优点。虽然嵌入式脚本具有一些次要的缺点，例如前面介绍的对查询陌生，但是大多数用户都能很容易使用或者适应。
现行的测试仪器LXI标准不要求仪器可编程或实现脚本。然而，LXI标准中的许多特点预先考虑了可编程仪器，并提供有用的功能性以增强LXI标准仪器的脚本性能。
LXI标准要求Class A和Class B仪器通过LAN消息支持对等消息传送，并允许Class C仪器支持这种消息传送。LAN消息能用于通知其它LXI仪器事件或者触发另一台仪器执行某些功能。在接收到LAN消息时，用户必须能指明采取什么动作。为了实现这个，最灵活的方法以及LXI标准推荐的方法是允许用户下载可执行代码（即脚本或程序）到仪器中，然后在接收到适合的LAN消息时执行该代码。这提供了极大灵活性，因为用户不被局限于一组预定动作集。
LXI定义的LAN消息格式包含一个小空间，用于包括任意数据作为消息的一部分。可以传送可执行代码（例如一个短脚本）作为LAN消息的一部分。这允许一台仪器通过LAN消息控制另一台仪器，无需预先设置回应。例如，假定一台仪器能对被测器件（DUT）进行测量。基于测量的结果，第一台仪器必须能改变由另一台仪器施加到DUT上的激励。基于第一次测量计算新的激励值，所以在之前第一台仪器并不知道。在这种情况下，第一台仪器可以发送包含一个短脚本的LAN消息至第二台仪器以调整激励值。
优点
在测试和测量应用中脚本，基于脚本的仪器的优点。当仪器也符合LXI标准时，许多优点被加强。
对于许多测试和测量应用，非常适合采用PC作为控制器用于与单独仪器通信或使用带有积分型控制器的基于时隙的系统。但对于其它情况，那些方法或者由于大材小用而过于昂贵，或者不能胜任此任务。这些应用可以受益于基于脚本的仪器提供的额外能力和灵活性。
1.  结构的灵活性
构建带少量仪器的小型测试系统可以不带单独控制器；其中一台仪器用作控制器，管理其它仪器的工作。大系统能被划分为各含少量仪器的子系统，其中每个子系统被基于脚本的仪器管理。这简化了系统设计并且有助于提高性能。例如在装配线、科学应用或射频测试应用中，这类子系统使用基于LXI脚本的仪器就能很大程度地在物理上分开。
2.  提高性能
由基于脚本的仪器管理将大系统划分为子系统，这扩展了跨多处理器的控制和数据处理功能，从而提升了系统可用的总处理能力并且常常提升整体速度和吞吐量。此外，这种工作划分支持并行测试：当中心控制器忙于其它任务时，仪器或子系统不必保持空闲状态。
因为当传输命令或数据时，由于与控制器通信造成的延时更少，所以仪器上运行的脚本能以最大速度运行。当仪器执行重复测试序列时，这尤其重要。如果用单独的控制器，即使同样的序列被运行了几百次或者几千次，每次通过时都要传送一次指令序列到仪器。对比使用脚本的方法，仅需传输一次脚本，然后使用短指令可以运行任意多的次数。 
条件处理（例如当一个测量的结果确定下一个要执行的函数时）提供了另一种提高性能的手段。在脚本中，本地进行条件检查能去除由发送第一结果至控制器，等待控制器处理，然后发送下一个指令给仪器这个过程产生的延时。
在包含高数据率和/或大数据集的系统中，通信延迟、带宽限制和控制器吞吐量都可能是严重的瓶颈。基于脚本的仪器能压缩数据以降低带宽要求和/或缓冲数据，当带宽可用时再通过后台传输。基于脚本的仪器还能过滤数据，例如通过仅传送超出正常限度的数据。如前面所提到的，脚本还降低了消耗的通信带宽，从控制器发送命令至仪器，从而提高带宽受限应用的性能并且最小化由于通信延迟引起的时延。 
3.降低成本
使用基于脚本的仪器构建较小或较低复杂度的测试系统不需要单独的控制器，从而节省了控制器的成本并节省了用于控制仪器的任意单独测试运行软件的成本。当从基于脚本的仪器构建子系统时，构建大的测试系统同样可以实现节约成本。
这部分包含许多脚本例子说明吉时利支持脚本的仪器的一些特点。  图1.两台吉时利系统源表能用单脚本控制产生3相交流波形。
图1示出了两台吉时利系统源表如何使用单脚本控制产生3相交流波形。在这个例子中，使用吉时利的TSP-Link技术连接这两台仪器，因而很容易用脚本控制这两台仪器。
图2. 吉时利3706型系统开关/DMM是LXI Class B仪器，使用基于IEEE 1588的定时器排列一系列测量的顺序。  图2说明了基于LXI Class B技术的定时器如何控制脚本工作。在此脚本中，吉时利3706型LXI Class B仪器使用基于IEEE 1588的计时器排列一系列测量的顺序。LXI Class B的定时特点特别适合避免或最小化由延迟或通信时延导致的系统时延。



开发方法
基于脚本仪器的开发方法当开发基于脚本仪器的驱动程序时，可以从三种通用方法中进行选择：
1.  传统方法：
编写驱动程序就好象这台仪器是一台传统仪器。这种方法没有利用脚本的功能。唯一的调整是容纳句法差别。
2.  扩展方法：
通过传送脚本至仪器的功能增强了传统风格的驱动程序，并且或许能管理返回数据。这提供了用户利用脚本功能的一种方法，但是驱动程序本身不能这样做。
3.  增强方法：
基于脚本仪器的驱动程序可以通过本文描述的许多方法利用脚本。例如，驱动程序可以下载脚本，而脚本能执行通常由仪器本省的驱动程序执行的许多功能。然后，驱动程序执行的调用是发送短而简单的指令而不是发送较长串的典型仪器指令到仪器。像往常一样，这类设计有一些折衷，但是基于脚本的仪器提供了优化系统和软件设计的附加灵活性，以达到指定应用的最佳性能。
同样这三种方法能用于编写软件直接控制基于脚本的仪器，无需使用仪器驱动程序。
脚本的开发方法可以用许多种方法开发脚本。比如吉时利提供称为测试脚本生成器（TSB）下载文件 的IDE（集成开发环境）用于为吉时利任意一款支持TSP的仪器开发脚本。TSB能用于在测试仪器上编辑、下载和执行脚本。TSB包含内建仿真器用于调试脚本无需传送回仪器，这允许即使在没有硬件的条件下也能开发脚本。
一些LXI仪器含有telnet端口用于远程控制。对于这些仪器，用文本编辑器能提供快速和简单的方法编写和调试脚本。通过telnet应用，用户能直接粘贴脚本文本或下载脚本文件到仪器。
一些用户比较喜欢将脚本直接嵌入他们的测试执行应用。这些用户在开发和调试脚本的同时也能开发和调试测试执行应用。
LXI的网络连接性支持吉时利在3700系列开关/DMM产品中嵌入称为TSB Embeded的脚本开发工具。用户能通过仪器本身提供的Web页面访问此工具，从而用Web浏览器开发和管理他们的脚本，无需在PC上安装任何软件。
带嵌入式脚本处理的产品脚本的开发方法时，可以采用基于函数或基于对象的方法。应当在任何合适的地方使用函数。这不仅对于最大化代码重用是良好的传统做法，而且还减少了脚本引擎执行环境存储的代码量而且为附加脚本和数据存储留下了更多存储区。
嵌入式脚本最主要的优点是它能缩短PC主机和测试仪器之间的通信时间。一种基于函数的方法能最大化这种优点，因为PC主机仅需要发送一条短消息调用存储的程序。如果更多长消息经常需要发送给仪器，那么减少通信的优点也消失了。
无论脚本如何开发，脚本带来一些新的测试管理理念。虽然在某些情况下，在仪器的非易失存储器上保存脚本是有用的，但是这样做并非总是最好。当执行的测试预计测试仪器上将使用特定版本的脚本，当开始运行测试时，最好将脚本下载到仪器上。这样就能完全控制测试运行所采用的脚本代码版本。
使用分立的控制器，基于脚本的仪器当然可用于常规测试系统。这样做的详细步骤可能有所不同，这取决于制造商选择如何实现脚本。
吉时利支持TSP的仪器能轻松地配合单独的控制器使用。如前面详细介绍的，指令的名称和句法有所不同，就像执行查询获取状态和数据的语句。但总的来说，这种改变很小并且任何熟悉仪器编程的人都能很轻松地适应。
那些习惯于使用仪器驱动程序连接软件与仪器的用户都会发现他们能像使用常规仪器那样继续用仪器驱动程序对待基于脚本的仪器。然而，这样做会去除脚本的很多优点。幸运的是，有方法允许仪器驱动程序作者和用户受益于基于脚本仪器具有的额外灵活性和能力。



相关词补充
脚本引擎
所谓脚本引擎，就是一个计算机编程语言的解释器，如用于建网站的asp、php等，它的功能是解释执行用户的程序文本，将它译成计算机能执行的机器代码，完成一系列的功能。早期的桌面数据库如dbaseIII、foxbase等也属于脚本型编程语言.

脚本语言
流行的脚本语言包括Perl、Python、VBScript和JavaScript。Lua脚本语言特别适于嵌入式应用，因为它比多数其它脚本语言运行速度更快并采用占代码空间非常小的库实现。吉时利选择Lua用于支持测试脚本处理器（TSP）的仪器系列。
脚本语言通常能自动管理内存，所以用户无需分配和释放用于字符串或矩阵的存储区。虽然这对用户很方便，但是脚本引擎需要周期性地重新声明不再使用的内存，这个过程被称为“垃圾收集”。虽然垃圾收集能自动进行，但是这得花费时间，而且如果在测试序列的关键时间段上发生垃圾收集就会出现问题。这些问题是可以预防的，但是首先用户必须理解垃圾收集器的影响并且知道如何在测试序列的关键时间段上避免垃圾收集。
可编程仪器表现为一种形式或另一种形式。虽然具体功能有所不同，但可编程仪器允许用户在仪器中创建和保存一组指令（或程序），并且按需运行指令。通常，早期可编程仪器的能力和容量都非常有限，这使可编程性的使用局限于相对小而简单的应用。较大或较复杂的应用需要使用单独计算机或控制器通过通信接口（常常是GPIB）控制可编程仪器。
计算技术和编程语言的进步以及嵌入式计算容量成本的稳定下降带来了新一代可编程仪器。新型仪器突破了旧的限制，极大提高了性能和灵活性。这些仪器的一个关键进步是采用脚本语言提供可编程性。本文详细介绍了脚本以及如何利用脚本简化测试与测量并且提高速度。