缺省状态下,CPU 会将块执行错误登录到诊断缓存区中并且转到停机模式。这是预设的系统响应。
可以通过在你想要监控的程序块中添加“GetError”或“GetErrorID”指令来改变这种响应。这时CPU 不会停机,也不会将错误登录到诊断缓存区。这个块被设定为管理块内的错误。错误信息报告到“GetError”或“GetErrorID”指令的输出。
“GetError”
“GetError”指示发生程序块执行错误并且填充详细的错误信息到预先定义好的错误数据结构变量中,数据类型“ErrorStruct ”。
“GetError”也可以用于传送错误状态的报警到所调用的块。为了实现这个功能,指令必须放在所调用块的最后一个网络。
“GetErrorID”
“GetErrorID”指令指示发生程序块执行错误并且报告错误 ID (识别码)。
使用“GetError”指令检测块执行错误事件
块执行事件的信息将存在 “ErrorStruct”系统数据类型的变量中。
1、添加 “GetError”指令
- 浏览指令窗找到“Extended instructions > Program control > GetError”。
- 拖放“GetError”指令到需要监控的 OB 的最后一个网络。
- 点击“OK”按钮
2、读取“GetError”指令的错误输出信息
可以保存本地错误信息到如下描述的全局变量中:
- 创建数据类型为“ErrorStruct”的本地变量“error_local”。
- 保存“错误”输出值到本地变量“error_local”。
- 浏览指令窗找到 “Instructions > Move > MOVE”。
- 拖放一个 “MOVE”指令到“GetError”指令所在的网络中。
- 连接“GetError”指令的 ENO点到“MOVE”指令的 EN 端。
- 在“data_block”数据块中,创建一个“ErrorStruct”数据类型的全局数据变量“gl_error”。
- 传送“GetError”变量到“data_block”.gl_error”变量。

3、检测“GetError”指令的“错误”输出信息
只有“ErrorStruct’系统数据类型的变量可以用于 ERROR 输出。“ErrorStruct’系统数据类型定义了保存错误信息所需的严格的数据结构。使用其它指令,还可以检测这个数据结构并且编程做出适当的响应。
“ErrorStruct”变量中包含如下信息:
- 发生错误的块的类型,(例如:´”data_block”.gl_error.block_type´)
- 发生错误的块号(例如: ´”data_block”.gl_error.code_block_number´)
详细的信息总揽请看下图。可以通过在线协助,通过搜寻关键字“GetError”找到“ErrorStruct ”数据类型的详细列表。错误代码列表。

错误情况由“ENO”使能输出指示
只有在下面两个条件满足的情况下,输出“ENO”才会被置位:
- 输入 EN 被使能。
- 出现错误信息
如果有一个条件不满足,下面程序的执行不受“GetError”指令的影响。
如果 EN = TRUE 并且“GetError”或“GetErrorID”执行,那么:
- ENO = TRUE 指示代码块执行错误发生并且有错误数据提供
- ENO = FALSE 指示无代码块执行错误发生
可以连接错误响应逻辑到“ENO”输出,在错误发生后激活。如果错误存在,输出参数存储程序访问的错误数据。“GetError”或“GetErrorID”可以用于发送当前正在执行的块的错误信息到调用它的块。将指令放到所调用的块的最后一个网络编程报告所调用的块的最后执行状态。
当不使用“GetError”指令时,并且使用在线访问 S7-1200 PLC ,你可以使用“Online & diagnostics”功能:
- 在线 S7-1200 PLC.
- 浏览“Project tree”找到 “Online & diagnostics”。
- 浏览“Online Access”窗口的导航栏找到“Diagnostics buffer”。
- 从“Events”列表中选择一个程序执行错误事件。
- 在“Events”列表下方,显示所选事件的详细信息。这里将看到被影响的 OB 块和错误的事件 ID。

注意
一个“Incoming event” 表明一个事件的开始。一个“Outgoing event” 表明一个事件的结束。















- 最新
- 最热
只看作者