🏭 丁丁正在做的项目

30台冲床监控方案

冲压车间30台冲床设备状态监控、产量统计、报警管理,全栈开源方案,从设备采集到数据可视化完整落地

📡 ThingsGateway 数据采集
🔗 EMQX 消息传输
💾 TDengine 数据存储
📊 Grafana 数据可视化
⚙️ Node-RED 逻辑与报警
📅 项目周期:2026年8月 - 进行中 🔧 设备规模:30台冲床 📊 采集点位:600+点 ⚡ 采集频率:2秒

01 项目背景与需求

客户痛点

  • 设备状态不透明:30台冲床分布在两个车间,哪台在运行、哪台故障、哪台待机,全靠人工巡检,效率低且不及时
  • 产量统计靠人工:每班结束工人手工抄产量,容易出错,管理层第二天才能看到前一天产量,无法实时掌握生产进度
  • 报警响应慢:设备故障了工人要打电话报修,维修人员不知道哪台设备什么故障,响应时间平均30分钟以上
  • OEE无法计算:没有设备运行时间、停机时间、故障时间的准确数据,OEE(设备综合效率)只能靠估算,无法针对性改善

核心需求

📊
实时监控
30台设备运行状态实时显示,车间大屏+手机端可看
📈
产量统计
自动统计每台每班每日产量,自动生成报表
🚨
报警管理
设备故障自动报警,微信推送,报警记录可追溯
📉
OEE分析
自动计算设备综合效率,停机原因分析,趋势对比

02 系统架构

5层架构,从设备到看板全链路开源,每层职责清晰、可独立替换

01
📡
数据采集
ThingsGateway
30台冲床PLC(三菱Q系列/西门子S7-1511),Modbus TCP/MC协议采集,每台20+点位(状态/产量/报警/参数)
→
02
🔗
消息传输
EMQX
MQTT协议上报,主题按车间/机台/点位分层,支持断线重连和本地缓存,网络中断不丢数据
→
03
💾
数据存储
TDengine
时序数据库,30台×20点×1秒=6000点/秒,自动降采样(1秒→1分钟→1小时),保留原始数据1年
→
04
📊
数据可视化
Grafana
车间总览大屏(OEE/产量/报警)、单台设备详情页、趋势分析、报表导出,支持手机端查看
→
05
⚙️
逻辑与报警
Node-RED
报警判断(设备故障/急停/缺料)、报警推送(微信/钉钉/短信)、数据转发(MES接口)、日报自动生成
💡 架构设计要点:
  • 应用与通讯解耦:ThingsGateway只负责采集,通过MQTT上报,应用层(Grafana/Node-RED)通过订阅MQTT或查询TDengine获取数据,加新设备不用改应用
  • 消息队列削峰:EMQX在采集端和存储端之间加一层,采集端突发数据时缓存在Broker,TDengine慢慢消费,不会因为写入慢导致采集端阻塞
  • 边缘端本地缓存:ThingsGateway开启SQLite本地缓存,网络中断期间数据本地存储,恢复后自动补传,不丢数据
  • 降采样策略:原始2秒数据保留1年,1分钟降采样保留3年,1小时降采样永久保留,兼顾查询性能和存储成本

03 为什么选这些软件(选型理由)

不是随便选的,每款都对比过2-3个 alternatives,结合实际项目需求和团队技术栈做出的选择

01 ThingsGateway
✓ 为什么选它:国产开源,.NET 6 开发,支持三菱MC和西门子S7协议,Web界面配置,和我们的C#技术栈匹配,出问题能自己改源码。试过Neuron,但三菱MC协议支持不如ThingsGateway完善。
⚖️ 对比过:对比过 Neuron(协议更多但三菱MC点位配置麻烦)、Node-RED(灵活但大规模采集稳定性需要自己优化)
02 TDengine
✓ 为什么选它:国产开源,专为工业时序数据设计,写入性能是InfluxDB的5-10倍,查询快,自带降采样和数据保留策略,服务器资源占用低。30台设备6000点/秒,2核4G服务器轻松跑。
⚖️ 对比过:对比过 InfluxDB(性能不够,内存占用高)、IoTDB(生态不如TDengine成熟)
03 Grafana
✓ 为什么选它:工业监控事实标准,TDengine原生支持,插件丰富,仪表盘拖拽配置,支持告警和报表。客户接受度高,不用自己写前端。
⚖️ 对比过:对比过 FUXA(更像SCADA但图表能力不如Grafana)、自研前端(开发成本高)
04 Node-RED
✓ 为什么选它:低代码流程引擎,报警逻辑、数据转发、日报生成都用拖拽配置,改逻辑不用重启服务。3000+节点插件,微信/钉钉/MES接口都有现成节点。
⚖️ 对比过:对比过 自研报警服务(开发成本高,改逻辑要发版)

04 部署要点(关键配置)

不是完整教程,只列最关键的配置和容易踩坑的地方,详细部署步骤参考各软件官方文档

01

服务器准备

阿里云ECS g7 2核4G,Ubuntu 22.04,Docker Compose一键部署全部服务(ThingsGateway/EMQX/TDengine/Grafana/Node-RED),数据目录挂载到数据盘

02

ThingsGateway配置

添加30台设备(三菱MC/西门子S7),每台配置20+点位,分组(状态组/产量组/报警组),设置采集频率2秒,开启本地缓存,配置MQTT上报到EMQX

03

TDengine建表

创建数据库(保留1年,副本1),每台设备一张表(时间戳+20个字段),创建连续查询(1分钟降采样、1小时降采样),创建数据保留策略

04

EMQX规则引擎

配置规则:MQTT消息 → 解码JSON → 写入TDengine(通过taosAdapter的REST API),配置死信队列(写入失败的消息存到文件,人工处理)

05

Grafana仪表盘

配置TDengine数据源,创建3个仪表盘:车间总览(OEE/产量/报警统计)、设备详情(单台实时数据+趋势)、报表(日/周/月产量+报警统计),配置告警规则

06

Node-RED流程

报警流程:订阅MQTT → 报警判断(阈值/状态变化)→ 防抖/分级 → 微信推送;日报流程:每天8点查询TDengine昨日数据 → 生成Excel报表 → 邮件发送;MES转发:关键数据转发到客户MES接口

05 踩过的坑(真实问题与解决方案)

这是最有价值的部分——AI写不出来的真实踩坑记录,每个问题都花了半天到两天才解决

坑 01 三菱Q系列MC协议,大批量读取时偶尔返回错误码
原因: 单次读取寄存器数量超过PLC限制(Q系列单次最多960字),且采集频率太快导致PLC通讯缓冲区溢出
解决: 把20个点位拆成2组读取,每组不超过50个寄存器;采集频率从1秒降到2秒(冲床状态1秒足够);加通讯超时重试机制(ThingsGateway自带)
坑 02 TDengine写入一段时间后变慢,查询超时
原因: 每张表一个设备一个采集组,30台×2组=60张表,但一开始用了超级表+标签,标签基数太大导致查询慢;且没有配置数据保留策略,磁盘快满了
解决: 简化表结构,每台设备一张表,不用超级表(设备数量固定30台);配置数据保留策略(原始数据保留1年,1分钟降采样保留3年);加索引和分区
坑 03 Grafana大屏刷新时偶尔卡顿,数据显示延迟
原因: 仪表盘查询了原始秒级数据(30台×20点×86400秒=5184万行/天),浏览器渲染压力大
解决: 大屏默认查1分钟降采样数据,只有点进单台设备详情才查原始数据;Grafana设置刷新间隔5秒(不是1秒);面板加时间范围限制(最多查7天)
坑 04 网络中断后恢复,数据出现断层
原因: ThingsGateway默认没有本地缓存,网络中断期间的数据直接丢了
解决: 开启ThingsGateway的本地缓存功能(SQLite本地存储),设置缓存大小1GB;网络恢复后自动补传,补传速度限制为正常速度的2倍,避免冲击服务器
坑 05 报警推送太频繁,工人产生"报警疲劳"直接忽略
原因: 设备状态抖动(比如门开关一秒内多次变化)导致反复触发报警,一晚上能发几百条
解决: Node-RED加报警防抖逻辑(同一报警30秒内只发一次);加报警分级(故障/警告/提示),只有故障级才推送微信;加报警确认机制,工人确认后不再重复推送

06 实际效果

~95%
设备数据采集准确率
对比人工抄表,数据准确率从85%提升到95%+
实时
状态可见性
从人工巡检1小时1次,到2秒刷新实时可见
~15min
报警响应时间
从平均30分钟缩短到15分钟(微信推送+报警分级)
自动
产量报表
从人工抄表2小时/天,到自动生成日报,8点准时邮件发送
2核4G
服务器配置
全部服务跑在一台2核4G服务器上,CPU使用率<30%,内存<60%
0元
软件授权费
全栈开源,无软件授权费,只有服务器成本(约100元/月)

07 相关软件与工具

需要类似的设备监控方案?

丁丁有20年工业自动化经验,做过冲床监控、机器人上下料、能源管理等多个真实项目。可以帮你做方案设计、选型咨询、部署实施、二次开发。