找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
PLC中编写诊断程序,调用ModuleStates 读取模块的模块状态信息 ,参数使用 MODE 参数可读取状态信息,状态信息如下:
1: 模块已组态
2: 模块故障
3: 模块禁用
4: 模块存在
5: 模块中存在故障
上位机根据Mode值即可准确显示模块状态。
在上位机里读取OB82里组态存贮的诊断信息即可
参照 TIA帮助文档,搜索 OB82即可
另外例程可以去官网下载 S7-1200 easy plus文档, 搜索OB82
----------------------------
诊断中断 OB (OB 82) S7-300, S7-400
词汇表
错误消息 (S7-1200, S7-1500)
模拟量输入模块的参数
错误消息 (S7-1200, S7-1500)
DeviceStates: 读取 IO 系统的模块状态信息 (S7-1200, S7-1500)
诊断中断 OB (S7-1500)
说明
如果具有诊断功能的模块(已为其启用了诊断中断)检测到诊断状态更改,则它会向 CPU 发送一个诊断中断请求:
存在问题或一个组件需要维护或两者都包括(到达事件)。
没有问题或没有更多组件需要维护(离去事件)。
操作系统然后调用 OB 82。
OB 82 的本地变量包含逻辑起始地址和四字节的故障模块诊断数据(请参见下表)。
如果未对 OB 82 编程,则 CPU 切换为 STOP 模式。
可使用指令 "DIS_IRT" 禁止调用诊断中断 OB,使用指令 "EN_IRT" 重新调用,并使用指令 "DIS_AIRT" 和 "EN_AIRT" 对其进行延时。
说明
对于 PROFINET IO 控制器,可在组态期间指定通信中断是否触发调用诊断中断 OB。这些中断包括 PROFINET 接口的诊断事件。
默认设置: 这些事件并不触发 OB 82 调用。
诊断中断 OB 的本地数据
下表列出了诊断中断 OB 的临时 (TEMP) 变量。已选择 OB 82 的默认名称作为变量名称。
变量
数据类型
说明
OB82_EV_CLASS
BYTE
事件类别和标识符:
B#16#38: 离去事件: 模块无故障(所有故障都已更正)
B#16#39: 到达事件: 模块有故障或保持故障状态(随模块未决故障的数量而变化)
OB82_FLT_ID
BYTE
错误代码 (B#16#42)
OB82_PRIORITY
BYTE
优先等级;可通过组态设定
对于 S7-1500 CPU: 优先级,默认值: 5
OB82_OB_NUMBR
BYTE
OB 编号 (82)
OB82_RESERVED_1
BYTE
预留
OB82_IO_FLAG
BYTE
对于 S7-300/S7-400:
输入模块: B#16#54
输出模块: B#16#55
对于 S7-1500: 零
OB82_MDL_ADDR
WORD
对于 S7-300/S7-400: 发生故障的模块的逻辑起始地址
对于 S7-1500: 触发诊断中断的硬件对象的硬件标识
OB82_MDL_DEFECT
BOOL
模块发生故障
OB82_INT_FAULT
BOOL
内部故障
OB82_EXT_FAULT
BOOL
外部故障
OB82_PNT_INFO
BOOL
通道故障
OB82_EXT_VOLTAGE
BOOL
丢失外部辅助电压
OB82_FLD_CONNCTR
BOOL
未插入前面板连接器
OB82_NO_CONFIG
BOOL
未分配模块参数
OB82_CONFIG_ERR
BOOL
模块中的参数不正确
OB82_MDL_TYPE
BYTE
位 0 到 3: 模块类别
位 4: 存在通道信息
位 5: 存在用户信息
位 6: 来自替换模块的诊断中断
位 7: 需要维护
OB82_SUB_MDL_ERR
BOOL
应用模块丢失或存在错误
OB82_COMM_FAULT
BOOL
通讯问题
OB82_MDL_STOP
BOOL
操作模式
(0: RUN,1?: STOP)
OB82_WTCH_DOG_FLT
BOOL
看门狗定时器响应
OB82_INT_PS_FLT
BOOL
内部电源故障
OB82_PRIM_BATT_FLT
BOOL
电池耗尽
OB82_BCKUP_BATT_FLT
BOOL
整体备份失败
OB82_RESERVED_2
BOOL
要求维护
OB82_RACK_FLT
BOOL
扩展机架故障
OB82_PROC_FLT
BOOL
处理器故障
OB82_EPROM_FLT
BOOL
EPROM 故障
OB82_RAM_FLT
BOOL
RAM 故障
OB82_ADU_FLT
BOOL
ADC/DAC 错误
OB82_FUSE_FLT
BOOL
保险丝脱落
OB82_HW_INTR_FLT
BOOL
硬件中断丢失
OB82_RESERVED_3
BOOL
预留
OB82_DATE_TIME
DATE_AND_TIME
调用 OB 时的日期和时间
说明
如果正在使用具有 DPV1 功能的 CPU,可使用指令 "RALRM" 获取有关中断的其它信息,这些信息不止包含 OB 的启动信息。如果在 S7 兼容模式下运行 DP 主站,这一点也同样适用。
OB 82 编程
必须在 CPU 的块中添加 OB 82。 将要在 OB 82 中执行的程序写入到生成的块中,并将块加载到 CPU,作为用户程序的一部分。
例如,可使用 OB 82,步骤如下:
对 OB 82 中的开始信息进行评估。
对发生的故障执行详细诊断。
如果触发诊断中断,则故障模块将自动输入 4 字节诊断数据,以及其在诊断中断 OB 起始信息中和诊断缓冲区中的起始地址。 这提供了故障发生时间及发生模块的相关信息。
使用 OB 82 中的适当程序,可评估故障模块的附加诊断信息(哪个通道发生错误、发生的是哪条错误)。 可使用指令 "RDSYSST" 读取模块诊断数据,使用指令 "WR_USRMSG" 在诊断缓冲区中输入该信息。 还可向已登录监视设备发送用户自定义诊断报警。
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!