收藏 分享(赏)

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

上传人:精品资料 文档编号:5025355 上传时间:2019-01-31 格式:PDF 页数:4 大小:132.05KB
下载 相关 举报
基于PCI-1713和LabVIEW的高速数据采集系统设计.pdf_第1页
第1页 / 共4页
基于PCI-1713和LabVIEW的高速数据采集系统设计.pdf_第2页
第2页 / 共4页
基于PCI-1713和LabVIEW的高速数据采集系统设计.pdf_第3页
第3页 / 共4页
基于PCI-1713和LabVIEW的高速数据采集系统设计.pdf_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、1 基于 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 为硬件平台 ,采用中断触发方式进行数据采集, 并将数据存储到文本文件中。

2、实验结果表明,该系统能够有效地完成对信号的高速数据采集和实时图形显示。 关键词 : 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 desc

3、ribed. 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 acquis

4、ition; LabVIEW; Advantech 32-bit LabVIEW driver; interrupt triggering 1 引言 目前的高速数据采集系统设计主要是基于 VB、VC 等文本编程语言,虽然这类语言的灵活性好,执行效率高,但若要在采集的同时将数据实时绘制成图形,则难度很大,对采集数据的分析处理也只能借助于其他工具才能实现。 使用 LabVIEW 软件编程可以很好地解决以上问题,它含有的图形控件能够直接将输入数据以图形方式显示, 并且 LabVIEW 提供了大量的信号处理函数和高级信号分析工具,可直接对输入信号进行分析和处理。 另外, 虽然有些资料介绍了在 LabV

5、IEW 环境下通过采集卡进行数据采集的方法,但由于采用的是软件触发方式,采集速度很低,在很多情况下不能满足实际应用的要求。而在中断触发方式下,可以进行连续高速的数据采集。 研华公司为其数据采集控制卡开发了 32 位的 LabVIEW 驱动程序,该驱动提供了一个调用 32 位 DLL 驱动程序的接口。在 LabVIEW 中,驱动函数以子 VI 的形式给出,通过对这些子 VI 的调用,用户可以方便地访问底层寄存器,直接对板卡进行 I/O 操作。以 PCI-1713 为硬件平台,借助 LabVIEW 驱动程序提供的子 VI 函数,可以设计一个基于 LabVIEW 软件的采用中断触发方式进行数据采集的

6、高速数据采集系统。本系统不仅能实现对模拟信号的高速数据采集,还能将采集结果以图形方式显示,很好地解决了在文本编程语言下实时图形绘制难的问题。 2 系统硬件介绍 本系统使用的 PCI-1713是研华公司生产的一款基于 PCI总线的 32通道模拟量采集控制卡, 它采用 12位高速 A/D转换,采样率可达 100KS/s,并在输入和 PCI总线之间提供了 2500VDC的直流光隔离保护,用于保护 PC及外设免受输入线上高压电的损害。 PCI-1713使用一个 PCI控制器作为采集卡与 PCI总线的接口。由于它支持 PnP(Plug and Play),其基地址及中断都由系统自动配置。板卡功能结构框图

7、如图 1所示。 图 1 PCI-1713 结构框图 PCI-1713 的主要特性如下: ( 1) 32路单端或 16路差分模拟量输入,或采用单端和差分输入的不同组合方式来完成多通道采样; ( 2)各输入通道的增益可独立编程,输入范围包中断步长模拟输入(32 路 )10MHzOSCPGIA 12 位 A/D4KFIFO 地址总线 地址解码器PCI 总线多路 复用器PCI控制器中 断 发 生 器 计数器数据总线 ADC 控制逻辑2 括 1 0 V, 5 V, 2 . 5 V, 1 . 2 5 V等, 用户可通过软件选择最适合被测信号的电压范围,并且每个通道不同的增益值及配置会存储到卡上的 SRAM

8、中; ( 3)自动通道 /增益扫描,板上的自动通道 /增益扫描电路在采样时自动完成对多路选通开关的控制; ( 4)板载 4K FIFO采样缓存器,该特性提供了连续高速的数据传输及 Windows下更可靠的性能; ( 5) 对于 A/D 转换, PCI-1713 支持三种触发模式:软件触发、内部定时器触发和外部定时器触发。 3 系统软件设计 3.1 主要子 VI说明 子 VI的使用是在 LabVIEW环境下进行数据采集系统设计的基础,只有掌握了它们的功能和使用方法,才能设计出实现特定功能的程序。 虽然研华公司提供了 PCI-1713 的 32 位 LabVIEW驱动程序,但跟其配套的帮助手册上对

9、这些驱动函数子 VI 的说明却不够详尽,提供的例子也并不实用,给用户开发自己的应用程序带来很大的不便。笔者结合自己在实际项目中积累的编程经验和一些实验结果,给出了本系统所用到的几个关键子 VI 的功能和使用方法说明: DeviceOpen:打开指定的设备并返回一个驱动句柄,之后所有执行相应 I/O 操作的子 VI 都应基于该句柄参数所获得的配置数据。该子 VI 必须在调用其他驱动子 VI 之前调用。 AllocDSPBuf:为用户缓冲区分配参数 Count 指定大小的空间。 该子 VI 的输出用作 FAITransfer 子 VI的输入,通过 MemoryType 参数可以选择以电压形式或二进

10、制形式显示数据。程序运行结束后, LabVIEW自动释放此内存空间。 SingleChannelINTSetup:开始单通道中断触发方式的 A/D转换,并将采集到的数据储存到内部缓冲区, 该操作将一直进行,直到调用 FAIStop子 VI。该子 VI运行时将自动调用 AllocINTBuf子 VI,分配 FAIINTSt art.Count参数所指定大小的内部缓冲区。 与用户缓冲区不同的是,在程序结尾需另外调用子 VI释放此内存空间。通过该子 VI可以设置采样率、增益代码、循环方式、是否使用 FIFO缓存器等。 WaitFastAIEvent:使程序进入等待状态,直到设定的事件发生(内部缓冲区

11、半满或全满,等待结束 ,内部缓冲区全满)或等待时间超出用户通过 Timeout参数设定的值。该子 VI可以用来捕获内部缓冲区半满或全满事件。 FAITransfer:将数据从内部缓冲区传送到用户缓冲区。该子 VI能够判断内部缓冲区当前的状态是半满还是全满,从而执行不同的操作:半满时,从内部缓冲区取出 1/2Count数量的数据到用户缓冲区;全满时,不做任何传输操作。要实现连续数据采集,程序中需要反复调用该子 VI。此外,如果在 AllocDSPBuf中选择的是以电压形式显示数据,该子 VI还负责完成从原始数据到电压值的转换。 FAICheck: 获得当前操作的状态。 主要参数如下:Retrie

12、ved:显示采集到的数据的数量,当采集数据的数量达到 FAIINTStart.Count 的值后归零, 重新开始计数; OverRun:显示缓冲区中的数据是否已被及时地传送出去; HalfReady:显示内部缓冲区的状态: 0 表示无任何半区满; 1 表示前半区已满; 2 表示后半区已满。 需要注意的是,该子 VI 和 FAITransfer 判断半满和全满的标准是采集到的数据数量是否达到FAIINTStart.Count 的一半和 FAIINTStart.Count,并不是内部缓冲区真正意义上的半满和全满。当然,如果将内部缓冲区的容量设置为与 FAIINTStart.Count 的值相等,这

13、两者就是同一种情况。只有将该子 VI 与FAITransfer 配合使用,才能实现对采集数据的处理。 DeviceClose:关闭由 DeviceOpen 打开的设备,在程序结尾需调用此子 VI, 以释放资源为下次操作做好准备。 3.2 程序设计 研华 LabVIEW 驱动程序提供三种动态数据采集方法,分别是中断触发、 DMA 触发和看门狗触发。本系统采用的是常用的中断触发方式。 长时间的高速实时数据采集要用到内部缓冲区和用户缓冲区两块内存区域。采集的数据先写入内部缓冲区,再由内部缓冲区传送到用户缓冲区,然后就可以将数据以图形方式显示并存入文本文件。 3 PCI-1713 模拟输入的中断操作有

14、两种方式:一种是不使用 FIFO, 每完成一次 A/D 转换就产生一个中断信号,进行一次传送。另一种方式是使用 FIFO,将采样值先放在卡上的 FIFO 缓存器中,当 FIFO 半满时才产生一个中断。不使用 FIFO 时, FAIINTScanStart. FIFOSize 是默认值1,使用 FIFO 时,这个参数值应设为2048, 即 FIFO 容量的一半。使用 FIFO能够获得更高速率的数据传输。 内部缓冲区的使用多采用循环方式。在这种方式下,内部缓冲区分为前后对等的两个半区使用,执行一次SingleChannelINTSetup 可以进行无数次的 A/D 转换。当内部缓冲区前半区满时,

15、将此半区数据传送到用户缓冲区中,采集的数据继续向内部缓冲区的后半部分写入。 当内部缓冲区全满时,将其后半部分数据传送到用户缓冲区中,同时新转换的数据会继续写入内部缓冲区的前半部分,如此反复,从而达到连续高速采集的功能。系统的软件流程图如图 2 所示。 在本系统的程序设计中,使用SingleChannelINTSetup 子 VI 将内部缓冲区的容量设置为与 FAIINTStart.Count 的值相等,这样,内部缓冲区半满和全满与采集数量达到 FAIINTStart.Count 的一半和 FAIINTStart.Count 就成为同一种情况。另外,在使用 FIFO 的情况下, 基于内部缓冲区和

16、用户缓冲区之间的传输机制, FAIINTStart.Count 的值必须设置为半个 FIFO 的倍数。 由于 FAITransfer 子 VI 不能在内部缓冲区达到全满的时候将其后半区的数据传出,所以只能在其半满时将缓冲区两个半区的数据一次性取出。基于这种思路,将用户缓冲区设置为两倍 FAIINTStart.Count 的大小。传输到用户缓冲区中的 FAIINTStart.Count 个数据由两部分组成,前半部分是刚采集进来的新数据,后半部分是未被刷新的先于这前半部分写入内部缓冲区后半区的旧数据,为了按照正常的时间顺序显示和存储数据,还应对这两部分数据的顺序进行调换,这由Split 1D Ar

17、ray 和 Build Array 两个函数完成。 由于只在内部缓冲区半满时才进行从内部缓冲区到用户缓冲区的数据传输,还应在 FAITransfer 之后加一个 FAICheck 子 VI 和 Case 结构, 将采集数据过滤出来。对数据的重新排序、图形显示和存储在HalfReady=1 的分支中进行。 在第一次从内部缓冲区到用户缓冲区的数据传输中,虽然只采集到 1/2FAIINTStart.Count 数量的数据,但传输到用户缓冲区中的数据数量是FAIINTStart.Count。这次传输后用户缓冲区只前半部分是采集到的数据,因此对其进行的操作应不同于之前所述处理办法,而只是提取前半部分数据

18、,这就必须将第一次传输与其他次传输区别开来。本系统通过局部变量解决这一问题,使用局部变量可实现对控制器的写操作。先设置一个数值控制器,将其值初始化为 1,在第一次传输完成后,向其局部变量写入 2。用一个 Case 结构对此控件的数值进行判断,就可以进行两种不同的操作。按下停止键的同时再次通过局部变量将控件的数值置 1,为下次启动做准备。 在 LabVIEW 中,可采用 ASCII 字节流、数据记录文件和二进制字节流三种文件格式存储或者获得数据。数据记录文件只能通过 G 语言访问;必须把数据转换成二进制字符串才能保存为二进制字节流格式。ASCII 字节流是最常用的数据文件格式,把数据保存为文本

19、( ASCII) 字节流的最大好处是, 方便别的软件,如字处理程序或者电子表格程序等来访问数据,为此,就需要将数据转换为 ASCII 字符串。 LabVIEW 提供了一个专门用于这种格式转换的函数 Array To Spreadsheet String, 该函数将一个数组以指定的精度转换为字符串形式的电子表格,并以 tab 字符分隔各否是是开始 SingleChannelINTSetup 启动中断采集 WaitFastAIEvent 等待指定事件发生 AI_BufferChan- ge 发生 ? FAITransfer 数据传入用户缓冲区 循环 ? 否FAIStop 停止采集 结束 图 2 系

20、统的软件流程图 4 列, EOL( End Of Line)字符分隔各行,使用该函数可以很方便地将采集数据转换为 ASCII 字符串格式,然后存储到文本文件中。本系统程序框图的循环部分如图 3 所示。 图 3 程序框图的循环部分 图 4 采集数据的实时图形显示 4 结束语 本系统以 PCI-1713 为硬件平台, LabVIEW7.1 为开发软件,借助于研华 32 位 LabVIEW 驱动函数进行编程,采用中断触发方式进行高速数据采集。用户自定义采样率和两个缓冲区的容量,采集速度最高可达 100KS/s。结果表明,本系统不仅能实现对模拟输入信号的高速数据采集,而且能将采集的数据正确地以实时图形

21、的方式显示,具有较高的精度,从另外一个角度解决了在文本编程语言下实时图形绘制难的问题。图 4 为对正弦波信号进行数据采集所得到的图形。系统的扩展性好,应用面广,可实现对工业生产中诸如温度、压力等各种物理量的测量和显示。 本文作者创新点: 1、在 LabVIEW 软件环境下使用中断触发方式进行数据采集,真正实现了对 PCI-1713 这款非 NI 公司生产的数据采集卡的高速数据采集,解决了文本编程语言绘制实时图形难和采用软件触发方式采集速度太低这两个问题; 2、 针对研华提供的 32 位 LabVIEW 驱动函数给出了准确详细的说明。 参考文献: 1Advantech Inc. PCI-1713

22、 Users Manual, 1999. 2Advantech Inc. LabVIEW Drivers Manual, 2003. 3侯国屏,王坤等. LabVIEW7.1 编程与虚拟仪器设计M.北京:清华大学出版社, 2005. 4于锋,侯永海等.基于 PCI-1714 的高速数据采集系统方案设计 J. 微计算机信息, 2005, (21)8: 60-62. 作者简介:王梦玲,女, 1981,汉族,兰州交通大学信息与电气工程学院硕士研究生,研究方向:电力电子与电力传动。 E-mail: ;王思明,男, 1964,汉族,兰州交通大学信息与电气工程学院副教授,主要从事自动控制与检测方面的研究。

23、 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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报