摘 要: 介绍了一种面向多种总线测试设备的软件设计,通过GPIB、TCP网络、RS 485串口等总线编程技术,采用多线程编程方法实现对GPIB⁃IEEE488.2接口测量设备、网络接口示波器以及串口测量设备的分时通信,最终实现数据采集的目的。
关键字: 总线接口; 数据采集; 多线程; 分时通信
中图分类号: TN06⁃34 文献标识码: A 文章编号: 1004⁃373X(2015)03⁃0085⁃02
Software design for multiple bus testing devices
LIN Li⁃jie, GENG Tao
(Institute of Electronic Engineering, China Academy of Engineering Physics, Mianyang 621900, China)
Abstract: The software design for multiple bus testing devices is introduced in this paper. By using GPIB, TCP network and RS485 serial bus program technology, the time⁃share communication with GBIB⁃IEEE488.2 interface measuring equipment, network interface oscilloscope and serial port measuring equipment was realized by means of the multithread programming method. The design goal of data acquisition was realized ultimately.
Keywords: bus interface; data acquisition; multithread; time⁃share communication
具有面向多总线设备测试功能的检测设备是一个串行化处理设备,该设备采用了GPIB、TCP网络、RS 485等总线通信技术,可分时控制GPIB测量仪器、网络示波器、串口测试设备等多种测量设备进行数据测量,然后从各设备回读采集数据进行数据处理;该软件基于Windows XP系统操作,采用VC++、SP6开发工具进行软件开发,采用BCGControlBar Pro作为界面库、采用ProEssentials控件作为图形绘制库,最终可完成设备检测、数据采集、数据通信、波形显示、报表打印等功能。
1 硬件结构
该测试系统采用一台工控机作为测试控制主机,工控机具有网络端口、GPIB板卡、RS 485串口卡以及继电器板卡。按照测试工作流程,依次与GPIB测量仪器、网络示波器、串口测试设备等进行通信,分时控制这些设备进行数据采集和测试,然后从这些不同总线设备获得测试数据后进行数据处理和分析达到测试目的,其硬件主要结构如图1所示。
2 软件结构
软件采用C/C++语言编程,软件总体结构如图2所示。软件主要功能包括:设备自检、设备参数设置、自动测试控制、波形显示及数据处理、参数回放及打印等功能。设备自检部分主要完成继电器板卡及通道自检、GPIB板卡端口及设备通信自检、与网络示波器通信自检以及串口端口自检等功能;设备参数配置主要完成测试记录(测试设备编号、测试项目、操作人、测试时间等项目)填写、按照不同试验项目选择不同的测试项目、预先设定测试项目阈值用于作合格判据;自动测试控制程序部分采用了多线程设计技术,将测试流程里的测试项目作为串行处理测试节点,按照测试流程分时完成各测试节点的通信测试;波形显示及数据处理部分将读回的示波器波形进行显示,将读回的数据进行处理获得最大值、最小值和均值,将每次测试记录填写到由CBCGPGridCtrl派生的Grid控件表格,最后输出数据到报表中;参数回放部分与Grid控件联系紧密,参数回读后数据显示在Grid控件表格,通过点选Grid控件中的每次测试记录,将对应的每次测试存储记录包括波形和数据进行回放,并能通过报表进行参数打印。
3 关键编程技术
3.1 读GPIB设备编程技术
通过GPIB总线接口设备可以对快速测量信号或高压信号进行测试,这里采用数字万用表3410A通过GPIB总线接口设备完成测量任务,测试系统软件首先申明GPIB端口地址等属性,打开相应端口地址后,通过自检GPIB⁃IEEE 488.2通信接口查询找到对应的GPIB设备。在自动测试流程线程,当程序运行到GPIB参数读取测试节点时,测试系统软件将测试数据从GPIB测试设备读回,通过Windows窗口消息机制返回到窗口界面显示测量数值。
3.2 读网络示波器编程技术
通过示波器设备可以直接对测量信号进行精细化测量,可以达到纳秒级的测量精度,测试设备采用泰克DPO4054B示波器进行测量。软件设计时在头文件中包括了Visa.h头文件,在库链接中链接了Visa32.lib库文件,同时结合Agilent IOlibary接口库软件,运用Visa编程技术,查找到TCP网络示波器后打开示波器进行通信。软件启动后通过自检网络查询找到对应的示波器设备,在自动测试流程线程,当程序运行到示波器参数读取测试节点时,测试系统软件将测试数据从示波器读回,随后运用一定的算法处理数据,可以获得示波器无法直接测量的数据值。
3.3 RS 485总线串口编程技术
软件串口编程技术比较成熟,通常设计方法为应用程序开启即打开所有串口,在应用程序退出时关闭所有串口,不推荐在应用程序内不停打开或关闭串口,这样存在与硬件兼容性的风险,也不容易排除故障。
本应用程序在设备自检打开端口后,在自动测试流程线程,当程序运行到串口设备参数读取测试节点时,通过读/写串口端口完成数据读/写。
3.4 界面设计编程技术
采用BCGControlBar界面库设计软件总体界面,软件显示采用OutLook模式,左侧一列显示主窗口操作按钮,按钮操作允许对设备进行自检;在测试界面和报表显示界面进行切换;进行参数设置及参数回读操作。
软件居中采用ProEssentials绘图软件控件设计波形曲线窗口,既可用于测量时显示波形曲线,又可在参数回读时显示波形曲线。
软件右侧采用基于CBCGPGridCtrl类派生基类生成的参数报表,可以用于显示每次实验数据。每做完一次试验则在报表显示一列数据,记录一次试验波形数据,方便使用者在一个时间段观察试验记录。
4 软件可靠性设计
测试系统软件设计中采用了一定的可靠性设计方法保证测试设备的软件健壮性,首先在软件启动的自检阶段确保与所有端口设备连接正常并通信正常,确保后续自动测试流程前软硬件通信正确无误;软件采用Windows消息机制,避免线程内对Windows窗体进行操作;对返回的波形数据软件采用一定点数的平滑滤波处理技术,防止读回的数据异常影响软件边界。
5 结 论
经过实验验证,该测试系统软件可以很好地完成连续性试验任务,能很好的适用于实时性要求不高但需要连续测试记录的试验场合。证明采用多线程分时控制技术可以很好地将多种总线接口测量设备结合在一起测量不同类型的信号,从而达到一个测试系统完成多种测量任务的目的。
参考文献
[1] LRINRVKRT R C. Visual C++ bible [M]. 北京:电子工业出版,1999.
[2] 徐晓刚,高兆法,王秀娟.Visual C++ 6.0入门与提高[M].北京:清华大学出版社,1999.
[3] 林立杰.基于RS 422接口的备份测试系统设计[J].仪器仪表学报,2008(8):23⁃26.
[4] 涂诗美.一种飞行器地面测控系统设计[J].计算机自动测量与控制,2000(3):39⁃42.
[5] 李筱雅,尚丽娜,张芹芹.1553总线测试仿真系统设计与实现[J].现代电子技术,2012,35(10):53⁃56.
[6] 赵宇翔,樊晓光,王徐华.基于总线ICD测试方法研究[J].现代电子技术,2010,33(8):87⁃89.