**等级错误组织块 (OB 85)

2021-07-26 浏览次数:303
**等级错误组织块 (OB 85)

说明

只要发生以下事件之一,CPU 操作系统就会调用 OB 85:

非装入 OB 的启动事件(OB 80、OB 81、OB 82、OB 83 和 OB 86 除外)

操作系统访问块时出错

在系统更新过程映像期间出现 I/O 访问错误(如果由于组态原因,未禁止 OB 85 的调用)。


提示

若 OB 85 还没编程,则在检测到这些事件中的一个时,CPU 才切换到 STOP 模式。



可以使用指令“DIS_IRT”禁用**等级错误 OB,使用指令“EN_IRT”再重新启用,使用指令“DIS_AIRT”和“EN_AIRT”对其进行延时。

**等级错误 OB 的本地数据

下表列出了**等级错误 OB 的临时 (TEMP) 变量。已选择 OB 85 的默认名称作为变量名称。

变量

数据类型

说明

OB85_EV_CLASS

BYTE

事件类别和标识符: B#16#35、B#16#38(**于错误代码 B#16#B3 和 B#16#B4)、
B#16#39(**于错误代码 B#16#B1、B#16#B2、B#16#B3 和 B#16#B4)

OB85_FLT_ID

BYTE

错误代码(可能值: B#16#A1、B#16#A2、B#16#A3、B#16#A4、B#16#B1、B#16#B2、B#16#B3、B#16#B4)

OB85_PRIORITY

BYTE

**等级;可通过组态设定

OB85_OB_NUMBR

BYTE

OB 编号 (85)

OB85_RESERVED_1

BYTE

预留

OB85_RESERVED_2

BYTE

预留

OB85_RESERVED_3

INT

预留

OB85_ERR_EV_CLASS

BYTE

引起错误的事件的类别

OB85_ERR_EV_NUM

BYTE

引起错误的事件的编号

OB85_OB_PRIOR

BYTE

发生错误时正在处理的 OB 的**等级(仅对某些错误代码;详细信息见下面)。

OB85_OB_NUM

BYTE

发生错误时正在处理的 OB 的数量(仅对某些错误代码;详细信息见下面)。

OB85_DATE_TIME

DATE_AND_TIME

调用 OB 时的日期和时间


如果要规划取决于可能错误代码的 OB 85,建议按如下说明组织本地变量:

变量

数据类型

OB85_EV_CLASS

BYTE

OB85_FLT_ID

BYTE

OB85_PRIORITY

BYTE

OB85_OB_NUMBR

BYTE

OB85_DKZ23

BYTE

OB85_RESERVED_2

BYTE

OB85_Z1

WORD

OB85_Z23

DWORD

OB85_DATE_TIME

DATE_AND_TIME


下表列出了造成 OB 85 启动的事件,以及错误代码变量的分配。

OB85_EV_CLASS

OB85_FLT_ID

含义

B#16#35

B#16#A1

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

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

OB85_Z23:

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

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

B#16#35

B#16#A2

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

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

B#16#35

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)。

B#16#35

B#16#A4

无法寻址 PROFINET 接口数据块

B#16#34

B#16#A4

可再次寻址 PROFINET 接口数据块

B#16#39

B#16#B1

更新输入的过程映像时出现 I/O 访问错误

OB85_DKZ23: 过程映像传送(在此期间发生 I/O 访问错误)类型的 ID

- B#16#10: 字节访问

- B#16#20: 字访问

- B#16#30: 双字访问

- B#16#56 或 B#16#57: 传送组态的一致性范围

OB85_Z1: 留供 CPU 内部使用:模块的逻辑起始地址
若 OB85_RESERVED_2 = B#16#76,则 OB85_Z1 存储有相关指令的返回值(“DPRD_DAT”、“DPWR_DAT”、“UPDAT_PI”或“UPDAT_PO”)。

OB85_Z23:

- 字节 0:OB85_DKZ23=B#16#57 时:过程映像分区编号

- 字节 1:不相关,OB85_DKZ23=B#16#10、20 或 30 时;一致性范围的长度(以字节为单位),OB85_DKZ23=B#16#57 时

- 字节 0 和字节 1,OB85_DKZ23=B#16#56 时:一致性范围的长度(以字节为单位)

- 字节 2 和 3:造成 I/O 访问错误的 I/O 地址,OB85_DKZ23=B#16#10、20 或 30 时;
一致性区域的逻辑起始地址,OB85_DKZ23=B#16#57 时

B#16#39

B#16#B2

将过程映像输出传送到输出模块时出现的 I/O 访问错误

OB85_DKZ23、OB85_Z1 和 OB85_Z23(对于 OB85_FLT_ID=B#16#B1)

如果为系统侧过程映像更新的 I/O 访问错误组态了反复 OB 85 调用,则会获得错误代码 B#16#B1 和 B#16#B2。

B#16#39/B#16#38

B#16#B3

更新过程映像输入(进入/离开)时出现 I/O 访问错误

OB85_DKZ23: 过程映像传送(在此期间发生 I/O 访问错误)类型的 ID

- B#16#10: 字节访问

- B#16#20: 字访问

- B#16#30: 双字访问

- B#16#56 或 B#16#57: 传送组态的一致性范围

OB85_Z1: 留供 CPU 内部使用:模块的逻辑起始地址
若 OB85_RESERVED_2 = B#16#76,则 OB85_Z1 存储有相关指令的返回值(“DPRD_DAT”、“DPWR_DAT”、“UPDAT_PI”或“UPDAT_PO”)。

OB85_Z23:

- 字节 0:OB85_DKZ23=B#16#57 时:过程映像分区编号

- 字节 1:不相关,OB85_DKZ23=B#16#10、20 或 30 时;一致性范围的长度(以字节为单位),OB85_DKZ23=B#16#57 时

- 字节 0 和字节 1,OB85_DKZ23=B#16#56 时:一致性范围的长度(以字节为单位)

- 字节 2 和 3:造成 I/O 访问错误的 I/O 地址,OB85_DKZ23=B#16#10、20 或 30 时;
一致性区域的逻辑起始地址,OB85_DKZ23=B#16#57 时

B#16#39/B#16#38

B#16#B4

更新输出进入/离开的过程映像时出现 I/O 访问错误

OB85_DKZ23、OB85_Z1、OB85_Z23(对于 OB85_FLT_ID=B#16#B3)

如果仅为系统侧过程映像表更新的进入和离开 I/O 访问错误组态了 OB 85 调用,则会获得错误代码 B#16#B3 和 B#16#B4。 冷启动或暖启动后,在下一次过程映像表更新期间,对不存在的输入和输出的所有访问均报告为进入 I/O 访问错误。

OB 85 编程

必须将 OB 85 添加到 CPU 的块中。 将要在 OB 85 中执行的程序写入生成的块,并将该块作为用户程序的一部分,装入 CPU。

例如,可以如下使用 OB 85:

评估 OB 85 的启动信息,确定哪个模块丢失或故障(模块启动地址信息)。

使用指令“LGC_GADR”,确定相关模块的插槽。


shtxjd.cn.b2b168.com/m/
top