4. 虚拟验收数据采集与接口设计

虚拟验收的核心不是“把设备连上”,而是让验收系统在正确的时间拿到正确语义的数据。产线中常见的数据源包括PLC、SCADA、MES、传感器以及数据库,它们的数据模型、刷新频率、时间基准和接口协议各不相同。如果接口设计只关注“能读到值”,往往会在验收判定阶段出现数据错位、状态滞后、批次混淆等问题。因此,本节从数据源特征出发,逐步展开OPC UA、MQTT、数据库接口的选型与配置,并给出数据清洗与时间同步的可执行方法。

一、四类数据源的特征与采集边界

PLC是产线控制层最直接的数据源,典型数据包括工位状态字、节拍计数、报警位、互锁信号、伺服轴位置等。其特点是周期性强、语义明确、但地址空间因厂商和编程习惯而异。SCADA通常聚合多个PLC和仪表,提供画面级变量、报警记录、历史趋势,适合采集产线级KPI,但变量命名可能经过中间层映射,需要核对原始地址。MES提供工单、批次、物料、工艺参数和过站记录,属于业务层数据,刷新频率低但语义丰富,是验收中判定“产品是否按正确工艺生产”的关键依据。传感器(如激光位移、扭矩、温度、视觉结果)往往通过IO-Link、Modbus TCP、EtherNet/IP或专用网关接入,数据频率高、单点价值密度低,适合做过程能力分析而非逐点验收。

采集边界应在接口设计前明确:哪些数据用于实时判定,哪些用于事后追溯,哪些仅用于趋势监控。例如,安全门开关状态属于实时判定,必须进入高频采集通道;而工单完成数量属于追溯数据,可按分钟级从MES拉取。边界不清会导致采集频率被最高要求绑架,造成网络和存储浪费。

二、OPC UA:语义化与信息模型

OPC UA适合作为PLC与SCADA之间的主要采集协议,原因是它不只传值,还传类型、时间戳和节点关系。配置时先建立地址空间映射:将PLC中的DB块或标签映射为OPC UA节点,并统一命名规则,例如 Line1/Station3/CycleTime。关键参数包括采样间隔(SamplingInterval)、发布间隔(PublishingInterval)和队列深度(QueueSize)。对于节拍类信号,采样间隔可设为50ms,发布间隔100ms;对于报警位,队列深度应大于1,避免瞬态报警被覆盖。

节点示例:
ns=2;s=Line1.Station3.CycleTime   Float   ms
ns=2;s=Line1.Station3.State       Int16   0=Idle,1=Run,2=Alarm
ns=2;s=Line1.Station3.PartOK      Boolean
采样间隔:50ms
发布间隔:100ms
队列深度:报警位=5,模拟量=1

需要特别注意的是,OPC UA服务器时间戳与客户端接收时间可能不一致。验收系统应同时记录SourceTimestamp和ServerTimestamp,后续时间同步以SourceTimestamp为基准进行对齐。

三、MQTT与数据库接口:分层与职责

MQTT适合跨车间、跨系统的事件型数据传输,例如工位完成事件、质量判定结果、AGV到位信号。主题设计应体现层级,例如 factory/line1/station3/event/part_complete。QoS选择上,验收关键事件用QoS 1,普通趋势数据用QoS 0。数据库接口则承担持久化和批量查询,常见方式包括时序数据库(如InfluxDB)存传感器高频数据,关系数据库存工单和验收结果。写入时建议采用批量提交,例如每500ms或每200条写入一次,避免逐条写入造成连接压力。

虚拟验收数据采集与接口分层 数据源层 PLC 状态/节拍/报警 SCADA KPI/趋势/报警 MES 工单/批次/过站 传感器 位移/扭矩/温度 数据库 历史/追溯 接口层 OPC UA 节点映射/时间戳 采样50ms/发布100ms MQTT 主题分层/QoS 事件驱动 数据库接口 批量写入 500ms/200条 网关/边缘 协议转换/缓存 处理层 数据清洗 去重/补缺/量程 异常值标记 时间同步 NTP/PTP SourceTimestamp对齐 语义映射 统一命名 单位归一 质量码 Good/Bad/Uncertain 验收应用 实时判定 节拍/状态 追溯查询 批次/工单 趋势分析 传感器曲线 报告输出 验收结论 数据源 → 接口采集 → 清洗与时间同步 → 验收应用;时间基准统一为SourceTimestamp

四、数据清洗:从原始值到可用值

清洗不是简单删掉空值,而是建立可判定的质量规则。常见处理包括:去重(同一时间戳重复上报)、补缺(短时丢包用前值保持或线性插值)、量程校验(超出传感器量程标记为Bad)、状态字合法性检查(未定义状态码标记为Uncertain)。例如,某扭矩传感器量程为0~50 N·m,若采集到52.3 N·m,应标记为超量程异常,而不是直接参与均值计算。清洗后的每条记录应携带质量码,验收判定时只使用Good数据,Uncertain数据进入人工复核队列。

五、时间同步:验收判定的基准

产线中PLC、SCADA、MES和传感器的时间基准可能相差几十毫秒到数秒。若不做同步,会出现“PLC已报警但MES仍显示运行”的矛盾。推荐做法是:所有采集节点通过NTP与同一时间服务器同步,精度要求高时使用PTP(IEEE 1588),目标偏差小于1ms。验收系统在入库时统一转换为UTC,并保留原始时区信息。对于跨设备事件关联,以SourceTimestamp为基准,允许窗口设为±20ms;超出窗口的事件标记为“时间不可信”,不参与因果判定。

时间同步不是一次配置就结束。建议在验收前用同一脉冲信号触发PLC和传感器,比较两边记录的时间戳差值,确认偏差在允许范围内。

六、接口设计检查表

检查项要求示例
命名规范层级统一,不含空格和特殊字符Line1/Station3/CycleTime
采样与发布按信号类型区分,避免一刀切节拍50ms,报警队列深度5
时间戳保留SourceTimestamp和ServerTimestampUTC入库,原始时区留存
质量码每条记录携带Good/Bad/Uncertain超量程标记Bad
断线缓存边缘网关本地缓存,恢复后补传缓存≥30分钟
批量写入数据库接口批量提交500ms或200条

完成上述设计后,虚拟验收系统才能在数据层面具备可复现、可追溯、可判定的基础。接口不是一次性工作,而应随产线配置变更同步更新节点映射和清洗规则,否则验收结论会逐渐偏离实际状态。