4. 数据采集层设计
数据采集层是正反向追溯体系的“神经末梢”。追溯链能否成立,首先取决于采集层能否在正确的工位、正确的时刻,把正确的对象标识与过程参数绑定在一起。本节围绕五类典型采集设备——传感器、扫码枪、PDA、PLC、边缘网关——说明它们各自承担什么角色、如何接入、数据如何规范化,以及如何保证“采集到的数据能用于追溯”而不是只用于现场显示。
一、五类设备的职责边界
追溯采集不是把所有设备都接进来就行,关键是分清每类设备在追溯链中的定位。传感器负责采集连续量或状态量(温度、压力、扭矩、转速、到位信号),它本身不携带物料身份,必须与批次或工单绑定才有追溯意义。扫码枪负责在固定工位读取一维码/二维码,把物料、托盘、载具的身份写入当前工序记录,是“身份锚点”。PDA 用于移动场景,如仓库收发货、线边配送、返修工位,兼具扫码与人工录入能力。PLC 是产线控制核心,掌握设备运行状态、节拍、报警和工艺参数,是过程数据的“第一现场”。边缘网关则是采集层的汇聚与规范化节点,负责协议转换、时间对齐、数据清洗和断网缓存。
二、接入方式与协议选择
传感器接入分两类:模拟量(4-20mA、0-10V)和数字量/总线(IO-Link、Modbus RTU)。模拟量接入 PLC 模拟量模块或远程 IO,再由 PLC 统一上传;IO-Link 传感器可直接输出带设备身份和诊断信息的过程数据,更适合需要追溯传感器自身状态的场景。扫码枪通常以 USB-HID 或虚拟串口方式接入工位终端,也可通过网口以 TCP 客户端方式直连网关。PDA 通过 WiFi 调用后端接口,离线时本地暂存。PLC 接入以 Modbus TCP、Profinet、EtherNet/IP 为主,网关作为客户端周期性读取寄存器或订阅变量。边缘网关向下兼容多种协议,向上统一以 MQTT/HTTPS 上报 JSON 报文。
三、数据规范:让采集数据可追溯
采集层最容易出问题的地方不是“接不上”,而是“接上了但对不上”。因此必须约定统一的数据规范。核心字段包括:对象标识(物料码、托盘码、工单号)、时间戳(事件发生时间,精确到毫秒,统一 NTP 对时)、工位/设备编号、参数名与参数值(含单位)、质量状态(OK/NG/待判)、数据来源(哪类设备、哪个通道)。
编码规则要唯一且可解析。例如物料码采用“品类码+日期+流水号”,托盘码采用固定长度唯一位;工位编号与产线布局一致,避免同一工位多个叫法。时间基准必须统一:PLC 扫描周期、扫码枪触发时刻、传感器采样时刻可能相差几十到几百毫秒,网关需以事件时间为准做对齐,而不是以接收时间为准。
示例:某装配工位一次采集报文(JSON)
{
"station": "ASM-03",
"device": "scanner-01",
"event_time": "2025-03-18T09:42:17.326+08:00",
"object": {
"type": "pallet",
"code": "PLT2025031800042"
},
"params": [
{"name": "torque", "value": 12.6, "unit": "N·m", "status": "OK"},
{"name": "angle", "value": 92.4, "unit": "°", "status": "OK"}
],
"source": "PLC-S7-1200",
"quality": "OK"
}
这份报文的关键在于:对象标识、时间、参数、质量状态四者齐全,且参数带单位。缺少任何一项,后续正向追溯(从原料查成品)或反向追溯(从成品查原料)都会断链。
四、采集触发与绑定逻辑
采集不是持续不断地上传所有数据,而是围绕“事件”触发。典型事件包括:扫码枪读到托盘码、PLC 检测到工位到位信号、传感器采集到关键工艺参数、PDA 提交收发货记录。触发后,网关把同一时刻的对象标识与过程参数绑定为一条追溯事件。
以装配工位为例:托盘到位 → PLC 输出到位信号 → 网关触发采集 → 扫码枪读取托盘码 → PLC 读取扭矩值 → 网关组装报文并上报。若扫码失败或扭矩超差,质量状态置为 NG,同时触发报警。这样,追溯记录不仅记录“做了什么”,还记录“做得合不合格”。
实操建议:先定义事件类型清单,再为每类事件确定触发源、绑定对象、必填参数和质量判定规则。不要先接设备再想数据怎么用,否则很容易出现“数据很多但追溯时找不到关键字段”的情况。
五、异常处理与数据完整性
采集层必须考虑断网、丢包、重复上报和设备离线。边缘网关应具备本地缓存队列,断网时数据落盘,恢复后按时间顺序续传,并支持幂等去重(以事件 ID 或“工位+时间+对象码”作为唯一键)。对于扫码失败,应记录失败事件而非直接丢弃,便于后续排查是码质量问题还是操作问题。对于传感器超量程或 PLC 通信超时,应标记数据质量位,而不是用默认值填充。
注意:不要用“接收时间”代替“事件时间”。如果网关缓存后补传,接收时间会严重偏离实际发生时间,导致追溯链中工序顺序错乱。时间戳必须在设备侧或网关采集瞬间生成。
六、接入检查清单
| 检查项 | 要求 | 判断依据 |
|---|---|---|
| 对象标识 | 每次事件必须携带唯一对象码 | 报文 object.code 非空且可解析 |
| 时间戳 | 事件时间精确到毫秒,统一时区 | 与 NTP 偏差小于 100ms |
| 参数单位 | 每个参数带单位与量纲 | params[].unit 非空 |
| 质量状态 | 每条记录有 OK/NG/待判 | quality 字段存在且取值合法 |
| 断网续传 | 断网期间数据不丢失 | 恢复后补传记录数与缓存数一致 |
| 重复上报 | 同一事件不重复入库 | 唯一键去重后数量正确 |