← 制造业系统 / 系统拆解

从现场点位到业务事件

沿一段跨工单的设备停机记录,拆开 PLC、DCS、HMI、SCADA、Historian 与边缘采集的职责,核对点位映射、时间戳、质量码、去重补传和业务事件修订,附动态数据流与可复算样本。

设备画面显示停了 30 秒,MES 却给两张工单各记了一次停机。接口日志里还有一条重发消息,以及断网后迟到的恢复信号。只看最终报表,很难分清是现场多停了一次,还是同一段记录被重复解释。

主数据与事件专题讨论过跨系统身份与对账。本篇沿 M07、M09 继续往现场走,用一个模拟样本核对点位、设备状态和业务事件。设备名、工单、时刻与规则均为教学设定,不代表真实工厂运行数据。

现场这些系统各管哪一段

一台设备可能带着自己的 PLC 和操作屏,车间另有 SCADA,集团又建设了历史数据库和工业数据平台。这些系统可能共用采集服务,也可能由设备厂商分别提供。画接线关系之前,需要先确认谁控制设备、谁解释信号、谁保存记录。

系统或能力主要职责接入业务分析时需要核对
PLC执行设备逻辑、顺序控制与现场 I/O 处理点位含义、扫描与采样条件、复位行为、程序版本
DCS组织过程控制、操作与工程配置,常用于连续或批过程控制回路、过程单元、模式及批阶段语义
HMI提供设备或过程的人机操作界面画面值从哪里读,操作权限与反馈如何记录
SCADA对现场设备或过程进行监视、告警、数据采集及配置范围内的操作告警、事件和趋势是否来自同一时间与质量口径
Historian保存工业时序记录并提供历史查询原始值、压缩与插值、时间精度、保存期限
边缘网关或采集服务接协议、转换数据、缓冲与转发,可承载明确部署的计算本地存储、序号、断连行为、配置版本与可观测性
工业数据平台管理数据模型、共享接口、事件加工与分析设备身份、业务上下文、版本、权限与消费回执

这张表按职责拆开能力,具体产品常覆盖多个位置。PLC 与 DCS 的工程选型也不能只靠“离散制造”和“流程制造”两个词决定。SCADA、Historian 和网关之间没有固定串联顺序,业务平台可以从受支持的接口读取所需数据。

本篇只读现场观测,讨论业务分析。参数下发、启停和配方写入另有控制权限、联锁、时效和工程验证要求;安全仪表功能也需要独立确认。业务事件处理失败不应阻断设备本地控制。

点位记录需要带上可解释的上下文

样本设备为 PRESS-01,点位 RunState 约定 1 为运行、0 为停止。这个约定来自映射版本 MAP-07。另一个厂商可能用 0 表示空闲,或者在自动模式以外保持旧值,同名点位不能直接套用同一规则。

映射表至少记录设备身份、来源地址、数据类型、单位或枚举、采样方式、时间来源与生效区间。地址变更保留历史版本;历史消息按当时有效的映射解释。温度倍率、计数器回卷、设备重启后的清零也要在各自规则中说明。

OPC UA 的 DataValue 同时包含值、状态码、源时间戳和服务器时间戳。规范用状态码表达值的可用性,并要求客户端至少检查严重程度;源时间和服务器时间各有含义。OPC Foundation 的 DataValue 定义可作为字段设计依据。

平台还应保存自己的收取时间。三种时间可以同时存在:设备或数据源报告的发生时间、服务器处理时间、平台收到消息的时间。不能把最后一种统一覆盖成“设备发生时间”。源时间缺失时,需要写明替代时间的来源与精度。

本样本使用 UTC 存储,正文按北京时间显示。所有来源已校时,经验证偏差不超过 100 毫秒;这是样本前提,实际项目需要保留校时健康记录。一个教学封装如下,sourceSeq 与 bootId 由本样本采集端提供,属于教学封装字段。

{
  "sourceId": "EDGE-01",
  "bootId": "B07",
  "sourceSeq": 101,
  "assetId": "PRESS-01",
  "pointId": "RunState",
  "value": 0,
  "quality": "Good",
  "sourceTime": "2026-10-15T01:00:10Z",
  "receivedTime": "2026-10-15T01:00:10.100Z",
  "mappingVersion": "MAP-07"
}

Good 只说明这条观测的质量状态,还不能证明工单绑定正确或设备没有故障。温度点位的 Bad 值在本样本中记为 null 并排除出温度计算;它也不会自动推翻另一条有效运行状态记录。质量需要按点位判断。

现场观测怎样形成业务事件独立窗口查看 ↗
教学分析链路。点位映射和 MES 工单区间分别输入计算,点击节点查看来源与去向,动态播放可在查看器中暂停。

用一段停机记录核对时间与归属

RULE-03 约定,运行状态从 1 变成 0 后,需要持续 3 秒并得到有效确认观测,才发布停机事件。事件开始时间回溯到首次观察到 0 的时刻。恢复为 1 时关闭事件。这套业务去抖规则由样本应用实现。

采集端在此窗口保留状态转换,无队列溢出或漏采,并提供覆盖检查结果。普通低频轮询只能观察采样时刻,可能漏掉中间变化,无法直接沿用这个完整性前提。此处的起止仍指已观测转换时刻,精度受现场采集条件限制。

送达记录源时刻(北京时间)点位与值处理结果
B07 / 10009:00:00RunState = 1,Good确立已知运行状态
B07 / 10109:00:10RunState = 0,Good建立待确认的停止起点
B07 / 101 重发09:00:10与原消息相同去重,不创建新转换
B07 / 10209:00:13RunState = 0,Good满足 3 秒确认,事件起点保留为 09:00:10
B07 / 10309:00:20Temperature = null,Bad记录温度质量异常,不参与运行状态计算
B07 / 10409:00:40RunState = 1,Good09:00:50 才收到;按源时间关闭同一事件

在 09:00:50 前,平台的停机事件仍为开放状态,设备实际是否已恢复尚待新证据。收到补传后,事件 STOP-01 的观测区间确定为 [09:00:10, 09:00:40),持续 30 秒。这里不能把最后收取时间 09:00:50 当成停机结束时间。

MES 提供两条有效绑定:工单 A 在 [09:00:00, 09:00:30) 绑定设备,工单 B 从 09:00:30 起绑定。这里使用半开区间,交界时刻只属于后一个区间。绑定须能回查来源记录与版本,不能从“当前工单”字段倒填整段历史。

停机事件时长 = 09:00:40 − 09:00:10 = 30 秒
工单 A 关联时长 = [09:00:10, 09:00:30) = 20 秒
工单 B 关联时长 = [09:00:30, 09:00:40) = 10 秒
关联时长核对 = 20 + 10 = 30 秒
唯一停机事件数 = 1

工单换单发生在设备停止期间,关联结果允许跨单。两条工单关联共享 STOP-01,统计设备事件数时按事件身份去重。若绑定存在空档,未分配时长单独列出;若两张工单重叠绑定,先标记冲突,不能把重叠时长各算一遍后再宣称已对平。

停止、故障和产出还要分别确认

RunState = 0 能支持本规则下的停止事件。它可能对应换型、缺料、等待检验、故障或计划停机。原因保持待解释,后续通过告警、操作记录或责任人确认补充,保留证据和确认时间。相关业务路径见设备停机分析。

同样,RunState = 1 不能独立生成合格品完工。设备计数还可能包含空循环、试机和返工。需要结合计数器口径、产品身份、工序、检测与 MES 报工约束,才能解释产量。MES 工单专题保留这些业务状态的定义。

补传以后还要修订业务结果

样本用 (sourceId, bootId, sourceSeq) 作为观测身份,假定序号在同一启动代次内不复用。重发保留原身份。设备或采集服务重启时变更 bootId,避免新旧序号碰撞。实际接入可能需要协议消息标识、源事务号或持久日志位置,不能只按“点位加时间”去重。

这个键用于本样本的一条记录;一个报文携带多条指标时,还需要稳定的指标身份。MQTT 的传输交付等级也不能单独证明 MES 业务已经正确应用。若使用 Sparkplug,还应实现对应的出生、死亡与会话状态管理,并按所用规范解释序列信息。可参考 Eclipse 对 Sparkplug 的说明;本文的 B07 / 101 封装不等同于 Sparkplug 的序号契约。

断连期间,边缘端将记录写入持久队列,并记录容量、最早可补传位置与丢失范围。恢复后可以批量补传,原始记录保留源时间,补上实际收取时间。服务按设备和点位维护状态,处理迟到消息时重新核对受影响区间。

STOP-01 初次确认时保存开放版本,恢复记录到达后保存关闭版本。下游若已展示暂计时长,必须按同一事件的新版本替换或应用差额,同时保留应用回执。重复投递关闭版本时,聚合结果保持不变。原始观测、事件修订和报表聚合因此能够分别核对。

断线补传以后怎样核对业务结果独立窗口查看 ↗
补传只完成输入恢复。事件版本、工单关联和消费回执还需核对,无法恢复的区间保留未知状态。

断线和缺口要有自己的状态

连接静默可能来自网络、采集服务或设备,不能直接生成设备停机。若队列溢出,丢失区间不能用最后一个值填满后当成连续事实。平台应保留通信中断、观测缺口与设备状态三个维度,并给统计结果标记覆盖范围。

Historian 的插值或压缩查询也要明确用途。用于画趋势的插值点,不宜直接当作原始转换证据。需要回放事件时,应核对保存策略能否提供所需精度;保存能力不足的部分进入未知清单。

把验收落到唯一记录和最终结果

下载点位到业务事件的 JSON 样本可以复算本篇的身份去重、有效转换和工单关联。它保存模拟观测、工单区间、规则版本及预期结果;不包含现场连接配置。

验收项本样本应得到的结果
送达与唯一观测6 次送达,5 条唯一观测,重复 1 次
质量与点位4 条有效运行状态观测,1 条 Bad 温度观测
事件身份STOP-01 一条事件,迟到恢复关闭原事件
起止与时长09:00:10 至 09:00:40,共 30 秒
工单关联A 为 20 秒,B 为 10 秒,共用一个事件
重复消费同一关闭版本再次投递,事件数与累计时长不增加
未知项本样本覆盖完整;真实缺口、绑定冲突与原因待确认分别列示

实施时,我会再安排几组故障输入:重启后序号从头开始、工单绑定迟到、点位枚举修改、源时钟漂移、队列溢出。每组都需要写出哪些结果应修订、哪些仍无法判断,以及谁来关闭未决项。下一篇规划中的系统恢复演练会把这套核对扩展到多个业务系统,记录恢复顺序、事务回执和最终验收结果。