[LabVIEW随笔-7] -DAQ采集
一、DAQ函数

采集模式:
按要求:单点、低速率信号采集
有限:采集有限个点,采集某一段信号
连续:采集连续多点信号,适合于采集高频信号
采样率:
按照奈奎斯特采样定理选择信号的5~10倍
1.1DAQ助手

DAQ助手是一个对话框式的向导界面。通过本界面可以交互式地创建、编辑和运行NI-DAQmx虚拟通道和任务。
一个NI-DAQmx虚拟通道包括一个DAQ设备上的物理通道和对这个物理通道的配置信息,如输入范围、自定义缩放比例等。一个NI-D/AQmx任务是虚拟通道、定时和触发信息,以及其他与采集或生成相关属性的组合。
由于DAQ助手将错误处理也封装在ExpressVI内,使得对任务发生错误后的处理不方便,因此建议将ExpressVI转换为标准VI进行编程。
step 1:通过DAQ助手界面进行采集参数的配置

step 2 如图所示,在DAQ助手图标上单击右键,然后在弹出菜单中选择"打开前面板"项,将Express VI转换为标准子VI。

step 3双击转换后的VI,再对代码进行修改。采用这种方法在遇到到复杂的编程时可以节省一定的时间。
1.2 创建虚拟通道
"DAQmx创建通道"函数创建了一个虚拟通道并且将它添加成一个任务。它也可以用来创建多个虚拟通道,并将它们都添加成一个任务。如果没有指定一个任务,那么这个函数将创建一个任务。

1.3 开始触发
"DAQmx开始触发"用于配置一个触发器,并用它来完成一个特定的动作。最为常用的触发器是一个启动触发器(Start Trigger)和一个参考触发器(Reference Trigger)。
通过启动触发器初始化一个采集或生成任务,然后利用参考触发器确定所采集的采样集中的位置,在那之前"前触发器"数据(pretrigger)结束,而后触发器(posttrigger)数据开始。
这些触发器都可以配置成在数字边沿、模拟边沿发生,或者在当模拟信号进入、离开窗口时发生。
1.4 定时函数
"DAQmx定时"函数用于配置硬件的定时数据采集操作,包括指定操作是否连续或有限如果是有限操作还应选择采集或生成的采样数量,以及在需要时创建一个缓冲区。
对于需要采样定时的操作(模拟输入、模拟输出和计数器),"DAQmx定时"函数中的采样时钟实例设置了采样时钟的源(可以是一个内部或外部的源)和它的速率。
采样时钟控制了采集或生成采样的速率,每一个时钟脉冲为每一个包含在任务中的虚拟通道初始化一个采样的采集或信号的生成。
为了在数据采集应用程序中实现同步,如同触发信号必须在一个设备的不同功能区域或多个设备之间传递一样,定时信号也必须以同样的方式传递。"DAQmx定时"函数自动地实现这个传
递,所有有效的定时信号都可以作为"DAQmx定时"函数的源输入
1.5 启动任务函数
"DAQmx开始任务" 函数显式地将一个任务转换至运行状态。在运行状态中,这个任务将完成特定的采集或生成。
如果没有使用"DAQmx启动任务"函数,那么在"DAQmx读取"函数执行时,一个任务可以隐式地转换至运行状态,或者自动开始。
这个隐式的转换也发生在"DAQmx启动任务"函数未被使用,而"DAQmx写入"函数将与它相应指定的自启动输入一起执行时。
最好使用"DAQmx启动任务"函数,显式地启动一个与硬件定时相关的采集或生成任务。如果 DAQmx读取函数或DAQmx写入函数在循环中执行多次,则应当使用DAQmx启动任务函数。
1.6 终止任务函数
与"DAQmx启动任务"函数相对,"DAQmx终止任务"函数终止由显式DAQmx开始的任务或隐式自动开始的任务。
1.7 读取函数
该函数需要从特定的采集任务中读取采样。
可以读取多个采样的"DAQmx读取"函数的实例包括一个输入,来指定在函数执行时读取数据的每通道采样数。
有限采集时,将每通道采样数指定为-1,这个函数会等待采集完所有请求的采样数后,再读取这些采样。
连续采集时,将每通道采样教指定为-1,会使得这个函数在执行的时候,读取所有现在保存在缓冲中可得的采样。
1.8 写入函数
"DAQmx写入"函数用于将采样写入指定的生成任务中。这个函数的不同实例允许选择生成采样的类型(模拟或数字)、虚拟通道数、采样数和数据类型。
1.9 结束前等待函数
"DAQmx结束前等待"函数用于保证在任务结束之前完成特定的采集或生成。最为普遍的是,"DAQmx结束前等待"函数用于有限采集操作。一旦这个函数执行,
有限采集或生成就完成了,而且无须中断操作就可以结束任务。此外,"超时"输入端允许指定一个最大的等待时间。如果采集或生成不能在这段时间内完成,那么这个函数将退出并生成一个合适的错误信号。
1.10 清除任务函数
"DAQmx清除任务"函数如图16-52所示,该函数用于清除特定的任务。如果任务现在正在运行,那么这个函数首先中止任务然后释放掉它所有的资源。
一旦某个任务被清除,那么它就不能被使用,除非重新创建它。因此,如果一个任务还会使用,那么就必须用"DAQmx终止任务"函数来终止任务,而不是使用"DAQmx清除任务"函数来清除它。
在连续的操作中,"DAQmx清除任务"函数则用来结束真实的采集或生成。
二、高级编程
2.1 触发
| 概念 | 解释 | 备注 |
| 触发 | 停止、启动或同步DAQ事件的所有方法 |
按信号种类分为数字触发信号和模 |
| 数字触发信号 | 数字信号为上升沿和下降沿时,触发信号 | |
| 模拟触发信号 | 当模拟信号超过或低于指定电平时,触发信号 | |
| 软件触发 |
从软件中直接控制触发信号。例如,前面板 |
用户要清楚地控制所有DAQ操作。 |
| 硬件触发 | 通过DAQ设备的电路来管理触发信号,大大提高DAQ事件的定时精度和控制功能。硬件触发还可以分为内部触发和外部触发两类 |
DAQ事件定时需要非常精确,需要较 |
| 内部触发 | 事件源在板卡内部,则是内部触发 |
对DAQ设备进行编程,当模拟通道达 |
| 外部触发 | 事件源在板卡外部,则是外部触发 |
通过触发引脚,使用外部触发信号控 |
触发信号分为开始触发、参考触发、暂停触发
| 名称 | 解释 |
| 开始触发 | 使用这种触发时,只有收到触发信号后才开始采集数据 |
| 参考触发 |
使用这种触发时,一旦收到软件的开始命令,设定数量的扫描点就会被采集进一个循环的缓冲。 |
| 暂停触发 |
使用这种触发时,每当遇见触发信号都将停止采样,直到暂停触发信号无效 |
选用"开始触发"模式,触发信号到来后将进行数据采集。
选用"参考触发"模式,当未出现触发信号时,会一直进行数据采集,而当触发信号到来时,则立即停止采集。
选用"暂停触发"模式,触发信号一出现就会暂停当前采集,触发信号撤除后则继续进行数据采集。


设置触发属性:


2.2 采集系统时钟
| 概念 | 解释 | 备注 |
| 采样时钟 | 用于控制采样的时钟。每个采样时钟产生一个脉冲,采集每个通道上的数据 | 采样时钟源可能是数据采集板卡上的内部时钟,也可能是外部时钟 |
| 转换时钟 | 用于板卡A/D转换的速率 |
在低扫描率(scanrate)的时候,转换时钟的计算方法是由最高的转换时钟(也就是最快的扫描率)再加10us的延时。当扫描率不断提高,在到达某个频率的时候就无法满足10μs的额外延时了。也就是说在这10us中,下 |
|
最低有效位LSB |
指A/D转换后二进制中最低值的位,为我们常说的码宽 |
与之相对的最高有效位(MSB)是指二进制中最高值的位。在16位的二进制数中,其第1位便对16位数的值有最 |
| 建立时间 | 信号放大达到指定的采集精度所需要的时间 |
如图所示的是采样时钟与转换时钟的关系。多路数据采集中的一次采样时钟将会触发多次转换时钟。

三、单点采样
3.1 单点采样分为:1采样(硬件定时)、1采样按要求
3.2 1采样(硬件定时)
WINDOWS操作系统无法实现精确的软件定时,使用NI板卡的采样时钟来控制软件循环周期实现精确定时
1采样(硬件定时)模式由于采样是由硬件采样时钟控制的,因此,两个采样之间的时间间隔是非常精确的。
最好工作在实时操作系统,通过1采样(硬件定时)不但可以实现模拟量输入和模拟量输出的同步制,也可以实现数字量输入和数字量输出的同步控制
3.3 1采样按要求
最基本的软件触发单点采集
有两种方式控制这个启动信号,一是通过软件来控制这个启动信号,二是采用板卡内部的专门时钟自动控制这个启动信号。
1采样(按要求)就是通过软件控制的,1采样(硬件定时)、N采样、连续采样都是通过板卡内部时钟自动控制启动信号的。
1采样(按要求)的优点是使用非常简单,不需要开辟专门的线程和内存缓冲区,非常适合于低速采集和对采集时间要求不高的场合


四、有限点采样
4.1 N采样(有限点采样)
用在已知需要的总共采样点数情况下的采集任务尤其用在带触发的采样任务中
4.2 缓冲
在计算机内存中为采集或产生数据而开辟的临时存储区数据从板上传输到开辟的缓冲中,当使用DAQmx读取VI时,将数据从这个缓冲中复制到应用程序中
包括
有限点传输(比如冲击测试的时候用有限点采集,瞬态、时刻、某段时刻)
连续传输(长时间 )
将你的计算机缓冲区想像为一个正在装水的水桶
缓冲区大小=水桶的大小
采样率控制水以多快的速度流入水桶-当水桶满了,你就会将它倒入另一个水桶(LabVIEW缓冲区)

每个通道生成或获取的采样数便是待读取采样数
待读取采样值:采样率每秒采集的点数
读取采样数是每秒从采集的数里(拿的)显示的数
程序基本架构:


五、连续点采样
溢出错误:NI-DAQ不能足够快的从FIFO中得到数据,FIFO中的数据将被覆盖
怎样避免溢出错误:
确保是用DMA而不是IRQ
降低每通道每秒采样率
购买更大FIFO的设备(直接解决方式)
购买总线速度比较快的计算机 (直接解决方式)
覆盖错误:没有从PC 缓冲区中足够快的读到数据结果:
没读到的数据将被新的数据覆盖怎样避免覆盖错误:
增大缓冲区大小
提高每通道待读取点数
降低每通道采样率
在包含DAQmx读取VI的循环中不执行做额外的操作
对于连续采集,必须确保排空水桶的速度与填满它的速度一样快
缓冲区大小=水桶的大小(通常设置为采样率的10倍)
采样率控制水以多快的速度流入PC水桶:一旦PC缓冲区溢出,数据就会丢失
DAQmx读取VI的待读取采样数控制排空PC水桶的速度
每通道可用采样点数代表PC水桶的中剩余的水量

每通道采样数接线端
对于连续采集,如果输入没有连接或者输入为-1
NI-DAQmx读取在缓冲区中可用的采样值总数除非总数小于表中所列的值:


浙公网安备 33010602011771号