图标颜色 | 含义 | 是否影响运行 |
绿色正常 | 无故障,只是状态记录(如切换RUN模式) | 不影响 |
黄色维护 | 需要维护(如强制变量激活) | 不影响运行 |
红色错误 | 严重故障(如模块丢失、硬件故障) | 可能导致停机 |
同时注意事件状态:
到达事件(Incoming) :故障发生了
离去事件(Outgoing) :故障消失了(如掉线的模块又连上了)
第三步:看事件详细信息,直接拿解决方案
点开任意一条故障事件,就能看到完整详情,这是诊断缓冲区最实用的功能:
精准定位:事件ID、模块名称、机架号、插槽号,具体到哪个模块、哪个通道出了问题
故障说明:直白告诉你错误原因
原因和解决办法:直接给排查方向
上图展示了诊断缓冲区的事件详情面板——选中某条事件后,下方详情区会显示事件ID、模块信息、故障描述和帮助说明。图中标注了从事件列表到详情面板的关联路径,新手哪怕不懂原理,照着给的解决办法一步步排查,也能快速解决问题。
1. 另存诊断缓冲区,留档备查
现场故障排查完,一定要把诊断缓冲区存下来,方便后续复盘、给厂家技术支持看。操作很简单:
打开故障事件的详细信息
点击右下角 「另存为」
选择保存路径,导出为TXT记事本文件
导出的文件支持中文/英文,和博途界面语言一致
2. 自定义显示事件,过滤无效信息
诊断缓冲区默认记录所有事件,有时候信息太多找不到重点,可以自己设置显示内容:
点击诊断缓冲区的 「设置」
勾选你想显示的事件类型(如只看"IO系统设备故障""模块故障消息")
也可以勾选 「以十六进制格式输出事件信息」 ,方便给技术支持排查复杂故障
上图展示了诊断缓冲区的设置面板——12个事件类型复选框全部可选,可以根据排查需要自由勾选/取消,只显示关注的事件类别,过滤掉无关信息。
诊断缓冲区能帮你事后排查,但有些场景需要PLC自动响应故障——这就是诊断中断组织块OB82的作用。
如果具有诊断功能的模块(已为其启用了诊断中断)检测到诊断状态更改,就会触发OB82中断执行。
OB82包含的启动信息可帮确定:哪个设备的哪个通道发生了错误当前事件是错误发生还是错误恢复可以在OB82中编写指令,读取这些启动值并采取相应措施——比如自动停机保护、切换备用通道、发送报警通知等。
关键提醒:如果未添加OB82,CPU将忽略诊断错误事件可以在程序中只使用一个诊断中断OB块创建新项目时不会自动添加OB82,需要手动添加
OB82的启动信息包含:参数 | 含义 |
IO_State | 硬件状态(故障发生/恢复) |
LADDR | 触发中断的硬件对象标识符 |
Channel | 通道编号 |
MultiError | 是否有多个错误同时发生 |
硬件标识符(HW ID)用于标识模块或功能单元。在设备视图中选中模块→属性→"系统常量"可以查看模块的硬件标识符。
程序读取诊断信息:GET_ERROR与RDSYSINFO
除了通过博途在线查看,还可以通过编程方式在用户程序中读取诊断信息:GET_ERROR / GET_ERROR_ID
如果在代码块中添加了GET_ERROR或GET_ERROR_ID指令,便可在程序块中处理程序错误,实时获取当前块的执行错误信息。
RDSYSINFO指令
RDSYSINFO是系统函数块,可通过编程方式读取诊断缓冲区数据:
ITEM参数值 | 描述 |
| 诊断缓冲区最新一条有效条目 |
| 倒数第二条诊断条目 |
| CPU运行模式变化记录 |
| 模块状态信息 |
️ 实战注意事项:调用频率不能太高,建议周期性扫描(如每5秒一次),频繁调用可能导致响应失败需在设备配置中勾选 "允许从用户程序访问诊断数据"未等待BUSY信号变为FALSE即进行下一次请求会导致数据无效接收变量应使用正确的结构体类型
对比维度 | 状态LED指示灯 | 诊断缓冲区 |
信息量 | 粗略(红/绿/闪烁) | 详细(事件ID、时间、描述、解决方案) |
实时性 | 即时 | 需在线连接后查看 |
历史追溯 | 无(只能看当前状态) | 有(最近50条事件) |
适用场景 | 巡检、快速判断 | 故障排查、复盘分析 |
依赖软件 | 不需要 | 需要博途在线连接 |
正确姿势: 先用LED快速判断"有没有问题",再用诊断缓冲区精确定位"什么问题、在哪、怎么解决"。
案例1:CPU突然停机现象: 设备运行中突然STOP,ERROR红灯亮。排查: 打开诊断缓冲区→看第一条事件→显示"未装载DB10,在OB30中对其访问"。原因: 程序访问了不存在的DB块,触发编程错误导致停机。解决: 在项目中创建DB10或修改程序中的DB引用。
案例2:PROFINET站点反复掉线现象: 设备间歇性通讯中断,DIAG灯红色闪烁。排查: 诊断缓冲区显示大量"PROFINET IO:站故障"和"PROFINET IO:站返回"交替记录,事件间隔仅几秒钟。原因: 从站硬件接线松动或网络干扰,导致通讯不稳定。解决: 检查PROFINET网线连接、交换机端口、从站供电,排除物理层问题。
案例3:数组越界导致停机现象: 系统运行一段时间后突然停机,重启后恢复正常,但几小时后又复现。排查: 诊断缓冲区显示"编程错误:访问地址超出允许范围(DB3,地址偏移65540)"。原因: 用于存储传感器历史数据的数组越界——DB块最大尺寸65536字节,程序试图写入第65540个字节,触发硬件级保护。解决: 扩大DB块容量或修改程序中的数组索引逻辑。
记住这个排障口诀:停机先看灯,红灯进在线→打开诊断区,顶部第一条→点开看详情,原因和对策→排查按步骤,解决存记录。
完整流程:PLC停机报错 → 观察LED状态 → 博途转在线 → 进入诊断缓冲区 → 看顶部最新事件 → 点开详情看解决办法 → 按步骤排查 → 另存缓冲区留档
不用瞎猜、不用乱试,一分钟定位故障原因。
总结:诊断缓冲区是S7-1200排障的核心神器,但很多新手直到设备停了几次才学会用它。把它当成你的第一排障工具,而不是最后手段——会发现90%的"疑难杂症"其实都有明确的答案,只是没去读。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!