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

2023-12-19 07:12

本文主要是介绍【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文件

这篇关于【NI-RIO入门】使用LabVIEW进行数据采集测量的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/511315

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件