LabVIEW快速入门

news2024/11/16 11:56:03

参考:

  • 知乎labview快捷键 https://www.zhihu.com/question/287709225
  • github 上 LabVIEW教程 https://lv.qizhen.xyz/
  • LabVIEW 参考书籍 链接:https://pan.baidu.com/s/1irc0iftM0Gg3GCN2cBHCKw?pwd=y1mz 提取码:y1mz --来自百度网盘超级会员V7的分享
  • LabVIEW编程基础:条件结构编程 https://blog.csdn.net/ba_wang_mao/article/details/119211808
  • 细讲Labview事件结构用法(上)–入门篇——附用例讲解及用法拓展 https://blog.csdn.net/m0_52176775/article/details/134805242

x.1 LabVIEW简介

x.2 一些加快效率的快捷键

LabVIEW分为前面板和程序框图面板,快捷键都是在程序框图面板使用的。

ctrl+b:去除多余的线条

ctrl+u:快速整理所选区域的UI,并排列整齐

ctrl+h:调出帮助面板,help

ctrl+shift+n:调出导航面板,navigation

按住ctrl点选连线输入端:剪刀将交叉的线变不交叉

文件-属性:查看vi文件所在位置

x.3 基础知识

x.3.1 软件知识,开发流程

x.3.1.1 背景知识

LabVIEW 是美国国家仪器有限公司(National Instruments, NI)最核心的软件产品。LabVIEW 是一种编程语言,与其它常见的编程语言相比,最大的特点就在于它是一种图形化编程语言。G 语言是图形化编程语言(Graphical Programming Language)的缩写。

LabVIEW既是一种语言,又是一款IDE,使用NI LabVIEW 20xx进行开发,使用语言为G语言,他的最大用途在于:可以用LabVIEW的驱动程序或者工具包来与硬件设备建立通讯,快速控制硬件设备

LabVIEW兼容Windows、macOS、Linux,支持常见嵌入式设备如PDA、FPGA,以及运行 VxWorks 和 PharLap 系统的 RT 设备。

x.3.1.2 LabVIEW前后面板

LabVIEW分为前面板和程序框图面板,其中前面板用于搭建给用户看的前端的界面,通过数值控件+标签设置变量;

而重点是程序框图面板。该面板用于设置背后的逻辑,程序框图中所有的图形对象可以分为节点和连线

请添加图片描述

程序框图面板中连线的方向是很重要的,因为可以通过程序执行的顺序看出数据流流动的方向,一般我们默认数据流向从左到右,而一根数据线连在节点左侧默认为输入,右侧默认为输出。

请添加图片描述

是输入还是输出除了从数据流向来看,还可以通过控件类型来看。控件分为三类:常量控件(const),控制控件/输入控件(control),显示控件(indicator)。而控制控件为输入,显示控件为输出。

在这里插入图片描述

请添加图片描述

x.3.1.3 从LabVIEW属性中寻找文件存储路径

通过文件-vi属性就能查看vi的存储路径。

在这里插入图片描述

x.3.1.4 流程/创建子VI过程(包括VI图标,接线板和调用)

我们一般在书写一个新的VI程序程序的时候,遵循以下步骤:

  1. 创建新VI;在前面板书写与人交互的图;在后面板/程序框图面板书写程序逻辑;
  2. 在前面板右键编写子VI图标,画一个新的LabVIEW图标,或者导入图标,需要一个大小为32*32,每一通道位深为256的PNG图片;
  3. 在前面板设计子VI的接线板并保存;
  4. 在父VI中,直接拖入/或者导入子VI图标,按照节点板连线;
x.3.1.5 循环运行

为了让程序一直保存运行,可以使用工具条上的“连续运行”按钮。除此之外还可以使用循环结构,推荐使用循环结构。

请添加图片描述

x.3.1.6 分享(代码片段分享和论坛上讨论)

为了分享代码片段可以在程序框图面板选中代码片段,选中后选择“编辑-从所选项创建VI片段”,如此导出了png格式的代码片段。

如果想将PNG格式的代码片段导入,则新建VI,在程序框图面板拖入PNG便会将代码片段拖进。

LabVIEW的论坛可以在NI官网(需要挂梯子forums.ni.com)和LAVA(https://lavag.org/)上讨论。而代码分享则可以和origin上的分享一样直接点开,使用代码片段实现:

x.3.2 数据类型

x.3.2.1 数据基本类型

数据类型由在前面板创建与在程序框图面板创建,分为两种,分别是在程序框图面板创建的常量类型以及在前面板创建的变量类型。在前面板创建的变量类型可以通过右键-属性-标签来设置变量名,该变量可以在程序框图面板使用局部变量调用变量名来进行调用。

数据类型根据是输入还是输出可以分为输入控件(control)和显示控件(indicator),由于labVIEW特性(数据流从左往右流动),所以输入控件的入口在控件左侧,而显示控件的出口在右侧,书写代码时遵循数据流向从左至右。下图中从上至下分别是常量,输出,输入。

在这里插入图片描述

LabVIEW的数据类型一共有十五种,其中主要记忆数据类型有字符串类型U8(每个字符是U8, ASCII,结尾处不用\0,而是用字符串的长度表示字符串结尾),浮点型DBL(双浮点类型,64bit/8Byte),整型I32(4Byte),布尔类型U8(1Byte)。

其中字符串是粉色线,浮点型是橘色线,整型是蓝色线。

请添加图片描述

可以实现数据的强制类型转换,通过在函数选板 “编程 -> 数值 -> 转换” 来实现。

请添加图片描述

x.3.2.2 使用C语言+公式节点进行数据的计算

数值运算的方式有常见运算(用LabVIEW实现),表达式节点,公式Express VI,公式节点(用C实现计算)。这里推荐常见运算和公式节点:常见运算只能单一输入输出,公式节点适合多输入和多输出且C语言较好的人使用。二者区别如下,

请添加图片描述

x.3.2.3 簇

簇类似结构体,我们往往用簇来生成错误簇并连接。

在簇的前面板中,我们通过右键边缘调出功能面板,我们使用的主要功能有“重新排序簇中控件”和“自动选择大小 -> 垂直排列”。

  1. 往簇中存储数据

在程序框图面板,我们需要将数据捆绑后传入簇或者将簇中数据解绑后传入变量中。簇的创建,需要使用按名称捆绑,而按名称捆绑这个控件首先要有一个输入簇,这个簇提供的是簇里面各个控件的名称,之后就可以在“按名称捆绑”这个控件输入端左键点击选择各个名称了,生成的簇和你的输入簇格式一样。

创建簇,首先我们在前面板创建一个簇,并命名好变量名,如value1和value2,

在这里插入图片描述

在程序框图面板,拉入“按名称捆绑”,我们需要给它外接一个簇,这个簇的作用只是告诉簇中的变量名是什么。接着把你需要给这些变量赋予的值转入,如此便构造了一个簇。你还可以选择后接一个输出簇2来显示簇里的变量和元素,

在这里插入图片描述

  1. 从簇中读取数据

而我们也可以使用簇来存储数据并读取,当我们需要从簇中读取数据时,我们需要使用按名称解绑,我们这两步都需要给簇中的变量名赋予标题(即变量名)。我们在前面板创建显示簇/输出簇,在后面按名称解绑,便可以获取到变量名和值,

在这里插入图片描述

x.3.2.4 数组
  1. 数组的创建

在前面板中创建数组。数组也是一种非常常见的复合数据类型,与簇的不同点在于数组中所有元素的数据类型都必须是同一种,同C的链表/顺序表。数组可以是多维的,可以在前面板的显示中添加滚动条。如下创建的是一个二维数组,

在这里插入图片描述

除了在前面创建数组,我们也可以在程序框图面板创建数组。我们需要使用初始化数组控件来创建数组,我们1指定用1填充所有元素,这里的2,3指定的是第一个维度大小是2,第二个维度大小是3,

在这里插入图片描述

前面板的显示如下图所示,

在这里插入图片描述

  1. 数组的加减操作

在这里插入图片描述

  1. 数组元素的添加

数组元素的添加,同append,使用build array实现。可以往数组的尾部添加元素,类似python的append。需要注意的是左侧两个矩形表示数组,而一个矩形表示元素。

在这里插入图片描述

  1. 数组的索引

数组的索引,在程序框图面板使用索引数组控件,有几个维度就给添加几个索引值。

  1. 数组的长度

使用数组大小控件,传入数组便可。

x.3.2.5 局部变量和全局变量

我们往往需要使用局部变量和全局变量,局部变量是指的在同一个vi文件中可以调用的变量。而全局变量是跨vi仍然可以调用的变量。

在程序框图面板,右键-结构-局部变量,鼠标悬浮于局部变量上右键-选择项-选择你需要映射的变量,注意簇中的变量是没办法直接映射的,

在这里插入图片描述

我们还可以右键,转换为读取,以此将局部变量变为读取控件,

x.3.2.6 代码注释与禁用

我们在程序框图面板直接双击便可以加入注释。我们还可以在代码框图面板右键,找到禁用面板来将整段代码给禁用,

在这里插入图片描述

x.3.3 逻辑结构

x.3.3.1 条件结构(即 if-else/switch 选择判断)

case structure根据输入数据类型的不同具有四种常见形式,有布尔型条件输入,数值型条件输入,枚举型条件输入,字符串型条件输入。

当我们选择连接处的数据类型不同,case中的条件类型也会不同,当我们创建条件结构,默认是布尔类型,连接输入也为布尔类型,他就只会有真假两种输出,

在这里插入图片描述

当我们的连接处为数值的时候,他的条件类型也会默认为数值,

在这里插入图片描述

当我们输入为字符串类型的时候,他的默认条件也会是字符串类型,

在这里插入图片描述

当我们输入为枚举的时候,他的默认条件也会是枚举类型。我们首先在前面板新建枚举变量,

在这里插入图片描述

接着我们右键-属性-编辑项,添加key和value,key即项,value即值。如此便创建了枚举变量。

在这里插入图片描述

在程序框图面板,我们将枚举变量和条件结构连接,在条件结构中不停添加项便完成了结构的创建。

当然,我们右键也可以设置默认分支,但是不推荐设置默认分支,会使得bug难以复现

在这里插入图片描述

x.3.3.2 顺序结构

顺序结构很好的解决了同步异步问题,下一帧会在上一帧运行完后再执行。在程序框图面板进行创建。

在这里插入图片描述

x.3.3.3 循环结构

循环结构常见有两种结构,for循环结构和while循环结构。for循环的运行效率比while循环效率高

在这里插入图片描述

请添加图片描述

在for循环结构中通过添加条件接线端来增加条件终止,

在这里插入图片描述

在循环结构中难的是隧道和数组相结合,以及移位寄存器和局部变量相结合,

  1. 输入隧道

输入隧道有两种模式。

在输入隧道中,如果隧道是一个小实心,则循环每次迭代都会读入同一个输入数据;如果输入的数据一个数组,且隧道是一个空心的小矩形,则在隧道的右键菜单中可以选择启用索引/禁用索引,这样的话每次迭代将依次从数组中取出一个元素。

注意,使用了索引隧道的 for 循环结构,可以不用提供循环次数,即不必输入 N 值,循环迭代次数由输入数组的长度决定,迭代次数即数组长度。但我们并不建议这样使用,指定N值会增加程序可阅读性

注意,如果与索引输入隧道相连的是一个多维数组,每通过一次索引输入隧道,数组会降低一维。对于二维数组,使用两层嵌套的循环结构,即可得到它的每一个元素。

  1. 输出隧道

输出隧道有三种模式。分别是实心方块,空心方块和带横条方块。

实心方块只会将最后一次循环迭代传递给隧道,推荐实心。

空心方块,把每一次循环迭代传递给隧道的数据作为数组元素,合并成一个数组传递出去。注意使用空心方块会升高维度。

带横条纹方块基本不用。

  1. 移位寄存器

移位寄存器往往是一对一对实现的,上一次循环的值会存储下来,在下一次循环中调用。通过在程序框图面板右键添加移位寄存器来增加移位寄存器。

一对移位寄存器由两部分组成,分别位于循环结构的左右两侧。一次迭代结束时,数据流入循环结构右侧的移位寄存器;在下一迭代开始时,该数据会从同一移位寄存器的左侧端流出。

请添加图片描述

x.3.3.4 事件结构

事件结构类似于JavaScript中的循环event监听,在LabVIEW中他也往往需要和循环结构搭配使用,类似setonclicklistener,也可以搭配队列使用。

在程序框图面板,我们右键,在结构中添加事件结构。我们右键事件结构边框-编辑事件来添加监听事件,我们往往使用值改变来添加事件,

在这里插入图片描述

如此,我们便添加了事件结构,

在这里插入图片描述

x.3.4 同步
x.3.4.1 队列操作

同步中的队列操作是一个常使用的操作,我们使用队列来控制程序的顺序执行,我们使用obtain queue来生成队列;使用enqueue来入队;使用dequeue来出队;下图的-1是无限的意思,即队列长度无限。

在这里插入图片描述

我们常用事件+队列+选择+循环来进行事件监听与运行,

连线端具有默认值。当你在进入需要切换的结构,例如case结构时候,你切换之后可能有的线会断掉,这个时候你需要在断点处右键-未连线时使用默认。

在这里插入图片描述

案例如下(可运行),

在这里插入图片描述

x.3.5 图形化显示数据

在这里插入图片描述

波形图表和波形图是最常见的画一维图的控件,XY图用于绘制二维图。

x.3.6 DEBUG

Debug时使用小灯泡便可以逐步执行,

在这里插入图片描述

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

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

相关文章

.NET 使用Camunda快速入门

一.工作流介绍 1. 什么是工作流 工作流(Workflow),是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。 工作流将一套大的业务逻辑分解成业务逻辑段, 并统一控制这些业务逻辑段的执行条件,执行顺序以及相互通…

【双系统】Windows10+Ubuntu22.04安装全过程以及安装后的配置

文章目录 0 背景0.1 电脑配置0.2 电脑磁盘的初始情况 1 准备空闲的磁盘1.1 文件整理1.2 压缩卷和扩展卷的操作 2 准备系统启动盘3 设置电脑的模式(未验证)并进入Ubuntu安装4 安装Ubuntu5 Ubuntu的配置6 其他 0 背景 之前一直在虚拟机上使用Ubuntu系统&am…

CentOS 5/6/7 基于开源项目制作openssh 9.6p1 rpm包—— 筑梦之路

背景介绍 开源项目地址:https://github.com/boypt/openssh-rpms.git 该项目主要支持了centos 5 、6、7版本,针对使用了比较老的操作系统进行openssh安全加固,还是不错的项目,使用简单、一件制作,欢迎大家去支持作者。…

YOLOv5改进 | 主干篇 | 利用SENetV2改进网络结构 (全网首发改进)

一、本文介绍 本文给大家带来的改进机制是SENetV2,其是2023.11月的最新机制(所以大家想要发论文的可以在上面下点功夫),其是一种通过调整卷积网络中的通道关系来提升性能的网络结构。SENet并不是一个独立的网络模型,而是一个可以和现有的任何…

电影“AI化”已成定局,华为、小米转战入局又将带来什么?

从华为、Pika、小米等联合打造电影工业化实验室、到Pika爆火,再到国内首部AI全流程制作《愚公移山》开机……业内频繁的新动态似乎都在预示着2023年国内电影开始加速进入新的制片阶段,国内AI电影热潮即将来袭。 此时以华为为首的底层技术科技企业加入赛…

openmediavault(OMV) (19)云相册(3)mt-photos

简介 MT Photos是一款为Nas用户量身打造的照片管理系统。通过AI技术,自动将您的照片整理、分类,包括但不限于时间、地点、人物、照片类型。可以在任何支持Docker的系统中运行它。详情可查看mtmt.tech官网,mt-photos是付费订阅使用的,也可以一次性付费永久使用,具体使用mt…

修复Apache httpd中的SSL/TLS 协议信息泄露漏洞(CVE-2016-2183)

漏洞详情如下: 详细描述TLS是安全传输层协议,用于在两个通信应用程序之间提供保密性和数据完整性。 TLS, SSH, IPSec协商及其他产品中使用的IDEA、DES及Triple DES密码或者3DES及Triple 3DES存在大约四十亿块的生日界,这可使远程攻击者通过S…

记录 | ubuntu源码编译python3.7.3(指定版本)

一、安装依赖包 sudo apt-get install -y make build-essential libssl-dev zlib1g-dev sudo apt-get install -y libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm sudo apt-get install -y libncurses5-dev libncursesw5-dev xz-utils tk-dev 二、从Python网…

node.js express框架开发入门教程

文章目录 前言一、Express 生成器(express-generator)二、快速安装1.express框架express-generator生成器安装2.使用pug视图引擎创建项目,projectName 为项目名称自定义 三、安装热更新插件 nodemon四、目录结构1. public文件夹2.routes路由其他请求方式…

本地部署生成式AI,选显卡or笔记本电脑?!新款酷睿Ultra举票

来源 | 算力豹 200亿个大模型参数无压力,新一代酷睿Ultra凭什么? 12月14日报道,在大模型军备竞赛如火如荼的今天,真正让AI铺开惠民,那么移动端、PC将成为首选,AI PC或成标配。英特尔今日奉上AI硬件大招&am…

对于c++的总结与思考

笔者觉得好用的学习方法:模板法 1.采用原因:由于刚从c语言面向过程的学习中解脱出来,立即把思路从面向过程转到面向对象肯定不现实,加之全新的复杂语法与操作,着实给新手学习这门语言带来了不小的困难。所以&#xff…

搞定Apache Superset

踩雷了无数次终于解决了Superset的一系列问题 现在是北京时间2023年12月27日,亲测有效。 Superset概述 Apache Superset是一个现代的数据探索和可视化平台。它功能强大且十分易用,可对接各种数据源,包括很多现代的大数据分析引擎&#xff…

<软考高项备考>《论文专题 - 32 成本管理(5) 》

6 收尾-经验教训 6.1 经验 1、做好计划,项目成本管理和我们的日常开支管理一样,如果不做好计划,很容易造成成本失控,最后是钱花光了,活没干完 2、要有冗余思想,受成本预算和实际之间的偏差以及项目中必不…

Postman常见问题及解决方法

1、网络连接问题 如果Postman无法发送请求或接收响应,可以尝试以下操作: 检查网络连接是否正常,包括检查网络设置、代理设置等。 确认请求的URL是否正确,并检查是否使用了正确的HTTP方法(例如GET、POST、PUT等&#…

HBase 例行灾备方案:快照备份与还原演练

博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,…

Oracle 12c rac 搭建 dg

环境 rac 环境 (主)byoradbrac 系统版本:Red Hat Enterprise Linux Server release 6.5 软件版本:Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit byoradb1:172.17.38.44 byoradb2:…

算法——哈希表

哈希表简介 **是什么:**存储数据的容器有什么用:快速查找某个元素,时间复杂度O(1),空间复杂度O(n)**什么时候使用哈希表:**频繁查找某一个数(这里不要忘了之前的二分,时间复杂度O(logN)&#x…

论文阅读:Large Language Models Are Zero-Shot Time Series Forecasters(2023NIPS)

摘要 文章涉及了两个时间序列的任务:forecasting,imputation. 对于预测任务:通过将时间序列编码为一系列数字,可以将时间序列预测任务转化为文本里面的next-token预测任务。在大规模预训练语言模型的基础上,文章提出了…

泰迪智能科技分享:AI大模型发展趋势分析

大规模预训练语言模型,也被称为“大模型”或“基座模型”,其特点在于拥有巨大的参数量,构成了复杂的人工神经网络模型。大模型具有规模性(参数量大)、涌现性(产生预料之外的新能力)以及通用性&a…

k8s二进制最终部署(网络 负载均衡和master高可用)

k8s中的通信模式 1、pod内部之间容器与容器之间的通信,在同一个pod 中的容器共享资源和网络,使用同一个网络命名空间,可以直接通信的 2、同一个node节点之内,不同pod之间的通信,每个pod都有一个全局的真实的IP地址&a…