一、前言
本科研所开发的自动测试软件,是针对能够输出多种波形信号参数的函数信号发生器一类射频仪器开发的。之所以对此类仪器进行自动测试软件的开发,除每年都会有相当数量的函数信号发生器要求被计量检测外,还因为射频参数仪器测量中多数都只针对正弦波进行测量,对除正弦波以外的方波、脉冲波、三角波、锯齿波、调制波等波形信号没有系统的测量,更谈不上自动测量。并且由于不同波形信号的参数形式和测量要求各不相同,因此人工测量极为费时,不仅要多次设置波形参数值以及标准测量仪器的测量方式,还要手工记录繁琐的数据。而在此过程中,测量的稳定性和重复性也会受到很大影响。正是基于以上考虑,现阶段利用已有的高性能数字示波器、测量接收机、通用计数器计算机,通过GPIB总线控制技术,配合高级语言编写的程控代码,就能够完成多波形信号参数的自动测量。这样在多波形信号参数测量领域,就能形成快速高效的技术特点,使多波形信号的自动测量更加系统化。
二、研究与开发内容及技术创新要点
多波形信号参数自动测量软件系统包括以下三大模块:(1)被检函数信号发生器和已有的高性能数字示波器、测量接收机、通用计数器组成的仪器模块。此模块中的仪器都具有GPIB外接程控接口,可以通过GPIB总线控制技术和程控代码指令进行参数形式、工作模式以及信号输入输出的自动设置和动作。(2)软件模块。此模块包括计算机及安装在其上的用高级语言编写的自动测量软件。通过检测人员对软件不同测量功能项的应用使标准测量仪器可以自动对函数信号发生器的多波形信号参数进行自动测量,并且实时保存测量数据,在测量结束后自动生成测试结果文档。(3)GPIB控制总线模块。此模块用于连接仪器模块和软件模块,在两者之间形成数据传输和指令传输的通道。特别指出:计算机和GPIB总线的连接需要使用GPIB-USB转化适配器。在三大模块的运行下就能实现对多波形信号参数的自动测量。三大模块的物理层关系如图1所示。
<CTSM>图1三大模块的物理层关系</CTSM>
由于三大模块中的仪器模块和GPIB模块已经具有,不需要再有所加工,所以软件模块的开发是本科研的主要环节和内容。由于C++高级编程语言在仪器程控领域方面以及程序调用和扩展有着出色的执行能力,因此用C++作为本次软件的开发语言,在Microsoft Visual环境下进行程控代码指令的开发。
本次科研所开发的自动测试软件,是针对能够输出多种波形信号参数的函数发生器一类射频仪器。此类仪器中包括了Agilent公司的33210A、33220A、33250A,Tektronix公司的AWG3000-7000系列等多种型号,因此自动测试软件的开发会针对具有GPIB程控接口的不同型号的仪器进行程序编写,以完成函数信号发生器一类仪器的全面自动测试。
对函数信号发生器的自动测量主要根据JJG840-1993《函数信号发生器》检定规程的要求,测量项目包括频率准确度测量、输出幅度测量、衰减器测量、幅度平坦度测量、正弦波总失真系数测量、线性度测量、前后过渡时间测量、脉冲占空系数测量、调幅特性调频特性测量、扫频特性测量和直流偏置测量。
由于JJG840-1993中要求测量的参数项目并不包括多种波形信号参数的全部内容,因此本软件还会针对不同波形信号的不同参数,利用各厂家所提供的产品手册上的性能描述和校准指南进行测量功能的全面开发。
本软件开发的技术指标最重要的就是通过软件的程控可以顺利地对信号进行捕捉和分析,进行参数测量并最后生成数据记录文本。并且程序指令的编写和函数模块的调用遵循效率至上出错率最小的原则,使其最优化运行,其余指标都是依据标准器的测量指标进行最后测量结果的评定。
本次科研的创新之处在于:(1)利用高级程序编写语言和GPIB总线控制技术使函数信号发生器的测量成为自动化测量方式。(2)对测量数据的记录从以往的人工录入变为自动录入并自动生成测试结果文档,大大提高了后期数据处理效率。(3)形成了程控软件和硬件仪器相结合的测量方式,开拓了计量测试的工作领域,并且大幅提高了测量的效率和市场竞争力。
三、研究试验方法及技术路线
自动化测量要求检测人员可以对测量的整个过程完全掌握,可以在测试前任意选择测量仪器的类型、需要测量的项目、设置测量仪器的GPIB地址、某个测量项目中要求的仪器连接方法,在测量过程中可以随时改变测量的状态、了解测量的进度、第一时间观察测量的数据,并且可以自定义添加和减少测量的数据点以及调用之前的测量存储文件和记录的生成控制。因此软件需要一个可视化控制界面,此可视化界面需要做到布局合理、功能全面、层次清晰、控制简单并且尽可能地提高人性化操作的能力。图2为软件界面所包括的模块框图。
<CTSM>图2软件界面所包括的模块框图</CTSM>
每一个模块都是一个类或者某个类所包含的函数。如仪器型号选择模块就是程序中CDlgNew类;测试项目选择模块就是程序主界面CDlgMain类中所调用的OnItemchangingListItem函数;测试控制模块包括连续测试、单项测试和测试终止等功能,分别对应OnButContest、OnButSingletest和OnButTerminatetest函数;记录生成模块就是主框架类CMainFrame中的OnOperationWordCert函数,通过调用此函数可以生成Word形式的测试数据报告。
人性化的界面可以让检测人员很好地对测量整体过程进行控制和跟踪,但软件程控指令编写的好坏才是软件能否高效无误运行的关键。软件的程控代码包括主函数(main函数)和各个测试项目函数。主函数用于对整个测试过程进行控制,包括程序的初始化,确认各个仪器都以连接到总线上,并都处于准备工作状况,并能够调用各个测试项目函数运行以及各个函数运行中的停止、终端、重调用等功能。各个测试项目函数其实是C++具有的类定义功能所定义的各个测试项目类,每一个类都有公共属性、私有属性和继承属性。这包括了各个测试项类中对各个仪器进行初始功能设置的指令代码,信号输入输出指令代码、接收分析信号并测量记录数据指令代码等,测试测试过程中的每一个数值都将链接到界面函数中所定义的每个空间中并动态出现在界面模块中数据录入表格中。当每一个测试项结束运行后便返回主函数,开始下一个测试项类的运行。图3为函数模块运行关系。
<CTSM>图3函数模块运行关系</CTSM>
对于某个具体的测试项目,从执行软件可执行文件开始到某个项目的测试结束的软件基本工作流程如图4所示。
<CTSM>图4软件基本工作流程</CTSM>
在软件具体的编写中需要运用C++中MFC函数库,MFC函数库包含了CView、CDoc、CMainFrame、CApp等几个基础类,这几类完成界面的初始化、界面控件的编辑、测试数据显示等功能。在编写主测试框架程序中主要需要运用CListCtrl类和用户自定义类,CListCtrl类可以完成测试框架界面表格中所测项目标准器和被检仪器的初始设定数值的显示,以及测试数据更新位置的设置。自定义类是根据被检仪器和标准器的SCPI指令进行仪器参数、模式、输入输出设定的测试类,此类中完成了测试功能。
由于系统中的程控仪器都有通用GPIB接口以及仪器商在其内部定义的VISA接口,因此还需要调入ni488.h、visa.h、visatype.h、vpptype.h的C++头文件,运用ni488和visa的通用输入输出命令语句发起和接收各种测试SCPI语句和返回参数值。
因此,软件的代码开发部分包括了C++ MFC类、仪器SCPI语言、ni488及visa仪器接口输入输出指令集。
下面以测试函数信号发生器正弦波频率准确度为例,大致描述软件的运行流程,具体的软件执行程序如图5所示。
<CTSM>图5软件执行程序</CTSM>