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

2023-12-19 00:17:13

于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文件

文章来源:https://blog.csdn.net/weixin_43894265/article/details/135073025
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。