说明
使用扩展指令 "GetError" 和 "GetErrorID" 可以查询块中出现的错误并评估相关错误数据。这样可以避免 CPU 进入停机模式并继续程序的运行。n
- "GetErrorID" 指令的输出参数 "ID"是Word数据类型,它包含第一条出现错误的ID.n
- "GetError" 指令的输出参数"ERROR"是 "ErrorStruct" 系统数据类型,它包含更多关于出现的错误的信息。n
- 当第一条错误被清除后,上面两条指令给出下一条错误的ID和错误数据。n
- 可以在OB、FB、FC块中使用本地错误处理。n
- 为了评估错误,必须将上述指令插入到可能出现错误的块里面。(例如 I/O 访问错误)n
- 也可以使用上述指令将关于错误状态的信息传给调用它的块。要实现该功能,需要将上述指令放在调用块的最后一句调用。
下面是几个上述的本地错误处理的例子。更多关于上述指令及其输出参数的信息可以在 STEP 7 Basic 在线帮助的以下主题中找到:n
- 本地错误处理的机制n
- GetErrorn
- GetErrorIDn
- 使能块的本地错误处理
例子 1: I/O访问错误
当模块不存在或模块有缺陷时直接访问 I/O,CPU 会进入停机模式。在程序代码中加入"GetError" 指令,在 I/O 访问错误时可以避免缺省的系统反应(进入停机模式)。当读错误时,程序使用替代值 0 继续处理。 n
- 错误数据传输至DB15 ("Diagnostic")的结构体变量 "Error" 中。转换器读取结构体变量中的 "Diagnostic.Error.AREA" ,并将其从 Byte 类型转换为 UInt 类型。n
- 第一个操作 "Same" 查询存储区 "AREA" 与 I/O 区是否一致。I/O 区具有识别符 "P" 和16进制代码 "16#80" (对应于无符号整数128)n
- 第二个操作 "Same" 检查 I/O 模块的起始地址。结构体里的 "OFFSET" 包含相应地址的操作数。所以此处对于输入地址2,应与其相应的值16比较(OFFSET=2x8=16).n
- 如果两个 "Same" 操作都满足,标志位 M40.0 (I/O_Addr_2) 的值为真
图. 01
例子 2: 参数化的数据块在CPU中不存在
如图02中 MOVE 指令所示,作为参数的 DB22 在CPU中并不存在。T错误数据传送到DB15 ("Diagnostic")的结构体变量中。图 02 表示了 LAD程序和DB15的在线视图。T存储在DB15 "Diagnostic" 中的结构体变量 "Error" (数据类型: ErrorStruct) 可以在不同的 FB, FC 或 OB 中进一步编程处理。
DB15 的变量监视提供了如下信息:
ERROR_ID: 16#253A | 全局数据块不存在 |
REACTION: 16#01 | 读错吴,程序利用替代值继续处理 |
BLOCK_TYPE: 3 | FB"块的代码. |
CODE_BLOCK_NUMBER: 11 | 出现错误的程充块的块号 11. |
AREA: 16#84 | DB的存储区. |
DB_NUMBER: 22 | DB22 不存在 |
FB11中打开了并不存在于CPU中的 DB22.
图. 02
例子 3: 数据块的操作数超出有效区
图. 03 演示了对一个读错误的处理。与前两个例子一样,指令 "GetError" 将错误信息传到了 DB15 ("Diagnostic") 的结构体变量 "Error" 中。
- 结构体内的 "DB_NUMBER" 包含出错DB块的块号 (例如对于DB20,则该值为20) ,将该值用"MOVE" 指令传送给 MW30.
- 结构体内的 "OFFSET" 包含相关的操作数的地址 (例如DB块中的第 40位). 为得到 Byte 地址,使用"DIV"指令,把该值 除以8(8 bits),结果 (DB中的Byte地址) 存储在MD32中。
- 本例中,使用"Greater"指令查询DB访问地址是否超过了 2 字节,使用 "Same" 指令查询DB的存储区 (DB: 16#84)是否是相关的。在这之前,结构体中的 "AREA" 必须先从Byte类型转换为 Int 类型。
- 如果"Greater" 和 "Same"两个条件都满足,标志位 M10.1 ("Activity") 置1.
图. 03
说明
只要将指令 "GetError" 和 "GetErrorID" 中的一个插入到网络并编译下载至CPU中,块的本地错误处理就使能,系统响应(例如停机模式)被忽略。这两个指令可以在文件夹"Program Control Instructions" 的 "Extended instructions" 中找到。
实验环境
本 FAQ 中提到的图片由 STEP 7 Basic 版本 V10.5+SP2 生成。
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc332533.html