工控网首页
>

应用设计

>

S7-1200和S7-1500支持哪些错误处理OB

S7-1200和S7-1500支持哪些错误处理OB

2016/1/19 15:11:06

 

  OB按优先级大小执行,如果所发生事件的优先级高于当前执行的OB ,则中断此 OB 的执行。优先级相同的事件,将按发生的时间顺序进行处理。与S7-300/400比较,S7-1200/1500的错误处理有了较大的变化,本文主要介绍S7-1200/1500所支持的错误处理组织块以及CPU对这些错误的响应。

1 S7-1200/1500的错误处理组织块

1.1 S7-1200的错误处理组织块

                                          图1-1 S7-1200不再支持同步错误中断组织块OB121,OB122 。

1.2 S7-1500的错误处理组织块

                                      图1-2   S7-1200与S7-1500支持的错误处理组织块的块号与S7-300/400保持一致,不同的是S7-1500除时间错误中断组织块OB80的优先级22不能改变外,其它的错误处理组织块的优先级都可以修改。如诊断中断OB82:

                                     图1-3 除了可以修改错误中断OB的优先级,S7-1500的事件中断(如硬件中断)的优先级也可以修改,这样用户通过修改优先级可避免重要的中断请求被其它中断请求延迟或中断。

2 CPU对会引起错误中断的响应

CPU对错误处理组织块的响应表:
错误处理OB 故障类别 ‘到达事件‘ 触发 ‘离去事件‘ 触发 OB没有装载CPU停机
S7-1200 S7-1500 S7-300/400
OB80 超出最大循环时间* 异步
时间错误** 否*** 否***
OB82 异步 否*** 否***
OB83 异步 - 否***
OB86 异步 - 否***
OB121 同步 -
OB122 同步 - 否***
表2-1 注: -: 不支持。 *: 超出最大循环时间请求OB80时而下载OB80并不会使CPU停机,但如果一个周期内超时两倍的循环监控时间 S7-1200/1500/300/400都会停机。 **: 由时间事件(如循环中断,延时中断,时间中断)触发的时间错误。 ***:CPU不会停机,但会在诊断缓冲区产生诊断记录。

3 GET_ERROR,GET_ERR_ID对PLC错误处理的影响

  GET_ERROR和GET_ERR_ID是“获取本地错误信息”指令,S7-1200/1500可通过编程用来查询程序块内出现的错误,这种程序执行中发生的错误就是所说的‘同步‘错误。

            

                                   图3-1 “获取本地错误信息”指令支持块内进行本地错误处理。将“获取本地错误信息”插入块 的程序代码中时,如果发生错误,则将忽略所有预定义的系统响应。 GET_ERROR指令可以读到详细的错误信息,GET_ERR_ID只读到其中的错误编号。 具体用法可参考软件在线帮助或参考STEP7 Professional V12的手册 因为GET_ERROR和GET_ERR_ID对PLC的同步错误处理的影响相同,下面只对GET_ERROR指令进行说明。

“获取本地错误信息”指令支持块内进行本地错误处理。将“获取本地错误信息”插入块 的程序代码中时,如果发生错误,则将忽略所有预定义的系统响应。 GET_ERROR指令可以读到详细的错误信息,GET_ERR_ID只读到其中的错误编号。 具体用法可参考软件在线帮助或参考STEP7 Professional V12的手册 因为GET_ERROR和GET_ERR_ID对PLC的同步错误处理的影响相同,下面只对GET_ERROR指令进行说明。

3.1 GET_ERROR对S7-1200同步错误处理的影响

  因为S7-1200不支持OB121,OB122,在发生‘同步‘错误时,只在CPU的诊断缓冲区产生错误记录:同时ERR LED闪烁 举例:IO访问错误 程序中访问了外设地址ID1000:P,对S7-1200来说,ID1000是默认分配给高速计数通道HSC1,但是在实际的组态中没有使能HSC1,那么就不存在这个外设。

            

                                  图3-2 S7-1200每执行一次这条指令,在诊断缓冲区产生一条错误记录,同时ERR LED闪烁,直到 ”Tag_1”复位。

S7-1200每执行一次这条指令,在诊断缓冲区产生一条错误记录,同时ERR LED闪烁,直到 ”Tag_1”复位。

         

                                      图3-3 在发生错误指令的下面执行GET_ERROR:

在发生错误指令的下面执行GET_ERROR:

             

                                    图3-4 错误仍然存在,但CPU不报错,诊断缓冲区也不会产生任何相关错误记录。

错误仍然存在,但CPU不报错,诊断缓冲区也不会产生任何相关错误记录。

3.2 GET_ERROR对S7-1500同步错误处理的影响

  与S7-1200比较,因为S7-1500支持两个同步错误处理组织块OB121,OB122,GET_ERROR对S7-1500的同步错误处理的影响还要考虑对OB121,OB122的影响。 本文的表2-1说明了S7-1500没有执行GET_ERROR的情况下CPU的响应,下面对同步错误发生时执行GET_ERROR后CPU的响应。   S7-1500在发生两种同步错误时在有无下载对应错误处理组织块(程序错误:OB121,IO访问错误:O122)的响应是不同的,但在发生这两种错误的程序块中执行GET_ERROR后,S7-1500将忽略所有预定义的对这个程序块中出现的错误的系统响应,因此会产生以下结果: n CPU ERR LED不会闪烁 n 诊断缓冲区不会产生错误记录 n 不再触发OB121和OB122,发生程序错误时即使不下载OB121 CPU也不会停机
审核编辑(
王静
)
投诉建议

提交

查看更多评论
其他资讯

查看更多

超越传统直觉,MATLAB/Simulink助力重型机械的智能化转型

新大陆自动识别精彩亮相2024华南国际工业博览会

派拓网络被Forrester评为XDR领域领导者

智能工控,存储强基 | 海康威视带来精彩主题演讲

展会|Lubeworks路博流体供料系统精彩亮相AMTS展会