当前位置: 首页 > news >正文

【NI-DAQmx入门】LabVIEW数据采集基础应用程序框架

         对于可管理规模的 LabVIEW 程序,分析现有程序或设计新程序的方法通常是从整体到具体,即从高级到低级的分析和设计。从一开始就直接深入细节可能会效率较低。

        在设计阶段,开发人员首先将程序垂直划分为几个层级。从最顶层开始,他们考虑如何根据程序的功能以及各部分之间的相互关系将这一最高层划分为各个部分。然后,针对这一最顶层的每个部分,再考虑下一层,根据各自的任务将其进一步划分为更详细的功能模块。这种分层方法一直延续到下方。

        根据程序的规模和复杂程度,程序可以分为不同的层次结构。最简单的程序可能只包含一个层次,用一个 VI 实现。中等复杂的程序可能包含两个层次,由一个主 VI 和多个子 VI 组成。对于更复杂的程序,层次数量可能会增加。

        数据采集​​参考设计提供了一个框架,您可以在此框架上构建和扩展自定义应用程序。参考设计的核心功能包括配置数据采集、获取数据、将数据记录到磁盘以及显示数据。它建立在其他 LabVIEW 软件组件之上,以最大限度地提高软件重用率。它并非设计为功能齐全的应用程序,而是自定义的起点,而不是空白的框图。为了满足您的需求,需要进行一些自定义。

软件架构

         这些框架,执行这样的任务:

  • 用户界面控制循环 和 主要事件处理循环:处理来自前面板的所有的GUI事件,这是因为大部分程序并不是直接运行就开始采集的,比如需要一些用户登录、权限限制、读取配置文件,保存配置等等。
  • 数据采集循环:数据采集​​模块从配置的数据源获取数据。这通常是硬件数据采集设备,但也可以是来自文件的数据,甚至是模拟数据。此模块必须能够以无损方式获取数据并将其发送到其他进程以记录到磁盘、进行信号处理或显示。 
  • 数据流盘循环:数据记录模块将时间域数据保存到磁盘。数据通过队列从数据采集过程接收。队列是一种缓冲机制,可确保数据路径无损,但如果数据记录过程无法足够快地将数据写入磁盘,则队列中的缓冲区将继续增长并占用内存。应该考虑如何处理这种情况,例如限制队列大小、监控队列积压、自动停止采集并通知用户等。
  • 数据显示循环:可以检查数据的连续性以及做数据处理,例如FFT、RMS等。一些数据采集设备的采样率极高,可以在很短的时间内捕获数百万甚至数十亿个数据点。将所有这些数据直接显示在波形图上并不实际。由于要呈现的数据量很大,因此非常耗时。因此可以选择使用重采样,或者截取信号周期的一段进行显示。

        假设要编写一个应用程序,该应用程序在接受数据的同时,还要按照接收顺序处理数据。由于这些数据的排队(生产)速度比实际处理(消费)速度高出很多,因此生产者/消费者设计模式最适合此类应用程序。通过这种方法,消费者循环可以按自己的速率处理数据,同时生产者循环也可以让额外的数据排队。 

        进程之间传递的数据类型有两种:命令和数据。所有命令都通过 AMC 发送。时域数据通过无损机制(队列)和有损机制(通知程序)发送。设计决定是为了保证将数据传送到记录过程,同时可能牺牲向显示模块的传送。如果 PC 有足够的资源,队列和通知程序都将以无损方式运行。如果 PC 无法处理请求的内容,队列将缓冲数据,而通知程序将丢弃数据。

        

http://www.lryc.cn/news/423584.html

相关文章:

  • 海山数据库(He3DB)源码详解:CommitTransaction函数源码详解
  • 【网络】传输层TCP协议的报头和传输机制
  • 【活动报名】打造编程学习“知识宝库”:高效笔记记录与整理指南
  • 使用Arduino IDE生成带有bootloader的烧录文件
  • 搭建高可用OpenStack(Queen版)集群(九)之部署nova计算节点
  • C# 字符串扩展方法
  • JookDB和MobaXterm下载安装使用
  • Docker安装Nacos(详细教程)
  • Pandas:提供了快速、灵活和表达式丰富的数据结构。
  • 强!小目标检测全新突破!检测速度快10倍,GPU使用减少73.4%
  • 重修设计模式-创建型-原型模式
  • S71200 - 编程 - 笔记
  • 【项目】畅聊天地博客测试报告
  • 【Next】全局样式和局部样式
  • 关于Docker的详细介绍
  • 一台佳能G3811彩色喷墨打印机打印没颜色报5200的维修记录
  • 【LeetCode】452.用最少数量的箭引发气球
  • 网络安全流程规范文件解读(安全专业L1级)
  • Java、python、php版的邮件发送与过滤系统的设计与实现 (源码、调试、LW、开题、PPT)
  • st算法求RMP
  • 零基础学习Redis(1) -- Redis简介
  • 安装MySQL数据库【后端 8】
  • JAVA学习-练习试用Java实现“整数转换英文表示”
  • TPshop商城的保姆教程(Ubuntu)
  • MySQL存储过程、触发器、视图
  • 每一行txt文件的内容将作为CSV文件中的一行,逗号、空格和句号,冒号作为分隔符拆分成多列
  • 基于inotif的文件同步备份
  • luckyexcel 编辑预览excel文件
  • 记录Java使用websocket
  • (javaweb)分层解耦