LabVIEW的程序结构.ppt_第1页
LabVIEW的程序结构.ppt_第2页
LabVIEW的程序结构.ppt_第3页
LabVIEW的程序结构.ppt_第4页
LabVIEW的程序结构.ppt_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

LabVIEW的程序结构 主要的程序结构有 循环 While循环和For循环 选择 Case结构 顺序 Sequence结构 分为平铺式和层叠式 事件 Event结构 1For循环 1 For循环的创建基本的For循环结构由循环框 循环次数端口和计数端口组成 循环框 计数端口 循环次数端口 循环边框 2 For循环的工作流程For循环用于将结构中的程序循环执行指定的次数 在开始For循环之前 从循环次数端口读入循环次数 计数端口输出0值 接下来执行For循环框内框图代码程序 每执行一次计数端口值自动加1 循环次数达到设定值后 退出循环 3 For循环的数据通道与自动索引数据通道是用连线工具连接循环框内外的数据端口时 在框架上自动形成的方形通道图标 图标空心表明此时数据通道具有自动索引功能 实心图标不能索引 自动索引是指将循环框外面的数组成员逐个依次进入循环体内 或将循环框内的数据累加成一个数组输出到循环框外面 例如 下图中通道自动索引功能有效时 每一次循环产生一个新的数据 存储在循环的边框通道上 待循环结束以后 产生的6个数据将传送到一个数组指示器中 自动索引功能无效时 只有最后一次For循环产生的1个随机数传到循环外 空心 实心 4 移位寄存器创建 右击边框 弹出一个菜单 选择AddShiftRegister选项 可添加一个移位寄存器 用途 主要用于While循环和For循环 将上一次循环的值传给下一次循环 数据类型 数字型 布尔型 字符串等 初始化 在循环外将初始值连到移位寄存器的左端口 有默认初值 还可以存储前几次循环的值 在移位寄存器的左端口或右端口上右击鼠标弹出菜单 选择AddElement选项 可创建附加的左端口来存储前几次循环的值 5 反馈节点功能 在循环中 将数据从一次循环传递到下一次循环 反馈节点箭头的方向表示数据流的方向 反馈节点和移位寄存器可以互换 在反馈节点或移位寄存器图标上弹出快捷菜单选ReplacewithshiftRegister或ReplacewithFeedbackNode即可 移位寄存器左端口多于1个时不能转换为反馈节点 下面是用移位寄存器 左图 和反馈节点 右图 实现a 的框图程序 2While循环 For循环和While循环的区别 For循环要执行预先指定的循环次数 而While循环只有在条件端口接收到的值为False or True 时才停止循环 While循环不必知道循环次数 While循环不满足条件也要执行1次 For循环当N 1时1次都不执行 1 While循环的创建While循环由循环框 条件端口和计数端口组成 循环框 条件端口 计数端口 循环边框 2 While循环的工作流程条件端口控制循环的停止与否 条件端口有两种状态 当使用状态为StopifTrue时 若输入值为Ture 则停止循环 若输入值为False 则继续执行下一次循环 当使用状态为ContinueifTrue时 若输入值为Ture 则继续执行下一次循环 若输入值为False 则停止循环 循环结束后 才去检测条件端口的值 因此不管条件是否成立 循环至少要执行一次 计数端口用于统计循环执行的次数 While循环每执行一次 计数端口的值就加1 计数端口从零开始计数 也就是说 在第一次循环结束时 计数端口的值为0 如果循环执行了10次 则计数端口的值为9 While循环也具有数据通道索引和移位寄存器 反馈接点的功能 它们的用法与For循环相同 只是While循环的边框数据通道默认为不能索引 用While循环实现求X的立方和 P54 3Case结构 1 Case结构的创建Case结构由选择框架 选择端口 选择器标签 以及递增 递减按钮组成 选择标签 递增按钮 递减按钮 选择框架 选择端口 2 Case结构的工作流程Case结构有一个条件选择端口 Selector 根据连到该端口的值来判断执行哪一个子Case Selector端口的数据类型有布尔型 数字型和字符串型 3 设置选择结构的默认项应设置一个默认项来处理超出条件选项范围的情况 设置选择结构默认项的方法是在选择结构边框上单击鼠标右键 选择MakeThisTheDefaultCase 4 选择结构数据通道的设置输入数据时 每个子Case框可连可不连数据通道 输出数据时 每个子Case框必须为通道连接数据 否则程序不能运行 这时通道的图标是空心的 只有为每个子Case框的数据端口都连接数据后 图标才变成实心 UseDefaultifUnwired可使程序中没有连线的子Case框输出默认值 CASE0 Add VI就进行加法运算 CASE1 则VI将进行减法运算 使用了一个数字型TextRing控制器 在控制模板中的Ring Enum子模板中 注意 当在一个子Case中建立了一个输出数据通道后 必须给每一个子Case定义输出数据通道 设定默认的子CASE 当所有条件都不满足时 执行默认子CASE 例子 4顺序结构 LabVIEW是一种数据流程序设计语言 没有明确的先后顺序 当节点所有输入端的数据全部有效时 节点才执行 Sequence结构 它是一种先后顺序执行的结构 看上去象电影胶片的帧 Frame 每一帧为一段框图程序 按照帧 Frame 的顺序来执行框图程序 两种形式顺序结构 FlatSequenceStructure平铺式顺序结构和StackedSequenceStructure层叠式顺序结构 功能相同 区别仅在于表现形式不同 1 顺序结构的创建在函数模板的Structures子模板中选择创建顺序结构 选取StackedSequenceStructure层叠式顺序结构 在结构边框上面单击鼠标右键 从弹出的快捷菜单中选择 AddFrameAfter 或 AddFrameBefore 可以增加子图形代码框 在结构边框上右击弹出的快捷菜单 选择Replace ReplacewithFlatSequence 可以将层叠式顺序结构变换为平铺式顺序结构 2 顺序结构的工作方式数据传递至顺序结构时 层叠式从标识0开始执行 依次顺序执行 平铺式从左至右执行所有子图形代码框 从结构外面向顺序结构写数据时 可连接可不连接这个数据通道 但是当顺序结构向外输出数据时 各个图形代码框中只能有一个连接这个数据通道 代码框之间的数据传递 平铺式可从一帧直接连线到另一帧来传递数据 层叠式则需要通过局部变量 SequenceLocal来传送数据 在层叠式顺序结构的边框上面右击 选择AddSequenceLocal即可在当前帧创建一个顺序局部变量端口 将本帧中的数据连接到该局部变量端口 该数据就可传到后面的帧 该数据不会作用到它前面的帧 如下图示意了层叠式顺序结构通过局部变量传递数据的情况 在标识是1号帧的一个数据传递到标识是2号的帧进行 或 运算 0号帧不能使用该数据 例 使用Sequence结构 设计一个VI 计算产生一个与指定的数字相等的随机数所需花费的时间 读取定时器的当前值 VI程序每隔10ms执行循环 四舍五入取整 5事件结构 1 事件结构的创建事件结构包括 结构框 事件标签 超时端口和事件数据端口 事件标签 说明当前框图程序是响应的什么事件 超时端口 默认值为 1 表示无限等待 事件数据端口 结构框 2 事件结构的使用可有一个或多个子图形代码框 该图形代码框可以设置为响应多个事件 右击事件结构边框 从弹出的快捷菜单中选择EditEventsHandledbyThisCase 这时将弹出编辑事件对话框 显示当前建立的事件 默认 Timeout 事件 增加事件 删除事件 可以选择的事件源 相应的事件源可产生的事件消息 例如 建立一个5秒的超时事件和一个 OKButton 开关值发生变化的事件 要求 方法1 任一事件发生都执行同一个子图形代码框程序 显示出对话框 超时或单击了OK按钮 方法2 由不同的框图程序响应不同的事件 显示出对话框 超时事件 或 单击了OK按钮事件 法1 在前面板添加放置一个 OKButton 控件 在编辑事件对话框中单击按钮新建一个事件 选取 EventSources 事件源窗口中的 OKButton 并在 Event 事件窗口中选择 ValueChange 选取OneButtonDialog函数 放置在EventStructure中 在message数据端口新建一个常量 输入 超时或单击了OK按钮 在超时端口连接值为5000的一个数字常量 运行程序 如果单击了 OKButton 按钮或等待5秒都会显示出对话框 超时或单击了OK按钮 法2 在事件结构边框的快捷菜单中选择AddEventCase 来创建事件结构的一个分支 在弹出的对话框中 选取 EventSources 事件源窗口中的 OKButton 并在 Event 事件窗口中选择 ValueChange 后面的设置与法1类似 6公式节点 在框图程序中 如果需要设计较复杂的数学运算 框图将会十分复杂 工作量大 而且不直观 调试 改错也不方便 利用公式节点 只需将数学公式的文本表达式输入在公式节点的框图内 并连接相应的输入 输出端口 则LabVIEW会自动地根据公式计算出正确的结果 并从输出端输出 1 公式节点的创建从函数模板的Structures子模板上选择公式节点FormulaNode 在框图中设置公式节点 公式节点的边框大小可以改变 用户可以使用标签工具 将数学公式直接输入到公式节点的框内 2 公式节点的使用可以声明变量 也支持一些常用的C语言的语句 包括赋值语句 条件语句 循环语句 Switch语句 每条语句以分号结尾 输入公式后 需要添加输入 输出端口 在添加端口后出现的方框内填入变量名称 将输入端口和程序中的数据端口相连接 将输出端口和程序中的指示端口连接 公式节点中常用的运算符 其中 条件运算符的 前的部分是判定条件 和 间的部分为当条件为True时的表达式 后的部分为当条件为False时的表达式 公式节点语句中还可以使用数学函数 abs acos acosh asin asinh atan atan2 atanh ceil cos cosh cot csc exp expml floor getexp getman int intrz ln lnp1 log log2 max min mod pow rand rem sec sign sin sinc sinh sizeOfDim sqrt tan tanh 公式节点中可使用IF条件语句 for和do while循环Swtich case分支语句公式节点的语法与C语言相同 例 用公式节点计算y1 x3 x2 5和y2 m x b 分析 公式的输入端口共有3个输入量 分别是m b和x 3个输入量经过公式节点中的两条语句完成指定的运算 通过输出端口输出y1和y2 补充 前面板对象属性的动态控制 在前面板设计编程时 我们可以修改和设定对象控件的属性 但是在程序运行时能否由用户修改或程序自身改变呢 方法是 创建对象的属性节点 通过对属性节点的 写 操作 完成对对象属性的修改 同样通过对属性节点的 读 操作 在程序中读取对象的属性 例 程序运行中 用Knob控件改变图形曲线的颜色 提示 建立CHART的属性节点 改为可写 并指定为曲线Plot的颜色Color属性 用Knob的值控制CASE 分别送5种颜色值给属性节点 7局部变量和全局变量 1 局部变量程序太复杂 连线困难 需用局部变量 1 创建法一 为前面板对象创建局部变量 在对象上面单击鼠标右键 选择Create LocalVariable 法二 在框图程序中新建局部变量 然后再指向某个对象 可以为一个对象创建多个局部变量 局部变量具有读 写两种属性 并可互换 2 使用示例程序中 建立了 停止 控件的两个局部变量 循环内的局部变量处于 读 状态 读出当前 停止 控件的状态 送给 指示灯 控件显示 循环外的局部变量则处于 写 状态 它在每次程序运行前赋给 停止 控件 赋值为 False 以保证程序运行时进入循环状态 2 全局变量不同程序之间交换数据 需用全局变量 全局变量VI只有前面板而无框图程序 1 创建选择全局变量图标 右击 选择OpenFrontPanel 打开全局变量声明VI的前面板 按照需要的数据类型加入控件 切换到框图程序窗口 单击全局变量图标 选择需要它指向的控件 返回到全局变量声明VI的前面板 将该VI文件存盘 完成全局变量的建立 2 调用由函数模板中的SelectaVI 子模板打开选择用户程序对话框 选择已经保存的全局变量声明VI程序 此时将在框图程序中显示全局变量数据端口 如果在全局变量声明VI中建立多个控件 可以用操作工具在全局变量的图标上单击 在列出的所有变量对象中选择所需的对象 3 使用示例利用全局变量在不同VI中传递数据 创建一个全局变量声明 其中包含一个数值型控件并命名为 数值 和布尔型控件并命名为 状态 保存为 GV vi 新建一个VI命名为 采集信息 vi 前面板中有一个旋钮开关和按键开关 将它们的值送到全局变量中 由函数模板中的SelectaVI 子模板打开选择用户程序对话框 选择 GV vi 调用两次全局变量声明 选择全局变量的不同数据类型 对端口连线并保存VI 如图 采集信息 框图程序 新建VI 显示信息 vi 前面板中有一个表盘指针控件和LED控件 采用同样的方法在框图程序窗口选择创建的全局变量 并在全局变量图标上单击鼠标右键 选择 ChangetoRead 显示信息 框图程序 分别运行两个VI程序 可以发现由程序 采集信息 得到的数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论