• {{item.name}}
SIMATIC S7-1200系列 {{item.name}}
{{item2.name}}
更多
常问问题

在STEP 7 Basic V10.5中如何使用本地错误处理查询出现的错误?

star star star star star
5.0 分
  • 软件编程
文档编号:43713352| 文档类型:常问问题| 发布时间:2023年12月21日
  • 0
  • 77
  • 4941
内容预览: 描述: 使用扩展指令 "GetError" 和 "GetErrorID" 可以查询块中出现的错误并评估相关错误数据。这样可以避免 CPU 进入停机模式并继续程序的运行。 ......

说明
使用扩展指令 "GetError" 和 "GetErrorID" 可以查询块中出现的错误并评估相关错误数据。这样可以避免 CPU 进入停机模式并继续程序的运行。

  • "GetErrorID" 指令的输出参数 "ID"是Word数据类型,它包含第一条出现错误的ID.
  • "GetError" 指令的输出参数"ERROR"是 "ErrorStruct" 系统数据类型,它包含更多关于出现的错误的信息。
  • 当第一条错误被清除后,上面两条指令给出下一条错误的ID和错误数据。
  • 可以在OB、FB、FC块中使用本地错误处理。
  • 为了评估错误,必须将上述指令插入到可能出现错误的块里面。(例如 I/O 访问错误)
  • 也可以使用上述指令将关于错误状态的信息传给调用它的块。要实现该功能,需要将上述指令放在调用块的最后一句调用。

下面是几个上述的本地错误处理的例子。更多关于上述指令及其输出参数的信息可以在 STEP 7 Basic 在线帮助的以下主题中找到:

  • 本地错误处理的机制
  • GetError
  • GetErrorID
  • 使能块的本地错误处理例子 1: I/O访问错误
    当模块不存在或模块有缺陷时直接访问 I/O,CPU 会进入停机模式。在程序代码中加入"GetError" 指令,在 I/O 访问错误时可以避免缺省的系统反应(进入停机模式)。当读错误时,程序使用替代值 0 继续处理。
  1. 错误数据传输至DB15 ("Diagnostic")的结构体变量 "Error" 中。转换器读取结构体变量中的 "Diagnostic.Error.AREA" ,并将其从 Byte 类型转换为 UInt 类型。
  2. 第一个操作 "Same" 查询存储区 "AREA" 与 I/O 区是否一致。I/O 区具有识别符 "P" 和16进制代码 "16#80" (对应于无符号整数128)
  3. 第二个操作 "Same" 检查 I/O 模块的起始地址。结构体里的 "OFFSET" 包含相应地址的操作数。所以此处对于输入地址2,应与其相应的值16比较(OFFSET=2x8=16).
  4. 如果两个 "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: 3FB"块的代码.
CODE_BLOCK_NUMBER: 11出现错误的程充块的块号 11.
AREA: 16#84DB的存储区.
DB_NUMBER: 22DB22 不存在

FB11中打开了并不存在于CPU中的 DB22.


图. 02

例子 3: 数据块的操作数超出有效区
图. 03 演示了对一个读错误的处理。与前两个例子一样,指令 "GetError" 将错误信息传到了 DB15  ("Diagnostic") 的结构体变量 "Error" 中。

  1. 结构体内的 "DB_NUMBER" 包含出错DB块的块号 (例如对于DB20,则该值为20) ,将该值用"MOVE" 指令传送给 MW30.
  2. 结构体内的 "OFFSET" 包含相关的操作数的地址 (例如DB块中的第 40位). 为得到 Byte 地址,使用"DIV"指令,把该值 除以8(8 bits),结果 (DB中的Byte地址) 存储在MD32中。
  3. 本例中,使用"Greater"指令查询DB访问地址是否超过了 2 字节,使用 "Same" 指令查询DB的存储区 (DB: 16#84)是否是相关的。在这之前,结构体中的 "AREA" 必须先从Byte类型转换为 Int 类型。
  4. 如果"Greater" 和 "Same"两个条件都满足,标志位 M10.1 ("Activity") 置1.


图. 03

说明
只要将指令 "GetError" 和 "GetErrorID" 中的一个插入到网络并编译下载至CPU中,块的本地错误处理就使能,系统响应(例如停机模式)被忽略。这两个指令可以在文件夹"Program Control Instructions" 的 "Extended instructions" 中找到。

实验环境
本 FAQ 中提到的图片由 STEP 7 Basic 版本 V10.5+SP2 生成。


您可以前往全球资源库查看此文档:

https://support.industry.siemens.com/cs/cn/zh/view/43713352


剩余80%未阅读,请登录后下载/查看文档

  • 评论
更多
  • 分享

    扫码分享

提示
您即将前往“全球技术资源库”。
“全球技术资源库”的用户名与本地支持中心(下载中心、技术论坛、找答案、1847工业学习平台)的用户名不通用。如果需要在全球技术资源库下载文档,您需要重新登录或注册。
确定

扫码进入移动端

信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。