错误处理

在使用 MODICON®* 插件时,基本上 PLC 内存中有两个字段用于指示错误的存在:“GMV_ERRORCODE”和“GMV_ERRORCAUSE”。默认情况下,这些字段设置为 0,表示没有出现错误。

当插件启动时,“GMV_ERRORCODE”字段设置为 1,表示不存在错误。如果出现错误,“GMV_ERRORCODE”和“GMV_ERRORCAUSE”字段都会更新以反映错误情况。PLC 需要通过请求“AcknowledgeError”命令,即通过将“GMV_REQCOMMANDCODE”设置为相应的命令代码来确认错误。您可以在插件与 PLC 之间的通讯主题中找到可用命令代码的列表。

插件也会将“GMV_ACKCOMMANDCODE”设置为相同的命令代码以作响应。在 PLC 重置“GMV_REQCOMMANDCODE”、“GMV_ERRORCODE”和“GMV_ERRORCAUSE”后,插件也会将“GMV_ACKCOMMANDCODE”重置为 0。通过这种握手机制,PLC 知道错误字段已更新。

如果在“GMV_ERRORCODE”和“GMV_ERRORCAUSE”中仍显示前一个错误时出现新错误,不会用新的错误信息覆盖这些字段。而是先处理前一个错误,在“GMV_ACKCOMMANDCODE”重置为 0 后再将第二个错误写入错误字段。如果“GMV_ERRORCODE”中的值在“GMV_ACKCOMMANDCODE”重置后保持不变,表示再次出现相同的错误。这时,必须再次执行“AcknowledgeError”命令才能确认第二个错误。如果在此期间没有出现其他错误,“GMV_ERRORCODE”字段的值将重置为 1。这表示所有错误都已得到确认。

GMV_ERRORCODE

如果出现错误,此字段包含一个表示错误代码的数字无符号 32 位整数。根据 Communicator API 提供的错误定义,错误代码提供有关严重程度、受影响组件和错误性质的信息。

错误的严重程度由错误代码中最高有效的 4 位表示。我们区分以下严重程度:

严重程度

1

关键

2

错误

4

警告

发生错误的受影响组件由较低有效的后四位表示。下表显示可能的组件:

受影响组件

1

视觉系统 (MERLIC)

2

MVApp/配方

4

Communicator

8

MODICON®*插件

根据 Communicator API 提供的 MV_CODE_* 定义,最低有效的 8 位指示错误的性质。您可以在 Communicator 参考文档中的 API 头 mv_error_def.h 的文档中找到定义。

例如,如果“GMV_ERRORCODE”字段包含十六进制错误代码 0x2139,则相应的位表示由于图像采集错误 (0x39),视觉系统 (0x0100) 中出现错误 (0x2000)。

GMV_ERRORCAUSE

此字段指示导致错误的命令。因此,它具有与“GMV_REQCOMMANDCODE”和“GMV_ACKCOMMANDCODE”字段中给定的数值相同的数值。您可以在插件与 PLC 之间的通讯主题中找到可用命令及其代码的概述。

有时,错误也可能自发地出现而并非由任何命令引起,例如,当与相机的连接丢失时。在这类情况下,“GMV_ERRORCAUSE”具有表示“NoCommand”的值 0。只有由相同 MODICON®* 插件实例触发的命令引起的错误以及自发错误会被处理。因此,由另一个插件实例发出的命令引起的错误会被忽略。


* Modicon® is a registered trademark of Schneider Electric USA, Inc.