长沙工控帮教育科技有限公司整理
1.26 编程出错组织块(OB121)
描述
只要发生同程序处理相关的错误所导致的事件,CPU的操作系统即调用OB121。
例如,如果用户程序调用了尚未装载到CPU中的块,将会调用OB121。
了解编程出错OB的操作
执行OB121时所处优先级与中断块的优先级相同。
如果OB121未编程,则CPU将由RUN模式改变为STOP模式。
S7提供了下列SFC,用于在执行程序期间屏蔽和取消屏蔽OB121的启动事件:
• SFC36 (MSK_FLT):屏蔽特定的出错代码
• SFC37 (DMSK_FLT):取消屏蔽由SFC36屏蔽的出错代码
• SFC38 (READ_ERR):读取出错寄存器
编程出错OB的本地数据
下表介绍了编程出错OB的临时(TEMP)变量。变量名为OB121的缺省名称。
变量 类型 描述
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的优先级 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命令的相对地址
长沙工控帮教育科技有限公司整理
取决于错误代码的变量具有如下:
出错代码: 含义
B#16#21:
OB121_FLT_REG:
BCD转换出错
所涉及寄存器的ID(W#16#0000:累加器1) B#16#22:
B#16#23:
B#16#28:
B#16#29:
OB121_RESERVED_1:
读取时区域长度出错 写入时区域长度出错
利用位地址不为0的指针对字节、字或双字进行读取访问。
利用位地址不为0的指针对字节、字或双字进行写访问。
字节地址不正确。可从OB121_RESERVED_1读取数据区和访问类型。
• 位7至4访问类型。
OB121_FLT_REG:
读取时发生范围出错 写入时发生范围出错
在低字节中包含非法区域的ID(自己的本地数据区的B#16#86) B#16#26:
B#16#27:
OB121_FLT_REG:
定时器编号出错
OB121_FLT_REG:
对写保护全局DB的写访问
出错代码: 含义 B#16#34:
B#16#35:
B#16#3A:
B#16#3C:
B#16#3D:
B#16#3E:
B#16#3F:
OB121_FLT_REG:
调用FC时FC编号出错 调用FB时FB编号出错
访问了尚未装载的DB;DB编号位于允许的范围内 访问了尚未装载的FC;FC编号位于允许的范围内 访问了尚未装载的SFC;SFC编号位于允许的范围内 访问了尚未装载的FB;FB编号位于允许的范围内 访问了尚未装载的SFB;SFB编号位于允许的范围内 编号非法
长沙工控帮教育科技有限公司整理
1.27 I/O访问出错组织块(OB122)
描述
只要在访问模块上的数据时出错,CPU的操作系统即调用OB122。例如,如果在访 问I/O模块上的数据时,CPU检测到读取错误,操作系统将调用OB122。
了解I/O访问出错OB的操作
执行OB122时所处优先级与中断OB的优先级相同。如果OB122未编程,则CPU将由 RUN模式改变为STOP模式。
S7提供了下列SFC,用于在执行程序期间屏蔽和取消屏蔽OB122的启动事件:
• SFC36 (MSK_FLT):屏蔽特定的出错代码
• SFC37 (DMSK_FLT):取消屏蔽由SFC36屏蔽的出错代码
• SFC38 (READ_ERR):读取出错寄存器
I/O访问出错OB的本地数据
下表说明了I/O访问出错OB的临时(TEMP)变量。变量名为OB122的缺省名称。
变量 类型 描述
OB122_EV_CLASS BYTE 事件等级和标识符:B#16#29 OB122_SW_FLT BYTE 出错代码:
B#16#42
- 对于S7-300和CPU
417:I/O访问错误,读取对于所有其它S7-400 CPU
:
发生错误后在第一次读取访问过程中出错 B#16#43
- 对于S7-300和CPU 417:I/O访问错误,
写对于所有其它S7-400 CPU:发生错误后在第一次 写访问过程中出错
OB122_PRIORITY BYTE 优先级:
• 出错OB的优先级
长沙工控帮教育科技有限公司整理
变量 类型 描述
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时的DATE_AND_TIME