【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 

 

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

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

相关文章

kill编译异常处理

当kill编译时出现如下警告 Build target Target 1 linking... *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESSSEGMENT: ?PR?_LCD_SHOWCHAR?LCD1602 *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESSSEGMENT: ?PR?_LCD_SHOWSTRING?LCD…

代码随想录第三十五天(一刷C语言)|整数拆分不同的二叉搜索树

创作目的&#xff1a;为了方便自己后续复习重点&#xff0c;以及养成写博客的习惯。 一、整数拆分 思路&#xff1a;参考carl文档。 1、确定dp数组以及下标的含义&#xff1a;分拆数字i&#xff0c;可以得到的最大乘积为dp[i]。 2、确定递推公式&#xff1a;从1遍历j&#…

Nginx location+Nginx rewrite(重写)(新版)

Nginx locationNginx rewrite(重写) Nginx locationNginx rewrite(重写)一、location1、常用的Nginx 正则表达式2、location的类型3、location 的匹配规则4、location 优先级5、location 示例说明5.1只修改网页路径5.2修改nginx配置文件和网页路径5.3一般前缀5.4正则匹配5.5前缀…

C# WPF上位机开发(usb设备访问)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 目前很多嵌入式设备都支持usb访问&#xff0c;特别是很多mcu都支持高速usb访问。和232、485下个比较&#xff0c;usb的访问速度和它们基本不在一个…

miRMaker

Introduction 除了miRNA表达数据&#xff0c;各种miRNA相关的知识也强有力地支持了对miRNA功能相互作用的理解。 那些具有许多共同调控靶基因或疾病的miRNAs可能具有相似的功能 一些方法通过考虑实验验证的miRNA-靶标关系来评估miRNA相互作用&#xff0c;评估miRNA功能相互作…

自清洗过滤器工作原理尺寸选型参数,内部结构,压差开关如何调节

​ 1&#xff1a;全自动自清洗过滤器设备介绍 全自动反冲洗过滤器是水净化过程中不可缺少的处理手段&#xff0c;用于拦截水中的各种杂质&#xff0c;以净化水质或保护系统中其他设备的正常工作。普通网式过滤器因其结构简单、过滤效果好、阻力小而广泛应用于水源过滤、工业循…

【Android Studio】各个版本下载地址

下载地址&#xff1a; https://developer.android.com/studio/archive?hlzh-cn

如何用 Cargo 管理 Rust 工程系列 丁

以下内容为本人的学习笔记&#xff0c;如需要转载&#xff0c;请声明原文链接微信公众号「ENG八戒」https://mp.weixin.qq.com/s/PP9b5cSNd-7IqgNovcrB0A 优化输出 前面已经对 cargo package 工程编译输出了好多遍&#xff0c;发现编译结果打印的信息都包含了这个 unoptimize…

c语言:[输出函数]与[输入函数]|要点简述

一、【输出函数】 printf() 与 puts()的不同点 1、printf()函数 printf()支持单个字符%c的输出&#xff0c;以及字符串%s的输出。 (1)如果是以%c的形式输出&#xff0c;是一个字符一个字符的输出。因此&#xff0c;要用一个循环语句&#xff0c;把字符逐个输出。 (2)而用%…

Unity与Android交互通信系列(2)

在上一篇文章中&#xff0c;我们介绍了Unity和Android交互通信的原理及在Unity中直接调用Java代码的方式&#xff0c;但没有给出代码示例&#xff0c;下面通过实际例子演示上篇文章中AndroidJavaClass、AndroidJavaObject两个类的基本用法&#xff0c;由于交互通信涉及到两端&a…

查看知乎数学公式Tex源码的方法

首先使用F12打开开发者工具&#xff0c;再使用元素选择器选中要查看的公式。 在源码对应位置附近可以看到一个类型为 math/tex 的 script&#xff0c;如果没找到可以展开目录查找。

网络时间服务器

本章主要介绍网络时间服务器。 使用chrony配置时间服务器 配置chrony客户端向服务器同步时间 1 时间同步的必要性 一些服务对时间要求非常严格&#xff0c;例如&#xff0c;图所示的由三台服务器搭建的ceph集群。 这三台服务器的时间必须保持一致&#xff0c;如果不一致&#…

若依打包将vue放到.jar里面部署

1.vue静态文件&#xff0c;以及单页面 ruoyi-admin\src\main\resources\static \ruoyi-admin\src\main\resources\templates 2.后台开放白名单 "/cms", "/cms#/login" 3. mvc访问vue页面入口&#xff0c;接口 package com.ruoyi.web.controller.syst…

08_CSS定位与综合案例开发

day08_CSS定位与&综合案例开发 Objective&#xff08;本课目标&#xff09; 理解什么是定位能说出为什么要用定位 1. 为什么使用定位 标准流在最底层 (海底) ------- 浮动的盒子在中间层 (海面) ------- 定位的盒子 在 最上层 &#xff08;天空&#xff09; 小黄色块在…

软件测试面试八股文,最常见的7个高频面试题(附答案,建议收藏)

问题1&#xff1a;请自我介绍下&#xff1f; 核心要素&#xff1a;个人技能优势工作背景经验亮点 参考回答&#xff1a; 第一种&#xff1a;基本信息离职理由 面试官您好&#xff0c;我叫张三&#xff0c;来自番茄市&#xff0c;在软件测试⾏业有 3 年的⼯作经验。做过 Web…

算法——动态规划(DP,Dynamic Programming)

一、基础概念 DP的思想&#xff1a; 把问题分成子问题&#xff0c;前面子问题的解决结果被后面的子问题使用DP与分治法的区别&#xff1a; 分治法把问题分成独立的子问题&#xff0c;各个子问题能独立解决 自顶向下DP前面子问题的解决结果被后面的子问题使用&#xff0c;子问题…

3090K MOSFET N通道沟槽功率 PWM应用

3090K 采用沟槽技术&#xff0c;提供活x氧(导通)&#xff0c;低栅J电荷和栅J电压低至4.5V的工作。3090K 设备适用于各种应用。 3090K 特性&#xff1a; ● VDS 30V,ID 86A RDS(ON) < 5 mΩ VGS 10V RDS(ON) < 9.5mΩ VGS 4.5V ● 高功率和电流处理能力 ● 获得无…

【性能测试】基础知识篇-压力模型

常见压力模式 并发模式&#xff08;即虚拟用户模式&#xff09;和RPS模式&#xff08;即Requests Per Second&#xff0c;每秒请求数&#xff0c;吞吐量模式&#xff09;。 本文介绍这两种压力模式的区别&#xff0c;以便根据自身业务场景选择更合适的压力模式。 并发模式 …

C++面向对象(OOP)编程-模板

本文主要讲解C的模板&#xff0c;其中包括模板的分类&#xff0c;函数模板和类模板&#xff0c;以及类模板与友元函数关系引起的几种关系。强调提供代码来搞懂C模板这一泛型编程手段。 目录 1 C模板 2 模板的本质 3 模板分类 4 函数模板 4.1 函数模板定义格式 4.2 函数模…

下午好~ 我的论文【遥感】(第一期)

写在前面&#xff1a;下午浑浑噩噩&#xff0c;泡杯茶&#xff0c;读篇论文吧 首先说明&#xff0c;时间有限没有那么精力一一回复了&#xff0c;对不起各位了TAT 文章目录 遥感Bi-Dilation-formerCNN-GNN-FusionMulti-hierarchical cross transformerCoupled CNNs 遥感 Bi-D…