边缘 AI 时间同步(NTP / PTP)与事件时间戳可执行手册
调研日期:约 2026-10-25(Asia/Shanghai)
定位:站内边缘 AI 网关、多路相机、MCU 传感、MQTT 事件与 录波 / SOE / 104 的时钟对齐;保证 Schema 字段 ts 可信、可追溯。
上游衔接:edge-ai-event-schema-acceptance.md、edge-ai-mqtt-hardening-offline-buffer.md、edge-ai-substation-gateway-bom.md、edge-ai-mcu-tinyml-sensing-cookbook.md、edge-ai-multistream-rtsp-scheduling.md、edge-ai-d60-d90-acceptance-checklist.md。
工具以 chrony、linuxptp(ptp4l / phc2sys / timemaster) 公开文档为准;站端 GPS/北斗接收机与调度时钟型号 unknown(以运维现网为准)。不确定处标 unknown。
0. 一句话结论
边缘 AI 必须有站内可追溯时钟:最低 NTP/SNTP(chrony) 对站控/管理网 NTP;有条件上 PTP(IEEE 1588,ptp4l)+ GPS/北斗。事件 Schema 的 ts 建议 UTC(带 Z)或带显式偏移,并可选上报 clock_quality。时钟跳变、断 NTP 要告警;禁止把未同步、大幅跳变后的事件当金标准对标 SOE。中国大陆 无夏令时,禁止本地脚本按 DST 改钟。
1. 为何要对时(硬动机)
| 场景 |
错时后果 |
可接受量级(站端经验目标,非标准承诺) |
| 多路 RTSP 相机检出合并 |
同场景多路框时间错位 → 误关联、难例错配 |
站内相对偏差 ≤100 ms(视觉告警);录波级须更严 |
| MCU 振动/AFCI 窗 + 网关二次确认 |
特征窗与视频帧对不齐 → 复标失败 |
MCU↔网关 ≤50~200 ms(视串口/MQTT 缓冲) |
MQTT events ↔ 104/SOE |
主站 SOE 与 AI 事件无法交叉追溯 |
与站控时钟 ≤1 s(最低);有 PTP 时目标 ≤1~10 ms 量级 |
| 主动学习难例抽帧 |
错 ts 抽到错误前后文 → 脏标污染 A 轨 |
抽帧窗口依赖可信 ts |
| 审计 / 事故反查 |
无法证明「告警时刻」与一次设备动作先后 |
无可信时钟 = 证据链断裂 |
红线
| # |
红线 |
说明 |
| T1 |
上电未同步不得冒充金标准 |
clock_quality 差时事件默认 quality=suspect,禁止写进验收金标准集 |
| T2 |
禁止跨保用 AI 钟 |
AI VLAN 时钟与保护网 GPS/PTP 可同源参考,但禁止经 MQTT/AI 路径改保护装置钟 |
| T3 |
禁止容器自改主机钟无审计 |
容器内 chronyd 若碰主机时钟须权限与审计;推荐主机管钟、容器读系统钟 |
| T4 |
中国站禁止 DST 逻辑 |
不启用夏令时规则;Asia/Shanghai 固定 UTC+8 |
2. 方案分层(选型与落地)
2.1 分层总表
| 层级 |
技术 |
典型精度量级 |
适用 |
默认建议 |
| L0 最低 |
SNTP / NTP 客户端(chrony 或 systemd-timesyncd) |
数十 ms~数百 ms(跨 VLAN/WAN 更差) |
所有边缘盒 |
必做 |
| L1 站内 NTP |
站控 / 管理网 NTP 服务器(或调度下发 NTP) |
数 ms~数十 ms |
多盒同站对齐 |
试点必做 |
| L2 PTP |
IEEE 1588-2008/2019,ptp4l + phc2sys |
亚 ms~数十 μs(硬件时间戳) |
与录波/SOE/交换机 PTP 域对齐 |
有条件(B/C 档、要与录波对标时) |
| L3 GNSS |
GPS / 北斗 接收机 → 站钟 → NTP/PTP Grandmaster |
与卫星钟同源 |
变电站主钟已有则接入 |
优先 跟站钟,边缘盒不做独立卫星钟 |
| L4 组合 |
timemaster(ptp4l+phc2sys → chrony SOCK)或 chrony 以 PTP 为参考、NTP 为后备 |
取优 |
要 PTP 精度又要 NTP 韧性 |
推荐组合 |
2.2 主机:chrony 最低配置要点
- 安装:
chrony(Debian/Ubuntu 常见包名);禁用与 systemd-timesyncd 双跑(二选一,默认 chrony)。
- 指站内 NTP:
server <站控NTP> iburst;可选公网仅作 运维备路(生产站内常禁外网)。
- 常用核验:
chronyc tracking(参考源、Last offset、RMS offset、Leap status);chronyc sources -v。
- 硬件时间戳:
ethtool -T ethX 确认 HW TX/RX;chrony hwtimestamp 勿与同口 ptp4l 抢 PHC(冲突时分口或走 timemaster)。
- 步进 vs 渐变:大偏差时 chrony 可 step;生产建议配置 告警阈值(见 §4),避免静默大跳。
2.3 PTP:ptp4l / phc2sys / timemaster
| 组件 |
作用 |
要点 |
| ptp4l |
Ordinary/Boundary/Transparent Clock |
clientOnly 边缘从钟常见;domainNumber 与站域一致;优先 硬件时间戳 NIC |
| phc2sys |
PHC ↔ 系统钟 |
把网卡 PHC 同步到 CLOCK_REALTIME,或反向按站设计 |
| timemaster |
一键编排 ptp4l + phc2sys + chronyd |
PTP 作 SOCK 参考、NTP 作后备;适合「PTP 优先、断 PTP 仍能 NTP」 |
| pmc |
查询 PTP 状态 |
监控 Grandmaster 是否存在、偏移(偏移对象常是 PHC,不等于系统钟,须分清) |
站端注意:
- 域号 / Profile 跟运维现网(电力站常见专用 profile,具体编码 unknown,以站钟文档为准)。
- AI 网关默认 Ordinary Clock 从钟,不做站级 Grandmaster。
- 与录波装置同 PTP 域时,才能谈「ms 级对标」;仅 NTP 时验收写清「秒级对齐」。
2.4 容器与板级
| 部署 |
推荐 |
禁止 / 慎用 |
| 裸机 / Yocto / Debian 板 |
主机 chronyd(+ 可选 ptp4l) |
多容器各自改钟 |
| Docker / K8s 边缘 |
主机管钟;容器读系统时间;需要时挂载 /etc/localtime 只读 |
特权容器随意 CAP_SYS_TIME 无审计 |
| MCU |
无完整 NTP 栈时:上电后由网关 授时报文 或相对序号;事件带 ts_gateway 与 ts_mcu_mono |
假装 MCU RTC 已与站钟绝对对齐且不声明质量 |
| 相机 |
优先 网关打戳(解码/推理时刻);ONVIF 相机 NTP 若可用可作辅 |
仅信相机 OSD 墙钟且无质量字段 |
3. 事件字段:ts 与 clock_quality
3.1 ts 约定(对齐 Schema)
| 约定 |
推荐 |
说明 |
| 序列化 |
RFC 3339 |
例:2026-10-25T01:00:00.123Z 或 2026-10-25T09:00:00.123+08:00 |
| 首选 |
UTC + Z |
跨站、跨时区汇聚最省事;主站展示再转 Asia/Shanghai |
| 备选 |
带显式偏移 |
若全站固定 +08:00,须在设备档案写明「设备时区=Asia/Shanghai」 |
| 禁止 |
无时区裸字符串 |
如 2026-10-25 09:00:00 无偏移 → 审计歧义 |
| 语义 |
事件发生时刻 |
检出/窗结束时刻;另可有 ts_publish(MQTT 发出时刻) |
建议字段(可与现有 Schema 扩展兼容):
{
"event_code": "PPE_VIOLATION",
"ts": "2026-10-25T01:00:00.123Z",
"ts_publish": "2026-10-25T01:00:00.180Z",
"clock_quality": {
"sync_state": "sync",
"source": "ptp+ntp",
"offset_ms": 2.5,
"max_error_ms": 20,
"leap": "ok",
"last_sync_age_s": 12
},
"quality": "suspect"
}
3.2 clock_quality 建议枚举
sync_state |
含义 |
对事件 quality 的默认影响 |
sync |
有有效参考且偏移在阈内 |
不强制降级(仍可因业务为 suspect) |
holdover |
刚丢参考,短时保持 |
建议标注;超阈则降 suspect |
unsync |
未同步 / 启动中 |
强制业务 quality=suspect 或丢弃入金标准路径 |
step_recent |
近 N 分钟发生过大步进 |
强制 suspect;难例抽帧需人工确认窗口 |
source 例 |
说明 |
ntp |
仅 chrony/NTP |
ptp |
仅 PTP→系统钟 |
ptp+ntp |
timemaster / 组合 |
manual / none |
人工或未配 → 高风险 |
阈值建议(可配置,非标准):|offset_ms| > 100 视觉告警降级;> 1000 与 SOE 对标任务冻结。
4. 故障模式:检测与告警
| 故障 |
检测 |
告警 / 动作 |
| 断 NTP |
chronyc tracking 无 reachable;last_sync_age_s 超阈(如 >600 s) |
事件码建议 CLOCK_UNSYNC(ops);MQTT telemetry 上报;新事件 unsync |
| 断 PTP / 无 GM |
pmc/ptp4l:grandmaster 不存在;或 phc2sys 失败 |
切 NTP 后备(若已配);source 降级;告警 |
| 时钟跳变(step) |
chrony 日志 / 自采「连续两次墙钟差 vs monotonic」 |
step_recent;可选暂停主动学习自动入轨 N 分钟 |
| 频率漂移过大 |
chrony rms offset / skew 持续恶化 |
运维工单;检查晶振、温变、虚拟化 |
| 容器时区错 |
date 与站控差整点倍数 |
部署检查单项;镜像钉 TZ=Asia/Shanghai 仅用于显示,存储仍用 UTC |
| 夏令时误配 |
tzdata 非中国规则被误开 |
中国站 禁止 DST;CI/镜像扫描异常 zone |
| MCU 相对钟 |
网关授时丢失 |
仅用 ts_gateway;MCU 单调计数保留作辅 |
与 MQTT 衔接:运维类走 edgeai/.../events/ops 或 telemetry 扩展,禁止进保护遥控通道。断时钟 不得阻塞推理(同「断 MQTT 不堵」原则)。
5. 两周落地清单
| 日 |
动作 |
产出 |
| D1 |
盘点站控 NTP/PTP/GNSS 入口、VLAN、域号 |
时钟源一页纸 |
| D2 |
边缘盒装 chrony,指向站内 NTP;禁 timesyncd 双跑 |
chronyc tracking 截图 |
| D3 |
Schema 落地:ts RFC3339;扩展 clock_quality |
样例 JSON + 校验 |
| D4 |
遥测:周期上报 offset / sync_state;告警阈 |
MQTT telemetry 字段表 |
| D5 |
多路相机:统一 网关打戳;抽测两路相对差 |
相对偏差记录 |
| D6 |
MCU:定义授时或 ts_gateway 规则 |
MCU↔网关时序图 |
| D7 |
注入故障:断 NTP ≥10 min |
确认推理不堵 + CLOCK_UNSYNC |
| D8 |
(可选)有 PTP 口:ptp4l clientOnly + phc2sys 或 timemaster |
PMC/chrony 状态 |
| D9 |
与 104/SOE 人工对表 10 条事件 |
偏差表(写明 NTP 或 PTP) |
| D10 |
BOM 勾选:网卡是否 HW timestamp、是否需 PTP 许可交换机 |
BOM 修订 |
| D11 |
容器镜像:去掉随意改钟;文档写「主机管钟」 |
部署说明 |
| D12 |
写入 D60/D90:时钟门禁项 |
检查单勾选 |
| D13 |
运维手册:跳变、换 NTP、域号变更 |
Runbook |
| D14 |
复盘:阈值固化、红线进验收 |
签字版 |
6. 与 BOM / Schema / MQTT 衔接
| 文档 |
衔接点 |
| 网关 BOM |
A 档至少 chrony+站内 NTP;B/C 档若对标录波,网卡选 支持 HW timestamp / PTP;GPS 模块默认不上盒、跟站钟 |
| Event Schema |
ts 必填且带时区;clock_quality 可选但 D90 建议必填;unsync/step_recent → 业务 quality 降级规则写入验收 |
| MQTT |
telemetry 带时钟水位;ops 事件 CLOCK_UNSYNC;断 NTP 不堵发布队列策略不变 |
| D60/D90 |
否决例:生产盒长期 unsync 仍宣称与 SOE 毫秒对齐;无 ts 时区;DST 误开 |
| 主动学习 |
抽帧窗口以可信 ts 为准;step_recent 窗口人工复核 |
7. 验收门禁与 SOE / 录波对表(可勾选)
| # |
门禁项 |
通过标准 |
否决 |
| A1 |
生产盒有且仅有一套时钟守护 |
chrony 或 timesyncd 其一;无双跑 |
双守护互相拉扯 |
| A2 |
ts 可解析且带时区 |
RFC 3339;抽样 100 条 100% 合法 |
裸本地时间字符串 |
| A3 |
未同步降级 |
unsync 时业务 quality=suspect 或拒绝入金标准 |
未同步仍标 confirmed |
| A4 |
断 NTP 不堵推理 |
断参考 ≥10 min,解码/NPU FPS 跌落 ≤5%(同 MQTT 门禁精神) |
推理线程因对时阻塞 |
| A5 |
与站控 NTP 偏差 |
连续 1 h 采样,|offset| 中位数达合同档(NTP 档常见 ≤1 s;写清实测) |
宣传「PTP 级」却仅公网 NTP |
| A6 |
(可选)PTP 对表 |
与同域录波/SOE 抽 10 条,偏差分布入报告 |
无同域却写 ms 级验收 |
| A7 |
跳变可观测 |
人为 makestep 大跳后出现 step_recent / ops 告警 |
静默大跳无日志 |
| A8 |
时区 |
显示层 Asia/Shanghai;存储 UTC;无 DST |
启用夏令时规则 |
与录波 / SOE 对表实操(最小)
- 选同一时间窗:人工触发可观测事件(如 PPE 试验帽、电子围栏试闯),同时记下保护/测控 SOE 或录波通道时刻。
- 取 AI MQTT 事件
ts(及可选 ts_publish),计算 Δt。
- 报告写明时钟层级(L1 NTP / L2 PTP)、VLAN、是否同源 GNSS。
- Δt 超合同阈:先查 AI 盒
clock_quality,再查相机 OSD、协议网关缓冲,最后才怀疑模型误检时刻。
二次系统对时规程、保护装置 IRIG-B/PTP 专规以站端为准;本文不展开继电保护专业条款(细节 unknown 处以调度/厂家文档为准)。
8. 参考命令速查(可执行)
# NTP / chrony
chronyc tracking
chronyc sources -v
chronyc makestep # 仅维护窗口;生产慎用,须审计
# NIC 时间戳能力
ethtool -T eth0
# PTP(linuxptp,配置随站域)
# ptp4l -i eth0 -f /etc/linuxptp/ptp4l.conf
# phc2sys -s eth0 -c CLOCK_REALTIME -O 0
# 或 timemaster -f /etc/timemaster.conf
timedatectl status # 确认 NTPSynchronized / Time zone: Asia/Shanghai
具体 conf 键值以发行版与站钟文档为准;上文不绑定单一 vendor profile(unknown 处以运维为准)。
9. 许可与版本钉选(简)
| 组件 |
常见许可(须再核) |
台账 |
| chrony |
GPL-2.0 |
进许可台账 |
| linuxptp(ptp4l 等) |
GPL-2.0 |
进台账;版本钉死 |
| systemd-timesyncd |
LGPL(随 systemd) |
与 chrony 二选一记录 |
本文仅落盘调研手册,不替代站端二次系统/继电保护时钟规程。实施前与运维、保护专业确认 NTP/PTP 域与跨区边界。