初学数据采集中常见的问题
经常在论坛上会碰到一些会员朋友发贴提问数据采集的问题,其中很大一部分是初?/p>
者刚接触数据采集,对其中的一些基本概念还没有太多的了解,这里将这些问题集中一下,
做个总结?/p>
由于个人接触的板卡以
NI
的为主,
这里的内容只针对
NI
的数据采集卡?/p>
不保?/p>
适用于其它公司的数据采集卡?/p>
1
?/p>
数据采集的时候数据会不会丢失?/p>
——这是最常见的一个问题,
刚开始学数据采集的时候都会在考虑?/p>
如果软件上读取数据的
循环运行得不够快时,比如
100K
采样率的时候,软件上循环肯定没这么快,数据是不是就
丢失了?
首先我们要清楚的是,
数据采集功能是由数据采集卡来完成的,
软件只是将采集到的数
据接收到电脑上面过来?/p>
数据采集卡有自身的办法来解决硬件采集速度快过于软件读取速度
的问题?/p>
这需要对数据采集过程中数据的传输作一个介绍:
外部的信号进入数据采集卡后,
经过
各种处理转换,先进入数据采集卡自身的缓冲区里面,缓冲区是先进先出?/p>
FIFO
?/p>
First
In
First Out
)的?/p>
NI
的数据采集卡应该是都有板载的缓冲区,区别在于缓冲区的大小而已?/p>
然后当板载缓冲区中的数据量到了一定的条件时,
数据采集卡将缓冲区的数据上传到计算机
内存中,一般是?/p>
DMA
(直接内存访问)方式传入的,但也可以设置为其它方式,比如中断
等。上传数据的方式和时机可以通过
DAQmx
的属性节点进行设置或查看?/p>
DAQmx
中默认是?/p>
?/p>
DMA
传输方式,传输条件是板载内存非空?/p>
以下蓝色部分摘自
NI
网站?/p>
数据传输方式包括直接内存访问
(DMA)
?/p>
中断请求
(IRQ)
和可编程
I/O
?/p>
DMA
是一?/p>
DAQ
?/p>
卡和
PC
内存间直接通讯的传输方式,不再需要处理器的干预?/p>
NI
"MITE"
芯片可以处理?/p>
PCI
总线间的所有总线协议?/p>
IRQ
传输方式会置高信号并中断处理器,
然后由处理器处理?/p>
据传输?/p>
IRQ
传输通常很低,只?/p>
150 kb/s,
?/p>
DMA
可以高达
20 Mb/s
?/p>
IRQ
传输速率与使用的?/p>
统设备相关,如处理器速度等?/p>
?/p>
1
设置模拟输入数据传递方式与时机
数据到了内存后,再由程序中的
DAQmx
Read.vi
从内存中读入到计算机中去。这里计?/p>
机的内存要和板载缓冲区区分开来,
板载缓冲区是厂商固定死的?/p>
改变不了?/p>
不会出现溢出
的情况,
它的空间可以很小?/p>
比如
1Kbit
以下?/p>
但计算机中为数据采集开辟的内存建议是采