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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/255933.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

函数torch.bincount( )的用法

torch.bincount()函数是PyTorch中的一个函数&#xff0c;用于计算一维整数张量中每个非负整数值出现的频次 函数的用法 &#xff1a; torch.bincount(input, weightsNone, minlength0) → Tensor 参数&#xff1a; input&#xff1a;输入的一维整数张量weights&#xff08;…

2024免费mac苹果电脑系统电脑管家CleanMyMac X

macOS已经成为最受欢迎的桌面操作系统之一&#xff0c;它提供了直观、简洁的用户界面&#xff0c;使用户可以轻松使用和管理系统。macOS拥有丰富的应用程序生态系统&#xff1b;还可以与其他苹果产品和服务紧密协作&#xff0c;如iPhone、iPad&#xff0c;用户可以通过iCloud同…

CompleteFuture与Future的比较

CompleteFuture的介绍CompleteFuture的特点CompleteFuture的应用场景CompletableFuture的优缺点Future的介绍Future的特点Future的应用场景Future的优缺点CompletableFuture和Future的区别CompletableFuture和Future的关联关系CompletableFuture和Future的使用示例CompletableF…

基于点云去滤除灰尘的滤波算法调研

背景 激光雷达在恶劣天气下会影响感知识别的精度,造成误差,将灰尘,雨雪误识别为障碍物,为了降低对灰尘的误检,因此调研相关的灰尘滤波算法。 方法1 反射强度滤波+半径异常值移除 Design of a LIOR-Based De-Dust Filter for LiDAR Sensors inOff-Road Vehicles 1 上文中…

卷积神经网络的学习与实现

基于matlab的卷积神经网络(CNN)讲解及代码_matlab中如何查看cnn损失函数-CSDN博客 可以看到与BP神经网络相比&#xff0c;卷积神经网络更加的复杂&#xff0c;这里将会以cnn作为学习案例。 1.经典反向传播算法公式详细推导 这里引用经典反向传播算法公式详细推导_反向目标公…

关联规则 FP-Growth算法

FP-Growth算法 FP-growth 算法思想 FP-growth算法是韩家炜老师在2000年提出的关联分析算法&#xff0c;它采取如下分治策略: 将提供频繁项集的数据库压缩到一棵频繁模式树 (FP-Tree)但仍保留项集关联信息。FP-growth算法是对Apriori方法的改进。生成一个频繁模式而不需要生成…

SQLSERVER数据库主要状态和切换路径

前言 一个SQLSERVER数据库会处于很多种状态&#xff0c;例如 ONLINE 、RESTORING 、RECOVERING 、RECOVERY_PENDING 、SUSPECT、EMERGENCY 、OFFLINE等等。 只有在ONLINE的状态下&#xff0c;数据库才能被正常访问。 下图主要反映了数据库的主要状态之间的切换路径 下面说一…

【MAC】M2 安装mysql

一、docker下载地址 下载地址 二、安装docker完成 三、安装mysql 一、拉取镜像 # 拉取镜像 docker pull mysql# 或者 docker pull mysql:latest# 以上两个命令是一致的&#xff0c;默认拉取的就是 latest 版本的# 我们还可以用下面的命令来查看可用版本&#xff1a; docker…

数据结构(Chapter Two -02)—顺序表基本操作实现

在前一部分我们了解线性表和顺序表概念&#xff0c;如果有不清楚可以参考下面的博客&#xff1a; 数据结构(Chapter Two -01)—线性表及顺序表-CSDN博客 首先列出线性表的数据结构&#xff1a; #define MaxSize 50 //定义顺序表最大长度 typedef struct{ElemType data…

HarmonyOS4.0从零开始的开发教程19HarmonyOS应用/元服务上架

HarmonyOS&#xff08;十七&#xff09;HarmonyOS应用/元服务上架 概述 当您开发、调试完HarmonyOS应用/元服务&#xff0c;就可以前往AppGallery Connect申请上架&#xff0c;华为审核通过后&#xff0c;用户即可在华为应用市场获取您的HarmonyOS应用/元服务。 HarmonyOS会…

xxl-job 分布式调度学习笔记

1.概述 1.1什么是任务调度 业务场景&#xff1a; 上午10点&#xff0c;下午2点发放一批优惠券 银行系统需要在信用卡到期还款日的前三天进行短信提醒 财务系统需要在每天凌晨0:10分结算前一天的财务数据&#xff0c;统计汇总 不同系统间的数据需要保持一致&#xff0c;这时…

3.2 内容管理模块 - 课程分类、新增课程、修改课程

内容管理模块-课程分类、新增课程、修改课程 文章目录 内容管理模块-课程分类、新增课程、修改课程一、课程分类1.1 课程分类表1.2 查询树形结构1.2.1 表自连接1.2.2 SQL递归 1.3 Mapper1.4 Service1.5 Controller1.6 效果图 二、添加课程2.1 需求分析2.2 数据表2.2.1 课程基础…

html之CSS的高级选择器应用

文章目录 一、CSS高级选择器有哪些呢&#xff1f;二、高级选择器的应用1、层次选择器后代选择器子选择器相邻兄弟选择器通用兄弟选择器 2、结构伪类选择器&#xff08;不常用&#xff09;3、属性选择器E[attr]E[attrval]E[attr^val]E[attr$val]E[attr*val] 一、CSS高级选择器有…

LeetCode 每日一题 Day 13 || BFS

2415. 反转二叉树的奇数层 给你一棵 完美 二叉树的根节点 root &#xff0c;请你反转这棵树中每个 奇数 层的节点值。 例如&#xff0c;假设第 3 层的节点值是 [2,1,3,4,7,11,29,18] &#xff0c;那么反转后它应该变成 [18,29,11,7,4,3,1,2] 。 反转后&#xff0c;返回树的根…

NLP论文阅读记录-ACL 2023 | 10 Best-k Search Algorithm for Neural Text Generation

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.相关工作2.1优势2.2 挑战 三.本文方法3.1 并行探索3.2 时间衰变3.3堆修剪3.4 模型得分 四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4评估指标4.5 实验结果 五 总结 前言 用于神经文本生成…

安全生产隐患排查治理信息化系统软件

安全隐患排查系统实现对重大危险源企业、安全隐患信息的登记、整改、复查、分类和统计。系统涵盖了安全隐患排查整治工作的各项基本内容&#xff0c;实现以安全隐患排查整治业务流为主线&#xff0c;处理流程简洁清晰、快速灵活&#xff1b;以排查整治流程为干线&#xff0c;快…

Linux--学习记录(3)

G重要编译参数 -g&#xff08;GDB调试&#xff09; -g选项告诉gcc产生能被GNU调试器GDB使用的调试信息&#xff0c;以调试程序编译带调试信息的可执行文件g -g hello.c -o hello编译过程&#xff1a; -E&#xff08;预处理&#xff09; g -E hello.c -o hello.i-S&#xff08;编…

基于springboot+vue 的智能物流管理系统

简介 基于springbootvue 的智能物流管理系统 适用于 设计&#xff0c;课程设计参考与学习用途。仅供学习参考。 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料 **项目编号&#xff1a;springboot074 ** **…

算法专题二:滑动窗口

算法专题二&#xff1a;滑动窗口 一.长度最小的子数组&#xff1a;1.思路一&#xff1a;暴力解法2.思路二&#xff1a;滑动窗口双指针3.GIF题目解析&#xff1a;思路一&#xff1a;思路二&#xff1a; 二.无重复字符的最长子串&#xff1a;1.思路一&#xff1a;滑动窗口2.GIF题…

制作一个多行时正确宽度的Textview,Android Textview 换行时宽度过长 右侧空白区域挤掉页面元素的解决方案

优化 Android 布局&#xff1a;创建自适应宽度的 TextView 引言 在Android应用开发中&#xff0c;布局优化是提升应用性能和用户体验的关键环节之一。特别是对于那些内容密集型的应用&#xff0c;如何高效地展示和管理文本内容成为了一个挑战。最近&#xff0c;在处理一个布局…