Skip to main content

可视化崩溃诊断

可视化崩溃可能有不同的原因。在以下部分中,您将了解如何检测可视化崩溃的原因以及哪些操作对防止崩溃有意义。

停止执行已处理的异常 命令在错误检查时帮助您。在应用程序启动之前运行该命令。

提示

默认情况下, 停止执行已处理的异常 命令在任何菜单中均不可用,但可以在 工具 → 自定义 如下。

  1. 单击工具 → 自定义。

    菜单 选项卡打开。首先,您需要定义命令的菜单位置。在这种情况下,选择下面的项目是有意义的 在线的 菜单。

  2. 选择所需的位置并单击 添加命令 按钮。

    所有命令都列在 添加命令 对话。

  3. 选择 在线的 左侧的类别,然后右侧的所需命令。点击 好的 关闭对话框。然后点击 好的 再次关闭 定制 对话。

    停止执行已处理的异常 命令现在可以在 在线的 菜单。

添加命令过程的详细说明请参见“???”。

作为替代 停止对已处理异常的执行 命令,你可以设置编译器定义 VISU_NO_EXCEPTION_HANDLING 为应用程序。结果,异常不会被可视化捕获,并且编程系统会显示系统崩溃的位置。

正在运行的可视化崩溃的可能原因

. 正在运行的可视化崩溃的可能原因
  • 在可视化中,具有接口变量和范围的框架元素 VAR_INPUT 被使用,并且这个接口变量(在示例中: PLC_PRG._itfTest1, _itfTest1 : ITF_TEST;) 尚未在应用程序中分配。

_visu_img_crash_var_input.png
_visu_img_crash_frame_itf.png
  • 在可视化中,带有接口变量的框架元素(在示例中: fbTest) 范围 VAR_IN_OUT 被使用,并且这个接口变量有一个功能块作为数据类型。但是,传输的变量并不指向该功能块。

_visu_img_crash_var_inout.png
_visu_img_crash_frame_fb.png
  • 除以 0:在除法表达式中,除数(在示例中: PLC_PRG.rVal2) 必须不 0.

_visu_img_crash_div_zero.png
  • 用于 VAR_IN_OUT 可视化中功能块的变量:

    如果变量具有范围 VAR_IN_OUT 在功能块中声明,则可视化仅在程序调用功能块后才能访问这些变量,并且 VAR_IN_OUT 变量已在功能块中分配。

  • 零指针和零引用的使用:指针变量不能为零(例如: PLC_PRG.pValue^)。

  • 内部代码错误;这仅在调用堆栈中可见。

防止这些错误的行动方案

. 防止这些错误的行动方案
  • 使用最初指向虚拟对象的接口。

  • 称呼 Visu_Prg 仅在执行了所有初始化后才在项目中。

  • 使用运算符 SEL 如下例所示: SEL(ptr<>0,0,ptr^.<>value)