DAQmx数据采集缓冲区溢出分析

在LabVIEW中使用DAQmx采集数据时可能会遇到缓冲区溢出问题,表现为数据错误和200279错误。数据先存储在板载缓冲区,满时通过DMA传输至内存。若DAQmxRead.vi读取不及时,可能导致内存不足,造成数据丢失。设置合适的缓冲区大小和采样率,确保及时读取,能有效防止缓冲区溢出。连续采样时,设置每通道采样数为-1可一次性读取所有数据。
摘要由CSDN通过智能技术生成

在使用DAQmx采集数据时,有时会发生缓冲区溢出现象,通常的表现为采集数据不正确,并出现200279错误。下面分析缓冲区原理及溢出原因:
外部的信号进入数据采集卡后,经过各种处理转换,先进入数据采集卡自身的缓冲区里面,缓冲区是先进先出(FIFO,First In First Out)的,NI的数据采集卡应该是都有板载的缓冲区,区别在于缓冲区的大小而已。
然后当板载缓冲区中的数据量到了一定的条件时,数据采集卡将缓冲区的数据上传到计算机内存中,一般是以DMA(直接内存访问)方式传入的,但也可以设置为其它方式,比如中断等。上传数据的方式和时机可以通过DAQmx的属性节点进行设置或查看,DAQmx中默认是使用DMA传输方式,传输条件是板载内存非空。
数据传输方式包括直接内存访问(DMA),中断请求(IRQ)和可编程I/O。DMA是一种DAQ板卡和PC内存间直接通讯的传输方式,不再需要处理器的干预。NI"MITE"芯片可以处理与PCI总线间的所有总线协议。IRQ传输方式会置高信号并中断处理器,然后由处理器处理数据传输。IRQ传输通常很低,只有150kb/s而DMA可以高达20Mb/s.IRQ传输速率与使用的系统设备相关,如处理器速度等。

数据到了内存后,再由程序中的DAQmxRead.vi从内存中读入到计算机中去。这里计算机的内存要和板载缓冲区区分开来,板载缓冲区是厂商固定死的,改变不了,不会出现溢出的情况,它的空间可以很小,比如1Kbit以下,但计算机中为数据采集开辟的内存建议是采样率的10左右,即是说即使DAQmx Read.vi在10秒钟都没有执行一次的话

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值