2. 现场故障数据的采集与规范化
故障趋势分析、风险预警和纠正措施,都建立在同一块地基上:现场故障数据是否真实、完整、可对齐。如果数据来源分散、字段含义不一致、时间戳各说各话,后续无论用多复杂的模型,得到的趋势线都只是噪声的放大。本节围绕四类核心数据源——故障事件记录、设备状态参数、维修工单、巡检记录——讲清它们各自承载什么信息、如何统一定义字段、如何对齐时间戳、如何处理缺失值,以及如何做数据质量校验。
四类数据源的分工与互补
这四类数据不是重复采集,而是从不同侧面描述同一台设备的健康状态。故障事件记录回答“发生了什么”:故障现象、发生时刻、影响范围、是否停机、初步原因分类。设备状态参数回答“发生前设备处于什么状态”:温度、振动、电流、压力、转速等连续量,通常来自PLC、DCS或传感器网关,按固定采样周期上报。维修工单回答“人做了什么”:报修时间、到场时间、更换部件、维修措施、完工时间、停机时长。巡检记录回答“日常有没有异常苗头”:巡检点位、检查项、实测值、是否越限、巡检人、巡检时间。
四者的关系可以用一张数据流与时间对齐图来理解:状态参数是高频连续流,故障事件和维修工单是低频离散事件,巡检记录是周期性离散采样。规范化要做的,就是把它们挂到同一条时间轴上,并让设备、点位、故障类型等主数据使用同一套编码。
字段定义:先统一主数据,再谈分析
字段定义的核心不是给每张表加列,而是建立一套主数据编码。至少需要统一三类编码:设备编码、点位编码、故障分类码。设备编码建议采用“厂区-产线-设备类型-序号”的分段结构,例如 P1-L3-PMP-007 表示一厂三线第7号泵。点位编码在设备编码后追加测点标识,如 P1-L3-PMP-007.TEMP 表示该泵的温度测点。故障分类码则按“部件+失效模式”组织,例如 PMP-SEAL-LEAK 表示泵密封泄漏。
字段定义还要明确每个字段的数据类型、单位、取值范围和必填性。以状态参数为例,温度单位统一为摄氏度,振动速度单位统一为毫米每秒,电流单位统一为安培。如果现场既有摄氏度又有华氏度,必须在采集端或接入层完成换算,而不是留到分析阶段再猜。维修工单中的“停机时长”应明确是分钟还是小时,并规定从“报修时间”还是“实际停机时间”起算。
时间戳对齐:三种典型错位
时间戳对齐是规范化中最容易出错的环节。现场常见三种错位:时区不一致,例如PLC使用UTC而工单系统使用本地时间;格式不一致,例如“2024/03/15 08:30”与“2024-03-15T08:30:00+08:00”混用;采集延迟,例如传感器上报时间与网关入库时间相差数秒到数分钟。
处理原则是:所有时间戳统一转换为带时区的ISO 8601格式,并明确以“事件发生时间”而非“入库时间”为准。对于状态参数,如果采样周期为1分钟,而故障事件精确到秒,可将状态参数按分钟聚合后与事件对齐;对于维修工单,报修时间、到场时间、完工时间应分别保留,不要只留一个“维修时间”。
缺失值处理:先判断缺失机制,再选方法
缺失值不能一律删除或一律插值。先判断缺失属于哪种机制:完全随机缺失(如传感器偶发丢包)、随机缺失(如某段时间网络中断)、非随机缺失(如设备停机时传感器不采集)。不同机制对应不同处理策略。
| 缺失场景 | 推荐处理 | 注意事项 |
|---|---|---|
| 单点丢包,前后值正常 | 线性插值或前值填充 | 连续缺失超过3个点应标记 |
| 设备停机期间无数据 | 保留为空并标记“停机” | 不可插值,否则会掩盖停机事实 |
| 巡检记录漏检 | 标记为“未检”,不参与统计 | 与“检查正常”严格区分 |
| 工单字段未填 | 回查原始记录或标记待补 | 不可用默认值静默填充 |
数据质量校验:四类规则
规范化完成后,必须做质量校验,否则脏数据会直接污染趋势分析。建议至少设置四类规则:
- 范围校验:温度是否在-20~200℃之间,振动是否在0~50 mm/s之间,超出范围标记为可疑。
- 逻辑校验:完工时间不能早于报修时间,故障发生时间不能晚于工单创建时间。
- 一致性校验:同一设备同一时刻的状态参数不应出现两个矛盾值;同一工单的设备编码应与故障事件一致。
- 完整性校验:关键字段(设备编码、时间戳、故障分类)缺失率超过阈值时,该批次数据应退回采集端整改。
一个可复用的规范化检查清单
以下清单可直接用于现场数据接入前的自检:
- 设备编码是否已与资产台账对齐,是否存在一物多码?
- 所有时间戳是否已转换为带时区的ISO 8601格式?
- 状态参数的单位是否统一,换算关系是否记录在元数据中?
- 缺失值是否已分类标记,停机、未检、丢包是否可区分?
- 故障分类码是否覆盖现场实际发生的故障类型,是否有“其他”兜底?
- 维修工单的报修、到场、完工三个时间点是否完整?
- 巡检记录中的“未检”与“正常”是否严格区分?
- 质量校验规则是否已配置,异常数据是否有回退和告警机制?