首页 > 范文大全 > 正文

一种基于可编程仪器的数据采集方案

开篇:润墨网以专业的文秘视角,为您筛选了一篇一种基于可编程仪器的数据采集方案范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要: 针对无线电台故障检修的需要,采用可编程仪器实现对电压、频率等数据的采集,通过可编程仪器标准命令,实现了计算机对可编程仪器的远程控制,对采样数据进行了处理。本方案在某故障检测与维修系统中得到应用。

Abstract: For the needs of overhauling radio stations, we used programmable instruments to achieve the voltage and frequency data acquisition,and implemented remote control on computer to programmable instruments with standard commands for programmable instruments(SCPI). The scheme was applied in some fault detection and maintenance system.

关键词: 可编程仪器;数据采集;可编程仪器标准命令

Key words: programmable instruments;data acquisition;SCPI

中图分类号:TP39 文献标识码:A文章编号:1006-4311(2010)25-0173-02

0引言

传统的无线电台检修通常需要技术人员借助综合测试仪、万用表等仪器进行电压、频率等信号的测量,根据经验人工判定故障点。这种维修方式对技术人员的维修经验和测量仪器要求较高,不适于普通维修人员使用。因此,我们开发了某无线电台检测与维修系统,检修人员可根据故障现象,参考系统提示,逐步排查故障,自动比对测量值与经验值,给出分析结论,最终定位故障点。

为实现测量值与经验值的自动比较,首先必须获取测量值,这就需要在系统中实现电压、频率等信号的采集。通常的方案是采用专用数据采集板卡,但其价格昂贵,且多数板卡无法同时采集电压和频率信号,尤其无法采集高频信号,在无线电台中,信号频率往往达到几十兆赫兹,一般的采集卡已经无法准确捕捉信号。考虑到目前可编程仪器种类逐渐增多,功能日趋丰富,价格较为适中,支持GPIB(General-Purpose Interface Bus通用接口总线)或者RS-232通信,最为关键的是多数可编程仪器支持可编程仪器标准命令(SCPI:Standard Commands for Programmable Instruments),可由计算机按照SCPI标准格式对仪器进行远程控制,所以我们选择了基于可编程仪器的数据采集方案,并在系统中得到成功应用。

本方案中采用的仪器为固纬公司生产的GDS-820S型数字存储式示波器,这是一款支持SCPI标准的可编程仪器,通信端口为RS-232。本方案以该型示波器为例,实现计算机到示波器的数据采集控制与传输,并在计算机上完成数据的处理,连接关系如图1所示。由于该仪器支持SCPI标准,且通信端口为业内通用端口,因此本方案具有普遍适用性,可移植到其他类型的可编程仪器上。

在本方案中示波器的通道1或通道2可对待测信号进行检测,计算机通过RS-232接口与示波器连接,通过SCPI标准指令控制示波器的检测、显示并根据需要控制示波器上传采集数据,根据数据帧格式分析提取数据,在计算机上显示电压的平均值、峰峰值以及频率值等测量值,并在计算机上绘出信号波形图,再由计算机对采集上来的数据进行判读,确认该测量点是否出现故障。

1串行通信的实现

1.1 串口通信控件本方案中,示波器与计算机之间采用RS-232 串口进行通信。通过对RS-232 端口编程,计算机可控制数字存储示波器,对其进行读写操作。我们做了VB和Delphi两套方案。VB中采用MSCOMM控件,这是VB自带的一个ActiveX控件,使用简单,因此不过多介绍。采用Delphi对计算机串口编程的方法有许多种,如API 编程、通用串口通信控件编程、其他的专用控件编程等。我们建议使用VCL控件,编译程序时直接编入程序中,再不需任何其它处理,这里采用的是SPCOMM控件。

SPCOMM控件具有丰富的与串口通信密切相关的属性及事件,提供了对串口的各种操作,且编程简单、通用性强、可移植性好。SPCOMM串行通信控件具有多线程的特性,接收和发送数据分别在两个线程内完成,接收线程负责收到数据时触发 OnReceiveData事件;用 WriteCommData()函数将待发送的数据写入输出缓冲器,发送线程在后成数据发送工作。在接收和发送数据前需要初始化串口,用 StartComm方法打开串口,退出程序时用StopComm方法关闭串口。在使用SPCOMM进行串口通信编程时,除按照说明使用外,还需要特别注意以下两个问题。

①SPCOMM是通过ReadIntervalTimeout属性的设置,来确定所接收到的数据是否属于同一帧数据,其默认值是100ms,也就是说,只要任何两个字节到达的时间间隔小于100ms,都被认为是属于同一帧数据,在与示波器协同工作时,要特别注意这个问题。②SPCOMM的默认属性设置是支持软件流控制的,用于流控制的字符是13H(XoffChar)和11H(XonChar),当以二进制方式发送数据时,必须要禁用SPCOMM对于软件流控制的支持,否则,在数据帧中出现的13H,11H会被SPCOMM作为控制字符而加以忽略。

1.2 串口参数设置与连接测试在本方案中,串口波特率设定为19200bps,数据位设为8位,停止位设为1位,无奇偶校验位。只要按照数字存储示波器的通信参数和SCPI 协议格式,对控件进行正确设置,即可实现可靠通信连接。当计算机向数字存储示波器发送命令“* IDN ?”进行设备查询时,数字存储示波器将返回字符串“GW,GDS-820,P920130,V.2.01 ”,表明可靠的通信连接已实现。

2SCPI标准

GDS-810S型示波器与IEEE 488.2和SCPI标准兼容。SCPI 标准[1~3]是一种由“国际主要测试和测量仪器制造商联盟”制定的标准,其目的是用一种符合IEEE 488.2 协议语法格式的命令来实现各种可编程设备的各种功能。本项目中计算机对智能仪器的远程控制采用符合SCPI标准的命令,实现对示波器的测量、显示和上传数据的控制。SCPI 语言结构和使用方法如下。

SCPI 语言使用层次化结构――“树”形结构,每条“树”命令都是以根层次命令开始,只有按照从树根到叶子的完整路径发送命令,仪器才能正确执行相应的操作命令。“树”形命令结构如图2所示:

在远程控制中,以“:MEAS:FREQ?”命令即可返回频率值。以“:MEAS:VAV?”即可返回平均电压。如果信号频率和幅度分别为100kHz和1V,则输入下述命令

:MEASure:FREQuency?;:MEASure:VAMPlitude?

返回值为“100kHz 1V”

3对采集数据的处理

在数据采集中需要解决大量数据的传输问题。GDS-810S示波器有两个输入信道,每一信道的记录长度为125000个点和8个字节的垂直分辨率,两个信道可同时获取波形。但其屏幕上只能显示250个点,向计算机一次上传只能达到500个点。

3.1 数据帧格式根据SCPI协议,获取500个点的波形数据时,数据帧格式定义如图3所示。

(1)#:开始传输数据字符串。

(2)Data size digit: 指出后续Data size的位数(1位ASCII字符)。

(3)Data size: 当前数据字符串的数量(4位ASCII字符)。

如“#41008”中,4表示后续Data size是4位数字,1008是Data size的具体值,表示数据字符串长为1008字节。

(4)Horizontal scale: 接收的波形数据的水平刻度(4字节)。水平刻度以浮点格式给出,与IEEE 754标准兼容。

(5)Channel indicator: 显示发送波形数据的通道(1字节)。

(6)Waveform data size: 波形数据的总数(3字节)。

(7)Waveform data: 覆盖500个点(1000字节)的有效波形数据。

3.2 基于IEEE 754标准的浮点数格式在接收到的数据帧中,波形测量的水平刻度是以4字节的浮点格式给出的,与IEEE 754标准兼容,因此需要明确IEEE 754标准的浮点数存储格式,以实现数据转换。IEEE 754标准准确地定义了单精度和双精度浮点格式。IEEE单精度浮点格式共32位,包含三个构成字段:23位小数f,8位偏置指数e,1位符号s。将这些字段连续存放在一个32位字里,并对其进行编码。一般地,32位字的第0位存放小数f的最低有效位LSB(the least significant bit),第22位存放小数f的最高有效位MSB(the most significant bit);第23位存放偏置指数的最低有效位LSB,第30位存放偏置指数的最高有效位MSB;第31位存放符号s。IEEE 754单精度浮点数格式如图4所示。

由于从示波器读取来的是16进制byte型,当接收到顺序为“36 27 C5 AC”的数据时,理论上应为25微秒,我们可利用函数RtlMoveMemory转换下面方式:

Private Sub Command9_Click()

'把读上来的以IEEE 754标准表示的浮点数转为单精度数

Dim F As Single As Long

Dim A(3) As Byte'16进制浮点数

A(3) = Val("&h" & "36")

A(2) = Val("&h" & "27")

A(1) = Val("&h" & "C5")

A(0) = Val("&h" & "AC")

Call CopyMemory(F, A(0), 4)

Text4.Text = CStr(F)

End Sub

显示结果为“.0000025”

注意,与C语言转换方式相似,往数组A赋值时,顺序是倒过来的,低字节在前,即“AC C5 27 36”。

3.3 采集数据的解析由SCPI 定义可知,对于500个点的数据采集,其数据帧总长为1014 字节。其中前14 字节是帧信息,后1000 字节是500 个点的波形数据。其中每个采样点用2个字节(16 位二进制补码)表示,高8 位在前,低8 位在后。数据帧的解析流程如图5所示。

4数据的波形显示

此时已经可以顺利取出500个波形数据,如果需要画出波形图,可根据数据帧中的水平刻度(采样率)来确定每个点的横轴坐标,根据波形数据确定每个点的纵轴坐标,描点连线即可得到完整的波形显示。由于波形显示比较简单,对于绘图程序的设计这里不做赘述。

5结语

本文通过数字存储式示波器实现了对待测信号的实时数据采集,借助RS-232口实现了计算机对数字存储器的远程控制,操作者可在计算机上自由地改变示波器的采样率、待测信号类型等等,获取采样数据并以波形形式显示出来。由于本方案完全遵循SCPI标准,因此,对于任何支持SCPI标准的可编程仪器均可适用本方案。

参考文献:

[1]SCPI Consortium: SCPI 1999-Volume 1: Syntax and Style, ver. 1999.0, USA, May 1999.

[2]SCPI Consortium: SCPI 1999-Volume 2: Command Reference, ver. 1999.0, USA, May 1999.

[3]SCPI Consortium: SCPI 1999-Volume 3: Data Interchange Format, ver. 1999.0, USA, May 1999.

[4]GDS-800 系列数字储存示波器使用手册.

[5]Good Will Instrument Co Ltd. GDS-806/810/820/840 Programming Manual[M]. Taibei:Good Will Instrument Co Ltd,2004.