基于PCI-1713和LabVIEW的高速数据采集系统设计

基于PCI-1713和LabVIEW的高速数据采集系统设计A Design for High Speed Data Acquisition System Based on PCI-1713 and LabVIEW
(兰州交通大学)王梦玲,王思明
Wang, Mengling Wang,Siming
摘要:本文介绍了一种基于图形化虚拟仪器编程软件LabVIEW的高速数据采集系统设计方案,并且详细论述了32位LabVIEW驱动函数的功能和使用方法。系统以研华公司的高速数据采集卡PCI-1713为硬件平台,采用中断触发方式进行数据采集,并将数据存储到文本文件中。实验结果表明,该系统能够有效地完成对信号的高速数据采集和实时图形显示。
关键词:PCI-1713;LabVIEW;数据采集;研华32位LabVIEW驱动;中断触发
中图分类号:TP274 文献标识码:A Abstract:In this paper, a design proposal for high speed data acquisition system based on virtual instrument programming software LabVIEW and the function of 32-bit LabVIEW driver are described. Advantech PCI-1713 is used as the hardware platform of the system, which uses interrupt triggering to acquire data and then saves them to text file. The system is proved to work well to accomplish high speed data acquisition and real-time graph display by test.
Keywords:PCI-1713; data acquisition; LabVIEW; Advantech 32-bit LabVIEW driver; interrupt triggering
1引言
目前的高速数据采集系统设计主要是基于VB、VC等文本编程语言,虽然这类语言的灵活性好,执行效率高,但若要在采集的同时将数据实时绘制成图形,则难度很大,对采集数据的分析处理也只能借助于其
他工具才能实现。使用LabVIEW软件编程可以很好地解决以上问题,它含有的图形控件能够直接将输入数
据以图形方式显示,并且LabVIEW提供了大量的信号处理函数和高级信号分析工具,可直接对输入信号进
行分析和处理。
另外,虽然有些资料介绍了在LabVIEW环境下通过采集卡进行数据采集的方法,但由于采用的是软件
触发方式,采集速度很低,在很多情况下不能满足实
悠悠通讯
际应用的要求。而在中断触发方式下,可以进行连续
高速的数据采集。
研华公司为其数据采集控制卡开发了32位的LabVIEW驱动程序,该驱动提供了一个调用32位DLL驱动程序的接口。在LabVIEW中,驱动函数以子VI的形式给出,通过对这些子VI的调用,用户可以方便地访问底层寄存器,直接对板卡进行I/O操作。以PCI-1713为硬件平台,借助LabVIEW驱动程序提供的子VI函数,可以设计一个基于LabVIEW软件的采用中断触发方式进行数据采集的高速数据采集系统。本系统不仅能实现对模拟信号的高速数据采集,还能将采集结果以图形方式显示,很好地解决了在文本编程语言下实时图形绘制难的问题。
2 系统硬件介绍
本系统使用的PCI-1713是研华公司生产的一款基于PCI总线的32通道模拟量采集控制卡,它采用12位高速A/D转换,采样率可达100KS/s,并在输入和PCI总线之间提供了2500V DC的直流光隔离保护,用于保护PC 及外设免受输入线上高压电的损害。PCI-1713使用一个PCI控制器作为采集卡与PCI总线的接口。由于它支持PnP(Plug and Play),其基地址及中断都由系统自动配置。板卡功能结构框图如图1所示。
图1 PCI-1713结构框图
PCI-1713的主要特性如下:
(1)32路单端或16路差分模拟量输入,或采用单端和差分输入的不同组合方式来完成多通道采样;
(2)各输入通道的增益可独立编程,输入范围包
括±10 V, ±5 V, ±2.5 V, ±1.25 V等,用户可通过软件选择最适合被测信号的电压范围,并且每个通道不同的增益值及配置会存储到卡上的SRAM中;
(3)自动通道/增益扫描,板上的自动通道/增益扫描电路在采样时自动完成对多路选通开关的控制;
汽化热
(4)板载4K FIFO采样缓存器,该特性提供了连续高速的数据传输及Windows下更可靠的性能;
(5)对于A/D转换,PCI-1713支持三种触发模式:软件触发、内部定时器触发和外部定时器触发。
3系统软件设计
3.1主要子VI说明
皱大球蚧
子VI的使用是在LabVIEW环境下进行数据采集系统设计的基础,只有掌握了它们的功能和使用方法,才能设计出实现特定功能的程序。
虽然研华公司提供了PCI-1713的32位LabVIEW 驱动程序,但跟其配套的帮助手册上对这些驱动函数子VI的说明却不够详尽,提供的例子也并不实用,给用户开发自己的应用程序带来很大的不便。笔者结合自己在实际项目中积累的编程经验和一些实验结果,给出了本系统所用到的几个关键子VI的功能和使用
方法说明:
DeviceOpen:打开指定的设备并返回一个驱动句柄,之后所有执行相应 I/O 操作的子VI都应基于该句柄参数所获得的配置数据。该子VI必须在调用其他驱动子VI之前调用。
AllocDSPBuf:为用户缓冲区分配参数Count指定大小的空间。该子VI的输出用作FAITransfer子VI 的输入,通过MemoryType参数可以选择以电压形式或二进制形式显示数据。程序运行结束后,LabVIEW 自动释放此内存空间。
SingleChannelINTSetup:开始单通道中断触发方式的A/D转换,并将采集到的数据储存到内部缓冲区,该操作将一直进行,直到调用FAIStop子VI。该子VI
运行时将自动调用AllocINTBuf子VI,分配FAIINTSt art.Count参数所指定大小的内部缓冲区。与用户缓冲区不同的是,在程序结尾需另外调用子VI释放此内存空间。通过该子VI可以设置采样率、增益代码、循环方式、是否使用FIFO缓存器等。
WaitFastAIEvent:使程序进入等待状态,直到设定的事件发生(内部缓冲区半满或全满,等待结束,内部缓冲区全满)或等待时间超出用户通过Timeout参数设定的值。该子VI可以用来捕获内部缓冲区半满或全满事件。
FAITransfer:将数据从内部缓冲区传送到用户缓冲区。该子VI能够判断内部缓冲区当前的状态是半满
还是全满,从而执行不同的操作:半满时,从内部缓冲区取出1/2Count数量的数据到用户缓冲区;全满时,不做任何传输操作。要实现连续数据采集,程序中需要反复调用该子VI。此外,如果在AllocDSPBuf中选择的是以电压形式显示数据,该子VI还负责完成从原始数据到电压值的转换。
FAICheck:获得当前操作的状态。主要参数如下:Retrieved:显示采集到的数据的数量,当采集数据的数量达到FAIINTStart.Count的值后归零,重新开始计数;OverRun:显示缓冲区中的数据是否已被及时地传送出去;HalfReady:显示内部缓冲区的状态:0表示无任何半区满;1表示前半区已满;2表示后半区已满。
需要注意的是,该子VI和FAITransfer判断半满和全满的标准是采集到的数据数量是否达到FAIINTStart.Count的一半和FAIINTStart.Count,并不是内部缓冲区真正意义上的半满和全满。当然,如果将内部缓冲区的容量设置为与FAIINTStart.Count的值相等,这两者就是同一种情况。只有将该子VI与FAITransfer配合使用,才能实现对采集数据的处理。
DeviceClose:关闭由DeviceOpen打开的设备,在程序结尾需调用此子VI,以释放资源为下次操作做好准备。
桐城派散文
3.2 程序设计
研华LabVIEW驱动程序提供三种动态数据采集方法,分别是中断触发、DMA触发和看门狗触发。本系统采用的是常用的中断触发方式。
长时间的高速实时数据采集要用到内部缓冲区和用户缓冲区两块内存区域。采集的数据先写入内部缓冲区,再由内部缓冲区传送到用户缓冲区,然后就可以将数据以图形方式显示并存入文本文件。
PCI-1713模拟输入的中断操作有两种方式:一种是不使用FIFO,每完成一次A/D转换就产生一个中断信号,进行一次传送。另一种方式是使用FIFO,将采样值先放在卡上的FIFO缓存器中,当FIFO半满时才产生一个中断。不使用FIFO时,FAIINTScanStart.
FIFOSize是默认值
1,使用FIFO时,
这个参数值应设为
2048,即 FIFO容量
的一半。使用FIFO
能够获得更高速率
的数据传输。
内部缓冲区的
使用多采用循环方
式。在这种方式下,
内部缓冲区分为前
后对等的两个半区
使用,执行一次
SingleChannelINTSe
tup可以进行无数次
的A/D转换。当内
部缓冲区前半区满
时,将此半区数据传
送到用户缓冲区中,
采集的数据继续向
内部缓冲区的后半
部分写入。当内部缓冲区全满时,将其后半部分数据传送到用户缓冲区中,同时新转换的数据会继续写入内部缓冲区的前半部分,如此反复,从而达到连续高速采集的功能。系统的软件流程图如图2所示。
阿托品试验在本系统的程序设计中,使用SingleChannelINTSetup子VI将内部缓冲区的容量设置为与FAIINTStart.Count的值相等,这样,内部缓冲区半满和全满与采集数量达到FAIINTStart.Count的一半和FAIINTStart.Count就成为同一种情况。另外,在使用FIFO的情况下,基于内部缓冲区和用户缓冲区之间的传输机制,FAIINTStart.Count的值必须设置为半个FIFO的倍数。
由于FAITransfer子VI不能在内部缓冲区达到全满的时候将其后半区的数据传出,所以只能在其半满时将缓冲区两个半区的数据一次性取出。基于这种思路,将用户缓冲区设置为两倍FAIINTStart.Count的大小。传输到用户缓冲区中的FAIINTStart.Count个数据由两部分组成,前半部分是刚采集进来的新数
据,后半部分是未被刷新的先于这前半部分写入内部缓冲区后半区的旧数据,为了按照正常的时间顺序显示和存储数据,还应对这两部分数据的顺序进行调换,这由Split 1D Array和Build Array两个函数完成。
由于只在内部缓冲区半满时才进行从内部缓冲区到用户缓冲区的数据传输,还应在FAITransfer之后加一个FAICheck子VI和Case结构,将采集数据过滤出来。对数据的重新排序、图形显示和存储在HalfReady=1的分支中进行。
模数化在第一次从内部缓冲区到用户缓冲区的数据传输中,虽然只采集到1/2FAIINTStart.Count数量的数据,但传输到用户缓冲区中的数据数量是FAIINTStart.Count。这次传输后用户缓冲区只前半部分是采集到的数据,因此对其进行的操作应不同于之前所述处理办法,而只是提取前半部分数据,这就必须将第一次传输与其他次传输区别开来。本系统通过局部变量解决这一问题,使用局部变量可实现对控制器的写操作。先设置一个数值控制器,将其值初始化为1,在第一次传输完成后,向其局部变量写入2。用一个Case结构对此控件的数值进行判断,就可以进行两种不同的操作。按下停止键的同时再次通过局部变量将控件的数值置1,为下次启动做准备。
在LabVIEW中,可采用ASCII字节流、数据记录文件和二进制字节流三种文件格式存储或者获得数据。数据记录文件只能通过G语言访问;必须把数据转换成二进制字符串才能保存为二进制字节流格
式。ASCII字节流是最常用的数据文件格式,把数据保存为文本(ASCII)字节流的最大好处是,方便别的软件,如字处理程序或者电子表格程序等来访问数据,为此,就需要将数据转换为ASCII字符串。LabVIEW提供了一个专门用于这种格式转换的函数——Array To Spreadsheet String, 该函数将一个数组以指定的精度转换为字符串形式的电子表格,并以tab字符分隔各
图2系统的软件流程图
列, EOL (End Of Line )字符分隔各行,使用该函数可以很方便地将采集数据转换为ASCII 字符串格式,然后存储到文本文件中。本系统程序框图的循环部分如图3所示。
图3
程序框图的循环部分
图4采集数据的实时图形显示
4 结束语
本系统以PCI-1713为硬件平台,LabVIEW7.1为开发软件,借助于研华 32位 LabVIEW  驱动函数进行编程,采用中断触发方式进行高速数据采集。用户自定义采样率和两个缓冲区的容量,采集速度最高可达100KS/s 。结果表明,本系统不仅能实现对模拟输入信号的高速数据采集,而且能将采集的数据
正确地以实时图形的方式显示,具有较高的精度,从另外一个角度解决了在文本编程语言下实时图形绘制难的问题。图4为对正弦波信号进行数据采集所得到的图形。系统的扩展性好,应用面广,可实现对工业生产中诸如温度、压力等各种物理量的测量和显示。
本文作者创新点:
1、在LabVIEW 软件环境下使用中断触发方式进行数据采集,真正实现了对PCI-1713这款非NI 公司生产的数据采集卡的高速数据采集,解决了文本编程语言绘制实时图形难和采用软件触发方式采集速度太低这两个问题;
2、针对研华提供的32位LabVIEW 驱动函数给出了准确详细的说明。 参考文献:
[1]Advantech Inc . PCI-1713 User's Manual ,1999. [2]Advantech Inc . LabVIEW Driver's Manual ,2003. [3]侯国屏,王坤等.LabVIEW7.1编程与虚拟仪器设计[M].北京:清华大学出版社,2005.
[4]于锋,侯永海等.基于PCI-1714的高速数据采集系统方案设计[J]. 微计算机信息,2005,(21)8:60-62.  作者简介:王梦玲,女,1981—,汉族,兰州交通大学信息与电气工程学院硕士研究生,研究方向:电力电子与电力传动。E-mail :uuiioo85@163 ;王思明,男,1964—,汉族,兰州交通大学信息与电气工程学院副教授,主要从事自动控制与检测方面的研究。
Author Brief Introduction :Wang, Mengling : Female, 1981—,Han, master of School of Information & Electrical Engineering ,Lanzhou Jiaotong University . Major :Power Electronic and Power Transmission . Wang, Siming :Male, 1964—, Han, associate professor  of School of Information & Electrical Engineering ,Lanzhou Jiaotong University . Taking on research on Autocontrol and Detection .
(730070 兰州交通大学信息与电气工程学院)王梦玲王思明 通信地址:
(730070 兰州交通大学82号信箱)王梦玲
(Lanzhou Jiaotong University, 82#, Gansu , Lanzhou 730070, China) Wang, Mengling

本文发布于:2024-09-23 17:20:59,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/166976.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   采集   缓冲区   系统   进行   方式   用户   触发
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议