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的数据类型如下:
- 在上图中,顺序结构有4层,依次执行,每一层都加了一个定时器(单独的),右键定时器
SGL 单精度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
- 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协议。