background image

发生时累加器和其他寄存器中的内容,用户程序可以用它们来处理错误。

同步错误可以用

SFC36“MASK_FLT”来屏蔽,使某些同步错误不触发同步错误 OB 的调用,

但是

CPU 在错误寄存器中记录发生的被屏蔽的错误。用错误过滤器中的一位来表示某种同

步错误是否被屏蔽。错误过滤器分为程序错误过滤器和访问错误过滤器,分别占一个双字。

调用

SFC37“DMSK_FLT”并且在当前优先级被执行完后,将解除被屏蔽的错误,并且清楚

当前优先级的事件状态寄存器中相应的位。
可以用

SFC38“READ_ERR”读出已经发生的被屏蔽的错误。

对于

S7-300(CPU318 除外),不管错误是否被屏蔽,错误都会被送入诊断缓冲区,并且

CPU 的“组错误”LED 会被点亮。
可以在不同的优先级屏蔽某些同步错误。在这种情况下,在特定的优先级中发生这类错误
时不会停机,

CPU 把该错误存放到错误寄存器中。但是无法知道是什么时候发生的错误,

也无法知道错误发生的频率。

有关程序处理的故障事件发生时

CPU 操作系统调用 OB121,OB121 与被中断的块在同一

优先级中执行,表

7-14 描述了编程错误 OB121 的临时变量。 

OB121_EV_CLASS BYTE 事件级别和标识
OB121_SW_FLT BYTE 故障代码
OB121_PRIORITY BYTE 优先级=出现故障的 OB 优先级
OB121_OB_NUMBR BYTE OB 号
OB121_BLK_TYPE BYTE 出现故障块的类型(在 S7-300 时无有效值在这里记录)
OB121_RESERVED_1 BYTE 备用
OB121_FLT_REG WORD 故障源(根据代码)。如:转换故障发生的寄存器;不正确的地
址(读

/写故障);不正确的定时器/计数器/块号码;不正确的存储器区

OB121_BLK_NUM WORD 引起故障的 MC7 命令的块号码(S7-300 无效)
OB121_PRG_ADDR WORD 引起故障的 MC7 命令的块号码(S7-300 无效)
OB121_DATE_TIME DATE_AND_TIME OB 被调用时的日期和时间