第4章 LabVIEW程序调试与异常处理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Http://ccms.hust.edu.cn
38
LabVIEW异常处理过程
错误优先顺序——高风险函数
这些节点依赖于外部的驱动程序或资源,而这些程序和资源可 能出于各种不可预知的状态。 包括以下I/O 操作选板的所有节点:文件 I/O、测量 I/O、仪器 I/O 和数据通信。
Http://ccms.hust.edu.cn
7
LabVIEW错误信息
在系统中对错误进行分类、定义错误标识和信息存 储数据格式等,是实现异常处理过程的基础。
LabVIEW中错误的分类 •I/O错误——由程序试图对外部仪器、文件或其它应用程序进行 操作所致。 •逻辑错误——由程序代码的缺陷所致。
Http://ccms.hust.edu.cn
8
LabVIEW错误信息
首先对仪器进行初始化,然后配置测量参数,接着进行数据采 集,最后关闭仪器连接。整个过程中可能发生的I/O错误通过 错误簇传递,弹出错误对话框。
Http://ccms.hust.edu.cn
18
LabVIEW错误信息
逻辑错误——由程序代码自身缺陷所致
没有把While循环跳出循环的条件设置正确导致的逻辑错误。
Http://ccms.hust.edu.cn
37
LabVIEW异常处理过程
错误优先顺序——低风险函数
• 简单的数学功能不需要错误处理。 • 同样,其它函数选板上不包含错误端的所有功能都不生成错 误。 • 这包括许多功能,可从结构、数组、簇和变量、布尔、字符 串、比较和时间选板中调用。 • 这是风险等级最低的一类函数。
29
LabVIEW异常处理过程
条件结构处理模式
将错误簇直接连接到条件结构的分支选择器。绿色框为无错误 分支,红色框为错误分支。
Http://ccms.hust.edu.cn
30
LabVIEW异常处理过程
状态机处理模式
• 异常处理代码放在同一地方,这样代码更容易修正;
• 异常处理管理也可维持在主程序层或测试执行层。
Http://ccms.hust.edu.cn
13
LabVIEW错误信息
错误簇——添加额外信息
将时间和调用链信息加到用户自定义错误信息中,就可以找到错 误发生的时间和位置。 同样,还可以将其它信息加到错误簇中去,为程序员提供更多的 信息。
Http://ccms.hust.edu.cn
14
LabVIEW错误信息
Http://ccms.hust.edu.cn
41
LabVIEW异常处理过程
错误处理技巧
• 输入输出隧道对齐,错误输入输出端子放置在最下端
• 正确识别警告和错误 • 捕获到错误时忽略自身代码,快速的将错误传递下去
• 错误发生后关闭已经打开的资源
16
LabVIEW错误信息
I/O错误
• 对仪器或通信通道不正确的初始化或配置。
• 对仪器或应用程序发送错误的命令或数据。 • 在仪器或应用程序的使用中出现错误。
• 缺少硬件或软件选项也会导致I/O错误。
Http://ccms.hust.edu.cn
17
LabVIEW错误信息
I/O错误——简单的处理
•程序调试是用于查找和纠正程序代码在编写或运行时出现的错误 的技术。
Http://ccms.hust.edu.cn
4
概述
程序调试——程序开发人员借助调试工具,针对程 序执行中发生的某个特定错误,进行原因查找、错 误分析、修改程序并最终解决错误的过程。
• 产生错误的原因很多 • 要求熟悉代码 • 充分利用调试工具
不同类型的操作产生不同风险等级的错误,并在程序中表现出 不同的行为。
将函数选板上的节点分为三个风险等级,低、中和高,并由此 把错误捕获区分优先次序。
Http://ccms.hust.edu.cn
36
LabVIEW异常处理过程
错误优先顺序——低风险函数
在使用数学功能的VI时,LabVIEW 得体的处理了所有可能引起的 问题,发生错误几乎是不可能的。他们属于低风险函数。
错误簇
错误簇(Error Cluster)为程序员提供了一个探测机制。这个簇包 含状态(Status)、代码(Code)和源(Source)三个控件,分 别反映一些错误信息。
Http://ccms.hust.edu.cn
9
LabVIEW错误信息
错误簇
• 状态是一个布尔量,有错误时返回“真”;
• 代码是一个32位单精度整型数据,用于区分不同的错误; • 源是一个字符串,提供了错误源信息。
把相似错误的错误代码归在同一组,以便发生错误时决定采用 何种方法进行处理。
Http://ccms.hust.edu.cn
22
LabVIEW错误信息
内置异常处理工具
• 简易异常处理器 当有错误发生时,它会弹出一个对话窗,显示错误代码、简 单的错误描述和错误发生的位置。
• 通用异常处理器
通用错误处理VI提供给程序员的可选项要多一些,因此可满 足更多的需求。 简易异常处理器是由通用错误处理器封装后构成的,减少了 灵活性并增加了不必要的处理开销。 因此,推荐使用通 用错误处理器。
第二个驱动等到来自第一个驱动的错误信息后才会执行。 因此 调整错误簇信息的流向,就可以强制调整VIs的执行顺序。
Http://ccms.hust.edu.cn
12
LabVIEW错误信息
错误簇——错误检查
在本例中,仪器返回“ok”则程序正常执行,否则程序输出自定 义错误;从而有效的检测出仪器的正常工作与否。
LabVIEW程序调试与异常处理
Intelligent Electronics Institute Huazhong University of Science & Technology
目录
概述
LabVIEW错误信息 内置异常处理工具 LabVIEW异常处理过程 LabVIEW程序调试技术
Http://ccms.hust.edu.cn
Http://ccms.hust.edu.cn
5
概述
异常处理——处理程序在执行过程中不期望发生 的事件。
例如: 整型变量x被整型变量y除的结果作为另一个计算的输入。有时y 可能会被设为0。
• 错误捕获
• 错误处理
Http://ccms.hust.edu.cn
6
LabVIEW错误信息
Http://ccms.hust.edu.cn
2
概述
Http://ccms.hust.edu.cn
3
概述
对程序开发人员来说,异常处理和程序调试都是非常重要的编程 技术。
•异常处理是针对程序代码在运行时可能出现的错误,进行预定义 处理过程的技术。异常处理技术可以在系统发生错误的情况下, 保证系统的正常退出和释放系统资源而不会引起整个系统崩溃的 发生。
Http://ccms.hust.edu.cn
23
LabVIEW异常处理过程
Http://ccms.hust.edu.cn
24
LabVIEW异常处理过程
异常处理时机
在程序开发的过程中,需要考虑操作过程中可能出现的情况以 及相应的结果。 异常处理作为系统管理级的功能一般被放在程序的顶层进行。 顶层程序控制着应用程序的流程,而异常处理可能会改变程序 正常的执行流程,因为当有错误发生时,程序可能会根据不同 的错误作相应的动作。
解决办法:采用移位寄存器传递引用句柄。
Http://ccms.hust.edu.cn
20
LabVIEW错误信息
逻辑错误——一些逻辑错误的解决办法
对输入的数据进行有效性验证。
更详细内容请参考本书4.2.4节。
Http://ccms.hust.edu.cn
21
LabVIEW错误信息
自定义错误——用通用处理器进行自定义错误代码
Http://ccms.hust.edu.cn
33
LabVIEW异常处理过程
外部错误管理
通过动态加载外部处理程序来管理和处理错误。
•可以应用到应用程序中所有有同样需要的地方。 •可以被其它的应用程序调用。
Http://ccms.hust.edu.cn
34
LabVIEW异常处理过程
外部错误管理——调用外部处理程序的过程
Http://ccms.hust.edu.cn
25
LabVIEW异常处理过程
一般处理模式——依错误代码范围进行处理
最简单的错误处理方法可以用通用错误处理VI弹出一个对话框 提示用户有错误发生。
Http://ccms.hust.edu.cn
26
LabVIEW异常处理过程
一般处理模式——特定错误代码处理技术
• 根据外部处理程序的路径打开该VI的引用; • 将错误簇信息通过“调用节点”传递给外部处理程序; • 运行外部处理程序; • 关闭调用。
Http://ccms.hust.edu.cn
35
LabVIEW异常处理过程
错误优先顺序
LabVIEW 中的功能和 VI 可以按照不同的风险来分类,帮助理 解它们生成的错误类型并且评价关于给定应用程序的处理策略。
在错误代码数组中查找错误代码;条件结构根据索引值执行相 应的错误处理和提示。 数组中没有查找到该错误代码,则提示“错误代码没有定 义!”。
Http://ccms.hust.edu.cn
27
LabVIEW异常处理过程
循环处理模式——while循环结构
错误通过移位寄存器来传递,在错误发生时,跳出循环。右图 将错误簇直接连接到while循环结构的条件选择端 ,简化了编 程。
错误代码
错误代码(Code)可以是正数或负数,由发生的错误类型决定。 没有错误发生时为零。“警告”时,代码为非零值,但状态为 “假”。 本书附录B列出了代码的错误描述。
Http://ccms.hust.edu.cn
15
LabVIEW错误信息
错误代码
上图列出了相应错误的代码,以及错误的解释。
Http://ccms.hust.edu.cnຫໍສະໝຸດ Baidu
Http://ccms.hust.edu.cn
32
LabVIEW异常处理过程
错误退出
程序执行中出现致命的或不可恢复的错误时,应当合理地退出 程序而不是继续执行,因为不正常地终止程序可能会导致一些 意想不到的后果 。 终止程序前,先关闭所有的仪器I/O句柄、文件和通信通道, 可最大化减少可能导致的问题。
Http://ccms.hust.edu.cn
28
LabVIEW异常处理过程
循环处理模式——for循环结构
启用索引的for循环输出为数组,对于错误来说体积过于庞大, 因此,使用移位寄存器来捕获错误,再在for循环的外部对捕 获的错误进行处理。决不应该启用索引 。
Http://ccms.hust.edu.cn
39
LabVIEW异常处理过程
错误优先顺序——中等风险函数
• 具有错误端但不调用 LabVIEW 环境以外的资源。
• 这些包括和前面板相关的属性节点、同步函数选板中的所 有功能、控制本地 LabVIEW 程序的时的 VI 服务、大多数 的快速 VI(除快速输入输出子选板中的 VI 以外)、扫描 字符串和格式化写入字符串、以及数学 VI。
Http://ccms.hust.edu.cn
40
LabVIEW异常处理过程
错误优先顺序
• 低风险函数——没有错误输出端,不需要进行任何的错误 处理。 • 高风险函数——失败的 I/O 操作更可能引起调用应用程序 发生错误。 • 中等风险函数——大多数中等风险 VI 生成的错误都有良好 的表现,而不会引起很长的等待时间或崩溃。
Http://ccms.hust.edu.cn
10
LabVIEW错误信息
错误簇——一个错误簇输入输出的例子
该例中,使用“错误输入”和“错误输出”簇就可以实现错误探 测,捕获仪器发送和接收数据过程中出现的错误信息。
Http://ccms.hust.edu.cn
11
LabVIEW错误信息
错误簇——运用错误簇调整VI执行顺序
具体例子将在4.4.11节中给出
Http://ccms.hust.edu.cn
31
LabVIEW异常处理过程
错误日志
错误日志用来记录程序执行过程序中遇到的错误,它将错误代 码、源、简单的错误描述和错误发生的时间写入日志文件。这 样有助于开发更具鲁棒性的应用程序。
我们可以将错误保存在文件或者数据库中,特别对无人值守的程序来 说,以供之后管理人员查询并分析错误原因。
在从事实际项目开发中可能会遇到一些更加隐蔽的问题,而这 类问题又很难被发现,也无法借助调试工具来解决。
Http://ccms.hust.edu.cn
19
LabVIEW错误信息
逻辑错误——循环中容易遇到的逻辑错误
当“键”数组为空时,循环不会执行,引用句柄不会传递到 “close”端,从而导致文件关闭发生错误。
相关文档
最新文档