Node-RED 调试
本指南为 OV80i 摄像机系统中的 Node-RED 问题提供全面的故障排除流程。可用于现场检修、调试生产问题,以及对检测流程的预防性维护。
注意
安全第一: 在修改活动检测系统前,请始终通知生产并在修改流程前创建备份。
紧急快速修复流程
关键系统宕机 - 立即行动
步骤 | 操作 | 时长 | 结果 |
---|---|---|---|
1 | 检查摄像头电源 LED 状态 | 30 秒 | 确认硬件正常 |
2 | 访问 OV80i Node-RED: http://camera-ip/recipes/<recipe-number>/ioblock | 1 分钟 | 确认编辑器可访问 |
3 | 查找红色三角形错误指示 | 1 分钟 | 确认故障节点 |
4 | 点击 Deploy 按钮(Full Deploy) | 30 秒 | 重置所有流程 |
5 | 测试基本检测触发 | 2 分钟 | 验证系统是否正常运行 |
系统恢复(若编辑器无法加载)
OV80i 摄像机没有安全模式——重启是首要的恢复方法:
- 对摄像头进行电源循环(断电 10 秒后再通电)
- 等待完整启动(所有 4 个 LED 指示灯稳定,大约 2–3 分钟)
- 通过配方特定的 URL 访问活动配方的 Node-RED
- 验证流程完整性,并进行必要的修复
- 部署更改 以恢复正常运行
备注
URL 格式: http://<camera-ip>/recipes/<recipe-number>/ioblock
示例:
http://192.168.0.101/recipes/20/ioblock
http://192.168.0.105/recipes/1/ioblock
系统化调试流程
步骤 1:确定问题范围
快速评估问题
问题 | 若为是 | 若为否 |
---|---|---|
是否能访问 OV80i Node-RED 界面? | 继续执行步骤 2 | 检查网络/摄像头状态 |
在编辑器中能看到流程吗? | 继续执行步骤 2 | 对摄像头断电并重试 |
节点上是否有错误三角形? | 先关注这些节点 | 检查流程执行 |
检测是否已触发? | 检查各节点输出 | 验证触发输入 |
备注
访问 URL: 使用配方特定的 URL 格式:http://<camera-ip>/recipes/<recipe-number>/ioblock
步骤 2:启用调试监控
添加调试节点以进行故障排除
- 在问题流程的关键点放置 Debug 节点:
- 触发输入之后
- 逻辑节点之前和之后
- 最终输出处
- 为获得最大信息量配置 Debug 节点:
- 输出(Output): 完整的消息对象
- 目标(To): 调试侧边栏
- 名称(Name): 描述性名称(如 "After Classification Logic")
- 通过在编辑器中单击按钮启用所有 Debug 节点
调试侧边栏管理
访问调试侧边栏:
- 点击右侧面板中的 Debug 选项卡(小虫图标)
- 使用垃圾桶图标 清除旧消息
- 如果活动节点过多,筛选消息
调试消息解释:
- 时间戳(Timestamp) 显示消息发生的时间
- 节点名称(Node name) 显示生成消息的节点
- 消息内容(Message content) 显示数据结构和值
步骤 3:追踪流程执行
跟踪消息路径
- 从触发源开始(注入、定时器、外部输入)
- 验证每个节点接收预期输入
- 检查每一步的消息转换
- 确定流程在哪一步停止或产生错误输出
常见流程中断点
节点类型 | 常见问题 | 快速检查 |
---|---|---|
分类逻辑 | 未达到置信阈值 | 检查 ROI 对齐,重新训练模型 |
Switch 节点 | 错误的条件逻辑 | 验证开关规则和消息属性 |
Join 节点 | 等待不完整的消息集 | 检查消息部分数量 |
Function 节点 | JavaScript 错误 | 在浏览器控制台中检查错误 |
HTTP 请求 | 网络连接性 | 手动测试端点 |
Node-RED 常见问题与解决方案
流执行问题
问题:流程未触发
症状:
- 调试侧边栏中没有消息
- 系统似乎处于待机状态
- 外部触发不起作用
诊断步骤:
- 检查触发源: 手动注入、定时器、外部输入
- 验证连线: 确保节点之间的连接正确
- 测试手动触发: 使用 Inject 节点强制启动流程
解决方案:
原因 | 解决方案 | 预防措施 |
---|---|---|
禁用的流程 | 点击 Deploy → 完整部署 | 改动后定期部署 |
连接断开 | 正确重新连线节点 | 编辑时进行可视检查 |
定时配置错误 | 检查 Inject 节点的定时设置 | 记录定时要求 |
外部触发失败 | 验证 I/O 线缆和信号 | 定期进行 I/O 测试 |
问题:流程在运行但结果错误
症状:
- 消息传递但分类不正确
- 通过/失败逻辑不能正确工作
- 结果不一致
诊断过程:
- 在可疑节点前后添加 Debug 节点
- 比较期望与实际的消息内容
- 检查节点配置是否正确参数
解决方案:
问题领域 | 检查点 | 修复 |
---|---|---|
分类逻辑 | ROI 对齐、模型训练 | 重新训练或调整 ROI |
Switch 条件 | 属性名称和值 | 纠正开关逻辑 |
消息属性 | 数据类型和格式 | 使用 Change 节点修复格式 |
上下文变量 | 存储的值与作用域 | 清除/重置上下文存储 |
性能问题
问题:流执行缓慢
症状:
- 触发与输出之间的延迟
- 检查超时
- 系统滞后
性能诊断:
- 检查 Debug 时间戳 以识别慢节点
- 监控摄像系统的 CPU 使用率
- 统计活动 Debug 节点数量(禁用未使用的节点)
优化措施:
性能问题 | 解决方案 | 预期改进 |
---|---|---|
过多的 Debug 节点 | 禁用/删除未使用的 Debug 节点 | 提升 10-20% 的速度 |
复杂的 Function 节点 | 优化 JavaScript 代码 | 改进幅度可变 |
高频触发 | 添加延迟/速率限制 | 防止系统过载 |
大型消息对象 | 减小消息有效负载大小 | 处理速度更快 |
维护程序
每日健康检查
可视化流程检查(5 分钟)
- 访问 Node-RED 编辑器
- 检查错误指示标志(红色三角形)
- 验证 flow 连接是否完好
- 查看最近的 Debug 信息以发现异常
Flow 执行测试(10 分钟)
- 使用 Inject 节点进行手动触发测试
- 在 Debug 侧边栏中验证预期输出
- 用已知良品/不良品测试通过/失败逻辑
- 确认外部通信(PLC、数据库)
每月维护任务
性能评估(15 分钟)
流程优化清单:
任务 | 操作 | 备注 |
---|---|---|
调试节点清理 | 禁用未使用的 Debug 节点 | 仅保留必要的调试 |
上下文存储审查 | 清除不必要的存储值 | 防止内存积累 |
错误日志检查 | 检查浏览器控制台中的错误 | 记录经常性问题 |
备份创建 | 将 flows 导出为备份文件 | 以日期/版本信息存放 |
配置验证(20 分钟)
- 将当前 flows 与文档标准进行比较
- 验证所有关键路径是否具备适当的错误处理
- 测试错误恢复情景
- 更新变更的文档
每月深度维护
全面流程分析(45 分钟)
性能指标收集:
- 流程执行时间
- 错误频率分析
- 资源使用模式
- 通信可靠性
流程结构审查:
- 消除冗余节点
- 合并重复逻辑
- 更新弃用的配置
- 优化复杂的 Function 节点
备份与恢复测试(30 分钟)
- 创建完整的流程导出
- 在备份系统上测试导入过程
- 验证备份恢复是否保持功能
- 记录恢复步骤
诊断工具与技术
内置 Node-RED 工具
调试侧边栏功能
功能 | 使用场景 | 访问方式 |
---|---|---|
消息过滤 | 专注于特定节点 | 侧边栏中的筛选按钮 |
消息历史 | 查看最近 100 条消息 | 在 Debug 侧边栏滚动 |
节点定位 | 查找调试消息的来源 | 在消息中单击节点名称 |
消息导出 | 保存诊断数据 | 复制消息内容 |
上下文数据浏览器
访问上下文存储:
- 打开 OV80i Node-RED 界面 (
http://<camera-ip>/recipes/<recipe-number>/ioblock
) - 转到右侧边栏的 Context Data 标签
- 查看节点/流程/全局上下文值
上下文调试:
- 节点上下文: 检查单个节点状态
- 流程上下文: 验证共享流程变量
- 全局上下文: 查看系统范围设置
网络通信测试
HTTP 请求校验:
- 使用外部工具(Postman、curl)测试端点
- 验证响应格式是否与预期数据匹配
- 测试错误条件(超时、无效响应)
PLC 通信验证:
- 使用 PLC 编程软件验证连通性
- 独立测试数据寄存器访问
- 校验数据格式转换
紧急恢复程序
流程损坏恢复
损坏症状:
- OV80i Node-RED 界面无法加载流程
- 摄像头重启后流程显示为空
- 部署持续失败
恢复步骤:
- 对 OV80i 摄像头进行断电再通电(电源循环):
- 断开电源 10 秒
- 等待完全启动(所有 4 个 LED 指示灯稳定)
- 访问配方的 Node-RED 界面:
- 前往
http://<camera-ip>/recipes/<recipe-number>/ioblock
- 如果流程损坏,请从备份导入
- 前往
- 从备份进行还原:
- 使用 OV80i 的 recipe 导入功能
- 导入最近的备份文件
- 验证所有连接是否完好
- 验证还原结果:
- 测试所有关键流程
- 验证外部通信
- 更新任何配置变更
系统资源问题
内存/CPU 资源超载
即时措施:
- 在 OV80i Node-RED 中禁用非必要的 Debug 节点
- 移除高频率定时触发器
- 简化复杂的 Function 节点
- 对 OV80i 摄像头进行断电再通电以重新启动所有服务
长期解决方案:
- 针对 OV80i 硬件优化流程设计
- 实现速率限制
- 减少消息有效载荷大小
- 安排维护窗口
故障排除清单
维护前清单
- 通知生产线关于维护窗口
- 创建当前流程备份
- 记录当前系统状态
- 准备回滚程序
- 测试备份恢复过程
维护后验证
- 所有流程均已成功部署
- 手动触发测试通过
- 外部通信已验证
- 错误指示已清除
- 性能在可接受范围内
- 文档已更新
紧急响应清单
- 系统影响已评估
- 生产部门已通知
- 已尝试快速修复
- 如有需要,执行备份恢复
- 已定位根本原因
- 已实施预防措施
文档与日志
维护记录
所需文档:
- 维护日期/时间
- 已识别并解决的问题
- 所做的配置变更
- 实现的性能改进
- 未来建议
🔗 参见下列内容
- Node-RED Basics
- Creating Your First Recipe
- Camera Communication Architecture
- Troubleshooting Power Issues
- Node-RED Architecture in OV80i
提示
请在调试会话期间记录所做的所有更改。这有助于将来排查问题,并为团队建立知识库。