当发生由通信错误触发的事件时,CPU 操作系统会调用 OB 87。
如果未对 OB 87 编程并且发生 OB 87 的启动事件,则 CPU 将作出如下反应:
S7-300 CPU 切换到 STOP 模式。
S7-400 CPU 切换到 STOP 模式。
可以使用指令“DIS_IRT”禁用通信错误 OB,使用指令“EN_IRT”再重新启用,使用指令“DIS_AIRT”和“EN_AIRT”对其进行延时。
下表列出了通信错误 OB 的临时 (TEMP) 变量。已选择 OB 87 的默认名称作为变量名称。
变量 | 数据类型 | 说明 |
---|---|---|
OB87_EV_CLASS | BYTE | 事件类别和标识符: B#16#39 |
OB87_FLT_ID | BYTE | 错误代码 (可能值: B#16#D2、B#16#D3、B#16#D4、B#16#D5、B#16#E1、B#16#E2、B#16#E3、B#16#E4、B#16#E5、B#16#E6) |
OB87_PRIORITY | BYTE | **等级;可通过组态设定 |
OB87_OB_NUMBR | BYTE | OB 编号 (87) |
OB87_RESERVED_1 | BYTE | 预留 |
OB87_RESERVED_2 | BYTE | 预留 |
OB87_RESERVED_3 | WORD | 取决于错误代码 |
OB87_RESERVED_4 | DWORD | 取决于错误代码 |
OB87_DATE_TIME | DATE_AND_TIME | 调用 OB 时的日期和时间 |
与错误代码相关的变量具有以下含义:
错误代码 | 变量 | 含义 |
---|---|---|
B#16#D2 |
| 目前无法发送诊断项目。 |
B#16#D3 |
| 无法发送同步消息帧(主站)。 |
B#16#D4 |
| 通过时间同步进行的时间跳变非法 |
B#16#D5 |
| 采用同步时间时出错(从站) |
| OB87_RESERVED_3 | 未包含更多的信息 |
| OB87_RESERVED_4 | 未包含更多的信息 |
B#16#E1 |
| 全局数据通信中的消息帧标识符错误 |
B#16#E2 |
| 不能在数据块中输入 GD 包状态 |
| OB87_RESERVED_3 | DB 编号 |
| OB87_RESERVED_4 | 高位字: 未包含更多的信息 |
|
| 低位字: 全局数据环号(高位字节),全局数据包号(低位字节) |
B#16#E3 |
| 全局数据通信中的消息帧长度错误 |
B#16#E4 |
| 接收到的全局数据包号非法 |
| OB87_RESERVED_3 | 接口标识符(0: K 总线,1: MPI) |
| OB87_RESERVED_4 | 高位字节: 全局数据环编号 低位字节: 未包含更多的信息 |
B#16#E5 |
| 通过通信功能块交换数据时访问数据块出错 |
| OB87_RESERVED_1 | 块类型: B#16#88: OB,B#16#8A: DB,B#16#8C: FC,B#16#8E: FB |
| OB87_RESERVED_3 | 留供 CPU 内部使用 |
| OB87_RESERVED_4 | 高位字: 包含导致错误的 MC7 指令的块的编号 低位字: 导致错误的 MC7 指令的相对地址 |
B#16#E6 |
| 不能在数据块中输入 GD 包状态 |
| OB87_RESERVED_3 | DB 编号 |
| OB87_RESERVED_4 | 未包含更多的信息 |
必须在 CPU 的块中添加 OB 87。 将要在 OB 87 中执行的程序写入到生成的块中,并作为用户程序的一部分,将该块加载到 CPU。
例如,可如下使用 OB 87:
对 OB 87 中的开始信息进行评估。
若共享数据通信的状态信息数据块丢失,则可以创建一个数据块。
产品推荐
友情链接