【NI-RIO入门】NI CompactRIO waveform library

2023-12-22 04:04

本文主要是介绍【NI-RIO入门】NI CompactRIO waveform library,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

于NI KB摘录

         此库集成了host、fgpa、rt在RIO硬件上采集波形的范例项目,其中​所有​数据和​采集​VI​和​都​针对​NI RIO​平台​进行​了​优​化,​融合了业界最佳的工程实践。​​您​也可以​在这些​范​例​的基础进行修改,从而​快速开发​自己​的​应用​程序​。

1.下载工具包

        打开 VI Package Manager,搜索waveform 找到并安装此库。

2.简介

        许多可重配置的I/O (RIO)应用需要从多个同步的NI C系列模块中获取连续的数据包。本​教程​演示​了​针对​RIO​硬件​平台​优​化​并融合业界最佳工程实践的​CompactRIO数据​采集​VI,​并​提供​了​几个​可以​帮助​您​快速​着手​进行​程序​开发​的​范​例。

功能

  • VI将常见的采集功能组合到逻辑块中,可支持许多不同的采样模式。范例程序演示了不同情况的连续采样和有限点采样。
  • VI​可以​用​NI LabVIEW​的​波形​数据​类型​来​显示​相关​数据,​以​方便​地​与​其它​常用​LabVIEW​软件​组​件​集成。而且波形​数据​类型会​将​采集​到​的​数据、​采样​周期、​时间​戳​和​通道​属性​(比如​通道​名称)​都​捆绑​在一起。
  • VI​将​校准​和​缩​放​操作​​放置​在​现场​可​编​程​逻辑​门​阵​列 (FPGA)​上,​以​节约​上位​机​资源。 
  • VI提供​了​一套​完备​的​错误​检验​机制,​包括​DMA FIFO​数据​溢出​(采样​数据​将​FIFO​空间​全部​填满​导致​数据​丢失),​硬件​模​块​采样​下​溢出 (FPGA​代码​执行​时间​过​长,​导致​硬件​模​块​实际​采样​率​低于​设定​采样​率)​以及​开始/​读/​停止​操作​超​时​错误。
  • 其中读取函数​采用​轮​询​机制​,​以便​用户​控制​数据​采集​过程​中的​CPU​占用​率。
  • 这些示例非常灵活,可以适应许多不同的硬件组合。​在​大​多数​应用​场合,​只要​对​FPGA VI​进行​相应​修改​即可​满足​需求。

 函数选板

函数在此路径下面

3.范例项目概述 

        cRIO Wfm Examples.lvproj演示了常见的采样模式以及如何将上位机代码链接到FPGA代码。 本范例安装在LabVIEW环境中的“范例项目”中,可通过启动窗口中的“新建项目(Create Project)”打开。

该项目还可在以下位置找到: 

National Instruments\LabVIEW [Version]\ProjectTemplates\Source\cRIOWfm

注意,修改代码需要把当前VI另存为新的再进行修改。

  1. 上位机范例演示了连续采样和有限点采样的各种场景。
  2. FPGA模板部分包含一个适用于基于Delta Sigma的模块的模板和一个适用于基于SAR的模块的模板。 在FPGA硬件下,您还将找到DMA通道,以及一个PDF文档,该文档描述了如何针对您的硬件配置自定义FPGA 

4.程序范例架构

有限点采样:在有限点采样模式下,FPGA在采集一定数量的样本后,停止采样。在这种模式下, ConfigTiming.vi调用BufferConfig.vi,并将上位机应用程序的数据缓冲区大小设置为等于有限点采样中的样本数。

具有​读​取​部分​采样​数据​功能​的​有限​点​采样:有限点采样会分配恰好足够的内存以容纳每个通道的所有请求采样。此外,Read(poly).vi具有一个名为Sam Chan Read per Chan的输入控件,可用于指定每个调用返回的数据块大小,​这样​您​就​可以​分​几次​来​读​取​完​有限​点​采样​得到​的​所有​采样​数据 – 这​是​数据​处理​类​应用​中​非常​有用​的​一个​功能。 

具有​软件​重​触发​启动​功能​的​有限​点​采样:当有限点采样终止时,FPGA会自动重新配置,以准备进行下一次采集。只需调用Start.vi,即可开始执行下一个有限点采样。

连续采样:在连续采样模式下,FPGA无限采集样本,直到接收到停止命令或遇到错误(FIFO溢出、模块下溢等)才会停止。在这种模式下,使用BufferCfg.vi可将上位​机应用程序的数据​缓冲​区​大小​为​每次​读​取​的​数据​点数​的​多倍。​在​随附​的​范​例​程序​中,​默认​使用​的是​十倍。​如果​上位​机​应用​程序​的​数据​缓冲​区​被​数据​填满,​那么​FPGA​将会​报​送​FIFO​数据​溢出​的​错误,导致​采样​进程​停止。

具有​开始/​停止​或者​暂停​功能​的​连续​采样: 如果​一个​有限​采样​任务​要求​的​采样​点数​过​大,​以至于​现有​的​上位​机​内存​空间​无法​完成​该​任务​时候,​可用状态机的​程序​架构​来执行​一段​特定​时间​长度​的​连续​采样​。当​程序​调​用Stop.vi​的​时候, FPGA​会​停止​当前​的​采集​任务,并立刻​自行​重新配置,​等待Start.vi被​调​用。​Stop VI同时​会​清​空​上位​机​应用​程序​数据​缓冲​区​,以​保证​接​下来​的​采样​不会​返回​旧​的​数据。

 5.连续采样基准性能测试

        对于​所有​列出​的​控制器,​CompactRIO Continuous Acquisition Example将​连续​采集​​数据​,​然后​将​采样​数据​流​盘​至​一个​本​机​的​技术​数据​管理​流​(TDMS)​文件、​二​进制​文件,​或者​通过​TCP/​IP​协议​将​数据​发送​到​一个​远程​上位机​上。​下面​表格​中​带​宽的​大小​表示​可以​持续​进行​流​盘​的​数据​量​(直到​硬盘​空间​耗​尽)。

流​盘​至​本​机​文件​[TDMS]:​采样​率 = 51.2 kS/s

控制器1D Wfm SGL2D Array SGL交织的SGL
NI 90746通道(1.23 MB/s)7通道(1.43 MB/s)8通道(1.64 MB/s)
NI 90688通道(1.64 MB/s)8通道(1.64 MB/s)9通道(1.84 MB/s)
NI 90148通道(1.64 MB/s)10通道(2.05 MB/s)13通道(2.66 MB/s)
NI 90769通道(1.84 MB/s)12通道(2.45 MB/s)15通道(3.07 MB/s)
NI 902210通道(2.05 MB/s)13通道(2.66 MB/s)19通道(3.89 MB/s)
NI 902415通道(3.07 MB/s)19通道(3.89 MB/s)27通道(5.53 MB/s)

流​盘​至​本​机​文件[二进制]:采样率 = 51.2 kS/s

控制器交织的SGL
NI 90748通道(1.64 MB/s)
NI 90689通道(1.84 MB/s)
NI 901418通道(3.69 MB/s)
NI 907620通道(4.10 MB/s)
NI 902225通道(5.12 MB/s)
NI 902436通道(7.37 MB/s)

通过TCP/IP传输:采样率= 51.2 kS/s

2D Array SGL

控制器1D Wfm SGL2D Array SGL交织的SGL
NI 907412通道(2.46 MB/s)13通道(2.66 MB/s)18通道(3.69 MB/s)
NI 901412通道(2.46 MB/s)14通道(2.87 MB/s)23通道(4.71 MB/s)
NI 902216通道(3.28 MB/s)20通道(4.10 MB/s)35通道(7.17 MB/s)
NI 902429通道(5.94 MB/s)32通道(6.55 MB/s)45通道(9.22 MB/s)
NI 906840通道(8.19 MB/s)40通道(8.19 MB/s)45通道(9.22 MB/s)

  

这篇关于【NI-RIO入门】NI CompactRIO waveform library的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/522523

相关文章

从入门到精通详解Python虚拟环境完全指南

《从入门到精通详解Python虚拟环境完全指南》Python虚拟环境是一个独立的Python运行环境,它允许你为不同的项目创建隔离的Python环境,下面小编就来和大家详细介绍一下吧... 目录什么是python虚拟环境一、使用venv创建和管理虚拟环境1.1 创建虚拟环境1.2 激活虚拟环境1.3 验证虚

Java List 使用举例(从入门到精通)

《JavaList使用举例(从入门到精通)》本文系统讲解JavaList,涵盖基础概念、核心特性、常用实现(如ArrayList、LinkedList)及性能对比,介绍创建、操作、遍历方法,结合实... 目录一、List 基础概念1.1 什么是 List?1.2 List 的核心特性1.3 List 家族成

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c

史上最全MybatisPlus从入门到精通

《史上最全MybatisPlus从入门到精通》MyBatis-Plus是MyBatis增强工具,简化开发并提升效率,支持自动映射表名/字段与实体类,提供条件构造器、多种查询方式(等值/范围/模糊/分页... 目录1.简介2.基础篇2.1.通用mapper接口操作2.2.通用service接口操作3.进阶篇3

Python自定义异常的全面指南(入门到实践)

《Python自定义异常的全面指南(入门到实践)》想象你正在开发一个银行系统,用户转账时余额不足,如果直接抛出ValueError,调用方很难区分是金额格式错误还是余额不足,这正是Python自定义异... 目录引言:为什么需要自定义异常一、异常基础:先搞懂python的异常体系1.1 异常是什么?1.2

Python实现Word转PDF全攻略(从入门到实战)

《Python实现Word转PDF全攻略(从入门到实战)》在数字化办公场景中,Word文档的跨平台兼容性始终是个难题,而PDF格式凭借所见即所得的特性,已成为文档分发和归档的标准格式,下面小编就来和大... 目录一、为什么需要python处理Word转PDF?二、主流转换方案对比三、五套实战方案详解方案1:

Spring WebClient从入门到精通

《SpringWebClient从入门到精通》本文详解SpringWebClient非阻塞响应式特性及优势,涵盖核心API、实战应用与性能优化,对比RestTemplate,为微服务通信提供高效解决... 目录一、WebClient 概述1.1 为什么选择 WebClient?1.2 WebClient 与

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

从入门到精通详解LangChain加载HTML内容的全攻略

《从入门到精通详解LangChain加载HTML内容的全攻略》这篇文章主要为大家详细介绍了如何用LangChain优雅地处理HTML内容,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录引言:当大语言模型遇见html一、HTML加载器为什么需要专门的HTML加载器核心加载器对比表二

从入门到进阶讲解Python自动化Playwright实战指南

《从入门到进阶讲解Python自动化Playwright实战指南》Playwright是针对Python语言的纯自动化工具,它可以通过单个API自动执行Chromium,Firefox和WebKit... 目录Playwright 简介核心优势安装步骤观点与案例结合Playwright 核心功能从零开始学习