- {{item.name}}
在STEP 7 Basic V10.5中如何使用本地错误处理查询出现的错误?
- 0
- 119
- 4941
说明
使用扩展指令 "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 继续处理。
- 错误数据传输至DB15 ("Diagnostic")的结构体变量 "Error" 中。转换器读取结构体变量中的 "Diagnostic.Error.AREA" ,并将其从 Byte 类型转换为 UInt 类型。
- 第一个操作 "Same" 查询存储区 "AREA" 与 I/O 区是否一致。I/O 区具有识别符 "P" 和16进制代码 "16#80" (对应于无符号整数128)
- 第二个操作 "Same" 检查 I/O 模块的起始地址。结构体里的 "OFFSET" 包含相应地址的操作数。所以此处对于输入地址2,应与其相应的值16比较(OFFSET=2x8=16).
- 如果两个 "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 生成。
https://support.industry.siemens.com/cs/cn/zh/view/43713352
剩余80%未阅读,请登录后下载/查看文档
- 评论
-
分享
扫码分享
- 收藏 收藏
- 点赞 点赞
- 纠错 纠错
- CFC编程时如何自动生成相应的错误处理OB
- 如何使用 STEP 7 Basic V10.5 装载一个项目到 CPU?
- 在 STEP 7 Basic V10.5 中,如何计算物理流量(例如质量流量)测量值的总和?
- 安装 STEP 7 Basic V10.5 的条件是什么?
- SIMATIC S7-1200 & Step7 Basic V10.5使用介绍
- 如何处理本地数据分配错误
- SIMATIC S7-1200&STEP7 Basic V10.5常问问题
- 使用 SIMATIC WinCC V14版本软件下载程序到 Basic 系列触摸屏时,会出现错误提示?
- 如何诊断S7-200和MICROMASTER 4之间通过端口0(RS485)的通信中的错误?
- 如何在 WinCC flexible 或 WinCC (TIA Portal) 项目中插入变频器 (SINAMICS 和 MICROMASTER) 的错误信息?
{{item.nickName}}