结构控制程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.1 While Loop 结构
• 3.1.5 反馈节点
• 当循环边框比较大时, 使用移位寄存器会造成过长的连线, 因此L abVIEW 提供了反馈节点(Feedback Node), 其 在功能上完全等价于移位寄存器。
• 在循环中, 当把一个节点的输出连接到它的输入时, 连线中会自动 插入一个反馈节点, 同时自动创建了一个初始化接线端(可对反馈 节点进行初始化, 若不需要初始化可用右键取消), 如图3-14 所示。
• 3.2.1 任务描述
• 在工业现场环境下, 温度传感器输出的温度电压往往会叠加了工频 干扰。这种工频干扰由于频率低, 很难用滤波器滤掉(除非采用体 积特别大的滤波器, 而且效果不一定好), 采用软件滤波的方案是 一种比较好的方案。这里应用移位寄存器求最近4 次温度测量值的 平均值, 并以波形的形式显示这一平均值。
12…20” 会自动合并成“5…20” )。 • ④开区间, 如“…1” “9…”。 • (2) 字符型和枚举型选项值的设置。 • 设置方式同数值型, 但在标签中会被自动加上双引号。
上一页 下一页 返回
3.4 分支结构
• 3.隧道的要求 • 向Case 结构边框内输入数据时, 各个子程序框图连接或不连接
• (3) 修改Waveform Chart 的图例标记, 如图3-1 6 所示。
• 3.2.3 程序框图设计
• (1) 在程序框图中添加While 循环(选择Function s→Programming→Structures 命令), 创
• 建移位寄存器。 • ①右击While 循环的左边或者右边, 在弹出的快捷菜单中选择
Add Shift Register 命令。 • ②右击寄存器的左端子, 在弹出的快捷菜单中选择Add Elem
ent 命令, 添加一个寄存器。用同样的方法创建第三个元素。 • (2) 如图3-17 所示, 完成程序框图的编辑。
上一页 下一页 返回
3.2 综合案例3-1: 温度信号工 频干扰的软件滤波
• 3.2.2 前面板编辑
• (1) 选择File→New 命令或按Ctrl+N 组合键, 打开 一个新的前面板。
• (2) 选择Controls→Graphs→Waveform Chart 选项, 在前面板中放置历史曲线显示控件。
下一页 返回
3.2 综合案例3-1: 温度信号工 频干扰的软件滤波
• 为了存取前几轮循环的数据, 可以通过增加循环框左端子元素来实 现。这个功能对于计算数据均值非常有用。方法是右击左边端子, 在弹出的快捷菜单中选择Add Element 命令。例如, 如果 某个移位寄存器左边的端口含有3 个元素, 那么就可以访问到最近 3 轮循环的数据, 如图3-11 所示。
上一页 下一页 返回
单元3 结构控制程序设计
• 3.1 While Loop 结构 • 3.2 综合案例3-1: 温度信号工频干扰的
软件滤波 • 3.3 For Loop 结构 • 3.4 分支结构 • 3.5 综合案例3-2: 温度超限报警系统 • 3.6 顺序结构 • 3.7 公式节点
返回
3.1 While Loop 结构
• 布尔控件的机械属性选项及功能说明见表3-1。
• 3.1.4 移位寄存器
• 移位寄存器(Shift Register) 可以将数据从一轮循 环周期传递到下一轮循环。在程序设计中, 经常要用到它。创建一 个移位寄存器的方法是, 右击循环的左边或者右边, 在弹出的快捷 菜单中选择Add Shift Register 命令, 如图3-9 所示。
上一页 下一页 返回
3.1 While Loop 结构
• 在调出的快捷菜单中选择Properties 命令, 如图3-6 所示, 选择Operator 选项卡, 列出了按钮的6 种动作方式 , 旁边是选中的动作方式的图解和文字说明。图解第一行(m) 表 示鼠标的动作; 图解第二行(v) 表示控制量的值; 图解第三行是 开关符号或程序读取控制量值的时间点(RD)。
上一页 下一页 返回
3.1 While Loop 结构
• 如果将显示控件连接到反馈节点输入接线端, 显示最后一次循环结 束后得到的值, 如图3-15 (a) 所示, 输出结果为10; 如 果将显示控件连接到反馈节点输出接线端, 如图3-15 (b) 所 示, 显示最后一次循环前得到的值, 输出结果为9。
• LabVIEW 循环的一个最大特点在于它使用了自动索引功能。 自动索引非常有用, 有时并不知道一个数组的元素个数, 只关心怎 样取出它的各元素来进行处理, 或者是要把每次循环后的单个元素 进行累加输出, 这时就需要用到自动索引。自动索引的一个典型应 用程序如图3-21 所示, 可以看出, 左边的两个嵌套For 循环 体中, 里层的循环每次循环产生一维数组0~3, 外层的循环每次 将一维数组加上重复端子i, 最后输出一个5 行4 列的二维数组, 显示结果见图3-21 (b) 中的“显示数据”。在右边的两个嵌 套For 循环体中, 外层的循环每次从二维数组中产生出一行索引 , 里层的循环每次从一维数组中产生出一个元素索引, 所有元素显 示见图3-21 (b) 中的“索引数据”。
• 3.3.1 For Loop 结构的创建
• For 循环用于指定程序执行次数, 相当于C 语言中的for 循环 :
下一页 返回
3.3 For Loop 结构
• 选择Functions→Programming→Struct ures 命令, 选择For Loop, 然后按下鼠标按键, 释放 鼠标按钮时就创建了一个指定大小和位置的For 循环。For 循 环的图标如图3-18 所示。
下一页 返回
3.4 分支结构
• 类似于带else 的if 语句:
• 上述C 语言程序编写的分段函数, 可以用LabVIEW 的Cas e 结构编写为图3-24 所示。
上一页 下一页 返回
3.4 分支结构
• 3.4.2 Case 结构的设置
• 1.默认选项的设置 • LabVIEW 中使用条件结构, 必须设置一个默认子程序框图处
• 3.2.4 运行与调试
• 按Ctrl+R 组合键程序运行。在图形显示器中显示两条覆盖的 曲线, 可以通过定制波形图指示器将其区分, 本例中将plot 0 线形修改为白色实线, 将plot 1 的线形修改为红色点。
上一页
wenku.baidu.com
返回
3.3 For Loop 结构
• For Loop 控制一段程序代码执行设定的次数。
上一页 下一页 返回
3.1 While Loop 结构
• 2.避免死循环 • While 循环是由条件端口值来控制的。如果条件永远满足, 就
会产生死循环。图3-5 中的两个例子, 条件端子永远都是满足的 , 导致死循环。
• 3.1.3 布尔控件的机械动作
• 布尔控件有6 种机械动作属性可供选择。在前面板上右击开关, 在 弹出的快捷菜单中选择Mechanical Action 命令就 可以看到这些可选的动作。
理超出选项范围的情况,除非能够为每个可能的选择值都设置一个子 程序框图。 • 当显示默认子程序框图时, 在条件结构边框上右击, 在弹出的快捷 菜单中选择Make This The Default Case 命 令。如要取消默认选项, 在条件边框上右击, 在快捷菜单中选择R emove Default 命令。
• While 循环控制程序反复执行一段代码, 直到某个条件发生。
• 3.1.1 While Loop 的组成与创建
• While Loop 是LabVIEW 的基本循环结构之一, 类似 于C 语言中的do…while 循环结构:
• 选择Functions→Programming→Struct ures 选项, 从中选择While Loop, 如图3-1 所示 。
• N: 计数端(输入), 用于指定循环执行的次数。 • i: 循环变量(输出端子), 含有循环已经执行的次数。 • 在程序运行前, N 必须赋值。通常情况下, 该值为整型数。循环计
数变量i 的步长是固定不变的。
上一页 下一页 返回
3.3 For Loop 结构
• 3.3.2 For 循环的自动索引
上一页
返回
3.4 分支结构
• 3.4.1 Case 结构的创建
• 选择Programming→Structures 选项, Ca se 结构的多个子程序框图重叠在一起, 任何时候只显示其中的一 个, 如图3-23 所示。条件结构边框的顶部是Select La bel (条件选择器标签), 默认有两个布尔型的选项True 和 False, 对应两个子程序框图。可通过左右箭头选择, 或单击 向下箭头选择。当选择某一个选项, 可以显示此选项对应的子程序 框图, 并能对框图进行编辑。Case 结构左侧边框上带“?” 的 图标是条件端子(Case Selector), 用于连接边框外 的输入值。将输入值和Select Label 的各选项值进行比 较, 从而判断执行哪一个子程序框图的代码。Select Lab el 默认为布尔型, 但也可以是其他类型。
上一页 下一页 返回
3.4 分支结构
• 类似于switch 语句:
• 上述C 语言程序, 可以用LabVIEW 的Case 结构编写为图 3-25 所示。
上一页 下一页 返回
3.4 分支结构
• 2.子程序框图的设置 • 用编辑文本工具修改Select Label 中的选项值, 可以设
置子程序框图与选项的对应关系。 • (1) 数值型选项值的设置。 • ①单值或多值, 如“3” “1, 2, 3”。 • ②一个范围, 如“5…10”。 • ③多个范围, 如“5…10, 20…30” (注: “5…15,
上一页 下一页 返回
3.1 While Loop 结构
• 移位寄存器在程序框图上用在循环边框上相应的一对端子来表示。右 边的端子中存储了一轮循环结束时的数据。在下一轮循环开始时, 右端子的数据将移位到左边的端子, 参与下一轮循环的运算。移位 寄存器可以移位各种类型的数据, 如数值、布尔数、数组、字符串 等。在第一个对象接入移位寄存器时, 会自动刷新数据, 图3-1 0 表示了它的工作过程。
上一页
返回
3.5 综合案例3-2: 温度超限报 警系统
• 3.5.1 任务描述
• 创建一个VI, 连续以每500 ms 一次的速率测量温度, 如果高 于或者低于设定的范围,告警灯显示“红色”, 同时驱动蜂鸣器报 警, 工作状态栏显示为warning; 若检测温度在正常范围内 , 告警灯显示“绿色”, 工作状态栏显示为normally。温 度以历史曲线格式显示, 同时将上、下限设定值也显示在图表中。
这个数据的隧道都可以;但是从Case 结构边框向外输出数据时 , 各个子程序框图都必须为这个隧道连接数据, 如图3-26(a ) 所示; 否则隧道图标是中空的, 程序运行按钮也是断开的, 如图 3-26 (b) 所示。 • 右击隧道, 在弹出的快捷菜单中选择Used Default If Unwired 命令, 使没有连线的子程序框图输出相应数据类型 的默认值。
• 3.1.2 While 循环的编程要点
• 1.条件端子的选择 • 右击While 循环的条件WA 端子, 弹出快捷菜单, LabVI
EW 默认的循环判断条件是Stopif True 命令(只要循环 条件端子输入为真, 则停止循环)。若选择Continue if True 命令, 此时循环条件端子符号变成空心的, 如图3-4 所 示。
下一页 返回
3.1 While Loop 结构
• While Loop 可以反复执行循环体的程序, 直至特定的条件 不满足才停止循环。While 循环如图3-2 所示, 循环变量表 示当前循环次数, 从0 开始计数(i= 0), 先执行循环体, 而 后i+1, 如果循环只执行一次, 那么循环输出值i=0。条件端 子用于控制循环的执行或停止,循环至少要运行一次。
• 在反馈节点上右击, 在弹出的快捷菜单中选择Change Dir ection 命令可改变方向。反馈节点和移位寄存器可以互换, 在反馈节点上右击, 在弹出的快捷菜单中选择Replace Wi th Shift Register 命令即可。
上一页
返回
3.2 综合案例3-1: 温度信号工 频干扰的软件滤波