说明
只要发生与程序处理有关的错误所导致的事件,CPU 操作系统就会调用 OB 121。 例如,如果用户程序调用了尚未装载到 CPU 中的块,则会调用 OB 121。
编程错误 OB 的功能
OB 121 的执行**等级与中断块相同。
如果未对 OB 121 编程,则 CPU 从 RUN 切换为 STOP 模式。
S7 提供有以下指令,用于在程序执行过程中屏蔽/取消屏蔽 OB 121 的启动事件。
指令“MSK_FLT”可屏蔽特定的错误代码。
指令“DMSK_FLT”可取消屏蔽使用指令“MSK_FLT”屏蔽的错误代码。
指令“READ_ERR”可读取事件状态寄存器。
编程错误 OB 的本地数据
下表列出了编程错误 OB 的临时 (TEMP) 变量。已选择 OB 121 的默认名称作为变量名称。
变量 | 数据类型 | 说明 |
---|---|---|
OB121_EV_CLASS | BYTE | 事件类别和标识符: B#16#25 |
OB121_SW_FLT | BYTE | 错误代码(可能值: B#16#21、B#16#22、B#16#23、B#16#24、B#16#25、B#16#26、B#16#27、B#16#28、B#16#29、B#16#30、B#16#31、B#16#32、B#16#33、B#16#34、B#16#35、B#16#3A、B#16#3C、B#16#3D、B#16#3E、B#16#3F) |
OB121_PRIORITY | BYTE | 出错 OB 的**等级 对于 S7-1500 CPU: **级,默认值: 7 |
OB121_OB_NUMBR | BYTE | OB 编号 (121) |
OB121_BLK_TYPE | BYTE | 出错块的类型(对于 S7-300,未在此处输入有效值): B#16#88: OB,B#16#8A: DB,B#16#8C: FC,B#16#8E: FB |
OB121_RESERVED_1 | BYTE | 预留 |
OB121_FLT_REG | WORD | 错误源(取决于错误代码);例如: 出现转换错误的寄存器 不正确的地址(读/写错误) 不正确的定时器/计数器/块编号 不正确的存储区 |
OB121_BLK_NUM | WORD | 具有导致错误的 MC7 命令的块编号(未在此处为 S7-300 输入有效的编号) |
OB121_PRG_ADDR | WORD | 导致错误的 MC7 指令的相对地址 FB)(未在此处为 S7-300 输入有效编号) |
OB121_DATE_TIME | DATE_AND_TIME | 调用 OB 时的日期和时间 |
与错误代码相关的变量具有以下含义:
错误代码 | 变量 | 含义 |
---|---|---|
B#16#21 |
| BCD 码转换错误 |
| OB121_FLT_REG | 受影响变量的标识符(W#16#0000: 电池 1) |
B#16#22 |
| 读取时出现区域长度错误 |
| OB121_RESERVED_1 | 位 7 至 4 访问类型: - 0: 位访问, - 1: 字节访问, - 2: 字访问, - 3: 双字访问 位 3 至 0 存储区: - 0: I/O 区域 - 1: 过程映像输入 - 2: 过程映像输出 - 3: 位存储区 - 4: 全局 DB - 5: 背景数据块 - 6: 自己的本地数据 - 7: 调用方的本地数据 |
B#16#23 |
| 写入时出现区域长度错误 |
| OB121_RESERVED_1 | 与错误代码 B#16#22 相同 |
B#16#28 |
| 利用位地址不为 0 的指针对字节、字或双字进行读访问。 |
| OB121_RESERVED_1 | 与错误代码 B#16#22 相同 |
B#16#29 |
| 利用位地址不为 0 的指针对字节、字或双字进行写访问。 故障字节地址。 有关数据区和访问类型的信息,请参见 OB121_RESERVED_1。 |
| OB121_RESERVED_1 | 与错误代码 B#16#22 相同 |
B#16#24 |
| 读取时区域出错 |
| OB121_FLT_REG | 低位字节包含未授权区域(B#16#86 自己的本地数据区)的标识符 |
B#16#25 |
| 写入时区域出错 |
| OB121_FLT_REG | 低位字节包含未授权区域(B#16#86 自己的本地数据区)的标识符 |
B#16#26 |
| 定时器编号错误 |
| OB121_FLT_REG | 未授权的编号 |
B#16#27 |
| 计数器编号错误 |
| OB121_FLT_REG | 未授权的编号 |
B#16#30 |
| 对写保护全局 DB 的写访问 |
| OB121_FLT_REG | 未授权的 DB 编号 |
B#16#31 |
| 对写保护背景 DB 的写访问 |
| OB121_FLT_REG | 未授权的 DB 编号 |
B#16#32 |
| 访问全局 DB 时 DB 编号出错 |
| OB121_FLT_REG | 未授权的 DB 编号 |
B#16#33 |
| 访问背景 DB 时 DB 编号出错 |
| OB121_FLT_REG | 未授权的 DB 编号 |
B#16#34 |
| 调用 FC 时编号出错 |
| OB121_FLT_REG | FC 编号 |
B#16#35 |
| 调用 FC 时 FB 编号出错 |
| OB121_FLT_REG | FB 编号 |
B#16#3A |
| 访问了尚未装载的 DB;DB 编号位于允许的范围内 |
| OB121_FLT_REG | DB 编号 |
B#16#3C |
| 访问了尚未装载的 FC;FC 编号位于允许的范围内 |
| OB121_FLT_REG | FC 编号 |
B#16#3D |
| 访问了不可用的指令;SFC 编号位于允许的范围内。 |
| OB121_FLT_REG | SFC 编号 |
B#16#3E |
| 访问了尚未装载的 FB;FB 编号位于允许的范围内 |
| OB121_FLT_REG | FB 编号 |
B#16#3F |
| 访问了不可用的 SFB;SFB 编号位于允许的范围内 |
| OB121_FLT_REG | SFB 编号 |
OB 121 编程
必须在 CPU 的块中添加 OB 121。 将要在 OB 121 中执行的程序写入到生成的块中,并作为用户程序的一部分,将该块加载到 CPU。
例如,可如下使用 OB 121:
对 OB 121 中的开始信息进行评估。
在报警数据块中输入错误原因。
shtxjd.cn.b2b168.com/m/