【NI-RIO入门】理解Windows、Real Time与FPGA之间数据通信的原理

于NI kb摘录

1.概述

        对于NI RIO系列设备(CompactRIO、sbRIO、myRIO等)进行编程时,需要注意有三个不同的组件。

  • 人机界面 (HMI) 。有时称为“主机”,为用户提供图形用户界面(GUI),用于监控系统状态和设置操作参数。使用 HMI 是可选的,因为 RIO 产品可以编程为无头运行,并且有些产品可以直接连接到嵌入式用户界面,但是当实施 HMI 时,它们可以采用 Windows 台式计算机、平板电脑或触摸面板的形式以计算机为例。
  • 实时(RT)处理器:RT 处理器运行主要的实时程序,并且允许 RIO 可靠地执行具有特定时序要求的程序。
  • 现场壳编程门阵列:FPGA是一种可重新编程的硅芯片,是嵌入式系统的核心。FPGA 将机箱 I/O 直接连接到 RT 处理器,无需通过总线,与其他控制器架构相比,系统响应的控制延迟非常低。由于 FPGA 通过 LabVIEW FPGA 模块在硬件而不是软件中运行其代码,因此其速度和可靠性通常用于使用高速缓冲 I/O、快速控制循环或自定义信号过滤的应用。

        HMI、RT 和 FPGA 在 LabVIEW 项目中都有自己独特的编程位置,并且每个组件内部和组件之间的通信方法也不同。本白皮书阐述了这些方法及其差异。下图显示了这些组件如何交互(假定 PC 用作 HMI)。

2.调用IO

        在深入研究不同的通信方法之前,了解数据如何从 RIO 目标上的物理输入和输出端口传输到嵌入式系统组件非常重要。使用CompactRIO时,可以通过三种方式访问​​I/O:

  1. 对于实时(NI-DAQmx)模式,数据通过处理器通过 NI-DAQmx VI 读取。
  2. 对于实时扫描(IO变量)模式,数据通过FPGA发送,但最终通过将IO节点拖放到实时VI来在处理器上访问。
  3. 对于LabVIEW FPGA模式,通过将IO节点拖放到FPGA VI中,可以直接从FPGA内部读取I/O。

        编程模式由 LabVIEW 项目中模块旁边的文本指示。

        下图显示了每种模式如何通过不重叠的唯一路径发送 I/O 数据。

        请注意,并非所有 CompactRIO 都支持使用 NI-DAQmx 进行编程。请参阅文档了解哪些型号的 CompactRIO 支持使用 NI-DAQmx 进行编程。 

3.标签、流、消息

        对 RIO 目标进行编程时,了解三种通信范例非常重要: 

        标签类型有时称为当前值类型,用于传达最新值。标签的一个示例是操作员通过 HMI 给出的控制设定点。该标签不需要传达控制设定点的所有历史数据,而只需传达操作员输入的最新值。此外,由于不需要所有先前设定点的历史数据,因此不能保证标签传输。无保证传输的这一方面有时被称为“有损”通信。 

        相比之下,流类型使用缓冲来传输每个数据点,其中吞吐量比延迟更重要。流通信的一种用例是通过 FPGA 将所有温度数据传输到 RT 处理器以记录到文件中。在这种情况下,历史数据是必要的,因此每个数据点的传输都得到保证。有保证的传输的这个方面被称为“无损”通信。 

        当需要保证信息的传递并且具有低延迟时,使用最后一种通信类型,即消息。紧急停止命令是消息通信类型的一个示例。在下表中,通信选项将指定为标签、流或消息类型。在大多数情况下,由于该选项的保证传递方面,可以支持流类型的通信选项也将支持消息类型。下表总结了这些通信类型。 

通讯类型基本特征可选功能表现
标签仅当前值,定期读取动态查找、分组管理低延迟、高通道数
缓冲、阻塞(超时)多层缓冲高吞吐量
消息缓冲、阻塞(超时)确认数据传输低延迟

 4.通信选型摘要

        

        下表提供了 HMI、RT 处理器和 FPGA 之间不同通信选项的最高级别概述。适用时请参阅更详细的表格。单击各个链接可查找有关该通信选项的更多详细信息。

From\ToHMIRTFPGA
HMI

Tag

  • Local Variable
  • Global Variable
  • Notifiers
  • Functional Global Variable (FGV)

Stream

  • Queues
  • Channel Wires (as of 2016)

Message

  • User Events
详情看RT/HMI通信T用于 FPGA 和 RT 处理器之间通信的相同通信方法也可用于 FPGA 和 HMI 之间的通信。然而,这种情况不太常见,因为一旦通过以太网与 HMI 进行通信,就无法保证确定性。 
RT

   

详情看RT/HMI通信

详情看RT进程间通信

Tag

  • Read/Write Control 
  • User Defined Variables
  • Interrupts

Stream

  • DMA FIFO
  • Host Memory Buffer
FPGA用于 FPGA 和 RT 处理器之间通信的相同通信方法也可用于 FPGA 和 HMI 之间的通信。然而,这种情况不太常见,因为一旦通过以太网与 HMI 进行通信,就无法保证确定性

Tag

  • Read/Write Control 
  • User Defined Variable 
  • Interrupts

Stream

  • DMA FIFO
  • Host Memory Buffer

  

 详情查看FPGA进程间通信

 

RT进程间通信

        下表概述了 RT 程序上不同进程之间进行通信时可用的通信选项。该表分为在确定性循环(例如定时循环)与非确定性循环之间通信或在非确定性循环与另一个非确定性循环之间通信时可用的选项。最佳实践是,实时处理器上的每个内核仅运行一个确定性循环,以避免优先级冲突。

通讯类型确定性循环到非确定性循环非确定性循环到非确定性循环
标签
  • 启用 RT FIFO 的单进程共享变量(单个元素)
  • 单进程共享变量
  • 局部变量
  • FGV
  • 通知者
流、消息
  • RT 先进先出功能
  • 尾巴
  • 用户事件(仅限消息)

RT/HMI 通讯

        下表概述了实时程序与 Windows PC 上运行的 HMI 之间进行通信时可用的不同通信选项。该表还列出了通信选项是否支持一个或多个 RT 处理器或 HMI 之间的通信。值得注意的是,我们的 CompactRIO 目标运行 64 位 NI Linux Real-Time 操作系统,有一个嵌入式 UI 选项,允许显示 Real-Time VI 的前面板。在这种情况下,无需对 HMI 进行编程。

通讯类型通讯选项RT 目标数量:HMI 数量
标签网络发布的共享变量1:1、1:N、N:1
TCP/IP1:1
UDP协议1:N 或 N:1
网页服务1:1、1:N
流、消息网络流1:1
TCP/IP(仅消息)1:1

 FPGA 进程间通信

        

通讯类型通讯选项常用
标签局部/全局变量分享最新数据
记忆项目分享最新数据
注册项目分享最新数据
流、消息握手建立持续通信的参数
FIFO(触发器)

传输缓冲数据

(FIFO < 100 字节)

FIFO(查找表)

传输缓冲数据

(100 字节 ≤ FIFO ≤ 300 字节)

FIFO(块存储器)

传输缓冲数据

(FIFO > 300 字节)

*可用块存储器的上限由FPGA目标指定

        下表概述了 FPGA 上不同进程之间进行通信时可用的通信选项。有多种方法可以在两个不同的 FPGA 之间进行通信,但这里不讨论这些选项。 

5.RIO开发人员必备指南 

        此链接必看,文档范例皆有:RIO Developer Essentials Guide for Academia

 6.FPGA、实时处理器和分布式系统之间的通信范例

Communicate Between FPGA, Real-Time Processor, and Distributed Systems - NI

其他

        初学者可以先看一下NI对于每个工具包的说明文档,这个对于知识盲区打开有一定的帮助。

                LabVIEW Real Time Module: 产品文档 - NI      

                LabVIEW FPGA Module:产品文档 - NI

       

LabVIEW Real-Time和LabVIEW FPGA项目范例

嵌入式系统通常需要具有可靠性和确定性的架构。因此,许多嵌入式应用需要专门处理系统状态监测、错误处理和看门狗定时器。针对CompactRIO和PXI RT DAQ的LabVIEW项目范例提供了推荐的软件架构,可用于各种嵌入式控制与监控系统,这是满足这些需求的最佳实践。这些项目范例还给出了数据通信、网络连接、控制例程、数据记录等的最佳实践。

为了在LabVIEW中查看这些模板,您必须安装LabVIEW Real-Time和/或LabVIEW FPGA模块。

CompactRIO项目范例

CompactRIO的LabVIEW FPGA控制

CompactRIO的LabVIEW FPGA控制

此项目范例专为需要高性能控制和/或基于硬件的安全逻辑的应用程序而设计。控制通过FPGA架构实现,而并非在软件中运行控制算法,使控制循环速率能够达到10 kHz以上,且抖动极小。FPGA VI还包含安全逻辑,可在出现严重错误或者实时软件故障时立即将所有输出设置成安全状态,从而更大限度地确保系统的可靠性。

参阅相关文档 | 参阅NI社区的详细指南

CompactRIO的LabVIEW Real-Time控制(RIO扫描接口)

此项目范例专为需要确定性控制性能的控制应用而设计,其单点I/O速率不超过100 Hz。此项目范例不使用FPGA硬件,而是使用确定性的实时处理器进行系统控制。此范例使用RIO扫描接口(RSI)在实时应用中获取I/O数据,如同变量一样。

CompactRIO的LabVIEW FPGA波形采集与记录

CompactRIO的LabVIEW FPGA波形采集与记录

此项目范例包含基于FPGA的可自定义高速模拟采集,并可在满足触发条件时,将采集到的数据记录至实时系统的磁盘。此项目范例可以自主运行,或者连接到所提供的可选用户界面。

CompactRIO的LabVIEW Real-Time序列生成器

CompactRIO的LabVIEW Real-Time序列生成器

此项目范例可实现序列引擎,可针对控制应用在LabVIEW Real-Time中执行用户自定义的序列或方法。它包括一个基于Windows的用户界面,该界面能够生成用户定义的序列,将此类序列部署到CompactRIO,以及监测序列引擎状态。用户界面动态加载子面板,展示了高效、响应流畅的用户界面架构。

查看视频教程

Real-Time项目范例(使用DAQmx)

LabVIEW Real-Time (NI-DAQmx)项目范例专为实时控制和/或波形采集与记录应用而设计。

LabVIEW Real-Time控制(NI-DAQmx)

LabVIEW Real-Time控制(NI-DAQmx)

实现基于软件的确定性设备控制。此项目范例采用NI-DAQmx,并专为使用NI Real-Time PXI控制器和NI DAQ且需要确定性DAQ控制I/O的控制应用而设计。

参阅相关文档

LabVIEW Real-Time波形采集与记录(NI-DAQmx)

LabVIEW Real-Time波形采集与记录(NI-DAQmx)

采集连续波形数据并将数据记录至磁盘。此项目范例采用NI-DAQmx,包含模拟数据采集,并在可满足触发条件时,将采集到的数据记录至实时系统的磁盘。此项目范例可以自主运行,或者连接到所提供的可选用户界面。此范例专为使用NI Real-Time PXI控制器和NI DAQ或者NI独立式CompactDAQ的应用而设计。

参阅相关文档

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

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

相关文章

Linux常用基本命令(三)

一、显示命令 1. cat 通式&#xff1a;cat 选项 文件名 只能看普通的文本文件 缺点&#xff1a;如果内容过多会显示不全 选项效果-n显示行号包括空行-b跳过空白行编号-s讲所有的连续的多个空行替换为一个空行&#xff08;压缩成一个空行&#xff09;-A显示隐藏字符 三个标准文件…

深度剖析:Golang中结构体方法的高级应用

深度剖析&#xff1a;Golang中结构体方法的高级应用 引言结构体方法的基础回顾结构体的定义和用法方法的定义和绑定基本语法和用法 高级特性与应用封装、继承和多态方法集与接口的关系结构体方法的匿名字段和嵌入结构体 性能优化与最佳实践接收器类型的选择&#xff1a;指针还是…

「绝世唐门」玄子被百万年魂技吓坏,七怪混合打响,斗魂大赛预热

Hello,小伙伴们&#xff0c;我是拾荒君。 《斗罗大陆Ⅱ绝世唐门》第28集超前爆料&#xff01;这一集中&#xff0c;选拔赛考核落下帷幕&#xff0c;为了选拔出史莱克七怪的预备队&#xff0c;即替补队员&#xff0c;玄子导师特别关注了霍雨浩和王冬的表现。他心中存有疑问&…

HTML标签(下)

一、表格标签 1.1表格的主要作用 主要用于显示、展示数据 1.2表格的基本语法 <td>单元格中的文字</td> 如果是表头单元格的话&#xff0c;eg:姓名&#xff0c;年龄<th> 姓名</th>&#xff08;th是table head&#xff09;; 作用&#xff1a;表头会…

C语言中二维数组的存储和二进制数在底层的排列顺序

1 二维数组变量的存储 二维数组在内存中是按照先行后列的顺序存储的&#xff0c;即先存储第一行的所有元素&#xff0c;再存储第二行的所有元素&#xff0c;以此类推。每个元素在内存中占据一定的字节数&#xff0c;这个字节数由该元素的类型决定。例如&#xff0c;int类型的元…

MATLAB - 机器人逆运动学设计器(Inverse Kinematics Designer APP)

系列文章目录 前言 一、简介 通过逆运动学设计器&#xff0c;您可以为 URDF 机器人模型设计逆运动学求解器。您可以调整逆运动学求解器并添加约束条件&#xff0c;以实现所需的行为。使用该程序&#xff0c;您可以 从 URDF 文件或 MATLAB 工作区导入 URDF 机器人模型。调整逆…

nodejs+vue+ElementUi资源互助共享平台的设计

后台&#xff1a;管理员功能有个人中心&#xff0c;用户管理&#xff0c;卖家管理&#xff0c;咨询师管理&#xff0c;萌宝信息管理&#xff0c;幼儿知识管理&#xff0c;保姆推荐管理&#xff0c;音频资源管理&#xff0c;二手商品管理&#xff0c;商品分类管理&#xff0c;资…

细粒度语义对齐的视觉语言预训练

抽象 大规模的视觉语言预训练在广泛的下游任务中显示出令人印象深刻的进展。现有方法主要通过图像和文本的全局表示的相似性或对图像和文本特征的高级跨模态关注来模拟跨模态对齐。然而&#xff0c;他们未能明确学习视觉区域和文本短语之间的细粒度语义对齐&#xff0c;因为只有…

Open5GSUeRANSim3:VirtualBOX VM使用static IP并和host互通

本文档参考 https://blog.csdn.net/shuaihj/article/details/127589833 https://www.cnblogs.com/manongqingcong/articles/16659150.html https://blog.csdn.net/justlpf/article/details/132977047 VM默认使用的是自动分配的IP&#xff0c;每个VM的ip都是10.0.2.15。后续为了…

fba海派和传统海运的区别,亚马逊 FBA货物包装技巧—站斧浏览器

fba海派和传统海运的区别 1、美国FBA海派是什么&#xff1f; 美国FBA海派即将商品通过海洋运输的方式运送到美国亚马逊FBA仓库的服务。这种方式主要适用于大批量或大件商品&#xff0c;因为相比其他物流方式&#xff0c;海派具备成本低和运载量大的优势。 2、传统海运是什么…

鸿蒙开发者工具安装及入门程序

下载工具DevEco Studio IDE 官网下载&#xff1a;HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 开发工具的安装 解压下载好的压缩包&#xff0c;一路无脑安装即可&#xff0c;安装完的使用方法类似于IDEA、WebStorm的使用&#xff0c;快捷键一致&#xff0c;默认黑…