Labview - DAQ 助手详解
DAQ 助手简介
Express VI
Express VI
是 LabVIEW 7 及更高版本拥有的快速 VI,此类 VI 将一些常见的功能打包,然后封装在简单易用的交互式的 VI 程序中,方便开发人员配置参数和实现功能。
DAQ
助手是完成信号采集任务的常用工具,以 Express VI
的形式呈现,具有交互式的配置界面,配合 NI 公司提供的采集卡,可以完成绝大部分的信号采集任务。
使用方法简述(采集 AI 信号)
选择信号类型
在采集卡(虚拟的或实际的均可)已连接的情况下,从 VI 的程序框图中打开 DAQ
助手,选择待采集信号的类型,此处选择模拟输入电压信号。
选择物理通道
选择通道时,按住Ctrl
或 Shift
可同时选择多路通道
配置信号采集参数
配置界面中可以进行物理通道的删除与添加,通道名称的修改,接线端连接方式的选择,采集模式的选择等操作,配置界面右侧对于每个选项都有详细说明。
信号采集模式包含“1 采样”、“N 采样”和“连续采样” 3 大类。对于连续采样而言,采样率决定了信号采样的间隔时间,通常将其设为最大有效信号频率的 10 倍左右;采样点数指定了连续采样时的数据缓冲区大小,简单来说,就是每次采样后得到的待处理数据长度,待读取采样与采样率之比就是连续采样的间隔时间。
此外,信号输入范围默认为 -10~10v
;接线端配置默认为差分输入,通常情况下,我们会选择单端输入 RSE
,表示一端接 AGND
,一端接输入端口,不同的接线端配置方式对应的连线图也不一致,在进行信号端口连线时需要按所选方式进行连接。
启用 TDMS 记录
在配置界面中,还可以选择是否将采集的数据记录至 TDMS
文件中,同时可以选择好默认的存储路径、记录模式和组名。如果信号采集结束后需要实时处理,需要将记录模式设为“记录并读取”,如果仅仅是记录而无需处理,则选择“仅记录”。组名将会显示在 TDMS
文件的分组列表中。
如果记录时间很长,长达几个小时甚至几天时,此时由于数据量过大,可以勾选“包含多个文件”,并规定单个文件的存储容量。
配置接口
当采集信息确定好以后,会在程序框图中生成相应的 DAQ
图标,后续如果需要更改参数,可以参考以下两种方法:
- 双击
DAQ
助手,打开配置界面更改需要更新的参数 - 通过
DAQ
助手提供的输入接口,从前面板或程序框图修改相应参数
DAQ 助手程序解析
对 Express VI
而言,双击无法打开程序框图,打开的是配置界面。此外,Express VI
的程序是动态的,对于 DAQ
助手而言,选择不同的通道数,不同的信号类型,其产生的执行程序都不一样。下面以双通道连续采集模拟输入电压信号为例,解析 DAQ
助手的内部执行程序。
Express VI 转标准子 VI
想要查看 DAQ
助手的程序框图,必须先将其转换为标准子 VI,转换方法很简单,选择 DAQ
助手,右键选择“打开前面板”或“open front panel”(英文版)。
整体程序框图
上图是 DAQ
助手的程序框图,可简化为如下图所示的程序流程图,图中的一对移位寄存器代指的是信号采集任务句柄。
程序解析
下面对以上程序框图中的每个模块进行详细分析。
创建采集任务
图中包含两个移位寄存器,上面的寄存器用于存储采集任务的引用句柄,当该句柄无效或首次调用该 VI 时会执行 DAQmx Create Task
函数,即创建新的采集任务,并产生新任务的引用句柄。
生成通道名称
添加物理通道前,需要选择好相应的通道名称,模拟输入信号简称 ai
,通道名称格式为 ain
, n 从 0 开始增加。在此例中,所选通道为 ai0
与 ai1
。设备名为 Dev1
,所以最终得到的通道名称为 Dev1/ai0
与 Dev1/ai1
。正常情况下,该条件结构内的程序仅在首次调用时执行一次。
添加物理通道
确定好通道名称后,便可根据需求添加相应的物理通道了,如图所示,标志 ① 连接的是输入接线端配置参数,往下的参数可以参考如下的函数 IO
接口图。之所以用 for
循环,是因为每个采集通道均需调用一次 DAQmx Create Channel
函数。本例创建的通道数为 2,所以 for
循环的执行次数为 2。
配置采样时钟
对于连续采样模式,必须调用 DAQmx Timing
定时函数,配置好采样率和采样点数。但在此处需要注意的是,DAQ
助手并没有实现采集过程中修改采样频率 Sample rate
的功能,也就是说:在信号采集过程中,无法修改采样频率,直到采集任务出错或停止。如果实际应用中有采集过程中修改采样率的需求,只能另行编写采集程序,这也是 Express VI
不够灵活的一个体现。
配置 TDMS 记录
TDMS
文件记录是非常常用的功能,可以将采集到的信号快速存储至 .tdms
文件中。使用 DAQmx Configure Logging(TDMS)
函数配置 TDMS
记录功能时,可参考如下接口,设置好记录模式、组名、文件路径等。
开始任务
当采集任务相关的参数都配置完成后,即可开始任务 DAQmx Start Task
。
此前 6 个步骤仅需执行一次,直到下一次重启软件或出现异常。
信号采集
开始任务后,物理采集卡就将按照给定的参数开始采集,并将数据存放至采集卡内的缓冲区内,通过相应的 DAQmx Read
函数,选择合适的采样方式(此处选为“模拟1D波形N通道N采样”), DAQ
驱动程序便会从采集卡的缓冲区中读取数据,并默认以动态数据格式 DDT(Dynamic Data Type) 输出。DAQ
助手返回的动态数据便是该函数返回的数据 data
。
异常处理
所谓异常处理,指的注意异常情况是采集卡在信号采集过程中被拔出,导致采集任务无法继续执行,此时 DAQ
助手将会停止并清除任务,并将任务的引用句柄重置为空。下一次 while 循环将判断出该空句柄,然后重新创建任务,如果采集任务被顺利创建,说明异常已解除,采集卡已重新连接,采集任务便可自动继续进行;如果采集任务创建失败,则循环创建任务直到成功为止。
当然还有一种非异常情况也会停止并清除任务,那就是用户手动点击停止按钮 stop ,任务正常终止。
DAQ 助手程序简化
从上面的解析可以看出,DAQ
助手作为通用型工具,包含了所有需要的配置参数。DAQ
助手有其方便之处,但同时也存在许多不灵活的地方:
- 经测试,对于单通道和 N 通道的采集任务,DAQ 助手的执行程序结构完全一致,生成通道名称和添加物理通道均采用了 for 循环结构,这对单通道采集原本是不需要的;
- 实际应用中,添加物理通道时,有许多参数使用默认值即可,过多的参数只会使代码显得冗余;
- 上述提及的一个问题:无法在采集过程中修改采样率;
- 存储 TDMS 文件时,默认会存储所有通道的数据,无法单独指定需要进行数据存储的通道;
- 若要采集编码器的计数值时,使用
DAQ
助手的配置界面无法返回整型的原始计数值。
鉴于以上种种原因,在实际编程过程中,完全可以使用底层的 DAQmx
函数编写信号采集程序,或者在原有的 DAQ
助手程序基础上修改和简化。
简化后程序
此处提供一个将上述代码简化并添加采样率可修改的程序。
在该修改版中,去掉了大量的默认参数,减少了条件分支个数;添加了一个反馈节点,用以判断采样率的变化情况,在采样率改变时,该程序将删除原有任务,并重新创建新的任务。
下载链接
版权声明:本博客所有文章除特殊声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明出处 litreily的博客!