基于VXI总线虚拟仪器组建的测试系统作为测试领域里一个新的应用方向,引起了我国兵器测试界的关注,并开发应用了适合兵器行业的测试系统。本人在对基于VXI总线仪器组建的压力测试系统进行开发的过程中,由于系统要求完成多信道压力信号测试,故将使用到多个同种VXI功能模块。在VXI测试系统中,每个功能模块都相当于一个具有独立面板的传统仪器,若按该思想方法进行本测试系统应用软件设计,无疑将重复设计并使用同样的仪器面板和源代码,造l成软件的冗长。而利用计算机软件功能较好地解决了这个问题。
2 压力测试系统硬件结构
根据测试任务的需要,所需的仪器模块为具有4路通道的电荷放大器模块和数据采集模块。系统硬件结构图如图1所示。系统选择了实现成本低,数据传输速率快,具有热插拔和即插即用功能等优点的IEEE-1394总线作为外挂控制计算机和VXI机箱的连接总线,相应采用HPE8491B作为零槽控制器;主机箱选用测试方便的HP公司的C尺寸6槽高功率主机箱HPE1421B;外挂计算机选用PⅡ266工业控制计算机;电荷放大器模块是自主研制开发的2通道VXI总线寄存器基的高阻抗电荷放大器模块,其增益连续可调并具有滤波功能;数采模块选用HP公司的4通道、最高采样速率为800kSa/s数字化仪HPE15644A,该模块能够满足一般兵器压力测试要求,不选用采样频率过高的数采模块,避免引入高频干扰。
3 压力测试系统软件结构
VXI测试系统软件开发所遵循的基本原则是VPP规范。其中,从通用性和零槽控制器工作环境要求考虑,操作系统选用32位操作系统Windows95,I/0库选用HPVISA;数字化仪的仪器驱动程序选用商家HP公司提供的,电荷放大器则使用自行编制的符合VPP规范的仪器驱动程序;软件开发平台采用美国NI公司的面向仪器交互式C语言的LabWindows/CVI。测试系统软件的设计主要集中在用户界面设计和源代码程序编写两方面。
3.1 用户界面(系统多级虚拟面板)设计
按照功能模块的应用将虚拟面板划分为一个测试系统主面极和电荷放大器设置面板、数字化仪设置面板两个子面板。
在设计电荷放大器设置面板时,由于有两块同种功能的电荷放大器模块,它们的面板完全相同,为避免用户界面的重复设计以及源代码程序的重复编写,采用的办法是:针对多个同种功能的VXI模块,制造一个公用面板,当其中之一模块被使用时,才享用该面板,不用时即释放。具体到本压力测试系统,针对两个功能相同只是逻辑地址不同的电荷放大器模块,只设计一个公用的电荷放大器设置面板。当电荷放大器a或b被使用时,该公用面板即显现为当前被使用模块的用户界面,完成对该模块硬件的参数设置。
3.2 源代码程序编写
在此着重介绍如何通过源代码的编写来实现用户界面设计中的解决思想。
(1)为公用面板上各控件的回调函数添加相应的代码。并定义了公用面板的面板句柄chargepanel和仪器通道句柄chargevi。
(2)在变量定义中定义一个结构体数组:
structsystem
{Visessionhandle;
intpanel;
}device[2]; (3)在测试系统初始化过程中:
①放置公用电荷放大器设置面板CHARGE。
chargepanel=LoadPanel(0,“压力测试系统.uir”,CHARGE);
②将公用面板复制成面板名为VXIcharge_1和VXIcharge_2,面板句柄为device[0].panel和device[1].panel两块面板,分别对应电荷放大器模块a和b。d
evice[0].panel=DuplicatePanel(0,chazgepane,“VXIcharge_1”,50,80);
device[1].panel=DuplicatePanel(0,chargepane,“VXIcharge_2”,50,80);
(4)在设置相应VXI模块参数时:
①初始化相应模块(以电荷放大器模块a为例)。
Charge_init(“VXI0::224::INSTR”,VI_FALSE,VI_FALSE,&device[0].handle);
②显示相应模块的设置面板。
DisplayPanel(device[0].panel);
(5)在控制相应模块时(如复位、发送设置参数等):
①确定正在享用公用面板的模块。
Panel=GetActivePanel( );
②将该模块的面板句柄及仪器通道句柄赋给公用面板中定义的面板句柄和仪器通道句柄。
for(i=0;i<2;i++)
{if(Panel=device[i].pane1)
{chazgepanel=device[i].panel;
chargevi=device[i].handle;
}}