优先级错误组织块(OB85)
--程序顺序错误(OB85)
在下列情况下,CPU操作系统调用 OB85:
• 存在中断 OB的启动事件,但由于还没有将该 OB下载到 CPU而不能执行该OB。
• 访问系统功能块的实例数据块时发生错误。
• 更新过程映像表时发生错误(模块不存在或处于故障状态)。
如果OB85尚未编程,则当检测到这些事件其中之一时,CPU会转为STOP模式。
可以使用SFC 39至42禁用或延迟,并重新启用优先级错误OB。
优先级错误OB的本地数据
下表说明了优先级错误OB的临时(TEMP)变量。变量名为OB85的默认名称。
OB85_EV_CLASS BYTE 事件等级和标识符:B#16#35B#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 ?优先级,可通过STEP 7分配(硬件配置)
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时的DATE_AND_TIME
必须使用 STEP 7在S7程序中将 OB85创建为对象。在所生成的块中编写将要在OB85中执行的程序,然后将其作为用户程序的一部分下载到 CPU中。
例如,可以将 OB85用于下列目的:
• 评估OB85的启动信息,并确定哪个模块处于故障状态或没有插入(指定模块启动地址)。
• 通过SFC49 LGCGADR,查找所涉及的模块的插槽。
如果没有编程 OB85,那么当检测到优先级错误时,CPU变成停止模式。
在相应的关于块的帮助中,可以获取 OB、SFB 和SFC 的详细资料。
编程实例:
L B#16#A1
B#16#A1 由于使用STEP 7创建了组态,您的程序或操作系统将为未装载到CPU上的OB创建一个启动事件。尚未加载的OB发生错误事件
L #OB85_FLT_ID
==I
SPB K_OB
L B#16#A2
由于使用STEP 7创建了组态,您的程序或操作系统将为未装载到CPU上的OB创建一个启动事件。尚未加载的OB发生错误事件
==I
SPB K_OB
L B#16#A3 操作系统访问模块时出错 ,访问未加载的块时出错
L #OB85_FLT_ID
==I
SPB K_B
SPA F_PA
K_OB: SPA STOP
SPA ENDE
K_B: SPA STOP
SPA ENDE
F_PA: NOP 0
SPA ENDE
STOP: CALL "STP" SFC 46 ---PLC停机使用SFC 46 "STP"使CPU进入停机状态
ENDE: NOP 0
为什么要在OB85里编辑停机功能呢?
原因:
1. OB85的故障代码:B#16#A1 产生的原因是由于使用STEP 7创建了组态,您的程序或操作系统将为未装载到CPU上的OB创建一个启动事件。尚未加载的OB发生错误事件.
OB85的内部变量出错.
2. 由于使用STEP 7创建了组态,您的程序或操作系统将为未装载到CPU上的OB创建一个启动事件。尚未加载的OB发生错误事件.
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !