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的程序数据流动和摆放位置没有关系。
    • 后面还有在平铺结构内的单步运行跨过平铺结构的单步运行等待
    • 后面是一些程序对齐快捷键
    • 最后带个小扫把:的图标是整理所选部分代码
    • 下图右边的图标双击可以更换工程图标,左边的图标右键可以更换模式,暂时我也没理解这个模式有什么具体作用。
  • 如图右键,可以把平铺式顺序结构变成层叠式顺序结构
  • 替换过后,后面板看起来会简洁一点,相当于于把原来平铺的帧打包成了一个数组,一次显示一个数组元素,可以切换显示帧设置当前帧,不影响数据流向:
  • 插入一个布尔量以及TrueFalse常量方法:

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
      23
      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协议。

Labview笔记
http://example.com/2024/07/28/Labview笔记/
作者
xiao cuncun
发布于
2024年7月28日
许可协议