LabVIEW CompactRIO 开发指南 3 选择CompactRIO编程模式

news2024/12/24 21:35:56

第二章

选择CompactRIO编程模式

第一章中介绍的CompactRIO架构为我们提供了通过LabVIEW FPGA定制FPGA硬件或使用NI CompactRIO扫描模式来实现I/O的选项。如果计算机上有LabVIEW Real-Time和LabVIEW FPGA,那么当向LabVIEW项目添加CompactRIO目标时,将提示选择想要使用的编程模式。在选择一种模式后,如果想为应用程序使用LabVIEW FPGA和CompactRIO扫描模式的混合,也可以进入混合模式。如图2.1所示。如果安装了LabVIEW FPGA,在向LabVIEW项目添加CompactRIO系统时,会提示选择编程模式

图2.1 选择编程模式

下面是每种编程模式的概述。

LabVIEWFPGA接口模式

使用LabVIEW FPGA接口模式,除了对实时处理器进行编程外,还可以通过定制FPGA个性来解锁CompactRIO的真正功能。这可以帮助开发人员实现通常需要定制硬件的性能。使用LabVIEW FPGA,可以实现自定义定时和触发,卸载信号处理和分析,创建自定义协议,并以最大速率访问I/O。当在FPGA VI和Real-Time VI之间通信数据时,可以选择使用DMA FIFO以非常高的速率传输数据,或者使用控件和指示器通信单点数据。

CompactRIO扫描模式

使用CompactRIO扫描模式,可以对CompactRIO系统的实时处理器进行编程,但不能对FPGA进行编程。在这种模式下,NI为FPGA提供了一个预定义的特性,它定期扫描I/O并将其放置在内存映射中,使其可用于LabVIEW Real-Time。CompactRIO扫描模式足以满足需要以几百赫兹的速率对I/O进行单点访问的应用程序。它不支持高速率的流数据

混合模式

同时在目标上使用CompactRIO扫描模式和LabVIEW FPGA被称为混合模式。使用这种方法,开发人员选择直接使用LabVIEW FPGA编程的模块从I/O扫描中删除,其余模块与RIO扫描接口通信。请注意,RIO扫描接口使用了通常可用于LabVIEW FPGA的三个DMA通道中的两个。本节提供有关为CompactRIO应用程序选择编程模式的提示。开发人员应该根据应用程序对性能、可靠性、自定义和I/O的需求来选择编程模式。NI LabVIEW for CompactRIO开发人员指南讨论了LabVIEW FPGA编程和RIO扫描接口使用的编程技术和最佳实践。

何时使用LabVIEW FPGA

与基于处理器的控制系统一样,FPGA已被用于实现所有类型的工业控制系统,包括模拟过程控制、离散逻辑以及基于批处理或状态机的控制系统。然而,基于FPGA的控制系统在很多方面与基于处理器的系统不同。如果应用程序有下面列出的任何需求,应该使用LabVIEW FPGA编程I/O和其他低级任务。可以在第5章:通过LabVIEW FPGA定制硬件中找到更多关于使用LabVIEW FPGA编程的信息。

使用LabVIEW FPGA,您可以创建用于高速数据采集、控制回路或自定义定时和触发的自定义FPGA vi。

图2.2使用LabVIEW FPGA

最大性能和可靠性

当为FPGA设备编译控制应用程序时,结果是一个高度优化的处理流程,提供真正的并行处理,并具有专用硬件电路的性能和可靠性优势。由于FPGA芯片上没有操作系统,因此代码以确保最大性能和可靠性的方式实现。

高速波形采集/产生(> 500hz)

RIO扫描接口针对运行在低于500 Hz的控制回路进行了优化,但许多C系列I/O模块能够以更高的速率获取和生成。如果需要充分利用这些模块功能并以高于500 Hz的速度采集或生成,则可以使用LabVIEW FPGA以根据具体的应用定制的用户定义速率进行采集。自定义触发/时间/同步

使用可重新配置的FPGA,可以创建简单、高级或其他自定义的触发器、定时方案和I/O或机箱同步实现。这些可以像基于超过阈值的模拟采集的上升触发自定义CAN消息一样复杂,也可以像在外部时钟源的上升沿上获取输入值一样简单。

基于硬件的分析/生成和协同处理

许多传感器输出的数据比实时处理器单独合理处理的数据要多。可以将FPGA用作协处理器来分析或生成复杂信号,同时将处理器释放给其他关键线程。这种基于FPGA的协同处理通常用于以下应用:

■编码/解码传感器

转速表

标准和/或自定义数字协议

■信号处理和分析

光谱分析(快速傅立叶变换和窗化)

过滤、平均等

数据简化

第三方IP集成

■传感器仿真

凸轮和曲柄

线性可变差动变压器(LVDTs)

■硬件在环仿真

最高性能控制

FPGA不仅可以实现高速采集和生成,还可以在FPGA上实现多种控制算法。可以使用单点I/O与多通道,可调PID或其他控制算法来实现确定性控制,环路速率超过1 MHz。例如,LabVIEW FPGA模块包含的PID控制算法在300 ns内执行。

使用LabVIEW FPGA接口模式

当从LabVIEW项目中发现CompactRIO控制器时,选择LabVIEW FPGA Interface作为编程模式。LabVIEW FPGA接口模式自动检测I/O模块并将其添加到LabVIEW项目中。可以在第5章:通过LabVIEW FPGA定制硬件中找到更多关于使用LabVIEW FPGA接口模式的信息和最佳实践。

何时使用CompactRIO扫描模式

一些工业控制和监控应用基于单点I/O数据。这些进程中使用的数据表示物理I/O通道的当前值。流程不关心跟踪数据的时间历史、将当前值与任何先前值进行比较,或测量值的变化率。它们通常不需要超过500赫兹的循环速率。可以使用CompactRIO扫描模式来简化这些类型的应用程序。

RIO扫描接口技术允许单点I/O访问高达几百赫兹的速率,而无需编写FPGA代码或RT到FPGA接口。当控制器通过扫描接口访问I/O时,将自动从模块中读取模块I/O,并将其放入CompactRIO控制器上的当前值表中。

图2.3 RIO扫描接口

当决定为CompactRIO应用程序使用Scan Mode时,应该考虑所需的性能或循环速率和通道计数。图2.4中的图形显示了使用扫描模式对PID控制回路完成的基准测试,包括一个模拟输入和一个模拟输出。数据显示,高于100 Hz的PID循环速率加上高通道数对CPU使用率有显著影响。一般来说,当需要比500hz更快的循环速率时,不应该使用扫描模式。

图2.4当使用RIO扫描接口时,高通道数和高环路速率对CPU的影响很大

虽然不应该使用扫描模式高速数据采集或控制回路,但它确实提供了几个好处:

■易于编程-在开发过程中将I/O变量直接拖放到LabVIEW实时VI中。

■动态检测I/O模块的能力-未通过项目配置的插槽自动检测插入的模块。然后,可以通过变量API配置这些模块。

■故障引擎- NI扫描引擎具有内置的NI故障引擎,可以确定地抛出错误。

■诊断和调试-使用分布式系统管理器,可以查看当前值和故障,以及在程序运行时覆盖当前I/O值。

并非所有CompactRIO硬件都适用于NI扫描模式。有关支持扫描模式的C系列I/O模块列表,请参见CompactRIO扫描模式支持的C系列模块。带有1M门FPGA的CompactRIO目标不能完全支持扫描接口。可以在不支持的目标上实现一些扫描接口功能,但必须使用LabVIEW FPGA。

使用CompactRIO扫描模式

当从LabVIEW项目中发现CompactRIO控制器时,选择Scan Interface作为编程模式。RIO扫描接口自动检测I/O模块并将它们添加到LabVIEW项目中。然后,可以将I/O变量拖放到LabVIEW实时和主机VI框图上,并立即读写缩放,校准的I/O数据,而无需任何FPGA编程或编译。

图2.5 将I/O变量拖放到实时VI框图上。

扫描引擎还提供了一个Timed-Loop定时源,因此您可以将代码与低抖动控制应用程序的I/O更新同步。

图2.6 使用将时钟源设置为同步到扫描引擎的定时环路,将环路同步到I/O更新。

可以在\LabVIEW\examples\ScanEngine中找到使用扫描模式的示例程序。在扫描模式下编程时,与I/O变量接口的另一个选项是通过I/O变量可编程API,如图2.7所示。与静态I/O可变节点API相比,编程API提供了以下几个优点:

■可以一次迭代多个变量,而不会拉下大量的I/O变量节点

■部署到CompactRIO目标不那么复杂,因为项目没有绑定到LabVIEW项目

■程序化API提高了可伸缩性

■可以在运行应用程序时更改I/O变量配置设置,并且配置设置可以在框图中查看

图2.7 使用I/O变量可编程API

虽然编程API提供了几个优点,但它确实需要更多的编程。I/O变量编程API可以在Data Communication»Shared Variable»I/OVariable.下的LabVIEW函数面板中找到。

在将Scan Engine I/O变量部署到CompactRIO控制器时,请注意这些变量可能会占用很大一部分CPU带宽。如果在Scan Mode下部署机箱,其中物理上包含您想要使用的所有模块,那么它将发布一个名为PercentHWScanUtilization的变量。根据扫描时间和部署的硬件,该值告诉我们用于读取或写入I/O变量的CPU带宽百分比。在此基础上,可以了解有多少时间可以专用于其他流程。

图2.8 监控读写扫描引擎I/O变量所占用的CPU带宽。

何时使用混合模式

同时在一个目标上使用扫描模式和LabVIEW FPGA被称为混合模式。使用这种方法,选择直接使用LabVIEW FPGA编程的模块从I/O扫描中删除,其余模块与RIO扫描接口通信。当编译LabVIEW FPGA VI时,如果任何I/O模块被配置为使用扫描模式,则编译中包含RIO扫描接口的必要组件。结果是单个位文件,该文件与配置为使用扫描模式的模块的扫描模式功能以及与剩余I/O模块直接通信的自定义FPGA逻辑一起工作。

图2.9 激活混合模式后,编写FPGA VI与模块接口,并将数据传递给实时主机。

在混合模式下,可以在某些模块上继续使用RIO扫描接口,同时直接在FPGA上编程其他模块。可以使用FPGA编程模型来处理高速操作、内联处理、波形缓冲采集以及不支持扫描模式的某些模块。通过将模块项目项从CompactRIO机箱下拖放到FPGA目标下,激活特定模块的FPGA编程。通过这样做,可以对FPGA进行编程,使自定义代码与其他模块的扫描接口并行运行。可以通过使用FPGA主机接口函数或用户定义变量从实时VI访问FPGA I/O。

图2.10 激活特定模块的FPGA编程。

在使用混合模式时,需要注意一些重要的限制。首先,编译时间显著增加,因为编译器必须将默认RIO Scan Interface位文件和创建到一个位文件中的FPGA代码结合起来。其次,由于扫描引擎使用两个通道,因此可以在FPGA代码中使用的DMA通道数量减少。大多数FPGA有三个DMA通道,因此大多数应用程序在FPGA代码中只剩下一个DMA通道。

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

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

相关文章

BM48-数据流中的中位数

题目 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流&…

【软考网络管理员】2023年软考网管初级常见知识考点(3)- 网络体系结构

【写在前面】也是趁着五一假期前再写几篇分享类的文章给大家,希望看到我文章能给软考网络管理员备考的您带来一些帮助,5月27号也是全国计算机软件考试统一时间,也就不用去各个地方找资料和代码了。紧接着我就把我整理的一些资料分享给大家哈&…

【Python】selenium工具

目录 1. 安装 2. 测试 3. 无头浏览器 4. 元素定位 5. 页面滑动 6. 按键、填写登录表单 7. 页面切换 Selenium是Web的自动化测试工具,为网站自动化测试而开发,Selenium可以直接运行在浏览器上,它支持所有主流的浏览器,可以接…

【Linux - Shell常用命令】- 判断文件是否存在、去掉文件后缀

目录 一、判断文件是否存在1.1 判断目录是否存在1.2 判断文件是否存在1.3 其他文件类型判断 二、字符串截取(去掉文件后缀)2.1 获取文件后缀2.2 获取文件前缀 一、判断文件是否存在 1.1 判断目录是否存在 将下面代码保存为dirExist.sh ,运行…

隐私权限是什么

导读: 隐私权在现代社会对于人们而言是重要的人格权,而随着互联网技术的发展,实践中侵犯隐私权的行为很常见。那么隐私权限是什么?侵犯隐私权的行为有哪些?侵犯他人隐私权要负什么法律责任?接下来将由找法…

Linux-修改虚拟机为静态IP 和 主机名

一、设置虚拟机的IP为静态的 一般情况下,NAT网络连接模式下,DHCP动态分配IP地址的,但这样在每次访问连接Linux虚拟机时,都要先去查询ip地址,很麻烦,干脆就将虚拟机IP地址写死,也就是设置为静态…

数据结构初阶 —— 树(二叉树)

目录 一,二叉树 特殊二叉树 二叉树的性质 二叉树的存储结构 二,二叉树链式结构 二叉树的遍历(四种) 二叉树接口 试题 一,二叉树 由一个根节点,加上两颗左二叉树和右二叉树组成,可以为空…

python cms建站教程:Wagtail建站(一、安装与基本使用)

最近有个建站的项目,因为python比较熟,为了快速建站想着用cms,但发现网上关于python cms的教程很少,于是自己试着写一个。建站工具采用Wagtail,是一款基于Django框架的cms,自己照着文档摸索了一番&#xff…

线性调频Z变换 CZT

文章目录 【1. 原理】【2. z k z_k zk​ 所在的路径】【3. CZT的实现步骤】【4. CZT的特点 】【5. CZT的应用】5.1 通过 CZT 变换求 DFT5.2 对信号的频谱进行细化分析5.3 求解Z变换X(z)的零、极点5.4 使用CZT进行Keystone变换 【6.相关文献】 线性调频Z变换(chirp …

FL Studio中文版V21的主要功能与下载教程

FL Studio21最新版是流行的数字音频工作站(DAW)其最新版本FL Studio 21,主要功能和下载教程如下: FL Studio21中文版功能介绍: 1. 全新界面:采用简洁现代的设计风格,工具栏和菜单进行重组,更加直观。提供智能提示与工作流指导,易于学习和操作。 2. 多显示器支持:可以在不同屏…

野火STM32电机系列(六)Cubemx配置ADC规则和注入通道

前文已经配置了GPIO、编码器 本节讲解CubeMXADC规则和注入通道 本文adc注入通道采用定时器触发,因此在上文定时器配置的基础上进行 常规信号(温度等)使用带DMA的常规通道连续采样 注入采样由定时器触发,采集电机三相电流&…

科大版中国版ChatGPT来啦!抢先体验

随着文心一言、通义千问等国内顶尖级ChatGPT大模型相继问世,具有语言理解和生成能力的人工智能正在引领行业创新发展。作为人工智能公司中的佼佼者,科大讯飞也开始加入到这场竞争中来。 4月20日,科大讯飞宣布即将于5月6日正式发布其最新的“…

【QT5:CAN卡通信的上位机-代码练习-收发数据+布局+引用外部库+基础样例(1)】

【QT5:CAN卡通信的上位机-代码练习-收发数据布局引用外部库基础样例1】 1、概述2、实验环境3、自我总结和提升4、事先声明5、效果展示6、代码编写过程(1)操作步骤部分1、新建工程2、加入外部库,并且加入qt工程中3、ui页面布局4、代码练习5、运…

荔枝派Zero(全志V3S)基于QT实现在LCD显示图片

文章目录 前言一、配置 buildroot 及编译二、写 QT 代码三、编译可执行文件四、拷贝到 SD 卡五、上板子测试六、资源自取 前言 有这样一个需求,通过配置 QT,在 linux 下实现显示我所想要显示的图片,实现的方式是我可以在命令行将图片的路径作…

人工智能之配置环境教程二:在Anaconda中创建虚拟环境安装GPU版本的Pytorch及torchvision并在VsCode中使用虚拟环境

人工智能之配置环境教程二:在Anaconda中创建虚拟环境安装GPU版本的Pytorch及torchvision并在VsCode中使用虚拟环境 作者介绍一. 查看自己电脑的CUDA版本1.1 方式一1.2 方式二 二. 下载安装CUDA三. 查看环境变量四. 创建虚拟环境4.1 使用指令创建虚拟环境4.2 查看Anc…

【刷题之路Ⅱ】LeetCode 24. 两两交换链表中的节点

【刷题之路Ⅱ】LeetCode 24. 两两交换链表中的节点 一、题目描述解题1、方法1——递归1.1、思路分析1.2、代码实现 2、方法2——迭代2.1、思路分析2.2、代码实现 3、方法3——交替的尾插3.1、思路分析3.2、代码实现 一、题目描述 原题连接: 24. 两两交换链表中的节…

人群计数经典方法Density Map Estimation,密度图估计

(3)Density Map Estimation(主流) 这是crowd counting的主流方法 传统方法不好在哪里?object detection-based method和regression-based method无法从图像中提取更抽象的有助于完成人群计数任务的语义特征 概况&…

asp.net个人信息管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net个人信息管理系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用c#语言 开发 asp.net个人信息管理系统VS开发s…

第七章 单行函数

MySQL系列文章目录 http://t.csdn.cn/YTPe9 文章目录 MySQL系列文章目录前言一、函数的理解1、 什么是函数2 、不同DBMS函数的差异3 、MySQL的内置函数及分类 二、 数值函数1 、基本函数2、 角度与弧度互换函数3、 三角函数4、 指数与对数5、进制间的转换 三、字符串函数四、日…

音视频八股文(8)-- h264 AnnexB

NALU(Network Abstract Layer Unit) ⾳视频编码在流媒体和⽹络领域占有重要地位;流媒体编解码流程⼤致如下图所示: H264简介 H.264从1999年开始,到2003年形成草案,最后在2007年定稿有待核实。在ITU的标准⾥称为H.264&#xff0c…