1
LabVIEW 数据采集
2
信号采集
?概述
?数据采集系统的构成
?DAQ 函数模块
3
一、概述
?基础理论 — 采样定理
?数据采集系统的构成
?信号调理
?DAQ 数据采集卡
4
数据采集系统的构成
5
数据采集相关名词
? AC,Alternating Current,交流电流,泛指交流信号。
? DC,Direct Current,直流电流,泛指直流信号。
? ADC,Analog-to-Digital Conversion,模数变换,有时也
表示为 A/D。
? DAQ,Data Acquisition,数据采集。
? DMA,Direct Memory Access,直接内存访问。它允许
将采集的数据直接送给计算机的内存,数据传输速率较
高。
? GPIB,General Purpose Interface Bus,也称为 IEEE
488.2总线。它是一种应用最广泛的仪器总线。
? SCXI,Signal Conditioning extensions for Instrumention,
信号调理器。
? VISA,Virtual Instrument Standard Architecture,虚拟
仪器软件体系结构。它是控制 GPIB,VXI,RS-232和其
他类型仪器的接口库。
6
信号调理器的作用
? 增益调理
? 线性化
? 滤波
? 激励信号及辅助装置
? 消除静态信号的影响
? 电压隔离
? 同步采样保持
7
DAQ 数据采集卡的选取
采集控制功能
硬件平台 /总线选择
编程语言与操作系统
性能价格比
8
9
二,DAQ系统结构
在数据采集之前, 程序将对 DAQ板卡初始化, 板卡上和内存中
的 Buffer是数据采集的中间环节 。 需要注意的两个问题是:是
否使用 Buffer? 是否使用外触发启动, 停止或同步一个操作 。
10
1,缓冲( Buffers)
这里的缓冲指的是 PC内存的一个区域 ( 不是 DAQ卡上的
FIFO缓冲 ), 它用来临时存放数据 。
例如, 你需要采集每秒采集几千个数据, 在一秒内显示
或图形化所有数据是困难的 。 但是将采集卡的数据先送
到 Buffer,你就可以先将它们快速存储起来, 稍后再重
新找回它们显示或分析 。 需要注意的是 Buffer与 DAQ操
作的速度及容量有关 。 如果你的卡有 DMA性能, 模拟输
入操作就有一个通向计算机内存的高速硬件通道, 这就
意味着所采集的数据可以直接送到计算机的内存 。
11
1,缓冲( Buffers)
? 不使用 Buffer意味着对所采集的每一个数
据你都必须及时处理(图形化、分析
等),因为这里没有一个场合可以保持
你着手处理的数据之前的若干数据点。
? 下列情况可以不使用 Buffer I/O:
? 数据组短小,例如每秒只从两个通道之一采
集一个数据点。
? 需要缩减存储器的开支。
12
1,缓冲( Buffers)
下列情况需要使用 Buffer I/O:
? 需要采集或产生许多样本,其速率超过了实际
显示、存储到硬件,或实时分析的速度。
? 需要连续采集或产生 AC数据 ( >10样本/秒 ),
并且要同时分析或显示某些数据 。
? 采样周期必须准确, 均匀地通过数据样本 。
13
2,触发( Triggering)
● 触发涉及初始化, 终止或同步 DAQ事件的任何方法 。
触发器通常是一个数字或模拟信号, 其状态可确定动
作的发生 。 软件触发最容易, 你可以直接用软件, 例
如使用布尔面板控制去启动 /停止数据采集 。 硬件触发
让板卡上的电路管理触发器, 控制了 DAQ事件的时间
分配, 有很高的精确度 。 硬件触发可进一步分为外部
触发和内部触发 。 当某一模入通道发生一个指定的电
压电平时, 让卡输出一个数字脉冲, 这是内部触发的
例子 。 采集卡等待一个外部仪器发出的数字脉冲到来
后初始化采集卡, 这是外部触发的例子 。 许多仪器提
供数字输出 ( 常称为, trigger out”) 用于触发特定的
装置或仪器, 在这里, 就是 DAQ卡 。
14
2,触发( Triggering)
下列情况使用软件触发:
? 用户需要对 DAQ操作有明确的控制;
? 事件定时不需要非常准确。
下列情况使用硬件触发:
? DAQ事件定时需要非常准确;
? 用户需要削减软件开支;
? DAQ事件需要与外部装置同步。
下面我们可以看到怎样使用 DAQ的 VI程序设置有
Buffer及无 Buffer的 I/O操作, 以及设置触发的
类型 。
15
三,DAQ 模块
? 位于 NI Measurements-Data Acquisition下
? 主要子功能模块有,Analog Input、
Analog Output,Digital I/O,Counter
? 模拟量和开关量子功能模块均分三类:
? 基本函数、中级函数、高级函数
16
1,Analog I/O 图例说明
? 基本概念:在研究 DAQ VI之前需要了解
如下的几个定义。我们以下图的 AI
Acquire Waveform.vi为例说明。
17
? device—— 设备号 。 在 NI DAQ设置工具中设
定 。 该参数告诉 LabVIEW你使用什么卡, 它可
以使 DAQ VI自身独立于卡的类型, 也就是说,
如果你稍后使用了另一种卡, 并且赋予它同样
的设备号, 你的 VI程序可正常工作而无须修改 。
? samples—— 表示一个 A/D转换:它是一个点、
一个与测量发生时的实际模拟量对应的数据。
? scan—— 是在多通道采样时,由一个单独的通
道得到的样本。
18
● channel—— 指定数据样本的物理源。例如,一
个卡有16个模拟输入通道,你就可以同时采
集16组数据点。
●在 LabVIEW VI中,一个通道或一组通道都用一
个字符串来指定。例如:
通道 通道串
通道 5 5
通道 0到 4 0:4
通道 1,8,以及 10到 13 1,8,10:13
19
? waveform—— 是由一个通道得到的一组样本, 采集
若干周期或一定时间 。 通常, 但不是必须, 数据点之
间的时间对给定的 waveform是一个常数 。
? high limit 和 low limit—— 你期望的对信号的限制。
输入信号变化的缺省值是 10V到 -10V,可以设置 DAQ系
统的增益,例如,对大多数卡,如果你将其设为 5到 -
5V,则增益为 2。如果你将其设为 1到 -1V,则增益为
10。所以如果你知道你的输入信号与缺省值不同,可
以改写这些值。可以用下面的公式确定所使用的增益:
增益=采集卡输入范围/(| High Limit|-|Low limit|)
20
? 许多采集卡只支持某些预先确定的增益值。如果你设
置一个理论上的增益是得不到支持的,LabVIEW会自
动将其调整到最近的预置值。典型的采集卡所支持的
增益值有 0.5,1,2,5,10,20,50,100。
? taskID—— 一个32位的整数( I32类型)。某些
DAQ VI用来识别指定的加于其上的 I/O操作。许多
DAQ VI需要接受一个 taskID in并且返回一个 taskID
out给下一个 VI。你不能通过 taskID给每一个 VI提供
采集卡的信息,如采样率、电压限制等。但一个初始
化的 VI可以把这些信息传给 taskID out,它可以信息
告诉别的需要设置的 VI。后面将有例子说明。
21
2,简单 Analog I/O
? 这是 LabVIEW提供的一组标准的、简单
易用的 DAQ VI。
? Analog Input:
22
AI
? 从左到右,4个 VI的功能为:
? 从指定通道获得一个样本。
? 从由通道字符串规定的一组通道每通道获得一个样本。这些样
本返回到一个样本数组,顺序由通道号决定。
? 按指定的采样率由一个通道得到一个波形 ( 一组覆盖一个周期
的样本 ),这些样本返回到一个 wareform数组 。
? 从由通道字符串规定的每个通道获得一个波形。这些样本返回
到一个波形的2维数组,顺序由通道号和采样周期决定。通道
数据的每个点占1列,时间增量由行决定。
23
AO
? 从左到右,4个 VI的功能为:
? 在指定输出通道设置一个规定电压。
? 在指定输出通道设置一组规定电压 。 这些电压在输出通道
一直保持恒定,直到其自身改变或装置复为位 。
? 在指定输出通道产生一个波形, 波形的点 ( 以电压为单位 )
是预先由波形数组提供的 。 更新速率 ( Update rate) 规定
了两个点之间的时间 。
? 与上类似, 多波形, 每通道一个, 可同时发生 。 每个波形
存放在 2维数组的 1列 。
24
3,中级 Analog I/O
? 上面介绍的简单 Analog I/O的基本局限是执行 DAQ任务
的冗余 。 例如, 你每一次调用 AI Sample Channel,
都必须为特定类型的测量设置硬件, 告诉它采样率等 。
显然, 如果你经常要采集大量的样本, 你未必需要在
每一次重复时都去设置测量 。
? 中级 Analog I/O有更好的功能与灵活性, 可以更有效
地开发你的应用 。 它的特点包括控制内部采样率, 使
用外部触发, 执行连续外部触发等 。 下面我们将仔细
描述它的各种 VI,你应该注意其大量输入, 输出端子
中的部分内容 。 有效地使用这些 VI只需要关注你需要
的端子 。
25
中级 AI
? AI Config对指定的通道设置模入操作,包括硬件、计算机内
buffer的分配。
? AI Start启动带缓冲的模入操作。它控制数据采集速率,采集点
的数目,及使用任何硬件触发的选择。
? AI Read—— 从被 AI Config分配的缓冲读取数据。它能够控制由
缓冲读取的点数,读取数据在缓冲中的位置,以及是否返回二进
制数或标度的电压数。它的输出是一个2维数组,其中每一列数 据对应于通道列表中的一个通道。
? AI Single Scan—— 返回一个扫描数据。它的电压数据输出是由
通道列表中的每个通道读出的电压数据。使用这个 VI仅与 AI
Config有关联,不需要 AI Start和 AI Read。
? AI Clear—— 清除模入操作、计算机中分配的缓冲、释放所有
DAQ卡的资源,例如计数器。
? 输入应用中首先使用的 VI总是 AI Config。 AI Config会产生一个
taskID和 Error cluster(出错信息簇)。
26
中级 AO
? AO Config对指定的通道设置模出操作, 包括硬件, 计算机
内 buffer的分配 。
? AO Write以电压数据的方式写数据到模出数据缓冲区 。 它
是一个2维数组, 其中每列对应通道列表中的一个通道 。
? AO Start 启动带缓冲的模出操作 。
? AO Wait 在返回之前一直等待直到波形发生任务完成 。 它的
电压数据输出是由通道列表中的每个通道读出的电压数据 。
使用这个 VI仅与 AO Config有关联, 不需要 AO Start和 AO
Read。
? AO Clear—— 清除模出操作, 计算机中分配的缓冲, 释放所
有 DAQ卡的资源, 例如计数器 。
? 模出应用时, 首先使用的 VI总是 AO Config。 AO Config会产
生一个 taskID和 Error cluster( 出错信息簇 ) 。