510 likes | 791 Views
计算机仿真和可视化设计. —— 基于 LabVIEW 的工程软件应用. 蔡建安 陈洁华 张文艺. 目录. 1 LABVIEW 概述 2 LABVIEW 模板简介 3 创建 VI 程序 4 LABVIEW 结构 5 LABVIEW 数据类型 6 图表及图形 7 字符串和文件 I/O 8 数据采集 9 工程仿真和设计常用编程技法 10 虚拟设备实例水环境工程仿真软件 11 附录. LABVIEW 结构. 4.1 While Loop 循环 4.2 For Loop 循环 4.3 移位寄存器 4.4 Case 结构 4.5 顺序结构
E N D
计算机仿真和可视化设计 ——基于LabVIEW的工程软件应用 蔡建安 陈洁华 张文艺
目录 • 1LABVIEW概述 • 2LABVIEW模板简介 • 3创建VI程序 • 4LABVIEW结构 • 5LABVIEW 数据类型 • 6图表及图形 • 7字符串和文件I/O • 8数据采集 • 9工程仿真和设计常用编程技法 • 10虚拟设备实例水环境工程仿真软件 • 11附录
LABVIEW结构 4.1While Loop循环 4.2For Loop 循环 4.3移位寄存器 4.4Case结构 4.5顺序结构 4.6结构连线中的常见问题 4.7公式节点 4.8局部变量和全局变量
学习指导 • LabVIEW 有四种结构控制程序流程:While Loop循环,For Loop循环,Case结构和Sequence结构。公式节点、局部和全局变量等特殊结构对简化程序和传递数据有重要意义。
学习要点 • While循环的执行是根据条件端子上输入的布尔值是 TRUE或 FALSE确定的,用布尔开关人工控制时需了解对应的机械操作模式;For循环将子框图执行N次,N为计数端的输入值; • 在For 或 While Loop循环中,应掌握移位寄存器的用法; • Case结构是执行条件语句的一种方法,能代替常规语言的 IF…Then…Else和多项选择语句,需要关注Case下多选子框图标识符的用法; • 顺序结构为控制节点按顺序执行的方法。该结构只有数据相关性不足以控制数据流,而又必需强调执行顺序时才使用;
学习要点 • 解决结构连线问题往往是结构编程的关键,特别要掌握结构下数据隧道的正确使用; • 公式节点是—种允许用文本语言编写一个或多个代数公式的结构。在公式节点上建立输入和输出端子后,用公式节点支持的运算符和函数写出以分号结尾的语句; • 局部变量用于程序中控制初始化、协调控制功能、临时保存数据和传递数据。全局变量可在不同VI之间交换数据。
4.1While Loop循环 While循环有两个端子:条件端子(输入端子)和重复端子(输出端子)。重复端子的作用是输出循环已执行次数的数字。条件端子输入的是布尔值 TRUE 或 FALSE。在每一次重复执行后,Ⅵ 检查条件端子,如果条件端子值为 TRUE 那么执行下一个重复,直到条件端子变成 FALSE。条件端子的默认值是 FALSE。由于检查条件端子输入值是循环结束后,因此While循环至少也要执行—次。
布尔开关机械操作模式 • 六种模式 • Switch When Pressed(按下时启动) • Switch When Released(松开时启动) • Switch Until Released(按下启动直到松开) • Latch When Pressed(按下时锁定) • Latch When Released(松开时锁定) • Latch Until Released(直到松开时才锁定)
4.2For Loop 循环 • 在指定次数的重复操作完成之前,For循环控制VI执行重复操作。 • For循环和While 循环之间的差别是:For循环的次数是预先指定的; While 循环则一直执行,直到输入条件变为False为止。For循环与While 循环都可以在Function菜单的Structures选项板中可找到
4.3移位寄存器 移位寄存器(Shifiregister)用于 For循环或 While循环中从一个迭代传输数据到下一个迭代,它由循环垂直边框上一对方向相反的端子组成,通过从左或右循环边框上弹出快捷菜单并选择Add Shift Register,可以创建移位寄存器。右端子(带向上箭头的矩形)在每完成一次迭代后存储数据,移位寄存器将上次迭代的存储数据在下一次迭代开始时移动到左端子(具有向下箭头的矩形)上,同一个寄存器端子上数据类型的数据必须是同一类型。
4.4Case结构 Case结构是执行条件语句的一种方法。这类似于常规的文本编程语言中常见的 IF…Then…Else语句。从Functions选项板的Structures子选项板中选择Case结构并将其放置在框图上。
4.5顺序结构 顺序结构用于顺序地执行子框图。这些子框图看起来像一帧电影胶片,因此称为帧(frame)。 将最先要执行的代码放置在顺序结构帧0(0..x)边框内,然后依次将执行代码放在帧1、帧2 框内。只有当最后一帧完成后,数据才离开结构
4.6结构连线中的常见问题 • 1、给顺序结构局部变量多次赋值 • 2、对顺序结构中的多个帧进行连线 • 3、未在Case结构的所有分支中连接隧道 • 4、隧道重叠 • 5、连线从结构下面通过而不是从结构上穿过
例4-5 Case结构演示 • 1、设当水中溶解氧浓度超过2mg/L时,反应速度为K0,否则降低为0.1K0。 • 2、添加分支,设当水中溶解氧浓度超过4mg/L时,反应速度为K0;超过2mg/L时,反应速度为0.5K0,否则降低为0.1K0。
4.7公式节点 公式节点(Formula Node)是—种结构,允许用户使用类似于多数文本编程语言的句法,编写一个或多个代数公式。 这对于实现有多个变量的公式来说很有用。否则需要使用复杂的框图模型。 通过在框中直接键人公式代码来代替创建框图部分。
公式节点的输入、输出变量 • 从公式节点边框上弹出快捷菜单,从中选择Add Input 或 Add Output。 • Change to Output可将输入改变为输出,Change to Input可将输出改变为输入。 • 在公式节点上有了I/O端子,使用Labeling 工具键入I/O变量的名字。 • 节点中每一个变量不能具有相同的名字。用于内部计算的中间变量必须声明为输出,但不一定要连接到外部节点。
公式语句 • 公式语句使用的算术表达式,句法类似于多数文本编程语言。可给语句添加注释,注释用一对 “/*” 封闭起来(/*注释*/ )。 • 使用Labeling工具在公式节点内输入公式,每个公式一定要用分号结束,并且变量的名字是大小写敏感的。
局部变量的创建和使用方法 • 局部变量的创建既可以通过图示右键弹出菜单获得,也可以在功能模板上选择Function/Structures/Local Variable将其拖到框图上,得到一个代“?”的图标,再将其与框图中已有的变量建立关联。
4.8局部变量和全局变量 • 局部变量用于程序中控制初始化、协调控制功能、临时保存数据和传递数据。 • 全局变量可在不同VI之间交换数据。
全局变量 • 全局变量与VI地位等同,以独立文件的形式保存在磁盘中。 • 全局变量只有面板没有框图。通过全局变量不同VI之间交换数据。 • 全局变量的创建步骤: • 在Function\ Structures下选择Global Variable,将其图标拖到框图中。 • 双击Global Variable图标,得到其前面板 • 在其前面板上放上所需要的变量,例如数组、布尔量、字符串变量。 • 命名和保存这个变量。
LABVIEW 数据类型 • 5.1LabVIEW的数据类型 • 5.2数值类型 • 5.3LabVIEW的数组 • 5.3.1 创建控制器数组和指示器数组 • 5.3.2 用循环创建数组 • 5.3.3 数组功能
LABVIEW 数据类型 • 5.4函数的多态性操作 • 5.5簇 • 5.5.1 创建簇控件和指示器 • 5.5.2 簇顺序 • 5.5.3 簇函数 • 5.5.4 数组和簇的互换
学习指导 • LabVIEW的数据按类型有数值量、逻辑量、字符串、文件路径等几类,在结构上有标量、一维、多维和簇,编程需要使数据连线匹配。
学习要点 • 认识数据类型的概念,编程时需要明确函数和子VI每一个数据结点的数据匹配; • 数组是同类数据元素的集合,簇是混合元素的集合。熟悉数组的建立和使用过程,掌握数据类型及其结构在使用时的转换方法; • 掌握循环结构的自动索引功能和函数的多态性操作方法。
5.2数值类型 • 最基本的数据类型是数值类型,这是一种标量值,通常包括一个整型值或实型数值(浮点)。 • LabVIEW可以处理当前32位处理器提供的可能整型和实型的表示法。 • 选择合适数值表示法的关键是要求的范围和精度。数据类型占用的字节越多,取值的可能范围越大。 • 浮点类型和单精度类型可以处理的最大值为1038,一个无符号整型数的上限为2 N-1,其中N是位的数值。
5.3LabVIEW的数组 • 5.3.1 创建控制器数组和指示器数组 • 从控制模板中的Array & Cluster子模板中选择一个空的数组壳; • 将有效数据对象(诸如数字、布尔型或字符串)拖进数组壳或者从数组壳的弹出菜单中选一个控制对象或指示器直接放入数组壳中。 • 5.3.2 用循环创建数组 • For循环和 While循环可以在其边界处自动地检索和累积数组元素,这种能力称为自动索引。 • 每循环一次就建立一个数组元素,在循环结束后,把数组送到一个数组指示器。
5.3.3 数组功能 Array Size 指的是输入数组的元素数,N维数组的输出则是N个元素的数组。 Initialize Array 创建—个包含初始值的数组。初始值由Element给出。 Build Array构组数组, 用于合并多个数组或给数组添加元素。
5.3.3 数组功能 Array Subset数组子集 从输入数组中,输出个数组子集,以index指定开始的元素,以length指定元素个数。 Index Array索引数组 index指定索引号,指定元素,第一个元素的索引号是0。
5.4函数的多态性操作 • 多态性(Polymorphism)是LabVIEW的函数接受不同维数数组和类型输入的能力。拥有这种能力的算术是多态函数。
5.4多态函数的运算规则 • 标量与标量相加输出结果是一个标量。 • 标量与数组相加结果每个元素被加上这个标量。 • 数组与数组相加结果是每个元素被加到另一个数组。 • 标量与数组相乘结果是每个元素被乘上这个标量。 • 标量与数组相除结果是每个元素被除以这个标量。 • 数组与数组相乘结果是一个数组,但由于一个数组的尺寸比另一个小,故得到的输出与输入数组中较小的一个一样大小,乘运算作用于两个输入数组中的相应元素。
5.5簇 • 簇(cluster)是一种类似数组一样的数据结构,用于分组数据。 • 簇具有固定的大小。可以包含不同的数据类型。 • 簇由控件或指示器组成。 • 簇通常用于将出现在框图上的有关数据元素分组管理。因为簇在框图中仅用惟一的连线, • 在框图上,只有当簇具有相同类型、相同元素数量和相同元素顺序时,才可以将簇的端子连接。 • 多态性应用于簇时,需要簇具有相同元素数量和相同元素顺序。
创建簇控件和指示器 • 在前面板上放置簇框架(cluster shell)创建簇控件和指示器。 • 将数字、布尔型、字符串、图表、图形、数组等任意组合放进来创建。 • 簇可以包含控件或指示器,但两者不能同时存在。一个簇成为控件簇或指示器簇取决于放进簇中的第一个元素。如果放进簇框架中的第一个元素是控件,后来给簇添加的任何对象都将变成控件对象。
5.5.2 簇顺序 • 簇元素按照它们放人簇中的先后顺序排序,而不是按照簇框架内的物理位置排序。簇框架中的第—个对象标记为元素0,插入的第二个对象是元素1等等。 • 如果要访问簇中单个元素,必须记住簇顺序,因为簇中的单个元素是按顺序而不是按名字访问的。
5.5.3 簇函数 • 1、捆绑(Bundle)数据 • Bundle功能将分散的组件集合为一个新的簇, • 2、分解(Unbundle)簇 • Unbundle功能是Bundle的逆过程,它将一个簇分解为若干分离的组件。
5.5.4 数组和簇的互换 • 在编程中,有时需要将数组变为簇,而有时却要将簇变为数组。 • 可以使用功能Cluster to Array将簇转换为数组,在进行完数组的操作后再利用Array to Claster 变换回簇。