公司动态
当前位置:首页 > 公司动态 > I/O 访问错误组织块 (OB 122)
I/O 访问错误组织块 (OB 122)

说明

只要在访问模块中的数据时出错,CPU 操作系统就会调用 OB 122。 例如,如果在访问信号模块中的数据时,CPU 检测到读错误,则操作系统将调用 OB 122。

I/O 访问错误 OB 的功能

OB 122 的执行**等级与中断块相同。 如果未对 OB 122 编程,则 CPU 从 RUN 切换为 STOP 模式。

S7 提供有以下指令,用于在程序执行过程中屏蔽/中断屏蔽 OB 122 的启动事件。

指令“MSK_FLT”可屏蔽特定的错误代码。

指令“DMSK_FLT”可取消屏蔽使用指令“MSK_FLT”屏蔽的错误代码。

指令“READ_ERR”可读取事件状态寄存器。

I/O 访问错误 OB 的本地数据

下表列出了 I/O 访问错误 OB 的临时 (TEMP) 变量。已选择 OB 122 的默认名称作为变量名称。

变量

数据类型

说明

OB122_EV_CLASS

BYTE

事件类别和标识符: B#16#29

OB122_SW_FLT

BYTE

错误代码:

B#16#42: 读取时发生 I/O 访问错误。

B#16#43: 写入时发生 I/O 访问错误。

OB122_PRIORITY

BYTE

出错 OB 的**等级

对于 S7-1500 CPU: **级,默认值: 7

OB122_OB_NUMBR

BYTE

OB 编号 (122)

OB122_BLK_TYPE

BYTE

出错块的类型(B#16#88: OB,B#16#8C: FC,B#16#8E: FB)(未在此处为 S7-300 输入有效编号)

OB122_MEM_AREA

BYTE

存储区和访问类型:

位 7 到 4: 访问类型

- 0: 位访问

- 1: 字节访问

- 2: 字访问

- 3: 双字访问

位 3 到 0: 存储区

- 0: I/O 区域

- 1: 过程映像输入

- 2: 过程映像输出

OB122_MEM_ADDR

WORD

出错的存储器地址

OB122_BLK_NUM

WORD

具有导致错误的 MC7 命令的块编号(未在此处为 S7-300 输入有效的编号)

OB122_PRG_ADDR

WORD

导致错误的 MC7 命令的相对地址(未在此处为 S7-300 输入有效值)

OB122_DATE_TIME

DATE_AND_TIME

调用 OB 时的日期和时间

OB 122 示例程序

下面的示例程序提供了指令“REPL_VAL”中的一个替换值。 若输入模块故障,则指令 L PEB0 的处理会生成一个同步错误,并启动 OB 122。由于故障,装入命令读入值 0。 但是,可以使用指令“REPL_VAL”,*适用的任何替换值。 该指令可以使用*的替换值替换 ACCU 内容。

STL
说明
L B#16#42
//“读取时发生 I/O 访问错误”事件的标识符
L #OB122_SW_FLT
//OB 122 中的错误代码
==I
//若相同,
SPB Qfeh
//然后跳转到 Qfeh
L B#16#43
//“写入时发生 I/O 访问错误”事件的标识符
<>I
//若与 OB 122 中的错误代码不同,
SPB STOP
//然后跳转到 STOP
Qfeh:
 
CALL "REPL_VAL"
//调用“REPL_VAL”指令
VAL:= DW#16#2912
//装入 ACCU 1 的替换值
RET_VAL:= #error
//将返回值保存到 #error 中
L #error
//“REPL_VAL”指令的返回值
L 0
 
==I
//若等于 0(没有错误发生),
BEC
//则结束块的执行
STOP:
 
CALL "STP"
//调用“STP”指令: CPU 切换为 STOP 模式。


shtxjd.cn.b2b168.com/m/