24.Labview移位寄存器的使用及数据流解析

本文讲解移位寄存器的常用场景及其数据流的方向解析。

在Labview中移位寄存器是存在于循环结构中的,也就是说for循环和while循环中,在了解移位寄存器之前首先要了解一下for循环和while循环的原理及其数据流的流动方向,题主之前讲过for循环的文章,有想了解的同学可以点击下方链接查看补充相关知识。

1.Labview for循环精讲:https://blog.csdn.net/m0_52176775/article/details/135746691?spm=1001.2014.3001.5502

由于Labview中的while循环使用方法较为简单使用场景较为广泛所以在下文中针对该循环将简单介绍。

移位寄存器

  • 1. 移位寄存器定义
    • 1.1 什么是移位寄存器
    • 1.2 移位寄存器的三要素
  • 2. 移位寄存器的数据流方向
  • 3. 移位寄存器的使用场景

1. 移位寄存器定义

什么是移位寄存器呢? 移位寄存器在什么情况下才会使用呢?将本章先讲解一下移位寄存器的定义及原理。

题主提前说一下答案:“移位” “寄存” 是两个词语,寄存是指循环结构上的两个寄存器,相当于两个容器储存着循环中输给它的数据,移位是指将上个循环中放到容器中的数据倒到下个循环容器中,即上次循环的数据拿到下个循环使用。详细解释请看下文。
下文中的“循环结构”特指for循环和while循环。

1.1 什么是移位寄存器

NI官方给出的解释如下:
移位寄存器可用于将上一次循环的值传递至下一次循环。如下图所示,移位寄存器以一对接线端的形式出现,分别位于循环两侧的边框上,位置相对。
在这里插入图片描述
也就是说,大家可以仔细观察,移位寄存器是循环结构上的一对方向相反的箭头,它们的位置是相对的,也就是说二者一直在一条水平线上,移动一个时另外一个也随着移动到相同高度。

右侧接线端含有一个向上的箭头,用于存储每次循环结束时的数据。
左侧接线端含有一个向下的箭头,用于拿取上次循环结束时的数据。

LabVIEW将数据从移位寄存器右侧接线端传递到左侧接线端。循环结构会使用左侧接线端的数据作为下一个循环的初始值。循环执行后,右侧接线端将输出移位寄存器最终保存的值。

移位寄存器只存在于循环结构上的,也就是说while循环和for循环中才会用到移位寄存器,在Labview循环结构中的移位寄存器如下图所示:
在这里插入图片描述
创建方式为右键循环结构的框图并单击创建移位寄存器,此时程序的循环结构中就会出现左右两个方向相反的箭头,此时的移位寄存器因为还没有赋值所以是黑色的状态。

1.2 移位寄存器的三要素

本节先讲移位寄存器的三个重要的参数,讲解完成后,下一章通过图解的方式,让大家更加具象的了解移位寄存器的工作原理。

移位寄存器有如下三个重要要素:
初始化值
中间接线
最终值
其各自在循环中的位置如图所示:
在这里插入图片描述
1.初始化值
移位寄存器是有属性的,也就是说传递的是数值还是数组、还是字符串是预先规定好的,初始化值规定了移位寄存器传递的数据类型和移位寄存器在第一次循环时的初始值这两个参数。(数据类型是指字符串、数组、数值这一类中的某一种)

2.中间接线
中间接线起到了桥梁的作用,该位置从左侧箭头拿取上次循环的数据,并向右传递,而右侧箭头获取的是本次循环结束时的输入该引脚的数据。举个例子如下图所示:
在这里插入图片描述

在这个while循环中,终止条件是i=1,因为i从0开始计数(while循环和for循环都是从0开始,这个记住就好),所以while循环循环了两次,一次是i=0,一次是i=1,好的,那么我们来看,第一次循环时数值2被赋予了初始化值,也就是我们上述提到的0,此时中间接线向数值输入了一个当前i值,即0,第二次循环右侧箭头将i=0传递给了左侧箭头,进入此时左侧数值为0,中间接线又将i=1传递给了数值,此时循环终止。理论上数值2的值为0,数值控件的值为1。

3.最终值
最终值是:移位寄存器所在的循环结构结束时,移位寄存器中最后保存的那个值,就是最终值,并将最终值输出出来。
所以上面例子中最终值应该为1。如下图所示:
在这里插入图片描述

2. 移位寄存器的数据流方向

接下来题主将以一张图片的形式来向大家讲解移位寄存器中数据流的具体流向,以帮助大家更深刻的理解移位寄存器在Labview中具体应用场景其使用方式。
具体如下图所示:
在这里插入图片描述
框图中左右两个箭头代表寄存器,对应1.2节中的参数来看,移位寄存器中左侧输入初始化值,初始化值作为循环结构中第一次循环时的值,移位寄存器拿取该值用于在本次循环中进行数据处理,经过数据处理后的数值或者参数在本次循环结束后放入了移位寄存器的右侧箭头中,那么本次循环结束。右侧箭头中存储的参数值由绿色虚线部分传递至左侧移位寄存器的箭头中,此时进入该左侧箭头的数值就作为下一次循环的初始值!
如此往复!
举两个最简单的例子:

作0-100的所有数字的和,我们都知道这个答案是5050,那么在程序中该如何计算呢?请看下面程序:

在这里插入图片描述
在该程序中, for循环的次数为101次,原因是循环结构中的i值是从零开始的,所以当第101次循环的时候i=100,将每次循环后的i值加上去传递到右侧,得到最终值为5050,如果大家想了解计算过程,可以点击程序上方的高亮按钮查看具体的数据流向。

初始化生成一个一维数组,一维数组中的元素为从0-100的偶数,使用移位寄存器如何去做?请看下面程序:

在这里插入图片描述
以上两种方式都可以实现题目中的目的。
相信大家通过上面的简单的例子可以了解移位寄存器的基本原理。

3. 移位寄存器的使用场景

数据的临时存储与计算;上文中的几种移位寄存器均为该类型的应用场景。
数据传输;数据在循环结构中处理后经移位寄存器传输。
状态机结构;用于切换程序运行分支的状态机结构,属于常用程序框架的一种,移位寄存器就是其中一种可用的结构,该结构题主会在后续中持续讲解手把手搭建框架的内容。

本章讲解了labview中的移位寄存器的使用及数据流的运行方式解析,希望大家能够仔细消化并巩固相关知识,那么本期内容到此结束欢迎大家点赞收藏加关注,有问题的地方可以评论并私聊题主,题主闲时会一对一向大家认真解答~

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

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

相关文章

使用python绘制华夫饼图

使用python绘制华夫饼图 华夫饼图效果代码 华夫饼图 华夫饼图(Waffle Chart)是一种数据可视化图表,用于显示数据在一个网格中的分布情况。它类似于饼图,通过将数据划分为等大小的方块来表示不同类别的比例。华夫饼图的优势在于它…

国联易安:网络反不正当竞争,要防患于未然

据市场监管总局官网消息,为预防和制止网络不正当竞争,维护公平竞争的市场秩序,鼓励创新,保护经营者和消费者的合法权益,促进数字经济规范健康持续发展,市场监管总局近日发布《网络反不正当竞争暂行规定》&a…

I2C通信协议

I2C通信协议 项目要求是,通过通信线,是实现单片机读写外挂模块寄存器的功能,至少实现,在指定位置写寄存器和在指定位置读寄存器,实现了读写寄存器,就实现对模块的控制。 MPU6050,OLED&#xf…

第六篇 移位寄存器

实验六 移位寄存器 6.1实验目的 掌握移位寄存器的工作原理; 掌握利用移位寄存器实现串行与并行的相互转换; 掌握使用移位寄存器实现乘除法运算; 6.2 原理介绍 6.2.1 基本移位寄存器 在实验四中,我们主要介绍了寄存器的结构…

QGIS 根据点图层上的点 画线生成线图层

使用节点捕捉功能 空白处鼠标右键---》勾选捕捉工具栏----》选中磁铁工具 创建线图层---》编辑模式---》点击新增线工具--》鼠标靠近点,会有高亮提醒,左键选中,右键结束当前线段绘制

千帆 AppBuilder 工作流编排功能直播总结

千帆 AppBuilder 工作流编排功能直播总结 ​ 上个月,千帆AppBuilder推出了一项引人瞩目的新功能——工作流编排。在官方直播中,百度产品经理不仅深入介绍了这项功能,而且还通过创建多个组件,生动展示了AppBuilder组件工作流的强大…

网络工程师---第四十六天

1、逻辑网络结构设计阶段中,要想实现核心层与汇聚层交换机全部互相连接,组网技术有哪些? 2、工作区子系统的通信布线规范有哪些? 3、综合布线中施工规范有哪些? 4、综合布线系统中核心机房通常包括哪些设备&#xff1f…

API商品数据接口(电商数据api)返回京东淘宝商品详情数据提高开发效率

众多品牌选择使用比价工具进行采购,主要是出于以下几个重要原因: 提高开发效率:电商数据采集API接口允许不同的应用程序之间高效地进行交互,节省了大量的人力物力成本,使得开发者可以将更多时间和精力集中于自身的核心…

分库分表方案

文章目录 分库分表设计思路hash取模和范围方案最终方案采用hash取模和rang范围两者相结合 分库分表设计思路 首先分库分表有两种方式,一种是垂直拆分,一种是水平拆分。 垂直拆分 垂直拆分比较简单,也就是本来一个数据库,数据量大…

小红书前端2轮面试期望22K,全程问低代码设计

一面(通过) 1、好,那我们开始把,先简单介绍一下自己的一个经历,以及自己有亮点的项目?balabala 2、你可以这样介绍:在这里边主要负责哪几个项目,哪些项目是比较有亮点的&#xff0…

超市管理系统设计1——基本功能设计

超市管理系统基础功能类设计 1. 概述 本设计文稿提供一个基础的超市管理系统,包含基本的功能设计。该系统将管理商品、顾客、员工和交易记录,不需要接入数据库,通过文件存储数据,并满足面向对象编程的基本要求(继承、…

LabVIEW开发EOL功能测试系统

LabVIEW开发EOL功能测试系统 介绍了一种基于LabVIEW开发的EOL功能测试系统方案,涵盖软件架构、工作流程、模块化设计、低耦合性、易于修改与维护、稳定性及硬件选型。系统通过高效的CAN通信实现对电机控制器的全面测试,确保运行可靠并支持未来的升级需求…

媒体有入口,发稿有入口 是什么意思?

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 媒体有入口,发稿有入口是指在新闻媒体发稿时,稿件可以通过一定的路径被访问和浏览。具体来说,有入口的新闻稿件可以通过点击链接,逐步深入…

PyTorch深度学习实战(44)——基于 DETR 实现目标检测

PyTorch深度学习实战(44)——基于 DETR 实现目标检测 0. 前言1. Transformer1.1 Transformer 基础1.2 Transformer 架构 2. DETR2.1 DETR 架构2.2 实现 DETR 模型 3. 基于 DETR 实现目标检测3.1 数据加载与模型构建3.2 模型训练与测试 小结系列链接 0. 前…

第 10 章 动态参数(自学二刷笔记)

重要参考: 课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 讲义链接:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 10.2动态参数 参数服务器的数据被修改时,如果节点不重新访问,那么就不能获取修改后的…

MySQL的组成与三种log

MySQL由几块组成 连接器分析器优化器执行器 MySQL的三大log blog 作用&#xff1a; 用于主从同步与数据恢复 记录内容&#xff1a; 已经完成的 DML(数据操作语句)&#xff0c;主要是用于数据备份 redolog<重试日志> 作用&#xff1a; 崩溃恢复&#xff0c;用于事…

Linux - 高级IO

目录 理解五种IO模型非阻塞IO的设置多路转接之select 实现一个简易的select服务器select服务器的优缺点 多路转接之poll 实现一个简易的poll服务器poll服务器的优缺点 多路转接之epoll epoll原理epoll的优势用epoll实现一个简易的echo服务器 epoll的LT和ET工作模式 什么是LT和…

【mysql】数据报错: incorrect datetime value ‘0000-00-00 00:00:00‘ for column

一、问题原因 时间字段在导入值0000-00-00 00:00:00或者添加 NOT NULL的时间字段时&#xff0c;会往mysql添加0值&#xff0c;此时可能出现此报错。 这是因为当前的MySQL不支持datetime为0&#xff0c;在MySQL5.7版本以上&#xff0c;默认设置sql_mode模式包含NO_ZERO_DATE, N…

实验名称:组合数据类型

大家好&#xff01;欢迎收听你的月亮我的心&#xff01;我是肖老师&#xff01;好久不见&#xff01; 目录 一、实验目的&#xff1a; 二、实验环境&#xff1a; 三、实验步骤&#xff1a; 四、实验结果&#xff1a; 1.已知列表li_one[1,2,1,2,3,5,4,3,5,7,4,7,8],删除列…

解决使用Python检查本地网络中运行的Web服务器的问题

如果我们要检查本地网络中运行的 Web 服务器&#xff0c;可以使用 Python 的 socket 模块来进行网络连接测试。以下是一个简单的示例代码&#xff0c;演示如何检查本地网络中运行的 Web 服务器&#xff1a; 1、问题背景 在学习如何使用 Python 时&#xff0c;一位用户希望编写…