第4章 LabVIEW程序调试与异常处理PPT参考幻灯片_第1页
第4章 LabVIEW程序调试与异常处理PPT参考幻灯片_第2页
第4章 LabVIEW程序调试与异常处理PPT参考幻灯片_第3页
第4章 LabVIEW程序调试与异常处理PPT参考幻灯片_第4页
第4章 LabVIEW程序调试与异常处理PPT参考幻灯片_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

1、LabVIEW程序调试与异常处理,Intelligent Electronics Institute Huazhong University of Science & Technology,2,目录,概述 LabVIEW错误信息 内置异常处理工具 LabVIEW异常处理过程 LabVIEW程序调试技术,概述,3,4,概述,对程序开发人员来说,异常处理和程序调试都是非常重要的编程技术。 异常处理是针对程序代码在运行时可能出现的错误,进行预定义处理过程的技术。异常处理技术可以在系统发生错误的情况下,保证系统的正常退出和释放系统资源而不会引起整个系统崩溃的发生。 程序调试是用于查找和纠正程序代码在编

2、写或运行时出现的错误的技术。,5,概述,程序调试程序开发人员借助调试工具,针对程序执行中发生的某个特定错误,进行原因查找、错误分析、修改程序并最终解决错误的过程。,产生错误的原因很多 要求熟悉代码 充分利用调试工具,6,概述,异常处理处理程序在执行过程中不期望发生的事件。,例如: 整型变量x被整型变量y除的结果作为另一个计算的输入。有时y 可能会被设为0。,错误捕获 错误处理,LabVIEW错误信息,7,8,LabVIEW错误信息,在系统中对错误进行分类、定义错误标识和信息存储数据格式等,是实现异常处理过程的基础。,LabVIEW中错误的分类 I/O错误由程序试图对外部仪器、文件或其它应用程序

3、进行操作所致。 逻辑错误由程序代码的缺陷所致。,9,LabVIEW错误信息,错误簇,错误簇(Error Cluster)为程序员提供了一个探测机制。这个簇包含状态(Status)、代码(Code)和源(Source)三个控件,分别反映一些错误信息。,10,LabVIEW错误信息,错误簇,状态是一个布尔量,有错误时返回“真”; 代码是一个32位单精度整型数据,用于区分不同的错误; 源是一个字符串,提供了错误源信息。,11,LabVIEW错误信息,错误簇一个错误簇输入输出的例子,该例中,使用“错误输入”和“错误输出”簇就可以实现错误探测,捕获仪器发送和接收数据过程中出现的错误信息。,12,LabV

4、IEW错误信息,错误簇运用错误簇调整VI执行顺序,第二个驱动等到来自第一个驱动的错误信息后才会执行。 因此调整错误簇信息的流向,就可以强制调整VIs的执行顺序。,13,LabVIEW错误信息,错误簇错误检查,在本例中,仪器返回“ok”则程序正常执行,否则程序输出自定义错误;从而有效的检测出仪器的正常工作与否。,14,LabVIEW错误信息,错误簇添加额外信息,将时间和调用链信息加到用户自定义错误信息中,就可以找到错误发生的时间和位置。 同样,还可以将其它信息加到错误簇中去,为程序员提供更多的信息。,15,LabVIEW错误信息,错误代码,错误代码(Code)可以是正数或负数,由发生的错误类型决

5、定。没有错误发生时为零。“警告”时,代码为非零值,但状态为“假”。 本书附录B列出了代码的错误描述。,16,LabVIEW错误信息,错误代码,上图列出了相应错误的代码,以及错误的解释。,17,LabVIEW错误信息,I/O错误,对仪器或通信通道不正确的初始化或配置。 对仪器或应用程序发送错误的命令或数据。 在仪器或应用程序的使用中出现错误。 缺少硬件或软件选项也会导致I/O错误。,18,LabVIEW错误信息,I/O错误简单的处理,首先对仪器进行初始化,然后配置测量参数,接着进行数据采集,最后关闭仪器连接。整个过程中可能发生的I/O错误通过错误簇传递,弹出错误对话框。,19,LabVIEW错误

6、信息,逻辑错误由程序代码自身缺陷所致,没有把While循环跳出循环的条件设置正确导致的逻辑错误。 在从事实际项目开发中可能会遇到一些更加隐蔽的问题,而这类问题又很难被发现,也无法借助调试工具来解决。,20,LabVIEW错误信息,逻辑错误循环中容易遇到的逻辑错误,当“键”数组为空时,循环不会执行,引用句柄不会传递到“close”端,从而导致文件关闭发生错误。 解决办法:采用移位寄存器传递引用句柄。,21,LabVIEW错误信息,逻辑错误一些逻辑错误的解决办法,对输入的数据进行有效性验证。 更详细内容请参考本书4.2.4节。,22,LabVIEW错误信息,自定义错误用通用处理器进行自定义错误代码

7、,把相似错误的错误代码归在同一组,以便发生错误时决定采用何种方法进行处理。,23,LabVIEW错误信息,内置异常处理工具,简易异常处理器 当有错误发生时,它会弹出一个对话窗,显示错误代码、简单的错误描述和错误发生的位置。 通用异常处理器 通用错误处理VI提供给程序员的可选项要多一些,因此可满足更多的需求。 简易异常处理器是由通用错误处理器封装后构成的,减少了灵活性并增加了不必要的处理开销。 因此,推荐使用通用错误处理器。,LabVIEW异常处理过程,24,25,LabVIEW异常处理过程,异常处理时机,在程序开发的过程中,需要考虑操作过程中可能出现的情况以及相应的结果。 异常处理作为系统管理

8、级的功能一般被放在程序的顶层进行。 顶层程序控制着应用程序的流程,而异常处理可能会改变程序正常的执行流程,因为当有错误发生时,程序可能会根据不同的错误作相应的动作。,26,LabVIEW异常处理过程,一般处理模式依错误代码范围进行处理,最简单的错误处理方法可以用通用错误处理VI弹出一个对话框提示用户有错误发生。,27,LabVIEW异常处理过程,一般处理模式特定错误代码处理技术,在错误代码数组中查找错误代码;条件结构根据索引值执行相应的错误处理和提示。 数组中没有查找到该错误代码,则提示“错误代码没有定义!”。,28,LabVIEW异常处理过程,循环处理模式while循环结构,错误通过移位寄存

9、器来传递,在错误发生时,跳出循环。右图将错误簇直接连接到while循环结构的条件选择端 ,简化了编程。,29,LabVIEW异常处理过程,循环处理模式for循环结构,启用索引的for循环输出为数组,对于错误来说体积过于庞大,因此,使用移位寄存器来捕获错误,再在for循环的外部对捕获的错误进行处理。决不应该启用索引 。,30,LabVIEW异常处理过程,条件结构处理模式,将错误簇直接连接到条件结构的分支选择器。绿色框为无错误分支,红色框为错误分支。,31,LabVIEW异常处理过程,状态机处理模式,异常处理代码放在同一地方,这样代码更容易修正; 异常处理管理也可维持在主程序层或测试执行层。 具体

10、例子将在4.4.11节中给出,32,LabVIEW异常处理过程,错误日志,错误日志用来记录程序执行过程序中遇到的错误,它将错误代码、源、简单的错误描述和错误发生的时间写入日志文件。这样有助于开发更具鲁棒性的应用程序。,我们可以将错误保存在文件或者数据库中,特别对无人值守的程序来说,以供之后管理人员查询并分析错误原因。,33,LabVIEW异常处理过程,错误退出,程序执行中出现致命的或不可恢复的错误时,应当合理地退出程序而不是继续执行,因为不正常地终止程序可能会导致一些意想不到的后果 。 终止程序前,先关闭所有的仪器I/O句柄、文件和通信通道,可最大化减少可能导致的问题。,34,LabVIEW异

11、常处理过程,外部错误管理,通过动态加载外部处理程序来管理和处理错误。 可以应用到应用程序中所有有同样需要的地方。 可以被其它的应用程序调用。,35,LabVIEW异常处理过程,外部错误管理调用外部处理程序的过程,根据外部处理程序的路径打开该VI的引用; 将错误簇信息通过“调用节点”传递给外部处理程序; 运行外部处理程序; 关闭调用。,36,LabVIEW异常处理过程,错误优先顺序,LabVIEW 中的功能和 VI 可以按照不同的风险来分类,帮助理解它们生成的错误类型并且评价关于给定应用程序的处理策略。 不同类型的操作产生不同风险等级的错误,并在程序中表现出不同的行为。 将函数选板上的节点分为三

12、个风险等级,低、中和高,并由此把错误捕获区分优先次序。,37,LabVIEW异常处理过程,错误优先顺序低风险函数,在使用数学功能的VI时,LabVIEW 得体的处理了所有可能引起的问题,发生错误几乎是不可能的。他们属于低风险函数。,38,LabVIEW异常处理过程,错误优先顺序低风险函数,简单的数学功能不需要错误处理。 同样,其它函数选板上不包含错误端的所有功能都不生成错误。 这包括许多功能,可从结构、数组、簇和变量、布尔、字符串、比较和时间选板中调用。 这是风险等级最低的一类函数。,39,LabVIEW异常处理过程,错误优先顺序高风险函数,这些节点依赖于外部的驱动程序或资源,而这些程序和资源

13、可能出于各种不可预知的状态。 包括以下I/O 操作选板的所有节点:文件 I/O、测量 I/O、仪器 I/O 和数据通信。,40,LabVIEW异常处理过程,错误优先顺序中等风险函数,具有错误端但不调用 LabVIEW 环境以外的资源。 这些包括和前面板相关的属性节点、同步函数选板中的所有功能、控制本地 LabVIEW 程序的时的 VI 服务、大多数的快速 VI(除快速输入输出子选板中的 VI 以外)、扫描字符串和格式化写入字符串、以及数学 VI。,41,LabVIEW异常处理过程,错误优先顺序,低风险函数没有错误输出端,不需要进行任何的错误处理。 高风险函数失败的 I/O 操作更可能引起调用应

14、用程序发生错误。 中等风险函数大多数中等风险 VI 生成的错误都有良好的表现,而不会引起很长的等待时间或崩溃。,42,LabVIEW异常处理过程,错误处理技巧,输入输出隧道对齐,错误输入输出端子放置在最下端 正确识别警告和错误 捕获到错误时忽略自身代码,快速的将错误传递下去 错误发生后关闭已经打开的资源,43,LabVIEW异常处理过程,实例状态机模式进行错误处理,状态:open state, error state, close state 事件:错误发生 响应:在error state中处理错误,44,LabVIEW异常处理过程,实例状态机模式进行错误处理,Next State:判断下一个

15、执行状态,同时也进行错误判断。 Error Log:将错误写入错误日志。 Error State:通过错误代码,判断是否退出程序。,45,LabVIEW异常处理过程,实例状态机模式进行错误处理,程序会判断是否为用户自定义的错误代码,如是则会执行相应的分支,否则会执行0选择分支。,46,LabVIEW异常处理过程,实例状态机模式进行错误处理,1选择分支执行后,将对应状态从状态序列中移除。这样程序会继续执行但不会执行删除了的状态。,47,LabVIEW异常处理过程,实例状态机模式进行错误处理,状态机的Close状态在程序正常结束或异常终止时都会执行,它的作用是关闭所有资源,是程序安全退出的通道。,

16、48,LabVIEW异常处理过程,实例状态机模式进行错误处理,异常处理是在主程序层进行的,这样进行程序进程控制时不需要进入到底层VI。 将错误处理代码和其它程序代码分开,避免了与其它程序代码相混淆,提高了程序的可读性。 用状态机模式将异常处理代码集中在一起,提高了程序的可维护性和可调试性。,LabVIEW程序调试技术,49,50,LabVIEW程序调试技术,在LabVIEW中,程序调试工具可分为执行追踪、数据流追踪和特殊模式执行等。 执行追踪通过对程序代码执行过程的控制,可以帮助程序开发人员逐步跟踪程序的执行情况,从而确定程序是否完全按照设计意图执行。 数据流追踪通过显示程序执行过程中数据传递

17、以及处理的情况,帮助程序开发人员沿着数据连线的方向跟踪数据变化,从而确定数据是否完全按照设计意图被处理。 特殊模式执行包括悬挂执行、禁用部分程序框图等。,51,LabVIEW程序调试技术,错误列表,当运行按钮断开时,单击它,会弹出错误列表窗口。错误列表显示了当前程序框图中存在的数据流语法错误,如程序中存在坏的连线或“必需”接线端没有连接。,52,LabVIEW程序调试技术,错误列表,需要注意的 错误项 显示警告 详细信息 显示错误,53,LabVIEW程序调试技术,高亮执行,有利于程序员在程序执行过程中跟踪到程序中的一些Bug。 数据通过连线上移动的数据流显示在程序框图上。 便于观看数据的流向

18、及实时数据。 查看VI中的数据流动的全过程。,54,LabVIEW程序调试技术,单步执行,按照程序框图中程序节点的逻辑关系,沿连线逐个节点执行程序。 单步步入工具按单步步入方式执行VI,每单击一次,程序执行一步,遇到循环结构或子VI时,跳入循环或子VI内部继续单步执行。 单步步过工具按单步跳出方式执行VI,每单击一次,程序执行一步,遇到循环结构或子VI时,把循环或子VI视为一个节点来执行,不跳入内部。 单步步出工具跳出单步执行VI状态,且跳出后暂停程序。,55,LabVIEW程序调试技术,探针工具,在程序调试中,使用探针工具,既可以探测个别节点的数据,又不减缓程序的执行过程。 探针工具在工具选

19、板上选择,也可以在程序框图中连线上右击,从弹出的快捷菜单中选择。,56,LabVIEW程序调试技术,探针工具通用探针,通用探针可显示查看流经连线的数据,但无法对数据做出响应。 右击连线并选择“自定义探针通用探针”获取。 默认添加的探针都为通用探针。,57,LabVIEW程序调试技术,探针工具内置探针,内置探针是显示连线中传输数据的综合信息的VI。 内置探针可根据流经连线的数据做出响应。 右击连线并选择“自定义探针带条件错误探针”获取。,58,LabVIEW程序调试技术,探针工具自定义探针,为更好地探测流经连线数据,可创建一个自定义探针。 右击连线并选择“自定义探针新建”,打开“创建新探针”向导

20、,选择“创建新探针”或“从现有探针创建新探针”创建自定义探针并保存。 自定义探针可像VI一样进行调试,但不能探测其自身的程序框图,也不能探测其子VI的程序框图。,59,LabVIEW程序调试技术,探针工具显示控件,LabVIEW也可以把显示控件作为探针。 通过“自定义探针控件新式图形波形图表”选择波形图表控件。,60,LabVIEW程序调试技术,探针工具制作自定义探针,对错误簇控件自定义一个探针。 向导法 自动生成“错误输入(无错误)”和“布尔”这两个控件,不能删除。,61,LabVIEW程序调试技术,保存连线值工具,保存连线上最近一次通过的数据。 直接使用探针就可以查看该数据。,62,LabVIEW程序调试技术,断点工具,在程序框图上的VI、节点或连线上放置一个断点,程序运行到该处时自动暂停执行。,程序执行到一个断点时,因VI将暂停执行,即可采取以下操作: 用单步执行按钮单步执行程序。 在连线上添加探针查看中间数据。 改变前面板控件的值。 单击暂停按钮可继续运行到下一个断点处或直到VI运行结束。,63,LabVIEW程序调试技术,挂起执行,如果一个子VI被设置为挂起执行,那么被调用时会弹出它的前面板。,设置VI为挂起执行: 在子VI菜单栏选择“操作调用时挂起”

温馨提示

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

评论

0/150

提交评论