调试

概述

要评估潜在编程错误,可使用调试功能。

为了测试,应用程序还可以在仿真中运行,无需连接到实际目标设备。尽管仿真时无需连接至物理硬件,但是也存在可能需要在线完成调试的限制。

用于强制执行停止的断点

应用程序中设置的断点用于停止程序执行。随后可在当前执行点看到变量值。利用调用栈,能够更精确地确定当前位置。

只有刚好已到达断点的调试任务被停止。其他任务则继续执行。可能的断点位置取决于相应的程序编辑器。在每种情况下,在 POU 的末端都有一个断点。

注: 在断点处停止时,不更新调试任务所处理的输入/输出。即使在设备编辑器的 PLC 设置[常规]选项卡中启用了选项处于“停止”状态时更新 IO,这点仍然适用。

有关断点命令的说明,请参阅断点命令一章。断点对话框提供了所有断点的概览,让您能够添加、删除和修改断点。

有条件断点

断点处停止可能取决于以下条件:

  • 特定布尔表达式为 TRUE 时。

  • 正在运行的循环次数。

  • 正在执行的任务。

  • 变量值已被修改时(数据断点)。

声明特定调试任务可有助于避免多个任务受到错误校验影响(请参阅具有多个任务的应用程序中的断点和单步运行文段)。

执行点

在线模式下,断点对话框允许以使断点和数据断点变成执行点的方式来更改断点和数据断点。然后,程序在该位置不停止,但会发起代码处理。

符号

符号

描述

断点已启用。

断点已禁用。

断点设置在编辑器中已打开的功能块的另一实例中。

在断点处停止。

有条件断点已启用。

有条件断点已禁用。

执行点已启用。

执行点已禁用。

有条件执行点已启用。

有条件执行点已禁用。

当前步位置。

由相应行前的黄色箭头以及相关操作后的黄色阴影指示。

数据断点已启用。

数据断点已禁用。

在数据断点处停止。

数据执行点已启用。

数据执行点已禁用。

在数据执行点处停止。

有条件数据执行点已启用。

有条件数据断点已启用。

通过程序执行的单步运行

单步运行可实现应用程序在在线模式下出于调试目的的可控执行。在使用单步运行命令之前,必须在定义的程序步处,例如通过设置断点的方式,来停止程序。基本而言,您可通过跳入指令、跳过下个指令或跳出指令,从一个指令跳至下个指令。有关单步运行命令的描述,请参阅章节断点相关命令

EcoStruxure Machine Expert 提供下列单步运行功能:

  • 跳入命令:执行单一步;这也适用于在步内调用的 POU。

  • 跳过命令:执行单一步;POU 完全在步内执行。

  • 跳出命令:如果应用程序不包含任何调用,则执行跳回到应用程序开头。

  • 运行到光标处命令:将程序一直执行到临时的可定义位置。

  • 设置下一条语句命令:定义要执行的下一个指令(语句)。

  • 显示下一条语句命令:跳至要在下一步中执行的指令(语句)。

  • 调用栈视图:此视图指示当前到达的步位置以及整个调用路径。

在通过应用程序执行单步运行时,可能的停止位置取决于编辑器类型。当前位置由黄色箭头来指示。

调用树视图:显示在编译应用程序之前功能块在应用程序的调用结构中的位置。

跳入操作示例

从断点开始,您可用单步运行命令执行每个命令行。

跳入示例

数据断点

数据断点让您能够在变量值更改时停止程序执行。

并非所有支持的控制器都支持该功能。 查询您的控制器对应的编程指南

能够定义的数据断点的数量取决于正使用的控制器。如果在已达到最大数量时试图设置数据断点,则会显示相应消息。

数据断点包含以下跟普通断点相同的选项:

  • 将数据断点处的暂停关联到附加条件,请参阅有条件断点

  • 将数据断点重新定义为程序不暂停但会处理特定代码的数据执行点,请参阅执行点

具有多个任务的应用程序中的断点和单步运行

无法同时对多个任务执行调试。当您正在处理包含断点或单步运行的任务时,其他任务中的断点会被忽略。

如果多个任务可能抵达断点,由于 POU 由多个任务使用,则仅首先执行的任务将暂停。在单步运行或在暂停后继续调试时,要注意这点。如果应当只有 1 个特定任务(调试任务)相关,可在断点条件属性中对其进行指定(断点 > 新建断点对话框,条件选项卡)。

用于显示处理时的确切值的流控制

您可以激活流控制,从而跟踪应用程序中已经运行过的部分。与仅显示两次循环间的变量值的标准监视不同,流控制提供每个处理步在其处理时的值。另请参阅菜单命令在线帮助中的流控制说明

执行停止时的变量值

在每次执行停止时,EcoStruxure Machine Expert 会显示当前循环的变量值(监视)。如要确定当前位置,您可以显示变量的调用栈。另请参阅菜单命令在线帮助中的调用栈说明