【NI-RIO入门】使用LabVIEW进行数据采集测量

于ni kb摘录

选择合适的编程模式

CompactRIO系统具有至少两个用户可选模式。某些CompactRIO型号具有附加的用户可选模式,可以在实时NI-DAQmx中进行编程。请参考本文以判断您的CompactRIO是否能够使用实时NI-DAQmx。将目标添加到项目后,将提示您选择要使用的编程模式。
注意 :如果需要,您可以稍后使用CompactRIO机箱属性对话框更改编程模式。

实时(NI-DAQmx)模式 --带有NI-DAQmx的CompactRIO是CompactRIO控制器系列的最新产品。通过结合使用NI-DAQmx的易用性和LabVIEW FPGA的低级功能,将两种软件体验融为一体。它还通过将最新的同步和控制技术引入CompactRIO平台来简化系统架构。要在这种模式下对C系列模块进行编程,请将其放置在LabVIEW项目的Real-Time Resources文件夹下。

实时扫描(I/O变量)模式 --此选项使您可以对CompactRIO系统的实时处理器进行编程,而不能对FPGA进行编程。在这种模式下,NI为FPGA提供了预定义的特征,该特征会定期扫描I/O并将其放置在内存映射中,从而可用于LabVIEW Real-Time。对于需要以几百赫兹的速率单点访问I/O的应用程序,CompactRIO实时扫描模式已足够。要在这种模式下对C系列模块进行编程,请将其放置在LabVIEW项目的Real-Time Scan Resources文件夹下。要了解有关扫描模式的更多信息,请阅读理解NI CompactRIO扫描模式白皮书并查看 基准
注意 :NI建议使用实时(NI-DAQmx)模式,而不是实时扫描(I/O变量)模式。

LabVIEW FPGA接口模式 --该选项使您不仅可以对实时处理器进行编程,还可以通过自定义FPGA个性来释放CompactRIO的真正功能,从而获得通常需要自定义硬件的性能。使用LabVIEW FPGA,您可以实现自定义定时和触发,卸载信号处理和分析,创建自定义协议以及以最大速率访问I/O。要在此模式下对C系列模块进行编程,请将其放置在LabVIEW项目中的FPGA目标下。

LabVIEW现在将尝试检测系统中存在的机箱和C系列I/O模块,并将它们自动添加到LabVIEW项目中。

扫描模式 FPGA 数据采集​​模块
* 易于编程:在开发过程中将 I/O 变量直接拖放到 LabVIEW Real-Time VI 中。 * 动态检测 I/O 模块的能力:未通过项目配置的插槽会自动检测插入的模块。然后您可以通过变量 API 配置这些模块。 * 故障引擎:NI 扫描引擎具有内置 NI 故障引擎,可确定性地引发错误。 * 诊断和调试:使用分布式系统管理器,您可以在程序运行时查看当前值和故障以及覆盖当前 I/O 值。 * 最高性能和可靠性:由于 FPGA 芯片上没有操作系统,因此代码的实现方式可确保最高性能和可靠性。 * 高速波形采集/生成(>500 Hz):您可以使用单点 I/O 与多通道、可调 PID 或其他控制算法来实现确定性控制环路速率超过 1 MHz。 * 自定义触发/定时/同步:借助可重新配置的 FPGA,您可以创建简单、高级或以其他方式自定义的触发器、定时方案以及 I/O 或机箱同步实现. * 基于硬件的分析/生成和协处理:许多传感器输出的数据超出了实时处理器单独合理处理的数据量。 * 简单配置:不需要大量低级编程,因为驱动程序会为您完成大量配置。 * 熟悉的API:这是其他DAQ卡使用的API,因此对于使用过其他DAQ平台的程序员来说很熟悉。 * 有限支持:DAQmx 仅在某些 cRIO 设备上受支持,如上面 DAQmx 部分的链接所示。

注意 :如果未发现您的系统,并且选择离线添加,则需要手动添加机箱和C系列I/O。本文档讨论了扫描模式和FPGA模式的此过程。

下图显示了每种模式如何通过唯一路径发送I/O数据。对于实时(NI-DAQmx)模式,通过NI-DAQmx VI通过处理器读取数据。对于实时扫描(I/O变量)模式,数据通过FPGA发送,但通过将IO节点拖放到实时VI中,最终可以在处理器上访问。对于LabVIEW FPGA模式,可通过将IO节点拖放到FPGA VI直接从FPGA内部读取I/O。

如果您的开发计算机上装有LabVIEW Real-Time,LabVIEW FPGA和NI-DAQmx,则可以通过将模块放在项目中的适当标题下,来选择基于每个模块使用的编程类型。编程模式由LabVIEW项目中模块旁边的文本指示。您还可以通过从Measurement and Automation Explorer(MAX)的下拉菜单中选择要使用的编程模型。

在CompactRIO上创建一个基本的日志记录应用程序

本节分为三个小节,向您展示如何创建基本的温度记录应用程序。请根据您所需的编程模式和CompactRIO控制器选择一个部分。如果不确定所需的编程模式,请参考"**选择恰当的编程模式"**部分。这些部分按以下顺序列出

  1. NI-DAQmx API
  2. FPGA编程模式
  3. 实时扫描模式

1.使用NI-DAQmx API

NI-DAQmx驱动程序带有各种示例VI,可帮助用户熟悉NI-DAQmx API。本节将指导您如何将NI-DAQmx示例导入CompactRIO终端。我们将导入热电偶-连续输入VI。

  1. 通过选择文件>>创建项目,在LabVIEW中创建一个新项目。
  2. 要将您的CompactRIO系统添加到项目中,请右键单击树顶部的"项目",然后选择"新建>>终端和设备..."。

3.该对话框使您可以发现网络上的系统或添加离线系统。展开Real-Time CompactRIO文件夹 ,选择cRIO-904x系统,然后单击OK 。注:如果未列出您的系统,LabVIEW将无法在网络上检测到该系统。确保在Measurement&Automation Explorer中为系统正确配置了有效的IP地址。如果您的系统位于远程子网中,则也可以选择手动输入IP地址。

4.要将"热电偶-连续输入.vi"添加到LabVIEW项目中,请右键单击cRIO-904x目标,然后选择"添加>>" 。这将打开文件资源管理器。

NI-DAQmx示例将默认安装到以下位置:

C:\Program Files(x86)\National Instruments\LabVIEW <xxxx>\ examples\DAQmx

(在x32 OS上,默认文件路径为C:\Program Files\National Instruments\LabVIEW <xxxx>\examples\DAQmx)。

5.通过将模块移至"实时资源"项目下,确保已配置为在热电偶-连续输入.vi的NI-DAQmx任务中使用的模块处于实时(NI-DAQmx)模式。还要确保将编程模式的所有更改都部署到目标。

6.打开VI并为相应的模块和通道配置物理通道控件/常量。注意:NI-9211要求的采样率低于本示例VI中观察到的默认值。

7.打开程序框图。导航至框图的"**定时设置"**部分。

8.在DAQmx定时属性节点条件结构 之间实现DAQmx配置记录(TDMS)VI 。确保通过DAQmx配置日志记录(TDMS)VI连接任务接线和错误接线。

9.右键单击记录模式 终端,然后选择创建>>常量 。确保常量设置为记录并读取-Log and Read

10.右键单击文件路径 终端,然后选择创建>>常量 。有关如何引用文件路径的说明,请参考"**使用CompactRIO实时扫描模式"**部分的步骤23。

11.确认您的DAQmx配置记录(TDMS)VI的配置 如下所示。

12.导航到前面板并运行该应用程序。

13.查看和记录数据完成后,单击"**停止"**按钮。您可以从本文档的"下载/附件"部分下载解决方案。

2.使用LabVIEW FPGA接口模式

LabVIEW FPGA接口模式能够利用CompactRIO的板载FPGA来提高性能和确定性。使用cRIO-9074上的NI-9205为该应用创建了一个示例项目来记录温度,该项目可在此页面的下载/附件部分中找到。该项目包含两个VI,如下所示。

如下面的框图所示, FPGA VI 使用DMA FIFO与RT VI 进行通信。在实时处理器上运行的VI将需要从DMA FIFO中读取值。请参考示例项目,以帮助理解RT VI用于读取和存储从板载FPGA接收的温度值的方法。

3.使用CompactRIO实时扫描模式

本节将引导您使用扫描模式在CompactRIO上创建基本的记录应用程序。现在,您应该有一个包含您的CompactRIO系统的新LabVIEW项目,包括控制器,机箱和C系列I/O模块。在本教程中,我们将使用NI 9211热电偶输入模块。但是,任何模拟输入模块均可遵循该过程。您也可以从此页面的"下载/附件"部分下载解决方案。
注意:NI建议使用实时(NI-DAQmx)模式,而不是实时扫描(I/O变量)模式。

  1. 通过选择左上角的文件>>保存来保存项目。
  2. 输入名称为"使用扫描模式的基本记录",然后单击"**确定"**关闭对话框窗口。

3.通过右键单击项目中的CompactRIO控制器并选择新建>>VI来创建VI 。将VI另存为RT.vi。该项目将仅包含一个VI,即在CompactRIO控制器上运行的LabVIEW Real-Time应用程序。

4.如下图所示,在RT.vi框图上放置带有三个帧的平铺式顺序结构。该应用程序的基本操作将包括三个步骤:启动,运行和关闭。平铺式顺序结构是强制执行此操作顺序的简便方法。

5.定时循环添加到序列结构的"运行"帧中。定时循环提供了以不同时间为基础同步代码的能力,包括读取和写入扫描模式I/O的NI扫描引擎。

6.双击左侧输入节点上的时钟图标以配置定时循环。

7.选择"**同步到扫描引擎"**作为循环时钟源。

8.单击确定。这将导致定时循环中的代码在每次I/O扫描后立即执行一次,确保此定时循环中使用的任何I/O值都是最新的值。

9.右键单击LabVIEW项目中的CompactRIO控制器,然后选择属性

10.从左侧的类别中选择"扫描引擎" ,然后输入100ms 作为"扫描周期"。这将导致CompactRIO系统中的所有I/O每100毫秒(10Hz)更新一次。也可以从此页面设置网络发布时间,该页面控制将I/O值发布到网络以进行远程监视和调试的频率。单击确定

11.通过单击并使用Shift键选择模块下面的所有通道,然后将它们拖放到RT.vi图上的定时循环中,如下所示。使用CompactRIO扫描模式时,您只需将I/O变量从LabVIEW项目拖放到程序框图中。展开要记录的CompactRIO控制器,机箱和I/O模块。

提示 :使用LabVIEW工具栏上的对齐对象>>左边缘 and 分布对象>>垂直压缩项在图表上组织I/O变量。

12.在定时循环下的"运行"帧中放置一个普通的while循环,该循环将用于文件I/O任务。由于文件I/O占用时间并减少了时间,因此必须将I/O采集任务和文件I/O任务分开。忽略此要求可能导致数据丢失,因为文件I/O可能比I/O扫描花费更长的时间,从而导致样本丢失。

为了在常规while循环中将数据写入磁盘,您需要使用实时FIFO从定时循环中传输I/O值。这将在两个循环之间提供一个缓冲区。定时循环将运行,同步I/O扫描,并每次将新的I/O值写入缓冲区。然后,常规的while循环将从缓冲区中读取数据并将其写入磁盘。通过这种方式将I/O任务和磁盘访问分开,可以使定时循环以"实时"性能运行,这意味着它将始终按时完成。

13.在LabVIEW项目中,右键单击CompactRIO控制器,然后选择新建>>变量

14.将变量命名为Data buffer,选择单进程-Single Process作为变量类型。

15.选择双精度数组作为数据类型。这将创建一个局部范围的变量(无网络发布),该变量包含双精度浮点数和数组。

16.然后从左侧菜单中选择RT FIFO

17.选中" RT FIFO"类别后,选中"启用RT FIFO" 复选框,为" FIFO类型"选择"多元素"。

18.输入50作为数组的数量,并输入4 作为元素的数量(如果记录的通道数不是4,则输入该数字。)这会将变量配置为作为实时安全FIFO运行,可以用作实时和低优先级任务之间的数据缓冲区。 FIFO将容纳五十一个一维数组,每个数组包含四个双精度数字。单击确定

19.将数据缓冲区 RT FIFO拖放到定时循环中, 并使用Build Array函数从I / O变量构建数组,然后将其传递到RT FIFO。

20.将数据缓冲区 RT FIFO的其他副本拖放到常规while循环中,您将在其中读取数据并将其记录到磁盘。

21.右键单击RT FIFO,然后选择Show Timeout 并设置超时100 。这将导致RT FIFO最多等待100毫秒,等待新数据在超时之前到达缓冲区。如果缓冲区中存在数据,则RT FIFO将立即返回缓冲区中最早的数据。

22.将TDMS Open VI放置在序列结构的启动帧中。

23.为文件路径操作 输入创建常量。在文件路径中键入c:\tempdata.tdms,然后选择创建或替换 操作。如果您的CompactRIO控制器正在运行其他实时操作系统,请选择以下所示的适当文件路径。请参阅实时控制器和实时操作系统兼容性以获取更多信息。

24.在此处下载该文件,或将以下VI片段从Web浏览器拖放到图表中以执行文件I/O。

25.将此代码放置在常规的while循环中,并按如下所示进行接线。仅当RT FIFO不超时时才使用条件结构执行此部分代码,这表明已从缓冲区返回新数据。然后,将数据格式化以写入TDMS文件并显示在波形图上。除了检查错误作为停止条件之外,还提供了while循环的停止按钮。

将此VI代码段拖至VI的程序框图

26.在LabVIEW项目中,右键单击自动创建的现有库,其中包含数据缓冲区变量,然后选择新建>>变量 ,以创建另一个共享变量

27.将变量命名为stop,选择单进程 ,然后选择布尔-Boolean 。选择左侧的RT FIFO类别。

28.选择启用RT FIFO ,保留单个元素的选择,然后单击确定。这将创建一个可以在需要实时性能的任务中安全读取的变量。

29.将stop 变量的副本放置在定时循环中,并将其连接到stop条件

30.如图所示,将stop 变量的另一个副本放入常规while循环中,然后将OR函数的结果写入其中。当常规while循环停止时,这将导致定时循环停止。

31.将TDMS关闭 功能放在关机框架中,并将文件引用和错误簇连接到该框架。另外,从TDMS关闭错误输出终端创建并指示。完成的应用程序应如下图所示:

32.单击**"** 在RT.vi上运行 ",单击"保存"保存 所有未保存的项目,然后在任何有关将更改应用于CompactRIO系统的对话框或警告中单击"确定"。 LabVIEW现在将通过以太网部署您的VI,以在CompactRIO系统上嵌入式运行。

33.VI部署并开始运行后,查看VI的前面板以查看当前I/O值在波形图上的绘制。

34.查看和记录数据完成后,请单击"停止"

恭喜你!您已经使用LabVIEW和CompactRIO成功创建了嵌入式数据记录应用程序。要继续学习,请查看"使用LabVIEW和CompactRIO嵌入式编程"页面上的其他资源。

访问记录的数据

完成这些步骤以检索和查看CompactRIO系统上记录的数据。如果您的系统上未安装FTP服务器,则CompactRIO也支持WebDAV(Web分布式编写和版本控制)。这是使用标准Web浏览器交换文件的安全选择。有关更多信息,请参见使用WebDAV将文件传输到实时RT目标

  1. 使用Windows资源管理器或Web浏览器,导航到ftp://<ip地址>,其中<ip地址>是CompactRIO系统的IP地址。
  2. 下载tempdata.tdms(或您命名的TDMS文件)
  3. 如果您具有Microsoft Excel,则可以通过选择"加载项Add-Ins" 标签并单击" TDM导入器 " 来查看TDMS文件。工作簿的第一页包含文件信息,其余工作表包含通道数据。默认情况下,TDM Importer随LabVIEW一起安装。但是,如果不存在TDM Importer,则可以从此处安装它。

4.如果没有Excel,则可以在LabVIEW中使用TDMS File Viewer VI查看TDMS文件

相关推荐
LabVIEW开发1 天前
什么样的LabVIEW控制算自动控制?
算法·labview
LabVIEW开发2 天前
LabVIEW中什么和C 语言指针类似?
c语言·开发语言·labview
乌恩大侠3 天前
使用 Ettus USRP X410 进行无线系统原型开发的 LabVIEW 参考架构软件
labview
自小吃多4 天前
LabVIEW 保存文件
labview
LabVIEW开发13 天前
LabVIEW调用Thorlabs的动态库进行开发
labview·labview知识
LabVIEW开发18 天前
LabVIEW氢同位素单质气体定量分装系统
labview·labview开发案例
LabVIEW开发20 天前
LabVIEW氢气纯化控制系统
labview·labview开发案例
葛小白121 天前
第四天 Labview交互也很轻松(4.2 串口通信)
labview
自小吃多22 天前
LabVIEW 标准状态机设计模式
笔记·学习·labview
LabVIEW开发22 天前
LabVIEW进行仪器串行通信与模拟信号采集的比较
labview·labview知识