微波EDA网,见证研发工程师的成长!
首页 > 测试测量 > 测试测量技术文库 > 融合LXI和脚本的优点(上)

融合LXI和脚本的优点(上)

时间:05-18 来源:互联网 点击:
作者: Paul Franklin和@Todd Hayes,吉时利仪器

Part I:什么是脚本?

多年来,可编程仪器表现为一种形式或另一种形式。虽然具体功能有所不同,但可编程仪器允许用户在仪器中创建和保存一组指令(或程序),并且按需运行指令。通常,早期可编程仪器的能力和容量都非常有限,这使可编程性的使用局限于相对小而简单的应用。较大或较复杂的应用需要使用单独计算机或控制器通过通信接口(常常是GPIB)控制可编程仪器。

计算技术和编程语言的进步以及嵌入式计算容量成本的稳定下降带来了新一代可编程仪器。新型仪器突破了旧的限制,极大提高了性能和灵活性。这些仪器的一个关键进步是采用脚本语言提供可编程性。本文详细介绍了脚本以及如何利用脚本简化测试与测量并且提高速度。

那什么是脚本呢?测试仪器的脚本与我们说的PC脚本又有什么区别呢?

简单地说,脚本是用脚本语言编写的程序以便管理一系列的动作。

脚本远优于常规使用的宏或记录序列。脚本能充分利用脚本语言,其中包括循环、转移和数据处理。虽然宏可以通过基本循环控制方法实现重复,但是脚本能提供完全执行环境,其中数值可以保存在变量中。然后,这些变量可用于控制循环和转移判定。

脚本语言与其它编程语言的主要区别在于在运行脚本程序之前无需预编译。如果需要,脚本环境可以直接中断程序或自动编译程序。此外,脚本语言还具有编程语言的全部能力,包括存储变量值和创建存储的程序(函数)以便代码重用。

由于脚本无需单独进行编译,所以脚本语言非常适合于测试与测量设备的嵌入式应用。脚本可以下载到仪器上,无需额外的准备工作就能为用户提供更多便利。

PC上运行的脚本语言和嵌到仪器中的脚本语言之间的关键不同在于环境。当脚本语言运行在PC上时,它通常能访问文件系统、几乎无限制的存储器、图形显示以及键盘和鼠标。当脚本语言运行在仪器上时,它不必访问任一种设备,但这些设备通常也不需要。

明天我们会对测量仪器中的脚本进行细化介绍,敬请期待吧!

Part II: 测量仪器中运用的脚本

流行的脚本语言包括Perl、Python、VBScript和JavaScript。Lua脚本语言特别适于嵌入式应用,因为它比多数其它脚本语言运行速度更快并采用占代码空间非常小的库实现。吉时利选择Lua用于支持测试脚本处理器(TSP)的仪器系列。
当测试测量仪器增加了脚本支持时,最困难的选择是什么呢?对拉,是如何向用户介绍脚本!

这种困难包括需要回答的一些难题,例如:“如何集成仪器指令集和脚本环境?”“用户如何将脚本载入仪器中?”吉时利选择将脚本环境和指令集完全集成,这意味着所有仪器指令都是完全合法的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

上述例子说明脚本仪器可以表现得与传统设备非常类似。仅指令语法稍;有改变。为了利用脚本引擎的全部能力,用户只用发送消息来使用脚本语言功能。

Part III 仪器测试中脚本案例分析以及LXI

今天我们会介绍实际操作时的一些案例和经验,并且介绍一下LXI和脚本。
通过发送以下脚本,用户能让仪器执行二分查找法搜索能输出1mA电流的电压源:
<代码略>

这种脚本的好处是避免了读取每个结果和发送指令输出新电平所需的通信时间。虽然有理由询问发送较长消息需要多长时间,但是通常发送一条较长的消息比来回通信许多条较短消息快得多。然而,脚本环境的一个优点是前述代码可以封装为函数定义,然后重用,用的时候就能完全避免发送长消息。例如:
<代码略>

前面的指令不会让仪器立刻执行,但是它创建了一个命名为“Search(搜索)”的存储程序,之后可以用搜索指令调用:
Search(2.5, 0.001)

仪器有一些特点能补充脚本引擎。如果脚本环境提供仪器前面板的编程访问,那么用户就能创建交互式脚本提示用户在前面板输入参数或显示结果。仪器还能提供非易失的板上脚本存储,因此当仪器上电时,这些存储的脚本就能自动执行。这允许执行预先载入的应用,无需任何用户动作,只需要打开仪器的电源。

嵌入式脚本为测试和测量仪器用户提供显著的优点。虽然嵌入式脚本具有一些次要的缺点,例如前面介绍的对查询陌生,但是大多数用户都能很容易使用或者适应。

脚本语言通常能自动管理内存,所以用户无需分配和释放用于字符串或矩阵的存储区。虽然这对用户很方便,但是脚本引擎需要周期性地重新声明不再使用的内存,这个过程被称为“垃圾收集”。虽然垃圾收集能自动进行,但是这得花费时间,而且如果在测试序列的关键时间段上发生垃圾收集就会出现问题。这些问题是可以预防的,但是首先用户必须理解垃圾收集器的影响并且知道如何在测试序列的关键时间段上避免垃圾收集。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top