2. 实时数据采集概述:什么是实时数据、采集的实时性要求、采集数据的类型
大家好,我是老张。在MES这个行当摸爬滚打了十几年,今天咱们来聊聊实时数据采集这个基础话题。说实话,很多刚入行的朋友容易把“实时”想得太简单,以为数据传得快就是实时。嗯,这里面的门道,咱们得掰扯清楚。
2.1 什么是实时数据?
先问大家一个问题:你手机上的天气预报,算不算实时数据?
严格来说,不算。因为气象站的数据更新周期通常是15分钟到1小时。但在MES里,什么叫实时?我个人习惯这样定义:数据从产生到被系统消费,时间延迟在业务可接受范围内,且这个延迟是确定的、可控的。
举个例子。我在一个汽车焊装车间做过项目,车身焊接点的电流数据,如果延迟超过200毫秒,质量判定就来不及了。这种场景下,200毫秒就是实时。但同样是这个车间,设备综合效率(OEE)的统计,延迟5分钟完全没问题。
核心观点:实时不是绝对的“快”,而是“及时”。实时性取决于业务场景对数据时效性的容忍度。
说白了,实时数据就是那些“过期就作废”的数据。比如:
- 设备当前转速——慢了0.5秒,报警就晚了
- 当前加工工件的批次号——搞错了,产品就混料了
- 传感器采集的温度值——超温了不停机,设备就烧了
2.2 采集的实时性要求
这里我给大家画个图,把实时性要求分几个档次。你想想看,不同场景对延迟的容忍度完全不一样。
你看,不同层级对实时性的要求天差地别。我建议你在做架构设计时,先跟业务方把每个数据点的“最大容忍延迟”敲死。这个参数定不下来,后面所有设计都是空中楼阁。
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 数据采集的整体架构
最后,我画一张图,把上面四种数据类型和采集层次串起来。这张图是我自己项目里常用的模板,你拿去可以直接用。
这张图你看懂了吗?数据从设备产生,经过协议适配、处理清洗,最后落到存储。每一层都有它的职责,千万别想着一步到位。
好了,关于实时数据采集的基础概念,咱们就聊到这儿。记住一句话:没有最好的架构,只有最合适的架构。下一节咱们会深入讲采集协议的选择,到时候再细聊。
公众号:蓝海资料掘金营,微信deep3321