Labview笔记
1. 背景
Labview这个软件,从大学到现在,装了卸载,卸载了又装。来来回回不下10次了,那本大学时的教材Labview 2010基础教程,一直没丢,但也一直没看过。最近又装回来了,准备简单的系统性倒腾一下,当是个了解。
- 一些杂项:
- 快捷键:
Ctrl+N:创建一个Labview项目Ctrl+E:切换前后面板Ctrl+R:运行快捷键Ctrl+S:保存Ctrl+B:去掉所有断线
- 如何打包vi程序给没有labview的地方使用。参考Labveiw如何生成应用程序
- 快捷键:
2. 顺序结构
- 如图,前面板和后面板是VI程序的两个部分,如果保存了工程文件再次打开只有前面板的话,可以按
Ctrl+E切换到后面板。 - 平铺顺序结构就是从左向右依次执行的结构,右键
平铺式顺序结构,在后面添加帧,即可增加一帧结构
- 如下图的工具栏,有一些比较高效的工具:
单箭头:运行一个周期,前后面板效果一样循环箭头:连续运行,前后面板效果一样红色六边形块:停止运行||:暂停灯泡:查看数据流向,这个点击可以查看数据流,以及数据中断,用来分析程序。vi的程序数据流动和摆放位置没有关系。- 后面还有
在平铺结构内的单步运行,跨过平铺结构的单步运行等待 - 后面是一些程序对齐快捷键
- 最后
带个小扫把:的图标是整理所选部分代码
- 下图右边的图标双击可以更换工程图标,左边的图标右键可以更换模式,暂时我也没理解这个模式有什么具体作用。

- 如图右键,可以把平铺式顺序结构变成层叠式顺序结构:

- 替换过后,后面板看起来会简洁一点,相当于于把原来平铺的帧打包成了一个数组,一次显示一个数组元素,可以
切换显示帧和设置当前帧,不影响数据流向:
- 插入一个
布尔量以及True和False常量方法:
3. 循环结构
- 嵌套在顺序结构中的
FOR循环和嵌套在FOR循环中的顺序结构,如图:
- 在上图中,顺序结构有4层,依次执行,每一层都加了一个定时器(单独的),右键定时器
创建常量,即可快速为定时器设置常量,ms为单位:
- 几乎每层都用到的字符串和布尔是
局部变量,他是第三层和第四层的控件的中间变量,如图可创建一个控件的局部变量:
- For循环中,
i表示当前循环次数;N表示总循环次数(从0开始);For循环里面嵌套的顺序结构里面含有定时器,那么表示一次for循环的实际需要时间包括定时器的执行完成时间:
- 随机数生成器: 输入的两个常量是生成器设置的
上下限,双击随机数生成器,可以看到它的默认设置值,但是此处用不到;U64表示无符号64位整型:
- labview的数据类型如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23SGL 单精度32位
DBL 双精度64位
EXT 扩展精度128位
FXP 定点数据,一种二进制数据
I8 单字节整型 -128~127
I16 双字节整型 -32768~32767
I32 长整型 -2147483648~2147483647
I64 64位整型 -1e19~1e19
U8 无符号单字节整型 0~255
U16 无符号双字节整型 0~65535
U32 无符号长整型 0~4294967293
U64 无符号64位整型 0~2e19
CSG 单精度复数 32位单精的实数和虚数组成
CDB 双精度复数 64位IEEE单精的实数和虚数组成
CXT 扩展精度复数 128位
在Labview中浮点数表示为橙色
在Labview中整数表示为蓝色
在Labview中复数跟浮点数一样表示为橙色
在Labview中布尔值表示为绿色,8位二进制表示。8位全为零表示FALSE,非零的值表示为TRUE
- 在上图中,顺序结构有4层,依次执行,每一层都加了一个定时器(单独的),右键定时器
- While循环,此处创建了一个
波形图表用来显示随机数波形图:
- 循环中的定时器的作用:增加单次循环的时候,以免刷新过快。
- 停止按钮用
False常量固定住了,目的是让它一直循环下去;
- 如果想手动停止,可以换成一个停止按钮。(如果想要
暂停而不是停止循环,情况就要复杂一点,可以自己做程序来实现,这里就不试了)
- 对于
For循环而言,如果想要条件停止,可以右键For循环,勾选条件接线端
条件结构
- 条件结构就类似与
Switch,逻辑是除了罗列出来的分支,其他分支一律按默认处理。 - 对着条件结构框右键,可以选择
增加一条分支或者删除一条分支。 - 条件分支
?的左边输入如果是bool量,分支可以是真或者假,真假条件框内写各自的逻辑;左边输入如果是数值,可以填具体的数据,也可以填范围(“10..20”表示10到20的区间,“21..”表示>=21的区间);左边输入如果是字符串,可以填字符串的值。 - 案例1,比大小和比区间范围:

- 案例2,在while循环里面持续判断按钮的状态并反馈相应的字符串:

事件触发结构
- 平时用过C# winform或者HMI的事件处理的,对这个触发方式应该不会陌生。
- 下图写的一个按钮触发事件,打开按钮值改变的时候判断,如果灯的值是1,就变成0;反之如果灯的值是0,就变成1。
- 事件触发结构最好放到
while循环里面,不然只会被触发一次程序就结束了。 - 步骤:
- s1:拉出一个事件结构
- s2:拉出一个while循环,把事件结构丢循环里,在添加两按钮,一个指示灯,都放循环里;循环的
条件接线端常置FALSE或者设置为其他触发条件,不然要报错。
- s3:右键事件结构,找到添加事件分支,选择事件分支对应的控件,事件选择值改变

- s4: 现在可以在对应的
触发事件里面写逻辑了;这里的逻辑是每次值改变时取反灯的状态。我习惯引用按钮或者灯的局部变量到事件中去做控制或者改变值;局部变量刚拖出来的时候默认是写入,如图右键可以转换为读取,注意三角箭头的位置变化:
- s5:按需设置
超时报警事件,小沙漏这里用来设置超时时间
- 注意:此处while循环一次的过程是事件被触发一次,如果去抓取
i的变化,就可以知道这个数据流过程。
禁用结构
- 简单理解,就是注释;可以注释掉
禁用结构框内的所有代码; - 禁用结构的设置值可以是
禁用或者启用,方便在调试的时候选择禁用和启用一段代码

数组和簇
- 数组,就是平时程序里使用的数组,有一维数组也有多维数组,注意下标
- 簇,就是结构体
和西门子PLC通信
- 可以考虑走TCP/IP协议,暂时没找到labview有支持S7协议。

Labview笔记
http://example.com/2024/07/28/Labview笔记/