2. 实时数据采集概述:什么是实时数据、采集的实时性要求、采集数据的类型

大家好,我是老张。在MES这个行当摸爬滚打了十几年,今天咱们来聊聊实时数据采集这个基础话题。说实话,很多刚入行的朋友容易把“实时”想得太简单,以为数据传得快就是实时。嗯,这里面的门道,咱们得掰扯清楚。

2.1 什么是实时数据?

先问大家一个问题:你手机上的天气预报,算不算实时数据?

严格来说,不算。因为气象站的数据更新周期通常是15分钟到1小时。但在MES里,什么叫实时?我个人习惯这样定义:数据从产生到被系统消费,时间延迟在业务可接受范围内,且这个延迟是确定的、可控的

举个例子。我在一个汽车焊装车间做过项目,车身焊接点的电流数据,如果延迟超过200毫秒,质量判定就来不及了。这种场景下,200毫秒就是实时。但同样是这个车间,设备综合效率(OEE)的统计,延迟5分钟完全没问题。

核心观点:实时不是绝对的“快”,而是“及时”。实时性取决于业务场景对数据时效性的容忍度。

说白了,实时数据就是那些“过期就作废”的数据。比如:

  • 设备当前转速——慢了0.5秒,报警就晚了
  • 当前加工工件的批次号——搞错了,产品就混料了
  • 传感器采集的温度值——超温了不停机,设备就烧了

2.2 采集的实时性要求

这里我给大家画个图,把实时性要求分几个档次。你想想看,不同场景对延迟的容忍度完全不一样。

实时性要求分级 硬实时 延迟 < 10ms 伺服控制 安全联锁 软实时 延迟 10ms~1s 质量检测 设备报警 准实时 延迟 1s~5s 生产统计 物料追踪 近实时 延迟 5s~60s 报表分析 KPI看板 实时性要求从左到右逐渐降低 ⚠️ 避坑指南 我曾经在一个项目里,把所有数据都按硬实时要求设计。 结果网络带宽全被占满,关键数据反而丢了包。 记住:不是所有数据都需要毫秒级响应,分级设计才是正道。

你看,不同层级对实时性的要求天差地别。我建议你在做架构设计时,先跟业务方把每个数据点的“最大容忍延迟”敲死。这个参数定不下来,后面所有设计都是空中楼阁。

2.3 采集数据的类型

在MES里,我们采集的数据大致分四类。我习惯用“人机料法环”来记,但这里咱们聚焦在设备、工艺、质量、物料这四个维度。

2.3.1 设备数据

设备数据是最基础的。说白了,就是设备“有没有在干活、干得怎么样”。

数据子类 典型数据项 采集方式 实时性要求
运行状态 运行/停机/待机/故障 PLC信号、OPC UA 软实时(<1s)
运行参数 主轴转速、进给速度、温度 传感器、变频器 硬实时(<100ms)
报警信息 故障代码、报警时间、复位时间 PLC事件触发 软实时(<500ms)
能耗数据 电流、电压、功率、流量 智能电表、流量计 准实时(1~5s)

我记得有一次,客户非要采集每台CNC的主轴振动波形,频率要求10kHz。我说这数据量太大了,存一天就得几个TB。后来我们折中了一下,只采集振动特征值(RMS、峰值),数据量降了100倍,业务需求也满足了。

2.3.2 工艺数据

工艺数据是MES的灵魂。它告诉你“产品是怎么被造出来的”。

  • 工艺参数:温度曲线、压力值、焊接电流、涂胶量
  • 工艺配方:当前使用的配方编号、配方版本
  • 工艺事件:换刀、换模、参数调整记录
  • 工艺判定:SPC控制图、CPK值、合格/不合格

小技巧:工艺数据最好带上“上下文信息”。比如采集温度时,同时记录当时的工件ID、工位号、操作员。否则事后查问题,你根本不知道这个温度对应的是哪个产品。

2.3.3 质量数据

质量数据是MES的“警察”。它负责把关,不合格的产品别想流到下一站。

质量数据有个特点:数据量不大,但价值极高。一个不合格品的检测数据,可能价值百万。

// 质量数据采集示例(JSON格式)
{
  "measurement_id": "M20240315001",
  "product_id": "P20240315-001",
  "station_id": "ST-05",
  "timestamp": "2024-03-15 14:30:22.123",
  "measurements": [
    {"param": "直径", "value": 25.01, "unit": "mm", "tolerance": [24.95, 25.05], "result": "PASS"},
    {"param": "粗糙度", "value": 0.32, "unit": "μm", "tolerance": [0.2, 0.4], "result": "PASS"},
    {"param": "硬度", "value": 58.5, "unit": "HRC", "tolerance": [56, 60], "result": "PASS"}
  ],
  "overall_result": "PASS",
  "operator": "张三"
}

你想想看,如果这个数据采集延迟了,等发现不合格时,后面可能已经加工了100个工件。这就是为什么质量数据通常要求软实时——发现即止损。

2.3.4 物料数据

物料数据是MES的“后勤部长”。它回答三个问题:物料在哪?用了多少?还剩多少?

物料数据的采集方式比较特殊,很多要靠人工扫码或RFID自动识别。这里有个坑——人工采集的实时性很难保证

⚠️ 注意:我曾经遇到一个项目,工人为了赶产量,先干活后扫码。结果物料消耗记录和实际差了2个小时。后来我们加了强制防错逻辑:不扫码,设备不启动。虽然工人抱怨了几句,但数据准确率从70%提到了99.9%。

物料数据的关键字段:

  • 物料编码(唯一标识)
  • 批次号/序列号(追溯用)
  • 数量(消耗/产出/报废)
  • 位置(库位/工位/在制品)
  • 状态(待检/合格/冻结/报废)

2.4 数据采集的整体架构

最后,我画一张图,把上面四种数据类型和采集层次串起来。这张图是我自己项目里常用的模板,你拿去可以直接用。

MES实时数据采集架构 设备层(数据源) PLC 传感器 RFID读写器 智能仪表 扫码枪 视觉系统 采集层(协议适配) OPC UA Modbus TCP MQTT HTTP API 自定义协议 数据处理层(清洗/转换/路由) 数据解析 单位转换 异常过滤 数据聚合 质量判定 存储层(数据持久化) 时序数据库 关系数据库 消息队列 对象存储 设备数据 工艺数据 质量数据 物料数据

这张图你看懂了吗?数据从设备产生,经过协议适配、处理清洗,最后落到存储。每一层都有它的职责,千万别想着一步到位。

好了,关于实时数据采集的基础概念,咱们就聊到这儿。记住一句话:没有最好的架构,只有最合适的架构。下一节咱们会深入讲采集协议的选择,到时候再细聊。


公众号:蓝海资料掘金营,微信deep3321