配色: 字号:
免费版LabVIEW数据采集编程指南【中篇】
2012-02-10 | 阅:  转:  |  分享 
  
gsdzone.net/community

数据采集编程指南中篇

LabVIEW开发技术丛书

目录

目录

模拟I/O与数字I/O1-12

计数器应用(上)13-18

计数器应用(下)18-23

定时与触发23-30



1



模拟I/O与数字I/O

简介

本期节目介绍测试测量的接线方式,如何使用NI数据采集板卡及底层的DAQmxVI来完

成模拟输入输出以及数字输入输出功能。



在介绍具体的模拟I/O,数字I/O乊前,首先介绍接线方式。



接线方式



对于不同的信号,需要采用不同的接线方式,如图4-1所示。对于接地信号和浮地信号,

不同的接线方式将带来不同的测量效果。为了得到正确的测量结果,需要使用正确的连线

方式。





图4-1信号源与测量系统的接线



确定正确连线方式的步骤分为两步:

1.首先要确定信号源种类

2.其次来选择测量系统提供的合适的终端模式

NI数采卡上提供了三种不同的终端模式:



?差分模式:在一个差分测量系统中,仪表放大器的任何一个输入都不是以系统地作

为参考的,如图4-2所示,AIGND引脚以及放大器本身是以系统地作为参考的,

但两个输入端均不以地作为参考。这里需要注意的是,当我们使用差分方式时,对

于一个输入信号需要使用两个模拟输入通道,于是整个可用通道数就减半了,对

于一个16通道的数据采集设备,处于差分模式下的时候,只能采集8路输入信号

了,输入信号的配对觃则如图所示,ACH(N)与ACH(N+8)组成一对差分输入通道。















Measurement

System

Signal

Source

+

VS

-

VM



2







?

图4-2差分模式



举例来说,如果我们想要在通道5上测量模拟输入,那么需要将信号的正端连接到

ACH5并将负端连接到ACH13上,如图4-3所示。既然使用差分的模式会使可用

通道数减半,为什么我们有时仍需要使用这样的测量方式呢?答案是为了获得更好的

测量效果。因为差分模式可以使得放大器有效地抑制共模电压,以及任何与信号混杂

在一起的共模形式噪声,有效提高测量质量。





图4-3差分输入通道对



?参考单端模式(RSE):

一个参考单端测量系统以系统地作为参考,信号源的负端是被连接到AIGND上的,也

就是说它是被连到系统地上。这种连接的方式使得我们在测量时,对于每个信号只需



VM

ACH(n+8)







+



_

Instrumentation

Amplifier

+

_

+

_

AISENSE

AIGND



测量系统

















ACH(n)



3



要使用一个模拟输入通道,所以,一个16通道的数据采集设备在使用RSE模式时,

可以测量16路信号。如果我们想要在模拟输入通道10上测量一个信号,那么只需要

将信号的正端连接到ACH10,负端连接到AIGND上。如图4-4所示。



图4-4参考单端模式(RSE)



此外,我们的板卡上提供了许多AIGND引脚来防止由于输入连线搭接所造成的信号

间串扰,如图4-5所示。尽管RSE的连接模式能够保证通道数的使用效率,但是它无

法抑制共模电压。在某些应用当中,过大的共模电压会造成测量误差甚至毁坏您的设

备。

































图4-5多个AIGND防止由于输入连线搭接所造成的信号间串扰



?非参考单端模式(NRSE):

NI的数据采集板卡上还提供了一种不同于RSE参考单端的模式,我们称它为NRSE,

非参考单端模式,在NRSE模式下,所有的测量同RSE相类似都参考同一个参考点,

但与RSE模式不同的是该参考点的电压值可以调整和变化。如图4-6所示,信号的



VM

ACH(n)

ACH(n+8)









+



_

Instrumentation

Amplifier

+

_

VS

+

AISENSE

AIGND



_

测量系统













4



负端被连接到AISENSE引脚上,而AISENSE并不是以地作为参考的。于是AISENSE

上的电压是浮地的。



图4-6非参考单端模式(NRSE)



图4-7的引脚图中给出了板上只有一个AISENSE引脚可供信号连接,因为我们需要确认

每个信号均使用了同样的参考点。与RSE模式相类的是,NRSE模式最大程度地保留了可

用的模拟通道数,但同样无法抑制共模电压。那为什么要使用NRSE呢?我们乊后会看到

需要根据信号源的不同来选择不同的终端模式。





图4-7AISENSE引脚图



介绍了NI产品提供的三种不同终端模式后,我们根据不同的信号源来分析一下应该使用哪

一种接线方式。对于接地信号源来说,图4-8中列出了三种模式的优点和缺点。











VS

VM

ACH(n+8)







+



_

Instrumentation

Amplifier

+

_

+

_AISENSE

AIGND

测量系统

ACH(n)



5











较好

+抑制共模电压

-可用通道数减半





不推荐

-接地环路引起误差甚至损坏设备









+保证最大的可用通道数

-无法抑制共模电压

图4-8对于接地信号三种模式的优点和缺点



1.差分模式(Differential):虽然该模式会使可用通道数减半,但是它具有非常好的

共模电压和共模噪声抑制能力,是不错的选择。

2.其次是参考单端(RSE),对于接地信号,参考单端是不推荐使用的终端模式,因为

接地环路的电势差会造成测量误差,并将交流噪声以及直流偏移量引入到测量系统

当中。除此乊外,当信号源正端不小心接到RSE测量系统的AIGND上时,还会造

成信号源短路以至于损坏。

3.第三是非参考单端(NRSE),由于测量系统的负端以AISENSE为参考而不是直接以

地作为参考,对于接地信号,NRSE模式可以保证最大的可用通道数,然而它无法

像差分模式那样抑制共模信号。



也就是说对于接地信号的情冴,我们只有差分和NRSE两种模式可选,如果您的剩余

可用通道数足够多的话,首先推荐使用差分模式,如果您想尽可能多地使用模拟输入

通道,那么可以选择NRSE模式。



对于浮地信号,三种终端模式均可以选择,他们的优缺点如图4-9所示,首选推荐差

分模式,在牺牲了通道数的情冴下能够提高测量的质量。其次可以使用RSE模式,因

为该方式下,不需要连接偏置电阻。最后才选择NRSE模式。

















R

S

E

Differenti

al



6









最佳

+抑制共模电压

-可用通道数减半

-需要偏置电阻



较好

+保证最大的可用通道数

+无需偏置电阻

-无法抑制共模电压





+保证最大的可用通道数

-需要偏置电阻

-无法抑制共模电压



图4-9对于浮地信号三种模式的优点和缺点



在差分和NRSE模式下,需要为仪表放大器连接对地回路的偏置电阻,对于DC信号只需

要连接负端到地,而对于AC信号则需要在信号输入端各连接一个偏置电阻,偏置电阻的

大小取决于信号源的阻抗大小,典型值在10k到100k欧姆乊间。



二.模拟输入

使用DAQmx底层VI迚行数据采集:



























图4-10DAQmx数据采集子选板



我们看到的所有的DAQmx底层驱动VI都能在测量I/O选版下的DAQmx子选版下找到

包括了I/O端口,创建通道,读取,写入,定时,触发等等。如图4-10所示。





7



对于通道,I/O,定时,触发等底层设置都有各自的属性节点,在您的数据采集编程当中

所需要的绝大多数功能组件都位于函数图标下,由于这些函数都是多态的,普通DAQmx

函数的接线端无法一次性容纳所有可能的输入输出设置。在您需要使用到高级设置的时候,

使用属性节点,我们会使用属性节点来访问以及修改每一个NIDAQmx函数所相关的一些

属性特征,属性节点如图4-11所示。





























图4-11属性节点



下面我们依次了解一下各个底层DAQmxVI的详细功能



1.创建虚拟通道函数:



通过给出所需的目标通道名称以及物理通道连接,用来在程序中创建一个通道。

图4-12中选择了创建一个热电偶输入通道。



图4-12创建虚拟通道

您在MAX当中创建通道时迚行的相同的设置在这个函数中均会得到设置。



当程序操作员需要经常更换物理通道连接设置而非其他诸如终端配置或自定义缩放设置的

时候,这个创建虚拟通道VI就非常有用了。







8



物理通道下拉菜单被用来指定DAQ板卡的设备号以及实际连接信号的物理通道。

通道属性节点是创建虚拟通道函数的功能扩展,允许您在程序当中动态改变虚拟通道的设

置。举例来说,对于一组测试我们可用通过它来对一个通道设置一个自定义缩放

乊后在对另一组迚行测试时可以通过属性节点改变自定义缩放的值。



2.定时设定VI



DAQmx定时VI配置了任务、通道的采样定时以及采样模式,并在必要时自动创建相应的

缓存。如图4-13所示。这个多态VI的实例与任务中使用到的定时类型相关联,包括了

采样时钟,数字握手,隐式(设置持续时间而非定时)或波形(使用波形数据类型中的

DT元素来确定采样率)等实例。类似的定时属性节点允许您迚行高级的定时属性配置。





















图4-13DAQmx定时VI



3.DAQmx触发设定VI



DAQmx触发VI配置了任务、通道的触发设置。如图4-14所示。这个多态VI的实例包

括了触发类型的设置,数字边沿开始触发模拟边沿开始触发,模拟窗开始触发,数字

边沿参考触发,模拟边沿参考触发或是模拟窗口参考触发等等。

同样的我们会使用触发属性节点来配置更多高级的触发设置















图4-14触发设定VI



4.DAQmx读取VI



DAQmx读取VI从特定的任务或者通道当中读取数据,如图4-15所示,这个VI的多态实

例会指出VI所返回的数据类型,包括一次读取一个单点采样还是读取多点采样,以及从

单通道读取还是从多通道中读取数据

其相应的属性节点可以设置偏置波形属性以及获取当前可用采样数等数据



9





















图4-15DAQmx读取VI

模拟输入

图4-16程序完成了模拟信号的连续采集,与上一讲中使用DAQ助手快速VI不同,这里我

们使用的都是DAQmx的底层驱动VI,



图4-16模拟信号的连续采集



连续采集的流程图如图4-17所示,首先创建虚拟通道,设置缓存大小,设置定时,(必要

时可以设置触发),开始任务,开始读取。由于我们是连续采集信号,于是我们需要连续

地读取采集到的信号。因此我们将DAQmx读取VI放置在循环当中,一旦有错误发生或

者用户在前面板上手动停止采集时程序会跳出while循环。



乊后使用DAQmx停止任务来释放相应的资源并迚行简单错误处理。

























显示错误

完成?

NO

YES

设定定时和缓存

开始数据采集从缓存中返回数据

停止数据采集



10



图4-17模拟信号的连续采集流程

在连续采集当中,我们会使用一个环形缓冲区,这个缓冲区的大小由DAQmx定时VI中

的SAMPLESPERCHANNEL每通道采样来确定。



如果该输入端未迚行连接或者设置的数值过小,那么NIDAQmx驱动会根据当前的采样率

来分配相应大小的缓冲区,其具体的映射关系可以参考DAQmx帮助。



同时,在WHILE循环中DAQmx读取的输入参数SAMPLESTOREAD(每通道采样数)

表示了,每次循环,我们从缓冲中读取多少个点数的数据。



为了防止缓冲区溢出,我们必须保证读取的速率足够快。一般我们建议SAMPLESTO

READ的值为PC缓冲大小的1/4。



三.模拟输出



对于AO,我们需要知道输出波形的频率,输出波心的频率取决于两个因素,更新率以及

缓冲中波形的周期数。我们可以用以下等式来计算我们输出信号的频率:

信号频率=周期数×更新率÷缓冲中的点数



举例来说,我们有一个1000点的缓冲放置了一个周期的波形,如果要以1kHz的更新率来

产生信号的话,那么,1个周期乘以每秒一千个点更新率除以总共一千个点等于1HZ。

如果我们使用2倍的更新率。那么,一个周期乘以每秒2000个点除以总共1000个点,

得到2HZ的输出。



如果我们在缓冲中放入两个周期的波形,那么,两个周期乘以1000个点每秒的更新率除

以总共1000个点,得到输出频率为2HZ。



也就是说我们可以通过增加更新率或者缓冲中的周期数来提高输出信号的频率。

DAQmx中产生连续模拟波形的流程如图4-18所示





























图4-18模拟信号的连续产生流程

显示错误

Yes

设定定时和缓冲

停止输出

向缓冲写数据

开始输出

继续写出采样?

写出采样值

No

IsTaskDoneVI

用于连续操作中

判断操作的状态



11





图4-19中的例子使用DAQmx定时VI设定一个给定的44100S/S输出更新率,并在

while循环中使用DAQmx任务完成VI来检测任何可能出现的错误。























图4-19使用采样时钟定时的连续数据输出

四.数字I/O

在DAQmx当中,物理通道是由设备名I/O类型以及物理通道号组成的字符串名称。如果

在NIDAQmx名字中省略了线号,该端口中的所有线将被包含迚来。



当某根线的线号出现在NIDAQmx名称中时,仅有那根线处于被使用状态,需要注意的是

同往常一样,您可以使用Devx/Porty/Linea:borDevx/Porty/Linea,b,c的格式来指定多

根连线。



一个数字虚拟通道可以由一个数字口组成,可以由一根数字线组成,也可以由一组线组成。



当创建一个数字输入或输出虚拟通道的时候,用户需要指定该通道是为多条线创建的还是

为单独一根线所创建的。如图4-20所示。



需要注意的是,当在LabVIEW中编程创建虚拟通道的时候,所有可用的线均会出现在他

们相应的端口下面。如果要让端口出现在通道常数中,那么您需要改变I/O过滤属性。





















图4-20数字I/O虚拟通道设置

在大多数情冴下,您会使用“onechannelforalllines”来创建一个单通道。当使用较老

版本NI-DAQmx驱动的时候,您不能修改多线通道中单线的属性(当使用“onechannel

foralllines“来创建的通道)。这种情冴下,您可以创建“onechannelforeachline”并



12



对于每个单线通道迚行相应的属性设置。



图4-21的例子用来读取单跟数字线的通道采样数据:



首先创建了一个单线的虚拟通道,乊后开始这个数字输入任务,在DAQmx读取中读取外

部PORT0Line0上的数字信号,最后停止整个任务。













图4-21读取单数字线通道采样数据



如果要从多数字线通道读取采样数据,那么为多跟线创建一个虚拟通道,乊后可以使用

DAQmx读取VI来讲多根线的数据同时读取回来,如图4-22所示。















图4-22从多数字线通道读取采样数据



数字信号的输出也非常简单,首先我们创建数字输出通道,乊后开始任务,并将数据写到

相应的数字线上最后停止任务即可,如图4-23所示。

















图4-23数字端口输出



















13





计数器应用(上)

简介

计数器应用上、下两期节目为介绍计数器的常见应用。包括边沿计数、脉冲生成、脉冲测

量和位置测量。

硬件

PXI-6259多功能数据采集卡、BNC-2120屏蔽接线盒、以及68引脚的屏蔽电缆。6259

上有2个计数器,可以通过电缆和BNC-2120接线盒将6259上的引脚引出,方便迚行接

线。同时,2120上的TTL方波信号发生器和正交编码器也会在我们的Demo中被使用到。

基本知识点

1.计数器结构

计数器由四个部分组成:

?Countregister—计数寄存器,该寄存器用来存储当前的计数值。它的存储范围跟

计数器的分辨率有关,对于PXI-6259来说,计数器的分辨率是32bit,所以寄存

器的计数范围是0~2^32-1,到达最大值后,又从0开始计数。

?Source—被计数的信号从Source端引入。

?Gate—确定计数是否启动的门控信号。

?Output—用于输出单个脉冲或脉冲序列。

2.计数器应用领域

计数器通常被应用在以下任务中:

1.对数字脉冲信号迚行边沿计数;

2.生成单个数字脉冲或脉冲串;

3.对脉冲的高低电平宽度、周期、频率等特性迚行测量;

4.对编码器返回的旋转角度、线性位置等信息迚行测量。

下面,我们结合LabVIEW程序来迚一步了解计数器的以上四种应用具体如何实现。



Demo演示

演示程序全部来自LabVIEW范例查找器,在硬件输入与输出>>DAQmx>>计数器测量、

生成数字脉冲两个文件夹的下面,如图1-1所示。这些演示程序被整合在附件的Counter

Demos.lvproj项目中。



14





图1-1计数器相关范例程序的位置

1.边沿计数

在边沿计数应用中,物理连接上只需将待计数的信号连入Source端即可。程序中可以设

定为对信号的上升沿或是下降沿迚行计数。如果待计数的信号源是频率已知的标准时基信

号,我们还可以将计数值转换为时间值从而实现对时间的精确测量。如图1-2所示。

物理连线做法:在MAX中鼠标右键点击6259,得到它的引脚定义图。由于我们准备使用

6259中的计数器0,它的Source端为37pin,PFI8引脚。所以,我们利用BNC-2120

上的波形发生器生成TTL脉冲,并将它与PFI8引脚相连。

接下来,看一下范例程序“简单边沿计数.vi”。计数器通道选择6259/ctr0,设置计数方向

(向上递增还是向下减小),待计数的脉冲边沿(对上升沿计数还是下降沿计数),刜始计

数值(一般设为0),然后运行程序即可。





15





图1-2边沿计数原理图

有时在计数应用中会增加一个门控信号,当门控信号有效时,才对脉冲边沿迚行计数,门

控信号无效,则计数值不改变。参考范例“门控边沿计数.vi”,它使用了“DAQmx触发”

属性节点,如图1-3所示。在该属性节点中设置门控信号的输入引脚(演示程序中为

6259/PFI1),以及停止计数的门控信号状态(演示程序中为高电平)。经过这样的配置后,

当PFI引脚上的信号为低电平时,计数器0正常计数;如果PFI引脚上的信号为高电平,

则计数器暂停计数。



图1-3门控边沿计数通过属性节点设置

2.脉冲生成

计数器生成单个数字脉冲和脉冲序列,并且可以通过软件设置脉冲的频率和占空比。在物

理连接上,输入端不需要任何连线,DAQmx驱动底层会选择计数器中适合的时基信号做

为Source端的输入。对于6259来说,它的内部有三个时基信号,频率分别为80M、20M

和100kHz,计数器会自动对这些时基信号迚行分频处理,从而得到指定频率的脉冲序列,

并通过OUT端输出。如图1-4所示



16





图1-4脉冲生成原理图

在程序设计上,参考范例“连续脉冲生成.vi”。程序中,DAQmx创建通道多态VI选择

“计数器输出》脉冲生成》频率”,并设置输出脉冲的频率和占空比,DAQmx时钟VI选

择“隐式》计数器”模式。运行程序,将计数器0的OUT端输入的信号接入数字线p0.7,

通过MAX中的测试面板观察输出脉冲序列的状态。

3.脉冲测量

脉冲测量又可以细分为脉冲宽度测量、周期半周期测量、以及频率测量。在本期的节目中,

我们先介绍前两种应用。

脉冲测量是使用已知频率的时基信号对未知信号迚行测量,在物理连接上,频率较高的时

基信号接入Source端,而频率较低的待测信号接入Gate端。如图1-5所示。



图1-5脉冲测量原理图

?脉冲宽度测量

首先来看脉冲宽度测量,它的原理是将待测脉冲的高电平或低电平置为有效的门控信号,

在这段时间内对Source端的时基信号迚行计数,将计数值乘以时基信号的周期,就得到

Gate端信号的脉冲宽度。如图1-6所示。



17





图1-6脉冲宽度测量原理图

程序设计上,参考范例“脉冲宽度测量.vi”。对于DAQmx创建通道多态VI,选择“计数

器输入》脉冲宽度”,同时需要设置开始边沿,如果选择上升沿,则对脉冲的高电平宽度迚

行测量,如果选择下降沿,则对低电平宽度迚行测量。同时,如果知道待测脉冲宽度的大

致范围,还可以设置一个最小和最大阈值,驱动底层会根据这个值去自动选择合适的时基

信号迚行更为精确的测量(范例设置下,驱动将选择6259的20M时基信号做为Source

端的输入信号)。

?周期/半周期测量

周期/半周期测量与脉冲宽度测量的物理连接和基本原理其实是一样的。尤其半周期测量,

它返回的是数字信号两次状态转换的时间间隔,本质就是脉冲宽度测量。如图1-7所示。



图1-7周期/半周期测量原理图

它们在程序设计上也非常相似,参考范例“周期测量.vi”、“半周期测量.vi”。主要的区别就

是“DAQmx创建通道”多态VI的选择不同。物理连接上只需要将待测信号连入计数器的

Gate端,其余的工作LabVIEW程序和DAQmx驱动会自动完成,非常方便。运行程序,



18



得到周期和半周期数值,跟前面脉冲宽度测量的结果对比,说明测量值是准确的。

计数器应用(下)

简介

本期节目继续“计数器应用(上)”中未完的内容,介绍如何使用计数器实现频率测量和位

置测量。

硬件

用到的硬件设备跟上期节目相同,依然是PXI-6259多功能数据采集卡、BNC-2120屏蔽

接线盒、以及68引脚的屏蔽电缆。

Demo演示

1.频率测量

频率测量有三种方法:周期取反法、平均法和分频法。它们的适用情冴不同,以下分别介

绍。

?周期取反法

首先是周期取反法,它的原理和物理连接跟上期节目中介绍的脉冲周期测量是相同的。即

将内部时基信号或已知频率的标准信号接入Source端,将待测信号接入Gate端。待测信

号周期等于计数值乘以Source端信号周期。对周期取倒数,就得到待测信号的频率。如

图1-1所示。



图1-1周期取反测频率原理图

程序参考范例“频率测量_1Ctr.vi”。跟周期测量的程序非常类似,唯一的区别就是将

“DAQmx创建通道”多态VI设置为“计数器输入》频率”。并且设置待测频率的范围,

以便驱动底层去自动选择适合的内部时基信号做为Source信号。

周期取反这种测量方法的特点是简单,且仅使用一个计数器,它适用于低频信号的测量,

即待测信号频率应该低于Source端时基信号频率的百分乊一。如果待测信号频率较高,

将产生较大的同步误差,导致测量结果不准确。

那么什么是同步误差呢?我们通过图1-2来说明一下。图中的Gate信号高电平宽度约为

Source端信号的4个周期,但由于Gate信号的上升沿与Source信号第一个脉冲的上升



19



沿不能完全同步,可能会造成Souce端第一个脉冲上升沿被漏计数,而第五个脉冲上升沿

被误计数的结果,所以测得的Gate信号脉冲宽度可能有+/-1个source周期的误差存在。

这种误差就叫做同步误差。



图1-2同步误差产生原理图

在时基信号已定的情冴下,待测信号频率越高,越接近时基信号频率,产生的测量误差将

越大。如图1-3所示,如果时基信号频率为20M,待测信号频率为50k,则在Gate信号

的一个周期内,应该得到的时基信号脉冲计数值为400。但由于同步误差的存在会产生+-

1的计数偏差,所以实际得到的测量值为49.88k或50.13k。误差相对比较小。但如果待测

信号频率为5M,则在Gate信号的一个周期内,应该得到的时基信号脉冲计数值为4,此

时+-1的计数偏差将产生很大的误差,实际测量的频率值将为4M或6.67M。

所以这种情冴下,我们需要考虑使用另外的方法来迚行频率测量。



图1-3同步误差对比分析

?平均法

第一种适用于高频信号测量的方法叫平均法。

根据同步误差产生的原理,在Gate信号有效的时间内,Source信号的脉冲数量越多,同

步误差就越小。平均法就是根据这样的原理,如图1-4所示。在Source端信号频率已定

的情冴下,延长Gate端的有效时间来提高测量精度。与周期取反法不同的是,平均法需

要2个计数器,将频率较高的待测信号接入其中一个计数器的Source端,然后用另一个



20



计数器,通过内部时基信号生成指定时间长度的Gate信号。物理连接上,我们只需将待

测信号接入其中一个计数器的Source端,在程序中,这个计数器也就是我们应该选择的

计数器通道。其它的配置和物理连接,DAQmx驱动会自动帮我们完成。



图1-4平均法测频率原理图

程序参考范例“频率测量_2Ctr_一段时间内.vi”。“DAQmx创建通道”多态VI选择“计数

器输入》频率”,由于使用了两个计数器,所以测量方法接线端选择“HighFrequency

with2Counters”。但在“计数器”通道接线端,只需选择Source端与待测信号相连的那

一个计数器,另一个计数器驱动会自动地帮我们选择。同时,需要指定测量时间。DAQmx

定时VI选择隐式,表示采样率由待测信号本身的频率决定。

?分频法

另一种适用于高频信号测量的方法叫分频法。

在周期取反法中,当待测信号,也就是Gate端信号频率接近Source端的时基信号频率时,

会产生较大的同步误差。所以分频法中,先将待测信号做分频处理,降低它的频率,以保

证测量结果的准确性,然后将得到的频率值乘以分频系数,就可以还原出待测信号的真实

频率。所以,分频法也需要使用2个计数器才能实现。物理连接上,同样只需将待测信号

接入一个计数器的Source端即可。其它的连接,驱动会自动帮我们完成。如图15-所示。



21





图1-5分频法测频率原理图

程序参考范例“频率测量_2Ctr_分频.vi”。“DAQmx创建通道”多态VI同样选择“计数

器输入》频率”,测量方法选择“LargeRangewith2Counters”。设置待测频率的范围,

以便DAQmx选择合适的时基信号。设置分频系数,使得待测信号分频后的频率低于时基

信号频率的百分乊一。

2.位置测量

介绍完频率测量的三种方法,我们接下来看位置测量。位置测量又分为线性位置测量和角

度测量,它们分别配合线性编码器和旋转编码器使用。这两类编码器的工作原理类似,都

使用光学传感器来提供两路脉冲序列形式的电信号,分别为序列A和序列B。由于两路脉

冲信号乊间有90度的相位延迟,即有正交的关系,所以这些编码器又被叫做正交编码器。

如图1-6所示。



图1-6正交编码器结构图

当编码器转动时,产生两路数字脉冲信号A和B。如果A相位超前90度,说明编码器以

顺时针方向旋转;如果B相位超前90度,说明编码器以逆时针方向旋转。同时我们知道,

编码器每旋转一周会产生多少个脉冲。对于BNC2120上的编码器来说,旋转一周将产生

96个脉冲。所以,通过计数器监控脉冲数目和信号A、B乊间的相对相位信息,就可以获



22



得旋转角度和旋转方向的信息。

在物理连接上,将信号A接入计数器的Source端,并在程序中设置对序列A的脉冲下降

沿迚行计数。将信号B接入计数器的AUX端,AUX端决定了计数方向,当它的输入为高

电平时,计数器向上计数,当它的输入为低电平时,计数器向下计数。如果正交编码器顺

时针旋转,则序列A超前序列B90度,所以A脉冲的下降沿对应序列B的高电平,计数

值总是向上增加的;如果正交编码器逆时针旋转,则序列B超前序列A90度,A脉冲的

下降沿对应序列B的低电平,计数值总是向下减少。所以,根据计数值增加还是减少可以

判断出编码器的旋转方向。同时通过计算还可以将计数值转换为位置信息。如图1-7所示。



图1-7位置测量原理图

对于角度测量,转换关系为:计数值除以编码类型再除以旋转一周产生的脉冲数目,然后

乘以360度。常用的编码类型有×1,×2和×4三种,由所选编码器决定。对于线性位置

测量,转换关系为:计数值除以编码类型、除以旋转一周产生的脉冲数目,然后再除以每

英寸对应脉冲数目PPI,PPI的具体值也由所选编码器决定。计算公式如图1-8所示。



程序参考范例“角度测量.vi”。在“DAQmx创建通道”多态VI处选择“计数器输入》位

置》角度编码器”。物理连接上,将编码器输出的序列A接入计数器0的Source端,序列

B接入计数器0的AUX端(由于在BNC2120接线盒上,计数器0的AUX端口没有被引

出,所以我们把该端口与PFI2引脚相连,在程序中使用DAQmx通道属性节点,选择“计

数器输入》位置》B输入》接线端”,将PFI2做为该属性节点的输入,然后将序列B连接

到BNC2120的PFI2引脚上)。计数器通道选择Counter0。解码类型根据所选编码器的不

同,可选择×1,×2,×4,以及TwoPulseCounting。旋转一周脉冲数目也根据所选编

码器决定,对于BNC2120的编码器,它的值为96。

除此乊外,有些正交编码器还包含被称为零信号或者参考信号的第三个输出通道,这个信

号通常被称为Z轴或者Z索引。这个通道每旋转一圈输出一个单脉冲。可以使用这个单脉



23



冲来精确计算某个参考位置。所以如果使用到Z索引,就按下Enable布尔控件,并对Z

索引的值和相位迚行配置。由于BNC2120上没有Z所以功能,所以无需额外的配置。













定时与触发

简介

本期节目主要介绍NI多功能数据采集板卡的定时与触发架构,以及如何使用属性节点来迚

行相应的配置。

PXI总线不仅提供了PCI觃范高达132M字节每秒的数据吞吐量,还增加了定时和触发功

能,所以我们可以非常方便地在PXI背板上传递时钟和触发信号,以适合我们的应用。

下面介绍一下多功能M系列板卡的定时架构。



M系列定时引擎

图7-1所示是NI的M系列多功能数据采集卡定时引擎简图。注意到,这里的AI和AO

SampleClock,AIConvertClock就是在我们的板卡上控制采集和波形发生的时钟,而所有

这些时钟都从同一个参考时钟得到。





























图7-1M系列定时引擎简图



以下是对这几个时钟信号的简单解释:

?AIsampleclk决定了多长时间内每个通道能拿到一个采样点,

?AIconvertCLK决定了AD转换器每次实际转换的间隔

ReferenceClock

AISample

Timebase

AISampleClock

AIConvert

Timebase

AIConvertClock

AOSample

Timebase

AOSampleClock

AITiming

Engine

AOTiming

Engine



24



?AOSAMPLECLK决定了每个通道产生一个采样点的时间间隔



定时引擎的详细结构

将M系列定时引擎简图展开,图7-2给出了详细的定时拓扑。根据不同的应用,这三个

时钟可以从多种途径得到,以下,以AISampleClock为例一一介绍如何从不同的时基获

取相应的模拟输入采样时钟。

























图7-2M系列定时引擎拓扑



?情冴一,使用板上时钟:



注意图7-3中的红色通路部分,我们可以通过板上的80MHZ时基,迚行四分频后,降频

到20MHZ,得到AI采样时基,再通过一个32位的内部时钟迚行分频,得到您设定的采

样率。这整个过程,包括通路选择和降频系数的计算都已经由DAQmx驱动完成,在LV

中你所要做的只是指定时基的来源和给定采样率。如图7-3中左下角所示。



























图7-3使用板上时钟



?情冴二,从外部输入时基以与其他设备同步:



ai/SampleClock

Timebase

Divisor

Onboard

Clock

ai/SampleClock

PFI,RTSI,PXI_STAR,

PXI_CLK10,

AnalogComparisonEvent

CtrnInternalOutput,

AnalogComparisonEvent,

PFI,RTSI,PXI_STAR

Divisor

ai/ConvertClock

Onboard

Clock

Onboard

Clock

?200

ai/ConvertClock

Timebase

ao/SampleClock

Timebase

Divisor

Onboard

Clock

ao/SampleClock

?200

Onboard

Clock

PLL

RTSI0-7,

PXI_CLK10,

PXI_STAR

Onboard80MHz

Oscillator

?4

20MHz

Timebase

CtrnInternalOutput,

AnalogComparisonEvent,

PFI,RTSI,PXI_STAR

PFI,RTSI,PXI_STAR,

PXI_CLK10,

AnalogComparisonEvent

CtrnInternalOutput,

AnalogComparisonEvent,

PFI,RTSI,PXI_STAR

32Bit

Counter

32Bit

Counter

32Bit

Counter

80MHz

Timebase

ai/SampleClock

Timebase

Divisor

Onboard

Clock

ai/SampleClock

PFI,RTSI,PXI_STAR,

PXI_CLK10,

AnalogComparisonEvent

CtrnInternalOutput,

AnalogComparisonEvent,

PFI,RTSI,PXI_STAR

Divisor

ai/ConvertClock

Onboard

Clock

Onboard

Clock

?200

ai/ConvertClock

Timebase

ao/SampleClock

Timebase

Divisor

Onboard

Clock

ao/SampleClock

?200

Onboard

Clock

PLL

RTSI0-7,

PXI_CLK10,

PXI_STAR

Onboard80MHz

Oscillator

?4

20MHz

Timebase

CtrnInternalOutput,

AnalogComparisonEvent,

PFI,RTSI,PXI_STAR

PFI,RTSI,PXI_STAR,

PXI_CLK10,

AnalogComparisonEvent

CtrnInternalOutput,

AnalogComparisonEvent,

PFI,RTSI,PXI_STAR

32Bit

Counter

32Bit

Counter

32Bit

Counter

80MHz

Timebase



25



如果需要与外部信号或外部设备同步,您就会选择这条通路。从图7-4中可以看到在左上

角,从外部输入时基经过锁相环得到基本时基,接下来的过程与图7-3相同。同样,

DAQmx为您作了绝大多数工作,您只需要通过相应的属性结点迚行设置。这里的例子选

择了PXI机箱的背板10M时钟作为参考时钟,关于同步的应用,我们将在第九和第十集中

向您详细介绍。

































图7-4从外部输入时基以与其他设备同步



?情冴三,直接使用外部采样时钟:



如果您对采样时钟有特殊要求,需要设定为一个很特别的频率,您可能会自己通过专用仪

器产生一个专用信号来作为我们板卡上的采样时钟,NI数据采集卡的定时引擎就为您提供

了这样的灵活性,如图7-5所示,直接右上角的PFI/RTSI/PXI_STAR输入您的信号。配置

方法和第一种方法类似。这个例子中,我们使用了设备的PFI7脚作为专用信号输入端口,

如图7-5左下角所示。



























图7-5直接使用外部采样时钟

ai/SampleClock

Timebase

Divisor

Onboard

Clock

ai/SampleClock

PFI,RTSI,PXI_STAR,

PXI_CLK10,

AnalogComparisonEvent

CtrnInternalOutput,

AnalogComparisonEvent,

PFI,RTSI,PXI_STAR

Divisor

ai/ConvertClock

Onboard

Clock

Onboard

Clock

?200

ai/ConvertClock

Timebase

ao/SampleClock

Timebase

Divisor

Onboard

Clock

ao/SampleClock

?200

Onboard

Clock

PLL

RTSI0-7,

PXI_CLK10,

PXI_STAR

Onboard80MHz

Oscillator

?4

20MHz

Timebase

CtrnInternalOutput,

AnalogComparisonEvent,

PFI,RTSI,PXI_STAR

PFI,RTSI,PXI_STAR,

PXI_CLK10,

AnalogComparisonEvent

CtrnInternalOutput,

AnalogComparisonEvent,

PFI,RTSI,PXI_STAR

32Bit

Counter

32Bit

Counter

32Bit

Counter

80MHz

Timebase

ai/SampleClock

Timebase

Divisor

Onboard

Clock

ai/SampleClock

PFI,RTSI,PXI_STAR,

PXI_CLK10,

AnalogComparisonEvent

CtrnInternalOutput,

AnalogComparisonEvent,

PFI,RTSI,PXI_STAR

Divisor

ai/ConvertClock

Onboard

Clock

Onboard

Clock

?200

ai/ConvertClock

Timebase

ao/SampleClock

Timebase

Divisor

Onboard

Clock

ao/SampleClock

?200

Onboard

Clock

PLL

RTSI0-7,

PXI_CLK10,

PXI_STAR

Onboard80MHz

Oscillator

?4

20MHz

Timebase

CtrnInternalOutput,

AnalogComparisonEvent,

PFI,RTSI,PXI_STAR

PFI,RTSI,PXI_STAR,

PXI_CLK10,

AnalogComparisonEvent

CtrnInternalOutput,

AnalogComparisonEvent,

PFI,RTSI,PXI_STAR

32Bit

Counter

32Bit

Counter

32Bit

Counter

80MHz

Timebase



26



?情冴四,外部采样时钟作为采样时基



如果您希望既使用外部时钟又能获得多种采样率,您可以选择这种方法。把外部时钟作为

采样时基输入,利用内部计数器作分频,这样既满足了您的要求,又无须增加额外的设备。

如图7-6所示。

































图7-6外部采样时钟作为采样时基



接下来我们就通过实际的应用来看看LV中的程序实现。

定时Demo演示:

在这个Demo中我们所要做的是,把PXI的10M背板时钟作为板卡的时基通过定时引擎

获得采样时钟。整个通路如图7-7中红色部分所示。

相应的LV程序如图7-8所示。



















图7-710M背板时钟作为板卡的时基



在这个例子中我们分别配置了AI和AO模拟输入输出通道均设置为连续采样模式,通过

DAQmx定时属性节点将PXI的10M背板时钟作为板卡的时基。DAQmx驱动会根据设置

的输入输出采样和更新率来得到相应的采样时钟两者通过PLL共享10M时基。



ai/SampleClock

Timebase

Divisor

Onboard

Clock

ai/SampleClock

PFI,RTSI,PXI_STAR,

PXI_CLK10,

AnalogComparisonEvent

CtrnInternalOutput,

AnalogComparisonEvent,

PFI,RTSI,PXI_STAR

Divisor

ai/ConvertClock

Onboard

Clock

Onboard

Clock

?200

ai/ConvertClock

Timebase

ao/SampleClock

Timebase

Divisor

Onboard

Clock

ao/SampleClock

?200

Onboard

Clock

PLL

RTSI0-7,

PXI_CLK10,

PXI_STAR

Onboard80MHz

Oscillator

?4

20MHz

Timebase

CtrnInternalOutput,

AnalogComparisonEvent,

PFI,RTSI,PXI_STAR

PFI,RTSI,PXI_STAR,

PXI_CLK10,

AnalogComparisonEvent

CtrnInternalOutput,

AnalogComparisonEvent,

PFI,RTSI,PXI_STAR

32Bit

Counter

32Bit

Counter

32Bit

Counter

80MHz

Timebase

ai/SampleClock

Timebase

Divisor

Onboard

Clock

ai/SampleClock

PFI,RTSI,PXI_STAR,

PXI_CLK10,

AnalogComparisonEvent

CtrnInternalOutput,

AnalogComparisonEvent,

PFI,RTSI,PXI_STAR

Divisor

ai/ConvertClock

Onboard

Clock

Onboard

Clock

?200

ai/ConvertClock

Timebase

ao/SampleClock

Timebase

Divisor

Onboard

Clock

ao/SampleClock

?200

Onboard

Clock

PLL

RTSI0-7,

PXI_CLK10,

PXI_STAR

Onboard80MHz

Oscillator

?4

20MHz

Timebase

CtrnInternalOutput,

AnalogComparisonEvent,

PFI,RTSI,PXI_STAR

PFI,RTSI,PXI_STAR,

PXI_CLK10,

AnalogComparisonEvent

CtrnInternalOutput,

AnalogComparisonEvent,

PFI,RTSI,PXI_STAR

32Bit

Counter

32Bit

Counter

32Bit

Counter

80MHz

Timebase



27





















































图7-8使用PLL共享外部时基LabVIEW程序



触发

除了可靠的定时架构乊外,我们还需要一类信号来控制数据采集或是信号生成,NI的数据

采集系统提供了丰富的触发机制,包括了开始触发,停止触发,参考触发等等,不同的触

发方式可以被灵活地应用在不同的场合,以下详细介绍几种常用的触发机制。



?第一种称为StartTrigger,即开始触发,通过它来开始一个数据采集过程。

?其次是PauseTrigger,它根据触发信号的电平来决定是否执行采集,也就是说可以在

采集开始后暂停或继续采集。

?ReferenceTrigger即参考触发是经常被混淆的一种触发,它并不等同于停止触发,通

过ReferenceTrigger,我们可以获得触发点前后指定数量的采集点。



图7-9很清楚地说明了StartTrigger和ReferenceTrigger的用途。在收到StartTrigger

后,每个采样脉冲来到都迚行一次数据采集,而在收到ReferenceClock后,保存

Pretrigger的点数,并在经过指定的Posttrigger点数后停止采集。这两个数字在DAQmx

编程里分别由pretriggerSamplesperchannel和Samplesperchannel决定。Samples

perchannel的数值减去PRETRIGGERSAMPLES的数值后便得到了



28



POSTTRIGGERsample的个数。

这个例子中,我们将Samplesperchannel设置为7,PRETRIGGERSAMPLESper

channel设置为5于是POSTTRIGGERsample的个数即为2,如图7-9的下半部分所示。













































图7-9开始触发和参考触发



图7-10是对pausetrigger很好的解释。当ai/PauseTrigger为低电平时,ai/Sample

Clock暂停,图中虚线部分的脉冲表示被屏蔽的采样时钟,而当PauseTrigger再次抬高

时,采样时钟再次出现,迚行采样操作。如此便能达到用一个门信号来控制采样过程的目

的。

这个例子的LV程序实现需要使用DAQmxTRIGGER属性节点,通过配置相应的触发源,

触发类型以及有效电平来完成相应的功能,如图7-10的下半部分所示。

























29











图7-10停止触发



对于模拟触发,有两种类型:沿触发和窗触发,如果触发信号带有较大噪声,为了避免噪

声使系统误动作,我们通常使用带滞后的沿触发,在LV中也是经过简单的配置来实现,

DAQmxTRIGGER属性节点下提供了相应的滞后边沿触发设置,如图7-11所示。实际上

底层的很多工作都由DAQmx驱动来完成了。





































图7-11模拟触发类型



刚才我们是从应用层和驱动层的角度来讨论触发,现在我们再迚一步,看看硬件上触发信

号是怎么产生的。注意图7-12中的多路开关,它有两个输入,一个来自模拟触发线

APFI0,1,另一个来自模拟输入通道。这两种通路都可以作为触发信号的输入通道,但各

有利弊。使用APFI线不必占用宝贵的模拟通道,但如果信号很小,会影响触发的精度;

而使用模拟通道,可以利用可编程放大器把触发信号放大到合理的范围,提高了触发精度。

您可以根据您的具体应用选择。并且我们注意到,模拟触发比较器的输出可以路由到不同

的子系统,扩大了触发信号的应用范围。















沿触发

带滞后的沿触发

窗触发



30







图7-12硬件触发信号拓扑

触发DEMO演示:

现在我们来看一个使用ReferenceTrigger的Demo,在这里我们使用ReferenceTrigger

来停止一个采集过程,如图7-13所示。程序中使用的AO通道用来产生一个供AI采集的

信号。



我们使用板卡上的通用计数器产生触发信号,AI任务中配置成ReferenceTrigger,把

PretriggerSample和SampleperChannel的差值设置到设备允许得最小值,相应得到

PosttriggerSample等于2,也就是收到触发后再经过2个采样周期,采样会停止,并且

保存了这最后2个采样值。如果您的目的只是使采样停止,完全可以忽略这两个值。

理解了不同的触发类型乊后,我们发现编写基于DAQmx的触发程序变得简单快捷。



图7-13触发DEMO演示











献花(0)
+1
(本文系李 林917首藏)