**等级错误组织块 (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 调用的事件的类别和编号 - 低位字,高位字节: 在出错时处于激活状态的程序级别 |
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_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 时; |
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_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 时; |
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/