马 敏,黄 莉,赖 静
(电子科技大学 自动化工程学院,四川 成都 611731)
测试系统集成技术是测试计量技术及仪器专业的本科生和研究生的基本课程。课程内容主要是通过软件编程的实验方式,组建各种类型的自动测试系统,让学生们深入理解与掌握自动测试技术及测试系统的组建技术。该课程与普通的专业课相比,理论联系实际,课程的80%学时都是通过教师指导学生自己动手编写软件,实际控制各种测试仪器。
现今测试仪器逐步从普通的GPIB总线[1-2]升级为网络仪器[3-4]。为了支持测试系统集成技术课程的建设,实验室配备了大量的网络仪器,希望学生在测试技术方面,学习最新型的仪器,进一步了解网络化测试。由于经费有限,实验室主要配备的是LXIC级仪器,不支持网络同步与触发[5],为了配合实验室建设,本教研室自主研发了一款LXI A级同步触发盒,它可以与实验室的网络仪器相连,既能实现IEEE 1588 协议[6-8]的网络同步触发,也可以支持硬件总线触发[9],触发同步指标较高,可达5 ns。
如图1所示,为LXI A同步触发盒外观图。该触发盒的功能主要如下:支持网络程控;支持VXI-11网络发现协议;支持LAN触发、IEEE 1588触发及LXI硬件总线触发等;支持延时触发,能够产生周期性触发脉冲。
该触发盒的主要指标有如下几项。
1)IEEE1588定时触发同步:时间数量20;
2)设置步进:10 ns;
3)同步精度:通过1.5 m网线直接相连,平均值±13 ns;
4)标准偏差:30 ns;
5)通过交换机(交换式集线器TP-LINKTL-SF1008+):平均值±130 ns,标准偏差200 ns(该指标随着使用的交换机型号的不同精度有差异,或者同一型号的不同交换机也会对精度有影响)
6)硬件总线触发:±5 ns(同轴线长度是0.5 m)。
图1 LXI A级同步触发盒
该同步触发盒的设计方案如图2所示。
图2 LXI A级同步触发盒设计
上位机通过网页界面程控触发盒,也可通过SCPI指令对仪器进行程控。
上位机通过网络设置同步触发盒的触发方式,触发盒收到指令后进行解析,代码解析后若是LAN触发,则接收到上位机的LAN数据包后通过TTL触发口向仪器发出触发脉冲。如果是IEEE 1588定时触发[10],则计时开始,计时到达后,通过TTL触发口向仪器发出触发脉冲。如果是LXI总线触发,则通过硬件总线管理模块通过LXI总线向仪器发出触发脉冲。
LXI同步触发盒主要支持3种触发方式(LAN触发、1588同步触发及LXI硬件总线触发),本课程针对触发盒的特点,设计了3个实验,下面将详细叙述实验的具体设计。
图3 仪器连接图
本实验中,触发盒与上位机通过网络相连如图3所示,示波器触发口与触发盒的TTL触发输出相连。通过此连接方式,当上位机向触发盒发送LAN数据包时,触发盒输出触发脉冲触发示波器。此时,示波器能够接收来自网络的LAN消息触发,如图4所示。
图4 触发盒LAN触发设置
通过安捷伦公司的I/O Library 软件中的LXI测试控件,可以显示上位机给触发盒发送的LAN包,并收到触发盒发出的响应LAN包,如图5所示。
图5 安捷伦公司软件测试触发盒LAN触发功能
LXI同步触发盒里实现了IEEE 1588同步协议,网络同步精度可达纳秒级。本实验中学生将两台触发盒同时接入以太网,通过上位机设置,启动IEEE 1588同步功能,同步5 min后,发送同步测试命令,并将触发盒的秒脉冲输出连接到示波器两个通道中,如图6所示。根据示波器捕捉到的波形,对比两个脉冲的间隔,并记录数据。
图6 测试触发盒的网络同步精度测试连接图
表1 两台触发盒通过网线直连IEEE1588同步精度
本实验,记录100次测量数据如表1所示,根据表1进行计算,两台同步触发盒的网络同步精度的平均值是0.258 ns,标准偏差为5.349 959 ns,最大偏差为-15~16 ns。该指标在国际上已属领先水平。通过该实验,学生可熟悉当前较新的IEEE 1588精准时钟同步标准[11-12],了解实现网络同步的难点技术及同步测试的方法。
实验1、2分别演示了LXI仪器LAN消息触发、IEEE1588同步触发测试,本实验作为实验1、实验2的综合实验,通过命令触发的方式(发送SCPI指令)程控LXI触发盒、信号源及示波器完成实验1~3的内容。本实验主要目的为在LabWindows/CVI环境下搭建基于命令触发、LANI事件消息触发及IEEE1588同步触发等多种触发方式的自动测试系统。
实验设计界面如图7所示。
图7 实验3自动测试系统界面设计
学生在界面上可以配置触发盒的触发输入及触发输出种类,能够配置信号源信号的波形、频率等参数,在某按键按下时完成示波器的初始化,触发模式、触发源、触发类型等参数的设置。测量输出、自动设置频率、扫频、参数测量等功能,然后将测量结果用户界面上,测试程序设计如图8所示的流程图。
图8 实验程序流程图
图9 新线程程序流程图
设计程序无需按键,示波器触发后界面自动显示示波器波形(扩展)Trigger Event Register(TER)是DSO5102A示波器触发事件寄存器,当有示波器触发事件发生时,寄存器被置为1,读取该寄存器或者使用*CLS命令都可以将寄存器清零。设置触发盒IEEE1588定时触发示波器采集波形,并不是按下某个键后触发示波器采集,这要求界面能够自动更新示波器波形。所以程序设计可以另开辟一个线程去循环地读取示波器触发事件寄存器直到有触发事件发生,程序流程图如图9所示。
本实验还可以让学生练习使用SCPI指令程控仪器,熟悉VISA函数。示波器DSO5012A相关的SCPI命令:
1)*RST
DSO5012A复位。
2):AUTOSCALE
自动定标命令。
3):ACQUIRE:TYPE
::={NORMAL|AVERAGE|
HRESOLUTION|PEAK}
4):DIGITIZE[
[,..,
::=CHANNEL
参数可以最多重复5次。
:DIGITIZE命令是一个特殊的“运行”命令。它使仪器根据:ACQUIRE命令子系统的设置采集波形,采集完成后,仪器停止运行。如果没有指定参数,:DIGITIZE命令采集当前显示的那些通道,如果没有通道显示,则所有的通道都采集。
5):WAVeform:FORMat
该命令指定波形点数据传输的模式,ASCII格式指定数据以ASCII字符格式传递,WORD格式指定数据以16位(2字节)的形式传递,BYTE格式指定数据以8位1字节的形式传递。
6):WAVeform:POINts<# points>
<# points>::={100|250|500|1000|
该命令用于指定在:WAVeform:DATA?询问时要传送的波形点数。
7):WAVeform:PREamble?
该命令用于请求指定波形源的前导信息,前导数据包含与对应通道有关数据的垂直和水平标度的信息。
8):WAVeform:DATA?
该命令以IEEE 488.2任意块数据格式返回采样数据点二进制数据块,数据块具体格式取决于:WAVeform:UNSigned,:WAVeform:BYTeorder,:WAVeform:FORMat和:WAVeform:SOURce命令设置的情况,返回的点数受控于:WAVeform:POINts命令。
9):MEASure:SOURce
信号源33220A相关的SCPI命令如下。
①APPLy:SINusoid[<频率>[,<振幅>[,<偏移>]]],该命令使信号源产生一定频率、振幅、偏移的正弦波。
②APPLy:SQUare[<频率>[,<振幅>[,<偏移>]]],该命令使信号源产生一定频率、振幅、偏移的方波。
③APPLy:RAMP[<频率>[,<振幅>[,<偏移>]]],该命令使信号源产生一定频率、振幅、偏移的锯齿波。
④APPLy:PULSe[<频率>[,<振幅>[,<偏移>]]],该命令使信号源产生一定频率、振幅、偏移的脉冲。
Visa相关函数如下:
①ViStatus_VI_FUNC viOpen DefaultRM(ViPSession vi)
②ViStatus_VI_FUNC viOpen(ViSession sesn,ViRsrc name,ViAccessMode mode,ViUInt32 timeout,ViPSession vi)
该函数用于打开资源会话,其中参数name用于指定仪器资源名称,参数vi用于返回取得的会话资源。
③ViStatus_VI_FUNC viClose(ViObject vi)
该函数用于关闭会话。
④ViStatus_VI_FUNC viClear(ViSession vi)
该函数用于清除vi指定的接口。
⑤ViStatus_VI_FUNCC viPrintf(ViSession vi,ViString writeFmt,...)
该函数用于向仪器输出特定的SCPI命令字符串,典型的应用方式如viPrintf(vi,"*RST
"),向指定仪器发送*RST命令viPrintf(vi,":AUTOSCALE
⑥ViStatus_VI_FUNCC viScanf(ViSession vi,ViString readFmt,...)
该命令用于读回波形数据,典型用法如下:
viScanf(vi,"%#b
其中,vi用于指定仪器资源,readfmt指定数据格式,waveform_size指定并返回数据个数,返回的数据保存在waveform_data指针指向的位置上。
⑦ViStatus_VI_FUNCC viQueryf(ViSession vi,ViString writeFmt,ViString readFmt,...)
该函数用于发送SCPI命令并返回命令执行结果,典型用法如下:
ViQueryf(vi,"MEASure:FREQuency?
通过3个自主设计的实验,学生不仅可以对课堂教学中学到的网络测试及自动测试等技术有直观的认识,还可以更好地学习网络同步触发技术、网络同步测试方法及测试系统组建的基本设计等,同时也学习了LabWindows CVI语言和VISA函数,为其今后从事测试系统软件编程的相关工作打下良好的基础。