【NI-RIO入门】扫描模式

       于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.hqwc.cn/news/287103.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ArkTS】路由传参

传参 使用router.pushUrl()&#xff0c;router.push()官方不推荐再使用了。 格式&#xff1a; router.pushUrl({url: 路由地址,params:{参数名&#xff1a;值} )跳转时需要注意路由表中是否包含路由地址。 路由表路径&#xff1a; entry > src > main > resources &g…

专栏十六:bulk以及单细胞空转中的progeny通路分析

progeny本身有自己的R包,可以提取通路基因集信息,团队把他嵌入另一个R包decoupleR中完成富集分析。decoupleR自己有详细的针对bulk和scRNAseq的教程 简单安装一下 devtools::install_github(saezlab/OmnipathR) devtools::install_github("saezlab/progeny") Bio…

Sectigo DV多域名证书能保护几个域名

多域名SSL证书不限制受保护的域名的类型&#xff0c;可以时多个主域名或者子域名&#xff0c;多域名SSL证书都可以同时保护&#xff0c;比较灵活。但是&#xff0c;多域名https证书并不是免费无限制保护域名数量&#xff0c;一把的多域名SSL证书默认保护3-5个域名记录&#xff…

LVS+Keepalived 高可用集群

一.Keepalived工具介绍 1.支持故障自动切换(Failover) 2.支持节点健康状态检查(Health Checking) 3.基于vrrp协议完成地址流动 4.为vip地址所在的节点生成ipvs规则(在配置文件中预先定义) 5.为ipvs集群的各RS做健康状态检测 6.基于脚本调用接口完成脚本中定义的功能&…

沙盘模型3D打印加工服务建筑设计模型3D打印展览展示模型3D打印-CASAIM

随着3D打印技术的不断发展&#xff0c;沙盘模型3D打印已经成为建筑行业中的一项创新应用。这种技术能够将设计师的创意以实体形式呈现&#xff0c;为建筑项目的沟通和展示提供了更加直观和便捷的方式。本文将介绍CASAIM沙盘模型3D打印的优势和应用。 一、CASAIM沙盘模型3D打印的…

你在为其他知识付费平台做流量吗?

随着知识付费市场的蓬勃发展&#xff0c;越来越多的知识提供者选择将自己的课程放到各大知识付费平台上进行销售。然而&#xff0c;你是否意识到&#xff0c;你正在为这些平台做流量、做数据、做流水、做品牌&#xff0c;而卖出去的课程平台还要抽取你的佣金&#xff1f; 如果…

三菱PLC FX3U滑动平均值滤波

三菱PLC滑动平均值滤波其它相关写法,请参考下面文章链接: https://rxxw-control.blog.csdn.net/article/details/125044013https://rxxw-control.blog.csdn.net/article/details/125044013滑动平均值滤波程序总共分为三部分,第一步为:滑动采样。 第二步为:队列求和,第三…

Unity SRP 管线【第四讲:URP 阴影】

URP 全文源码解析参照 引入 在UniversalRenderer.cs/ line 505行处 此处已经准备好了所有渲染数据&#xff08;所有数据全部存储在了renderingData中&#xff09; 我们只用renderingData中的数据初设置mainLightShadows bool mainLightShadows m_MainLightShadowCasterPass…

天津仁爱学院专升本化学工程与工艺专业《化工原理》考试大纲

天津仁爱学院化学工程与工艺专业高职升本入学考试《化工原理》课程考试大纲 一&#xff0e;参考教材 《化工原理》&#xff08;第3版&#xff09;上、下册&#xff0c;陈常贵&#xff0c;柴诚敬编&#xff0c;天津大学出版社&#xff1b;ISBN&#xff1a;9787561833797&#…

mysql 2day 对表格的增删改查、对数据的增删改查、对内容进行操作

目录 mysql 配置文件授权 远程链接 &#xff08;grant&#xff09;数据库操作创建库&#xff08;create&#xff09;切换数据库&#xff08;use&#xff09;查看当前所在库 表操作创建一张员工表查看表结构修改表名称增加字段修改字段名修改字段类型以及约束条件删除字段 内容操…

随笔记录-springboot_LoggingApplicationListener+LogbackLoggingSystem

环境&#xff1a;springboot-2.3.1 加载日志监听器初始化日志框架 SpringApplication#prepareEnvironment SpringApplicationRunListeners#environmentPrepared EventPublishingRunListener#environmentPrepared SimpleApplicationEventMulticaster#multicastEvent(Applicati…

openGauss学习笔记-165 openGauss 数据库运维-备份与恢复-导入数据-使用COPY FROM STDIN导入数据-通过本地文件导入导出数据

文章目录 openGauss学习笔记-165 openGauss 数据库运维-备份与恢复-导入数据-使用COPY FROM STDIN导入数据-通过本地文件导入导出数据165.1 示例1&#xff1a;通过本地文件导入导出数据 openGauss学习笔记-165 openGauss 数据库运维-备份与恢复-导入数据-使用COPY FROM STDIN导…