【NI-RIO入门】扫描模式

news2024/11/27 8:35:04

       于NI KB摘录

         所有CompactRIO设备都可以访问CompactRIO扫描引擎和LabVIEW FPGA。 CompactRIO 904x 系列是第一个引入 DAQmx 功能的产品线。

  • 扫描引擎(IO 变量) – 主要为迁移和初始开发而设计。控制循环频率高达 1 kHz1,性能控制器上的频率更高。
  • 实时 (NI-DAQmx) – 专为波形采集和访问硬件定时而设计。控制环路频率高达 5kHz。
  • LabVIEW FPGA 模块 – 专为定制协议、协同处理和可靠性而设计。 MHz 范围内的控制环路。 

        使用 CompactRIO 扫描模式,您可以选择直接在 LabVIEW Real-Time 和主机应用程序中访问每个 I/O 模块(无需 FPGA 编程)或在 LabVIEW FPGA 中访问,以获得最大的灵活性和性能。您还可以使用新的测试面板和 I/O 强制功能来快速启动和运行、执行高级调试并监控系统性能。

1.什么时候使用扫描模式?

        CompactRIO 扫描模式专为需要高达 1 kHz 速率的同步 I/O 更新的应用而设计1。使用扫描模式的主要好处是易于开发,因为它不需要 FPGA 编程。借助系统管理器的 I/O 强制和测试面板功能,您还可以使用扫描模式进行初始设置、系统性能监控和高级故障排除。

        扫描模式允许用户无需对 FPGA 进行编程即可读取/写入数据。这可以减少不需要板载 FPGA 功率和循环速率的应用的开发时间和复杂性。 

        CompactRIO扫描模式会自动检测CompactRIO机箱中的I/O模块并将它们添加到LabVIEW项目中。然后,您可以将 I/O 变量拖放到 LabVIEW Real-Time 和主机 VI 程序框图上。这些 I/O 变量允许您立即读取和写入缩放的、校准的 I/O 数据,而无需任何 FPGA 编程或编译。您可以创建 I/O 变量的别名,以提供物理 I/O 通道的附加抽象层。 I/O 变量和别名可使用线性和平方根缩放。

 

        NI 扫描引擎是 LabVIEW Real-Time 的一个组件,它以您指定的速率(最高 1 kHz)更新 I/O 变量值1< a i=2>)。所有通道扫描均通过模块间同步进行硬件定时。您可以通过 LabVIEW 项目或以编程方式配置扫描引擎。扫描引擎还提供定时循环定时源,因此您可以将代码与 I/O 更新同步,以实现低抖动控制应用。

        CompactRIO 扫描模式还可以向任何现有的八通道数字 NI C 系列模块添加计数器、正交编码器和脉宽调制 (PWM) 功能,而无需任何 FPGA 编程。您可以通过 LabVIEW 项目配置这些专用数字函数,但它们在 FPGA 上运行以提高准确性和速度。现在,无需编译,您就可以执行高达 1 MHz 的边沿计数、脉冲宽度和频率测量、正交解码和 PWM 控制。

计数器功能包括: 

  • 八个通道 1 MHz
  • 32位寄存器,具有可编程终端计数
  • 可配置的终端计数和终端计数行为
  • 可配置的计数边沿(上升沿、下降沿或两者)、源极和门极
  • 具有可配置时基的周期、PWM 和频率测量

正交编码器功能包括: 

  • 1 MHz 最大四边形计数率
  • 32位计数寄存器
  • 32位速度测量寄存器
  • 可配置的速度测量时基(256 µs、512 µs、...16384 µs 或 32768 µs)
  • X4编码
  • 每个模块有两个四通道,带有 A+B+Index 输入
  • 可选编码器极性

PWM 特定功能

  • 八个输出通道
  • 每通道占空比和周期配置
  • 可配置频率周期(1 Hz、50 Hz、250 Hz、500 Hz、1 kHz、5 kHz、10 kHz 或 20 kHz)

        使用 CompactRIO 扫描模式时需要权衡一些性能。例如,专用数字功能支持高达 1 MHz 的计数器,而 LabVIEW FPGA 可支持 20 MHz 的计数器。扫描引擎使用系统资源,其中包括 FPGA 空间、两个 DMA 通道、内存以及随扫描速率变化的 CPU 时间量。 FPGA 上 RSI 占用的空间随着使用扫描模式的模块数量而变化。 

2. 使用 NI 分布式系统管理器调试和监控 I/O

        

        NI 分布式系统管理器为监控网络上的系统和管理发布的数据提供了一个中心位置。分布式系统管理器为使用 CompactRIO 扫描模式的 C 系列模块提供测试面板。一旦您的系统在网络上可用,您就可以访问实时和历史趋势 I/O 值,以便您可以快速验证连接和信号完整性。除了测试面板之外,系统管理器还可以查看 CompactRIO 控制器的内存使用情况和处理器负载。

         将NI分布式系统管理器与CompactRIO扫描模式结合使用可提供I/O强制,这是一种调试工具,您可以使用它来覆盖I/O变量的值,而无需停止或更改实时应用程序。您可以强制输入以在没有物理刺激的情况下测试应用程序的响应,也可以强制输出覆盖程序输出值。您可以使用系统管理器或新的I/O强制VI强制通道值。        

3.使用混合模式通过扫描模式和 LabVIEW FPGA 访问模块

        一些应用程序受益于使用 CompactRIO 扫描模式访问某些 I/O 模块,而使用 LabVIEW FPGA 访问其他模块。这称为“混合模式”。当某些模块需要 LabVIEW FPGA 的自定义触发、基于硬件的分析或高速模拟流时,该功能非常有用。 

        要在 LabVIEW FPGA 模式下使用 I/O 模块,只需将模块拖至 LabVIEW 项目中的 FPGA 目标,将其从扫描模式中移除即可。然后使用 LabVIEW FPGA 对模块进行编程,并使用 I/O 变量在其余模块上读写 I/O。 

        当在一个或多个模块上使用 LabVIEW FPGA 模式时,FPGA 上的 CompactRIO 扫描模式逻辑(称为 RIO 扫描接口)将与 LabVIEW FPGA VI 一起编译到单个 FPGA 应用程序中。这种逻辑组合会对编译时间和可用于数据传输的 DMA FIFO 产生影响。如果没有模块配置为使用扫描模式,则 RIO 扫描接口不会包含在编译中。

        您可以创建用户定义的I/O变量以提供实时VI和FPGA VI之间的通信。这提供了一种将来自 FPGA VI 的数据插入扫描引擎并在 LabVIEW Real-Time 中读出的方法,使用与扫描模式 I/O 相同的 I/O 变量 API。这些I/O变量还可以将数据从实时VI传递到FPGA;然而,每个 I/O 变量都是单向的。还提供了将 LabVIEW FPGA 代码与 RIO 扫描接口 I/O 更新同步的方法。

        例如,假设 CompactRIO 系统使用 LabVIEW FPGA 监控 50kHz 的加速度计并实时计算 RMS,FPGA 上的 RMS 计算可以同步到 FPGA 扫描模式逻辑并写入用户定义的 I/O变量,然后在 LabVIEW Real-Time VI 中访问该变量。

4. CompactRIO 扫描模式架构

 

RIO扫描接口

        CompactRIO 扫描模式由 RIO 扫描接口和 NI 扫描引擎这两种技术提供支持,它们协同工作以提供对 CompactRIO 上物理 I/O 的访问。 RIO扫描接口是NI开发的一套FPGA知识产权(IP),下载到CompactRIO FPGA中,负责I/O模块检测、定时、同步和通信。 RIO 扫描接口运行硬件定时扫描循环,更新物理 I/O 值。两个 DMA 通道用于在 FPGA 和实时操作系统 (RTOS) 之间传输 I/O 数据。该实现在引脚处提供硬件定时 I/O 更新,抖动小于 500ns。  

NI 扫描引擎和 RIO 扫描接口的同步可在引脚处保持低于 500ns 的抖动

 NI 扫描引擎和 RIO 扫描接口的同步可在引脚处保持低于 500ns 的抖动。

        RIO 扫描接口包含多个组件,可实现其灵活性和性能。每个 I/O 模块直接与盒控制器通信,盒控制器负责检测模块类型并向模块传送 I/O 数据。墨盒控制器是一个“软核”八位微控制器,在 FPGA 中实例化,允许您使用任何支持的 I/O 模块而无需编译。 RIO 扫描接口中还有两个预构建的专用数字模块,可为任何八通道(或更少)数字 C 系列模块提供高速计数器、脉宽调制 (PWM) 和正交编码器输入功能。专用数字模块可以路由到 CompactRIO 机箱中的任意两个插槽。可以使用 LabVIEW FPGA 模块添加其他专用数字模块。每个卡盒控制器与一个卡盒管理器通信,该管理器控制硬件扫描定时、I/O 模块同步以及与 NI 扫描引擎的同步。 DMA 引擎还与盒控制器和盒管理器通信,以将数据传输至实时控制器或从实时控制器传输数据。

RIO 扫描接口包含多个组件,所有这些组件均在 FPGA 中实例化

RIO 扫描接口包含多个组件,所有这些组件均在 FPGA 中实例化。

NI 扫描引擎

        NI 扫描引擎是 LabVIEW Real-Time 的一个组件,其运行优先级高于时间关键型或介于时间关键型和定时结构之间(您可以对其进行配置)。每次RIO扫描接口完成最新的I/O扫描时,LabVIEW将I/O变量添加到全局扫描引擎内存映射中,并同时更新所有I/O变量的值。但是,您可以将每个 I/O 变量节点配置为使用扫描访问或直接访问。默认情况下,LabVIEW将I/O变量节点配置为使用扫描I/O,即使用扫描引擎内存映射来执行非阻塞I/O读取和写入(见图5)。直接 I/O 访问绕过扫描引擎内存映射并直接与 I/O 设备驱动程序通信以执行阻塞 I/O 读取和写入(参见图 5)。 NI 扫描引擎还将 I/O 变量发布到网络,使它们可在主机应用程序、测试面板和 I/O 强制中进行读写。扫描引擎(而不是LabVIEW共享变量引擎)处理I/O变量的网络发布,您可以从I/O变量属性页面禁用它。

        当硬件忙于从 I/O 模块获取数据时,FPGA 内的定时信号被置位。此硬件扫描的周期由您在扫描引擎属性中指定的扫描速率决定。每次硬件扫描结束时,扫描引擎都会在控制器和 FPGA 之间传输 I/O 数据。

 FPGA 内的时序信号决定 I/O 数据何时从 FPGA 传输到实时控制器。

混合模式(使用 LabVIEW FPGA 的扫描模式) 

        CompactRIO 扫描模式最强大的功能之一是能够选择单个模块直接使用 LabVIEW FPGA 模块进行编程。使用这种方法,您选择直接使用 LabVIEW FPGA 进行编程的模块将从 I/O 扫描中删除,其余模块则与 RIO 扫描接口进行通信。

CompactRIO 混合模式的底层原理

 CompactRIO 混合模式底层。

        当您编译LabVIEW FPGA VI时,如果任何I/O模块配置为使用扫描模式,则RIO扫描接口的必要组件将包含在编译中。结果是一个单位文件,支持配置为使用扫描模式的模块的扫描模式功能,以及直接与其余 I/O 模块通信的自定义 FPGA 逻辑。 LabVIEW 具有智能编译功能,仅包含给定配置所需的 RIO 扫描接口组件。例如,如果您编译的FPGA VI在扫描模式下仅使用一个模块,则RIO扫描接口中将仅包含一个盒式控制器。如果未配置,专用数字块也会被删除。因此,在编译 FPGA VI 时,RIO 扫描接口消耗的 FPGA 空间量与使用扫描模式的模块数量成比例。

 

在扫描模式和 LabVIEW FPGA 中访问 I/O 模块时,仅编译所需的 RIO 扫描接口组件。

输入/输出时序

        当硬件扫描信号有效时,所有 I/O 模块上的转换时钟自由运行。每个 I/O 模块类型都有单独的转换时序,相同类型的模块具有同步转换。当 FPGA 上的硬件定时信号未置位时,最新的 I/O 转换值将传输至 NI 扫描引擎。每个模块执行尽可能多的转换,以向配置为直接 I/O 访问的 I/O 变量提供最新的 I/O 值,从而绕过扫描并直接从硬件读取。

输入模块时序

输入模块时序。

        慢速输入模块可能需要几个硬件扫描周期来转换单个通道。在这种情况下,硬件扫描会触发所有通道上的一系列转换。在所有通道完成转换之前,不会将通道值复制到扫描引擎,然后将所有通道值一起传输。

慢速模块的输入时序

慢速模块的输入时序。

        输出模块时序与输入模块时序类似,但转换是左对齐的,以便在扫描开始时立即写入输出值。每个模块在硬件扫描期间执行尽可能多的更新,以便写入配置为直接 I/O 访问的 I/O 变量的值将尽快更新。

输出模块时序

5. C系列模块和 CompactDAQ 或 CompactRIO 硬件与 LabVIEW 的兼容性

C Series Module and CompactDAQ or CompactRIO Hardware Compatibility with LabVIEW - NI 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql使用全文索引+ngram全文解析器进行全文检索

表结构&#xff1a;表名 gamedb 主键 id 问题类型 type 问题 issue 答案 answer 需求 现在有个游戏资料库储存在mysql中&#xff0c;客户端进行搜索&#xff0c;需要对三个字段进行匹配&#xff0c;得到三个字段的相关性&#xff0c;选出三个字段中相关性最大的值进…

干货,教你服务号改为订阅号

服务号和订阅号有什么区别&#xff1f;服务号转为订阅号有哪些作用&#xff1f;我们都知道&#xff0c;服务号一个月只能发4次文章&#xff0c;但是订阅号每天都能发文章。不过在接收消息这一方面&#xff0c;服务号群发的消息有消息提醒&#xff0c;并显示在对话框&#xff1b…

客观题测试-第7章查找

第1关&#xff1a;查找客观题测试&#xff08;一&#xff09; 1、关键字可以唯一地标识一个数据元素。 A、对 B、错 2、二叉排序树是一个动态查找表。 A、对 B、错 3、如果顺序表中各元素的查找概率相同&#xff0c;在顺序查找时&#xff0c;查找不成功的平均查找长度因…

回归预测 | MATLAB实现SABO-LSTM基于减法平均优化器优化长短期记忆神经网络的多输入单输出数据回归预测模型 (多指标,多图)

回归预测 | MATLAB实现SABO-LSTM基于减法平均优化器优化长短期记忆神经网络的多输入单输出数据回归预测模型 &#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现SABO-LSTM基于减法平均优化器优化长短期记忆神经网络的多输入单输出数据回归预测模型 &a…

Linux线程——常用API

线程创建 函数原型及头文件 #include <pthread.h> int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void *), void *restrict arg);参数解读 tidp当pthread_create成功返回时&#xff0c;由tidp指向的内存单元…

通过基准配置文件(Baseline Profiles)提升你的Android应用性能

通过基准配置文件提升你的Android应用性能 应用程序性能与用户体验直接相关&#xff0c;具有至关重要的意义。在开发者社区中&#xff0c;存在许多方法来提高应用程序性能。在本文中&#xff0c;您将通过利用基准配置文件&#xff08;Baseline Profile&#xff09;深入了解其中…

采购oled屏幕,应注意什么

在采购OLED屏幕时&#xff0c;应注意以下几点&#xff1a; 规格和参数&#xff1a;了解OLED屏幕的规格和参数&#xff0c;包括尺寸、分辨率、亮度、对比度、响应时间等。确保所采购的屏幕符合项目的需求和预期效果。 品质和可靠性&#xff1a;选择具有可靠品质和稳定性的OLED屏…

Spirng02

一、Spring中Bean的生命周期 当我们启动Spring项目的时候,就会初始化Spring的容器,Spring就会扫描启动引导类所在包及其子包中类的注解,并调用这些加了注解的类的构造方法创建对象(控制翻转),再创建了这些类的对象之后,就会找使用了Autowired注解的地方进行赋值(依赖注入)。随后…

如何访问AWS私有网络中的RDS (Mysql)

文章目录 小结问题及解决连接问题如何使用本地的Mysql Workbench对RDS进行访问 参考 小结 在AWS私有网络中部署了RDS (Mysql), 尝试通过外网成功地进行了访问. 问题及解决 连接问题 在AWS私有网络中部署了RDS (Mysql), 进行外网进行访问碰到了各种问题. 以下连接超时&…

ARM-----DMA笔记

1.DMA简介 DMA(Direct Memory Access) —直接存储器存取&#xff0c;是单片机的一个外设&#xff0c;它的主要功能是用来搬数 据&#xff0c;但是不需要占用 CPU &#xff0c;即在传输数据的时候&#xff0c; CPU 可以干其他的事情&#xff0c;好像是多线程一样。 数据传输支持…

computed 和 watch 的奇妙世界:让数据驱动你的 Vue 应用(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

RAG检索增强技术在知识库智能检索场景下的应用实践

如果你对这篇文章感兴趣&#xff0c;而且你想要了解更多关于AI领域的实战技巧&#xff0c;可以关注「技术狂潮AI」公众号。在这里&#xff0c;你可以看到最新最热的AIGC领域的干货文章和案例实战教程。 一、知识检索增强的基本概述 1.1、知识检索增强技术提出的背景 1.1.1、L…

【AD封装】2.0间距排针排母插件贴片(带3D)

包含了我们平时常用的2.0间距的排针&#xff0c;排母&#xff0c;贴片的插件的都有&#xff0c;总共100种封装及精美3D模型。完全能满足日常设计使用。每个封装都搭配了精美的3D模型哦。 2.0排针排母是一种电子连接器&#xff0c;通常用于电路板上的电子元件之间的连接。它由一…

【Python】人工智能-机器学习——不调库手撕贝叶斯分类问题

1. 作业内容描述 1.1 背景 数据集大小150该数据有4个属性&#xff0c;分别如下 Sepal.Length&#xff1a;花萼长度(cm)Sepal.Width&#xff1a;花萼宽度单位(cm)Petal.Length&#xff1a;花瓣长度(cm)Petal.Width&#xff1a;花瓣宽度(cm)category&#xff1a;类别&#xff0…

深入理解Spring Security授权机制原理

原创/朱季谦 在Spring Security权限框架里&#xff0c;若要对后端http接口实现权限授权控制&#xff0c;有两种实现方式。 一、一种是基于注解方法级的鉴权&#xff0c;其中&#xff0c;注解方式又有Secured和PreAuthorize两种。 Secured如&#xff1a; 1 PostMapping("…

推荐几款值得收藏的3DMAX插件

推荐几款值得收藏的3DMAX插件 StairGenerator StairGenerator一键楼梯插件&#xff0c;不需要花费太多的时间&#xff0c;轻松从2D平面图生成3D楼梯模型&#xff0c;生成的楼梯模型细节丰富真实。 【主要功能】 1.简单&#xff1a;轻松实现2D到3D建模。 2.具有最详细三维结…

六:爬虫-数据解析之BeautifulSoup4

六&#xff1a;bs4简介 基本概念&#xff1a; 简单来说&#xff0c;Beautiful Soup是python的一个库&#xff0c;最主要的功能是从网页抓取数据官方解释如下&#xff1a; Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。 它是一个工具箱…

中断响应,解决死锁的例子

对于关键字synchronized来说&#xff0c;如果一个线程在等待锁&#xff0c;那么结果只有两种情况&#xff0c;要么它获得这把锁继续执行&#xff0c;要么它就保持等待。而使用重入锁&#xff0c;则提供另外一种可能&#xff0c;那就是线程可以被中断。也就是在等待锁的过程中&a…

【Java 集合】ArrayBlockingQueue

ArrayBlockingQueue, 顾名思义: 基于数组的阻塞队列, 位于 JUC (java.util.concurrent) 下, 是一个线程安全的集合, 其本身具备了 不支持 null 元素: 存入 null 元素会抛出异常固定容量: 在初始化时需要指定一个固定的容量大小。这意味着一旦队列达到最大容量&#xff0c;将不再…

去除Antd组件库中上传文件中的一些默认样式

最近写的项目用到了antd组件库中的Upload了 <><Upload {...UploadProps} classNamechooseFile><Button style{{ marginRight: 8px }}>选择文件</Button></Upload><Button type"primary" onClick{upload}>开始上传</Button&g…