断点通常用于调试程序。CODESYS 支持所有 IEC 编辑器中的断点。
您可以在程序的特定位置设置断点,以强制停止执行并监控变量值。您可以设置特殊的数据断点,以便在特定变量的值发生变化时停止程序的执行。
断点或数据断点处的停止可与其他条件相关联。您还可以将断点和数据断点重新定义为执行点,在这些点上执行特定代码,而不是停止程序。
“断点” 视图提供了所有已定义断点的概览。它还包括用于处理批量更改多个断点的附加命令。
在编辑器中,以下符号标识断点或执行点的状态:
-
断点已启用。
-
断点已禁用。
-
在编辑器中打开的另一个 POU 实例中设置了断点。
-
程序在断点处停止。
-
条件断点已启用。
-
条件断点已禁用。
-
执行点已启用。
-
执行点被禁用。
-
条件执行点已启用。
-
条件执行点被禁用。
-
数据断点已启用。
-
数据断点已禁用。
-
停在数据断点
-
数据执行点已启用。
-
数据执行点已禁用。
-
在数据执行点停止
-
条件数据执行点已启用。
-
条件数据断点已启用。
另见
数据断点
数据断点的功能取决于目标系统。目前,数据断点只能通过CODESYS Control Win V3.
当某个变量或内存地址的值发生变化时,程序会在数据断点处停止执行。与普通断点一样,停顿可以与附加条件联系起来,也可以处理特定代码来代替停顿(转换为数据执行点)。
您可以通过“Debug” 菜单中的 “New Data Breakpoint” 命令或“Breakpoints” 视图中的 “New” 按钮来设置数据断点。您可以直接指定一个限定变量名或内存地址,以监控其值的变化。
示例
在以下示例代码中,变量iNumber
的内存被无意覆盖。不过,当变量iNumber
的值发生变化时,数据断点就会检测到。然后停止处理,并在数组访问时发出相应信息,覆盖变量值:Idx
=7
。另见下文:"设置数据断点"。
PROGRAM PLC_PRG VAR Idx : INT; Ary : ARRAY[0..3] OF BYTE; iNumber : INT := 55; END_VAR FOR idx := 0 TO 6 DO Ary[idx] := 0; END_FOR
多任务应用程序中的断点
基本上,无法同时对多个任务进行调试。在使用断点或步进执行任务时,其他任务中的断点会被忽略。
如果包含断点的 POU 被多个任务使用,那么只有调试任务会停止,因为它先到达断点。所有其他任务继续进行。“Call Stack” 对话框显示当前停止的任务。
如果需要断点只影响一个特定任务,可以在断点属性中定义。
断点对每个应用程序单独运行,因此 "HALT ON BP "不会影响任何其他应用程序。这也适用于父/子应用程序,即使断点设置在一个被多个应用程序使用的程序块中,且其代码只位于 PLC 上一次。




注意

即使在 PLC 设置中选择了“Refresh I/Os in Stop” 复选框,调试任务调用的 I/O 也不会在断点停止时更新。
如果应用程序在 PLC 上的断点处停止,那么在线更改或下载会导致所有任务停止,这意味着 PLC 将停止。在这种情况下,CODESYS 会提示您是否继续登录。
另见
设置单个断点(以 ST 编辑器为例)
要求:应用程序处于在线运行模式。运行模式为“调试” 。
-
在编辑器中,打开一个用结构化文本(ST)编程的 POU。
-
将光标放在要设置断点的行中。
-
单击“调试 切换断点” 或按[F9] 。
该行用红色标记,并用 "启用断点 "符号 (
) 标识。如果程序在断点处停止,则该行将以 "停止于断点 "符号 (
) 标记。程序处理停止。状态栏中的
HALT ON BP
状态用红色高亮显示。 -
单击“调试 启动” 或按[F5] 。
节目继续进行。
-
设置更多断点,检查断点位置的变量值。
-
将光标放在需要移除断点的行中。
-
单击“调试 切换断点” 或按[F9] 。
标记消失。断点被删除。
另见
定义断点条件(ST 编辑器中的示例)
-
在编辑器中,打开一个用结构化文本(ST)编程的 POU。
-
将光标放在要设置断点的行中。
-
单击“调试 新断点” 。
“Breakpoint Properties” 对话框将打开。
-
单击“Condition” 选项卡。
-
当“命中计数”列表框中的“命中计数是倍数时,单击断开”。
在右侧字段中指定数值 "5"。
-
此外,您还可以定义一个布尔条件,以确定何时激活断点。选择“Break, when true” 复选框。在右侧文本框中指定一个布尔变量。
-
选择“立即启用断点” 复选框。
-
关闭对话框。
该行标记为红色,并用 "启用条件断点 "符号标识 (
)
监控运行中的程序。只要条件的布尔变量为FALSE
,断点条件就不会满足,程序将继续运行。如果将变量设置为TRUE
,则条件满足,程序每运行 5 次就会在断点处停止。
定义执行点(以 ST 编辑器为例)
-
在编辑器中,打开一个用结构化文本(ST)编程的 POU。
-
将光标置于执行点的位置。
-
单击“调试 新断点” 。
“Breakpoint Properties” 对话框将打开。
-
单击“执行点设置” 选项卡。
-
选择“执行点” 选项。
在“执行以下代码” 字段中,键入以下语句:
iCounter := iCounter + 1;
在“在设备日志中打印信息” 字段中,键入以下文本:
Execution point reached {iCounter}
-
关闭对话框。
当程序到达执行点时,它不会停止,而是执行上面定义的代码。此外,还会向设备日志发送一条信息。
设置数据断点
要求:应用程序处于在线运行模式。
-
单击“查看 断点” 。
-
单击“调试 新数据断点” 。
-
单击“新断点” 对话框(“数据” 选项卡)中的
按钮。
-
在“输入助手” 对话框(“监控变量” 选项卡)中,选择更改后程序应停止运行的变量。
另一种方法是在“Data” 标签页上直接在输入行中指定变量的限定名称。示例:
PLC_PRG.iNumber
。要监控的确切字节数指定为“大小” 。默认情况下,这里会自动设置一个与数据类型相对应的值。您也可以指定较少的字节进行监控。 -
在“断点” 视图中,选择带有数据断点的行,然后单击
按钮。
该行由 "启用数据断点 "符号 (
) 标记和标识。当程序到达数据断点时(指所选变量的值发生变化时),程序处理就会停止。在 POU 的执行部分,下一行用箭头
标识。状态栏中的
HALT ON BP
状态用红色高亮显示。 -
单击“调试 启动” 或按[F5] 。
程序继续运行,当变量值再次变化时,程序再次停止。