Skip to main content

IEC 应用程序中的奇怪行为

要求

你正在使用一个 CODESYS 运行时间。

故障排除

如果你观察到奇怪的行为,那么你应该检查运行时记录器是否提供了有价值的提示或信息。这个 CODESYS 运行时记录器有一种按类别过滤消息的机制。这个 调试 默认情况下,类别未启用。启用此类别可查找异常行为或意外症状的原因。

有全局和特定组件的日志过滤器。您可以在运行时日志文件中查看所有可能的特定组件过滤器的详细列表。按如下所述使用过滤器。

与之相关的症状

可能的基于组件的日志过滤器

许可

CmpCodeMeter

IEC 任务/时机(更高级别)

CmpIecTask

IEC 任务/时机(低级)

CmpScheduleSysTask

IEC 应用程序(通用)

CmpAppCmpIecTask

IEC 应用程序(存储器)

SysMem

套接字通信

SysSocket

以太网通信

SysEthernet

文件/文件夹

SysFileSysDir

提示

不要同时启用所有调试类别,因为这会使发现实际问题变得困难。逐步进行并禁用 “无关紧要” 的过滤器,以更好地了解问题

. 启用 调试 通过 PLC 外壳进行消息类别(适用于运行时版本 >= SP20)。
  1. 打开你的 CODESYS 投影并将其连接到控制器。

  2. 双击设备树中的控制器,打开 PLC 外壳。

    _rtsl_img_plc_shell.png
  3. 输入 “?“在 shell 中查看所有可能的命令。

  4. 使用 logsetfilterloggetfilter,以及 logdelfilter写入、读取和删除过滤器的命令。您可以对整个运行时使用全局调试过滤器,也可以对特定组件使用过滤器。

    • 要全局读取当前日志类别,请执行以下操作:

      loggetfilter 可能会返回以下输出: Logger.0.Filter : 0x0000000F

    • 要全局设置当前日志类别,请执行以下操作:

      logsetfilter 0xffffffff

    • 读取特定组件的当前日志类别(例如, CmpCodeMeter):

      loggetfilter CmpCodeMeter

    • 要为特定组件(例如 CmpCodeMeter)设置当前日志类别,请执行以下操作:

      logsetfilter CmpCodeMeter 0xffffffff

. 通过运行时配置文件启用记录器类别(适用于较早的运行时版本)

示例:通过 SSH 连接和文本编辑器

  1. 通过部署工具停止运行时间。

  2. 连接到您的目标系统(例如,通过 putty 或其他 SSH 客户端)。

  3. 使用文本编辑器打开运行时环境的用户特定配置文件(例如, nano):

    sudo nano /etc/codesyscontrol/CODESYSControl_User.cfg

  4. 找到 CmpLog 分区并设置过滤器。

    1. 设置全局过滤器

    示例: Logger.0.Filter=0xFFFFFFFFFF 启用所有调试消息

    _rtsl_img_plc_shell_global.png


    2. 设置特定组件的过滤器
    [CmpLog]
    CmpCodeMeter.Filter=0xFFFFFFFF
    SysTask.Filter=0xFFFFFFFF


  5. 保存并关闭该文件。

  6. 使用部署工具重新启动运行时。