你听说过LabVIEW吗?

article/2025/7/6 0:49:47

LabVIEW是美国国家仪器公司NI的图形化的编程语言,LabVIEW的全称是Laboratory Virtual Instrument Engineering Workbench,平时我们常见的Python、C/C++、Java编程语言虽然也分编译型语言和解释型语言、底层语言和高级语言等,但基本都是文字形式的程序编写,需要掌握其语言特定的语法来实现程序特定的功能,而LabVIEW则是由一个个图形化的模块加上模块上的输入输出端子,根据其特定的规则进行相互连线,即可实现程序的功能。本文将对LabVIEW进行一个全局的介绍,以助快速了解什么是LabVIEW,后续也会继续讲解LabVIEW的一些具体用法和项目开发的实践示例。

如果您觉得本文有助于进一步了解LabVIEW,或者想更加深入学习LabVIEW,可以文章底部公众号消息私信回复我,将为您发送整理好的系列学习资料和项目实例。

一 LabVIEW编程语言的地位

在大学期间,我有机会获得了LabVIEW的CLAD证书(Certified LabVIEW Associate Developer),证书的模样见下图(比CLAD更高阶的认证是CLA,这些认证都是需要付费的,然后参加相关的考试并通过后,获取证书)。在学校竞赛和工作中,用LabVIEW开发过多个自动化检测和测试的项目,以及结合有使用其他编程语言开发过诸多项目的经历,对LabVIEW结合自己的使用情况做一些体会分享。

我的CLAD证书

关于LabVIEW编程语言的地位,首先可以参考TIOBE的程序语言排行榜,每个月都会更新,当前最新排名,LabVIEW排在第44位。之前的排名我也经常关注,LabVIEW基本上是在40~50之间,基本不会怎么变动。

图源:tiobe官方网站

从LabVIEW的排名可以看出,LabVIEW并不常用,甚至不少开发者都没听说过。但是LabVIEW又有一定的市场,特别是在仪器仪表领域,在许多的科研院所、工业领域有非常重要的应用。

“软件即仪器”是LabVIEW的初衷,也是LabVIEW所提倡的“虚拟仪器”技术,即LabVIEW最为常见的开发场景是结合NI的硬件仪器,在PC上用LabVIEW快速开发应用和美观的界面,比如通过一个高速采集卡,搭配上不同的LabVIEW程序,可以作为示波器、信号发生器、逻辑分析仪等等各类基础的仪器仪表。

当然除了软硬件一体的系统快速搭建,也可以用LabVIEW来快速入门学习编程,因为图形化的编程方式,可以先不用了解那么多语法规则,但是可以直观的看到程序的流程的组合编写,在调试时还能实时看到数据在流程里面的流向,对于编程初学者而言,能够快速建立计算机程序运行的直观概念,再去学习其他编程语言时也能较快速的迁移。

当然LabVIEW并非广泛应用,也有其不便利的地方,比如仅安装LabVIEW编程环境,就需要以G为单位的存储空间,及时编写一个很小功能的程序,也需要完成基础的环境安装。因此许多普通的硬件设备上是没法发布和运行LabVIEW的程序的,虽然LabVIEW提供了转为C代码的功能,但是转换后的代码很难看懂其逻辑,功能也很难做到转换后即可用,所以LabVIEW是对机器硬件性能有比较高的要求的,当前的许多嵌入式设备和系统肯定是无法使用。因此在仪器仪表领域,通过LabVIEW开发高性能设备和仪器来做特定的用途,或对其他设备的生产和品质做标定是适合的,因此这些因素限制了LabVIEW的应用领域。

另外还有一点也可能限制LabVIEW的推广应用,它是收费的,向Python、C/C++、Java开发环境一般都是免费使用,有的甚至还是开源的,而LabVIEW是需要付费激活的,而且其中一些模块还需要再另外收费:

关于LabVIEW的基础编程知识,可以关注并私信我获取相关的学习资料,另外网上也能找到不少视频学习的教程。关于基础的这块本文就不再赘述了,接下来对LabVIEW中印象比较深的几个点做些梳理介绍。

二 LabVIEW里的特殊“变体”

LabVIEW中有一种特殊的数据类型叫做变体。LabVIEW官方将变体称为可以容纳所有数据类型的一个容器,可以传入几乎所有的其他数据类型,比如可以将某个数值转换为变体,然后再通过相应的变体至数值转换即可得到原来的值了。变体有许多很好的用处,但是编程也容易出问题。

2.1 什么是变体?

变体其实存储了两部分内容,第一部分是数据类型的描述,第二部分就是数值本身的存储了,因此在将数据类型的值转为变体时,不仅存储了该值,还有相应类型的描述。在从变体转为数据类型时,需要知道原来的数据类型,然后与之匹配转换出原值。这个功能看似将数据转来转去,多此一举,而且数据类型弄错就会导致错误的数据,但是变体是非常有用的,就像C语言中的万能指针一样,当不确定需要传入的数据为何种类型时,其使用价值就体现出来了。可能LabVIEW更多的像C语言一些,虽然也有面向对象部分的功能,但数据流的形式更加接近于过程控制。

2.2 变体的使用注意

其一是在传入数据类型不确定时使用变体,另外一点就是对ActiveX控件数据的传输,比如MSCOMM控件,还有数据库相关的DCT工具中数据的存取等,都用到的是变体。

变体使用的最大问题是数据类型的确定,这也是变体的本身的属性决定的。许多时候比如在使用ActiveX控件的时候,并不知道变体是如何将数据转换成更加底层的数据的,也就是只要使用到变体至数值或者是数值至变体中的一个,变体是从ActiveX中传来的,这时就必须详细的了解该ActiveX变体所支持的数据类型了,否则编程中会出现非常奇怪的数据错误问题。比如该ActiveX控件的变体只支持字符串和一维字节数组的传入,但由于没有了解到这一点,在编程时给ActiveX控件变体传入了float型数值,程序上并没有错误,但是ActiveX控件得到的数据并非需要的,经过转换后得到的是错误的数值,结果就出现莫名其妙的问题了。

三 一个示例:如何编写保存二进制文件的程序

这里以一个实际的LabVIEW编程实例,来说明LabVIEW的图形化程序到底是如何编写的。这里以在LabVIEW中编程将需要的一些数据保存为二进制文件为例,这里二进制文件后缀名取为.bin。

如下为实例实现的流程说明:

  1. “写入二进制文件VI”中文件,数据,字节顺序,预置数组或字符串大小在帮助文档中都有详细说明,我使用的是Windows操作系统,字节顺序一般都选择endian。

  1. “写入二进制文件VI”的“文件”输入有两种,一种是直接连接文件路径,另一种是打开或创建的文件的引用。下图是直接连接文件路径开始写入:

下图则是连接文件的引用:


这两种方式是有区别的,使用文件路径输入则是从创建或打开的文件开始进行写入,而使用引用输入则是接在前者后面继续写入(这一点在帮助文档中也有说明)。

  1. LabVIEW中支持路径和引用的相互转换,路径转换为引用使用“文件IO”下的“打开/创建/替换”VI:


而引用转换为路径使用“文件IO”中“高级文件函数”中的“引用句柄至路径转换”:

  1. 对于写入的二进制文件的验证,由于无法直接用文本编辑器查看(与.txt, .xml等文本文件不同),测试一般使用获取其字节大小来验证写入内容是否成功,该VI位于“文件IO”中“高级文件函数”下。

本文希望对LabVIEW从多个角度有一个初步的介绍,后续也会再梳理更多的实际开发示例,更多嵌入式、无线通信硬核技术分享,职业发展、实战项目,在 vx gzh “技塑未来”。


http://chatgpt.dhexx.cn/article/4qqFwFNI.shtml

相关文章

LabVIEW编程LabVIEW开发DAQ采集消除串扰 例程与相关资料

LabVIEW编程LabVIEW开发DAQ采集消除串扰 例程与相关资料 在DAQ采集是,模拟输入通道上出现串扰,浮动,随机尖峰,波动,噪声过大或其他一些不希望的电压等现象。这种现象有什么可能的原因 一些常见的原因是: …

LabVIEW编程LabVIEW开发使用编辑菜单或者文本下拉列表

LabVIEW编程LabVIEW开发使用编辑菜单或者文本下拉列表 ​​​我有一个LabVIEW的字符串数组,我想把它们填充到文本或者下拉列表中,我知道下拉列表跟字符串不是同一个数据类型,我能够通过编程的方式实现吗? 在您的程序框图上&…

LabVIEW编程基础:顺序结构编程

目录 一、示例说明 二、程序框图实现 三、总结 LabVIEW又称为G语言,简单易学、形象直观,采用图形化的编程方式,是专为测试、测量和控制应用而设计的系统工程软件。 同C语言编程一样,LabVIEW中也有对应的三大程序执行框架结构&a…

LabVIEW编程LabVIEW开发高级数据采集技术 计数器定时器的操作 例程与相关资料

LabVIEW编程LabVIEW开发高级数据采集技术 计数器定时器的操作 例程与相关资料 典型的多功能DAQ设备只有2个板载计数器,而智能DAQ则能在各条数字线上运行计数器功能。 数字I/O节点能够在NI LabVIEW FPGA中利用名为单周期定时循环的专业结构,帮助用户在2.5…

LabVIEW编程运动控制PID入门

LabVIEW编程运动控制PID入门 电机运动控制系统包含了五种主要元件-被移动的机械装置,具回授和电机运动控制I/O的电机,电机驱动器,智慧型控制器,及程式/操作员界面软件。National Instruments除了提供精确、高效能的多轴电机运动控…

labview编程笔记之顺序结构

CSDN话题挑战赛第2期 参赛话题:学习笔记 学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐&am…

LabVIEW编程实例:如何通过TCP协议进行数据通信

目录 实例说明 编程思路 服务器端程序 客户端程序 总结 怎么获取服务器上的ip地址和端口号 对于网络通信来说,LabVIEW平台本身提供了多种方法加以实现,如可以通过TCP协议、UDP协议、DataSocket技术、甚至远程面板通信技术等方式进行通信。 下面通过…

LabVIEW编程LabVIEW控制NI cRIO-9066例程与相关资料

LabVIEW编程LabVIEW控制NI cRIO-9066例程与相关资料 NI cRIO-9066 667 MHz双核CPU,256 MB DRAM,512 MB存储容量,Zynq-7020 FPGA,8槽CompactRIO控制器—cRIO-9066是一款坚固耐用的无风扇嵌入式控制器,可用于高级控制和监…

LabVIEW示波器编程

CSDN话题挑战赛第2期 参赛话题:学习笔记 博客写作背景----项目中解决的问题 最近遇到一个使用stm32单片机多路采集信号的项目,还需要在上位机进行波形的查看,信号算法的处理,初步定为使用labview编写上位机程序进行处理。为啥用l…

LabVIEW编程语法学习笔记之变量

CSDN话题挑战赛第2期 参赛话题:学习笔记 与其他通用编程语言一样,LabVIEW中也有局部变量和全局变量的概念,用来控制变量的作用范围。 局部变量 局部变量的作用范围仅为其所在VI,其他VI对该局部变量不可见。 在LabVIEW中添加一…

labview编程笔记之条件结构

CSDN话题挑战赛第2期 参赛话题:学习笔记 学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐&a…

LabVIEW编程LabVIEW开发在LabVIEW中复用现有代码

LabVIEW编程LabVIEW开发在LabVIEW中复用现有代码 使用LabVIEW,我们可以将多种编程方法与图形化数据流结合到单个应用程序中。基于这种灵活性,可以选择所需的工具来创建待测设备(DUT)的控制、配置或测量库。LabVIEW可将多种语言(如.m、C、Pyth…

LabVIEW编程LabVIEW开发使用LabVIEW访问Microsoft Access

LabVIEW编程LabVIEW开发使用LabVIEW访问Microsoft Access Microsoft Access是Microsoft提供的常见数据库工具包。该KB提供基本操作,包括通过LabVIEW创建和连接数据库,插入,删除,更新和选择记录,以便新用户更好地了解。…

【LabVIEW编程——循环读取文件夹及文件】

LabVIEW编程——循环读取文件夹及文件 小树不修不直溜,人不修他哏啾啾!老铁们,大家好!好久不见,甚是想念。全民抗疫的这两年里,大家都生活不易,病毒依旧强势,家人们,防范…

labview编程笔记之循环结构

CSDN话题挑战赛第2期 参赛话题:学习笔记 循环结构 While循环 在LabVIEW中如何创建一个While循环呢?方法很简单。如图1所示,首先,在“函数”选板→“编程”→“结构”子选板上,选中While循环,将它拖曳到程…

【LabVIEW视觉懒人教程】1.1labview编程方式介绍

打开labview界面 labview的文件后缀名是.vi,单个vi包含前面板和程序框图,前面板是程序运行时显示给用户的界面,程序框图里面是程序的代码。 前面板空白处鼠标右键,弹出控件选板。 程序框图空白处右键,弹出函数选板。 …

labview混合编程学习

由于开发需要,上位机需要采用labview设计,但是之前研究算法主要靠matlab或者python,因此考虑采用labview混合编程的方式。 目前,界面设计采用Labview,而算法部分采用Matlab或者python,即采用混合编程的方式…

了解LabVIEW编程

LabVIEW通其他编程语言和软件一样,安装容易,容易使用。 LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文…

LabVIEW编程规范

LabVIEW编程规范 编写LabVIEW程序应该遵循哪些规范,使得编写的程序在运行效率、可读性和可维护性方面得到显著提高? 和本文编程语言类似,在LabVIEW中设计程序框图时也应该养成良好的编程习惯,使得设计出的图形化程序外观美观、便…

LabVIEW编程入门笔记

CSDN话题挑战赛第2期 参赛话题:学习笔记 学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐&a…