解析一个由OB85编程引起CPU停机

描述

CP

CP

今天出现一个PLC停机: 由 OB85 引起的停机.

OB85里的程序编辑:

L     B#16#A1                     //尚未加载的OB发生错误事件

L     #OB85_FLT_ID

==I   

SPB   K_OB

L     B#16#A2                     // 尚未加载的OB发生错误事件

==I   

SPB   K_OB

L     B#16#A3                     // 访问未加载的块时出错

L     #OB85_FLT_ID

==I   

SPB   K_B

SPA   F_PA

K_OB: SPA   STOP

SPA   ENDE

K_B:  SPA   STOP

SPA   ENDE

STOP: CALL  "STP"   调用FC46

OB85 :

B#16#A1

程序或操作系统(基于组态)为未装载到 CPU 上的 OB 创建一个启动事件。

● OB85_Z1:请求的 OB 的相应临时变量。这由 OB85_Z23 确定。

● OB85_Z23:

– 高位字:导致 OB 调用的事件的类别和编号

– 低位字,高位字节:在出错时处于激活状态的程序级别

B#16#A2

程序或操作系统(基于组态)为未装载到 CPU 上的 OB 创建一个启动事件。

OB85_Z1 和 OB85_Z23(对于 OB85_FLT_ID=B#16#A1)

B#16#A3

操作系统访问块时出错

● OB85_Z1:操作系统的错误 ID

– 高位字节:1=集成的功能,2=IEC 定时器

– 低位字节:0=无错误分辨率,1=未装载块,2=区域长度错误,3=写保护错误

● OB85_Z23:

– 高位字:块编号

– 低位字:导致错误的 MC7 命令的相对地址。块类型必须取自 OB 85_DKZ23(B#16#88: OB,B#16#8C:FC,B#16#8E:FB,B#16#8A:DB)。

-------OB40-->

硬件中断组织块(OB40至OB47)

S7提供了多达八个的独立硬件中断,每一中断都具有自己的OB。

通过STEP 7分配参数,可以为将要触发硬件中断的每个信号模块指定以下内容:

在何种条件下触发硬件中断的通道。

?要分配给个别通道组的硬件中断OB(默认情况下,将由OB40来处理所有的硬件中断)。

借助于CP和FM,可使用其各带软件来分配这些参数。

可使用STEP 7选择各个硬件中断OB的优先级。

了解硬件中断OB的操作

在模块触发硬件中断后,操作系统将标识插槽以及相应的硬件中断OB。如果此OB的优先级高于当前激活的优先级,则将启动该OB。当执行完此硬件中断OB后,将发送通道指定的确认。

如果在对硬件中断进行标识和确认的这段时间内,在同一模块中发生了触发硬件中断的另一事件,则应用以下规则:

如果该事件发生在先前触发硬件中断的通道中,则新中断丢失。在下图中,将根据数字输入模块的通道实例对此进行说明。触发事件是上升沿。硬件中断OB是OB40。

编辑:jq

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分