
工厂车间里那些老设备很多连个像样的数据接口都没有但老板又天天盯着大屏要看OEE、要看良率、要看哪台机器在偷懒。这个项目就是解决这个矛盾的——把车间里五花八门的设备数据抓上来做成能看的图表出问题了自动喊人。我做过好几个类似的产线数字化改造从注塑机到CNC再到装配线踩过的坑比写过的代码还多。下面把这些经验完整拆开讲从数据怎么采、采什么、怎么存、怎么展示、告警怎么配才不烦人一条线捋清楚。1. 先搞清楚采什么工厂设备数据的分类与采集边界1.1 设备数据到底分几层很多人一上来就问用什么协议采这其实问反了。应该先问采什么。工厂设备的数据粗略分三层状态层运行、停机、待机、故障、换模。这层数据量最小但价值最高直接决定OEE计算。过程层温度、压力、速度、扭矩、电流、计数。这层是工艺监控的核心采样频率通常1秒到1分钟一次。事件层报警代码、配方切换、参数修改、操作员登录。这层是追溯和质量分析的关键。我见过太多项目只采了过程层结果老板问这台机昨天停了多久答不上来。状态层和事件层必须一起采否则后面做可视化就是花架子。1.2 不同年代设备的采集方式差异车间里的设备年龄跨度可能超过20年采集方式完全不同设备年代典型接口采集方式注意事项2015年后新设备OPC UA / MQTT / REST API直接对接最省事注意授权和并发连接数限制2005-2015年设备Modbus TCP / Profinet网关轮询采集寄存器地址要对照手册逐个确认2005年前老设备RS232 / RS485 / 并口串口服务器转以太网波特率、校验位必须和设备一致无接口纯机械无加装IO模块/电流互感器/光电传感器用电流判断运行状态最实用提示老设备加装传感器时电流互感器判断运行状态是最稳妥的方案。设备主电机电流超过阈值就认为在运行低于阈值认为停机准确率能到95%以上成本只要几十块钱。1.3 采集频率怎么定才不浪费采集频率不是越高越好。我见过一个项目把注塑机温度按100ms采集一天产生几千万条数据数据库直接扛不住。合理的做法是状态变化事件触发一变就上报不变化不占带宽。过程参数按工艺节拍比如注塑周期30秒那就每5秒采一次一个周期6个点足够画曲线。计数类累计值定时上报比如每10秒上报一次累计产量而不是每次1都上报。这样设计下来一台设备一天的数据量从几千万条降到几万条存储成本降两个数量级。2. 数据采集网关的选型与现场部署实战2.1 网关选型的三个硬指标网关是采集方案的核心硬件选型看三个指标协议覆盖至少要支持Modbus RTU/TCP、OPC UA、MQTT。如果车间有西门子PLC还要支持S7协议有三菱的要支持MC协议。边缘计算能力能不能在网关上做数据预处理。比如把原始寄存器值换算成工程量、做死区过滤、做本地缓存。没有边缘计算能力的网关所有数据原样上传云端压力巨大。断网续传车间网络抖动是常态网关必须能本地存至少24小时数据网络恢复后自动补传。这个功能看着不起眼实际项目里能救命。2.2 现场部署的布线经验网关部署位置很讲究。我的经验是网关尽量靠近设备减少串口线长度。RS485线超过50米信号就开始衰减超过100米基本不可靠。一个网关带设备数量控制在8-16台。带太多轮询周期会拉长实时性下降。网关供电单独走一路不要和设备主电源共用。设备启停时的电压波动会干扰网关。网线走线槽远离变频器和伺服驱动器。电磁干扰是数据丢包的隐形杀手。2.3 一个真实的踩坑案例有个项目网关装好后数据时有时无。排查了两天最后发现是网关和一台变频器共用了同一个配电箱变频器工作时网关就重启。换了个独立电源后问题消失。这种坑在实验室永远遇不到只有到了现场才会碰到。注意现场调试时先用万用表量一下网关供电电压的波动范围。如果波动超过±10%必须加稳压模块。3. 数据上云后的存储与处理架构3.1 时序数据库是必选项工厂设备数据是典型的时序数据用MySQL存是自找麻烦。时序数据库选型TDengine国产性能好SQL语法友好适合中小规模项目。InfluxDB生态成熟文档丰富但集群版收费。TimescaleDB基于PostgreSQL适合已经用PG的团队。我一般推荐TDengine一张超级表按设备ID建子表写入和查询都很顺畅。一个中等规模工厂200台设备用单节点就能扛住。3.2 数据清洗不能省原始数据直接存库是大忌。必须做几件事死区过滤温度变化小于0.5度不上报避免大量重复值。异常值剔除传感器偶尔会报出明显不合理的值比如温度突然9999要过滤掉。时间戳对齐不同设备的时间可能不一致统一用网关时间戳。单位统一有的设备报华氏度有的报摄氏度入库前统一。这些处理放在网关边缘做最好减轻云端压力。3.3 数据分层存储策略热数据最近7天存时序库支持实时查询和可视化。温数据7天到1年做降采样后存时序库比如原始1分钟一个点降采样成5分钟一个点。冷数据1年以上归档到对象存储需要时再恢复。这样设计存储成本能降低70%以上而查询性能几乎不受影响。4. 可视化大屏的设计逻辑与实现4.1 大屏不是图表堆砌很多可视化大屏做出来就是一堆图表的拼盘看着热闹但没用。好的工厂大屏应该回答三个问题现在怎么样当前产量、良率、设备运行率用大数字展示。哪里有问题异常设备用红色高亮按严重程度排序。趋势如何最近24小时产量趋势、故障趋势用折线图。我通常把大屏分三个区域顶部是核心KPI中间是设备状态矩阵底部是趋势图和告警列表。4.2 技术选型ECharts WebSocket前端可视化用ECharts这个没什么争议。关键是数据刷新方式不要用定时轮询用WebSocket推送。轮询在设备多的时候会把后端压垮。后端用MQTT订阅设备数据处理后再通过WebSocket推给前端。前端收到数据后只更新变化的部分不要整个图表重绘。4.3 设备状态矩阵的实现细节设备状态矩阵是大屏的核心。每台设备一个方块颜色表示状态绿色运行、黄色待机、红色故障、灰色离线。实现要点方块数量多时超过100个用Canvas渲染而不是DOM性能差好几倍。点击方块弹出该设备的详细面板显示实时参数和历史曲线。状态变化时加一个闪烁动画让操作员一眼看到。// 设备状态矩阵核心逻辑示意 const statusColors { running: #52c41a, idle: #faad14, fault: #f5222d, offline: #d9d9d9 }; function renderDeviceMatrix(devices) { devices.forEach(device { const color statusColors[device.status] || statusColors.offline; updateBlock(device.id, color, device.status); }); }4.4 实时曲线图的性能优化实时曲线是可视化里最吃性能的部分。我的经验数据点超过500个后人眼已经分辨不出细节所以只保留最近500个点。用ECharts的appendData方法增量添加数据不要每次重新setOption。多条曲线时用large: true开启大数据量优化模式。5. 告警系统的设计与降噪策略5.1 告警分级是降噪的第一步告警不降噪操作员三天就麻木了。分级是基础级别定义通知方式响应要求P0-紧急设备停机、安全相关电话企微短信立即处理P1-重要参数超限、质量异常企微短信15分钟内P2-一般参数偏离、效率下降企微1小时内P3-提示维护提醒、耗材预警站内消息当天处理5.2 告警降噪的四个实用手段告警抑制同一设备同一告警5分钟内只发一次。告警聚合同一设备多个告警合并成一条消息发送。告警依赖设备离线时抑制该设备的所有其他告警。设备都离线了还报温度超限没意义。动态阈值不同产品、不同工艺阶段的阈值不同不能一刀切。5.3 告警通道的可靠性设计告警发不出去等于没有告警。我的做法是主通道用企业微信机器人配置简单到达率高。备用通道用短信只在P0级别启用。告警发送失败要记录并重试重试3次仍失败则升级通知方式。# 告警发送与重试逻辑示意 def send_alert(alert, channels[wecom, sms]): for channel in channels: for attempt in range(3): try: result dispatch(channel, alert) if result.success: log_alert_sent(alert, channel) return True except Exception as e: log_alert_failed(alert, channel, attempt, e) time.sleep(2 ** attempt) # 指数退避 escalate_alert(alert) # 所有通道失败升级处理 return False5.4 告警闭环从发出到关闭告警不能只发不管。必须形成闭环告警发出后操作员在企微里点击认领表示已看到。处理完成后点击关闭并填写处理措施。超时未认领的告警自动升级通知上级。所有告警记录存档用于后续分析和改进。这套闭环机制能让告警真正发挥作用而不是变成狼来了。6. 系统集成与调度任务的编排6.1 为什么需要调度系统数据采集是实时的但很多任务是定时的日报表生成、数据降采样、告警统计、设备OEE计算。这些任务需要一个调度系统来管理。DolphinScheduler是个不错的选择可视化编排支持依赖关系失败自动重试。配置一个任务失败时通过企微告警运维人员能第一时间知道。6.2 任务编排的实践经验任务粒度一个任务只做一件事。比如计算昨日OEE是一个任务生成日报是另一个任务。依赖关系日报生成依赖OEE计算完成用DolphinScheduler的依赖节点控制。失败重试网络抖动导致的任务失败配置自动重试3次间隔30秒。超时设置每个任务设置超时时间避免卡死。6.3 与MES/ERP的数据对接工厂里通常已经有MES或ERP系统。物联网平台的数据要能对接过去工单信息从MES获取当前工单号、产品型号、计划数量。产量回传把采集到的实际产量回传给MES。质量数据把关键工艺参数回传给MES用于质量追溯。对接方式优先用API实在不行用中间数据库表。API要处理好认证和限流。7. 项目落地中的常见问题与应对7.1 网络不稳定怎么办车间网络环境复杂无线信号容易被金属设备遮挡。应对策略优先用有线网络无线只作为备用。无线AP部署时做信号覆盖测试确保每个角落信号强度大于-65dBm。网关配置断网续传网络恢复后自动补数据。关键数据在网关本地也存一份防止云端故障。7.2 设备协议不开放怎么办有些设备厂商不提供协议文档或者要收高额授权费。应对方法先用抓包工具分析设备与上位机的通信逆向出协议。如果设备有上位机软件可以从上位机软件的数据库或日志里取数据。实在不行加装传感器间接采集。比如用光电传感器数产量用电流互感器判断运行状态。7.3 数据准确性怎么保证采集的数据不准后面全白搭。保证准确性的措施定期用标准仪器校准传感器。关键数据做交叉验证。比如产量数据既从设备计数器取也从光电传感器取两者对比。建立数据质量监控发现异常数据自动告警。保留原始数据便于追溯和修正。7.4 操作员不接受怎么办系统做得再好操作员不用就是废的。推广经验界面要简单操作员只需要看和点不需要输入。告警要准确不要频繁误报否则操作员会直接忽略。让操作员参与需求调研他们提的意见往往最实用。上线初期安排专人跟进及时解决问题建立信任。8. 从单点试点到全厂推广的路径8.1 先做样板线不要一上来就全厂铺开。选一条有代表性的产线做试点跑通全流程验证方案可行性。试点线要包含不同类型的设备这样能暴露各种问题。试点周期一般1-2个月包括部署、调试、试运行、优化。8.2 标准化复制试点成功后把方案标准化网关配置模板化新设备接入时改几个参数就行。数据模型统一所有设备用同一套数据模型。可视化模板复用新产线大屏基于模板快速生成。告警规则库积累常见告警规则直接复用。8.3 持续优化系统上线不是终点。要持续收集反馈优化告警规则增加新的分析维度。我一般建议每季度做一次系统回顾看看哪些告警误报多、哪些数据没人看、哪些功能可以砍掉。工厂设备数据采集这套东西技术本身不复杂难的是现场的各种意外和对业务的理解。我做了这么多年最大的体会是不要追求技术上的完美要追求业务上的有用。一个能稳定运行、操作员愿意用的简单系统比一个功能强大但天天出问题的复杂系统有价值得多。采集频率够用就行可视化能看懂就行告警准确就行。把这三件事做好项目就成功了八成。