找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
1、西门子提供了一个专门用于DP诊断的功能块,FB125、FC125,你可以当下来加到你的程序中。
如何编写用于 SIMATIC S7 的 PROFIBUS DP 诊断块 FB125、FC125 :
http://www2.ad.siemens.com.cn/download/Html/download.aspx?DownloadID=1118&TreeID=4&URL=%2FDownload%2FUpload%2FAS%2FSoftware%2F387257%2Ezip
2、如果你非要用OB86诊断也可以,亲参考下面的文档和实例。
使用OB8x诊断SIMATIC PLC:
http://www2.ad.siemens.com.cn/download/Upload/AS/application/A0059.zip
《如何编写用于 SIMATIC S7 的 PROFIBUS DP 诊断块 FB125、FC125? 》
http://www2.ad.siemens.com.cn/Download/Upload/AS/Software/387257.zip
只要在分布式I/O (PROFIBUS DP或PROFINET IO)中检测到中央扩展机架(不带S7-300)、DP主站系统或站故障(进入事件与离开事件时),CPU的操作系统调用OB86。
如果OB86尚未编程,当检测到此种类型的错误时,CPU将转为STOP模式。
可使用SFC 39至42禁用或延迟,并重新启用OB86。
机架故障OB的本地数据
下表说明了机架故障OB的临时(TEMP)变量。变量名为OB86的默认名称。
变量 类型 描述
OB86_EV_CLASS BYTE 事件等级和标识符:?B#16#38:离开事件?B#16#39:进入事件
OB86_FLT_ID BYTE 错误代码:(可能值:B#16#C1、B#16#C2、B#16#C3、B#16#C4、B#16#C5、B#16#C6、B#16#C7、B#16#C8、B#16#CA、B#16#CB、B#16#CC、B#16#CD、B#16#CE)
OB86_PRIORITY BYTE 优先级,可通过STEP 7分配(硬件组态)
OB86_OB_NUMBR BYTE OB编号(86)
OB86_RESERVED_1 BYTE 保留
OB86_RESERVED_2 BYTE 保留
OB86_MDL_ADDR WORD 取决于错误代码
OB86_RACKS_FLTD 数组[0 ..31]BOOL型 取决于错误代码
OB86_DATE_TIME DATE_AND_TIME 调用OB时的DATE_AND_TIME
如果要对依赖于可能错误代码的OB86进行编程,建议按如下方式组织局部变量:
变量 类型
OB86_EV_CLASS BYTE
OB86_FLT_ID BYTE
OB86_PRIORITY BYTE
OB86_OB_NUMBR BYTE
OB86_RESERVED_1 BYTE
OB86_RESERVED_2 BYTE
OB86_MDL_ADDR WORD
OB86_Z23 DWORD
OB86_DATE_TIME DATE_AND_TIME
下表给出了启动OB86的事件:
OB86_EV_CLASS OB86_FLT_ID 含义
B#16#39 B#16#C1 扩展机架故障?OB86_MDL_ADDR:IM的逻辑基址?OB86_Z23:针对于每个可能的扩展机架包含一个位:导致调用OB86的每个扩展机架均报告为已出现故障(置位各个位)。不再显示之前出现故障的扩展机架。- 位0:始终为0- 位1:扩展机架1- :- 位21:扩展机架21- 位22至29:始终为0- 位30:在SIMATIC S5区域中至少有一个扩展机架
出现了故障- 位31:始终为0
B#16#38 B#16#C1 扩展机架再次可运行OB86_MDL_ADDR(对于OB86_FLT_ID=B#16#C1)。再次可运行的扩展机架在OB86_Z23中进行报告(置位各个位)。
B#16#38 B#16#C2 扩展机架再次可运行(扩展机架因预期组态与实际组态不符而出现故障)?OB86_MDL_ADDR:IM的逻辑基址?OB86_Z23:针对每个可能扩展机架包含一个位,请参见OB86_FLT_ID B#16#C1。
已置位的含义:在受影响机架中:- 存在具有错误类型ID的模块- 已组态的模块丢失- 至少有一个模块故障。
B#16#39 B#16#C3 分布式I/O设备:DP主站系统故障
只有进入事件会导致启动错误代码为B#16#C3的OB 86。离开事件可启动错误代码为B#16#C4,且事件等级为B#16#38的OB 86:
每个DP从站的返回会启动OB86?OB86_MDL_ADDR:DP主站的逻辑基址 ?OB86_Z23:DP主站ID:- 位0至7:保留- 位8到15:DP主站系统ID- 位16至31:保留
B#16#39/B#16#38 B#16#C4 DP站故障?OB86_MDL_ADDR:DP主站的逻辑基址 ?OB86_Z23:受影响DP从站的地址: - 位0至7:DP站编号- 位8到15:DP主站系统ID- 位16至30:S7从站的逻辑基址或者 标准DP从站的诊断地址- 位31:I/O标识符
B#16#39/B#16#38 B#16#C5 返回站,但站发生故障OB86_MDL_ADDR和OB86_Z23(对于FLT_ID=B#16#C4)
B#16#38 B#16#C6 扩展机架可再次运行,但模块参数仍存在错误。?OB86_MDL_ADDR:IM的逻辑基址?OB86_Z23:包含针对于每个可能的扩展机架的一个位:- 位0:始终为0- 位1:扩展机架1- :- 位21:扩展机架21- 位22至30:保留- 位31:始终为0?置位时的含义(在所涉及的扩展机架中):- 存在具有错误类型标识符的模块- 存在缺少参数或具有错误参数的模块。
B#16#38 B#16#C7 返回DP站,但模块参数分配存在错误?OB86_MDL_ADDR:DP主站的逻辑基址 ?受影响DP从站的地址:- 位0至7:DP站编号- 位8到15:DP主站系统ID- 位16至30:DP从站的逻辑基址- 位31:I/O标识符
B#16#38 B#16#C8 返回DP站,但所配置的组态和实际组态不符?OB86_MDL_ADDR:DP主站的逻辑基址 ?OB86_Z23:受影响DP从站的地址: - 位0至7:DP站编号- 位8到15:DP主站系统ID- 位16至30:DP从站的逻辑基址- 位31:I/O标识符
B#16#39 B#16#CA PROFINET IO系统故障?OB86_MDL_ADDR:IO控制器的逻辑基址?OB86_Z23:- 位0至10:0 (站号)- 位11至14:IO系统ID- 位15: 1- 位16至31: 0
B#16#39/38 B#16#CB PROFINET IO站故障/站返回?OB86_RESERVED_1: - B#16#C4:其它站无故障- B#16#CF:其它站已失败/存在故障?OB86_MDL_ADDR:IO控制器的逻辑基址?OB86_Z23:- 位0至10:站号- 位11至14:IO系统ID- 位15: 1- 位16至30:站的逻辑基址- 位31:I/O标识符
B#16#39/38 B#16#CC - PROFINET IO站出错返回- OB86_RESERVED_1:B#16#C4- OB86_MDL_ADDR:IO控制器的逻辑基址- OB86_Z23:- 位0至10:站号- 位11至14:IO系统ID- 位15: 1- 位16至30:站的逻辑基址- 位31:I/O ID
B#16#38 B#16#CD PROFINET IO站返回,预期和实际组态不同?OB86_MDL_ADDR:IO控制器的逻辑基址?OB86_Z23:- 位0至10:站号- 位11至14:IO系统ID- 位15: 1- 位16至30:站的逻辑基址- 位31:I/O ID
B#16#38 B#16#CE PROFINET IO站返回,模块组态参数存在错误?OB86_MDL_ADDR:IO控制器的逻辑基址?OB86_Z23:- 位0至10:设备编号- 位11至14:IO系统ID- 位15: 1- 位16至30:站的逻辑基址- 位31:I/O标识符
注意如果使用呢具有DPV1功能的CPU,可借助于SFB54 "RALRM"获取有关中断的其它信息,这些信息不止包含OB的起始信息。在S7兼容模式下操作DP主站时,这一点也同样适用。
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!