数字孪生历史回放怎么做:时间轴背后的数据要求
数字孪生历史回放需要回答“在指定时刻,设备在哪里、处于什么状态、当时有哪些事件”。时间轴只是入口,能否准确回放取决于历史记录、对象映射、时间口径和版本。只有当前值的数据不能自动还原过去,也不应靠动画补出缺失事实。
阅读目录5 个章节
先选择要还原画面,还是还原业务状态
如果只要回看当时屏幕显示了什么,可评估录屏;如果要拖到某一时刻查询设备、筛选告警或比较区域,就需要可查询的历史数据。两者的交付不同:录像保存画面,状态回放则要让三维对象、列表、趋势与事件详情使用同一个目标时间。
首期可只覆盖一个区域、一类设备和明确时段,写清需要回放的位置、运行状态、告警和处理动作。没有历史来源的字段标为不可还原,不应拿当前状态套到过去。已经删除或改名的设备,也要保留能解释历史记录的对象标识。
把发生时间与系统知道的时间分开
Apache Flink 的时间处理说明区分事件发生时间与处理时间,并说明乱序和迟到记录需要明确处理规则。项目即使不用 Flink,也应在接口中保留业务发生时间及平台接收或登记时间,约定时区、精度和同一时刻的排序依据。
假设设备在 10:00 停机,网络恢复后 10:08 才收到记录。按“事后完整记录”回放,10:00 后应显示停机;按“当时系统所见”复盘,10:00 至 10:08 可能只能显示最后已知状态或未知。两种视角都有用途,应由复盘目标决定,不能悄悄用后到数据改写当时操作人员看到的事实。
选择历史查询方式,并保留映射版本
如果已有历史数据库能按设备与时刻查询状态,可先复用;只有需要重建完整业务变化时,再评估事件记录与快照。Microsoft 的事件溯源模式说明介绍了按事件重建状态,以及用快照减少重放范围的方法,同时指出其复杂度。不必为了增加一条时间轴,就重做整套业务系统。
对一次跳转,应有明确的初始状态,再应用截至目标时间的变化;反向拖动不能继续沿用未来状态。快照要关联数据边界、对象映射和规则版本。设备换位、楼层调整、告警阈值变化后,项目需决定回放旧场景,还是在现有场景显示历史数据,并在界面说明所用版本。
连续位置数据可以按约定插值,让移动过程易读,但不能把推算轨迹当成测量事实。Cesium SampledProperty提供插值及外推设置;报警、开关、工单状态等离散变化应按明确事件切换,长时间缺测也要保留缺口。
补录和纠错不能让同一段回放无法解释
人工补录应记录实际发生时间、登记时间、操作者和原因;纠错记录还应能关联原记录。若回放用于正式复盘,应保存所用数据截止时间或修订版本。这样同一个时间段在补录前后得到不同画面时,能够解释新增了什么,而不是只覆盖旧值。
重复收到同一事件不能让计数增加两次;同一设备的乱序变化也要按既定规则重建。回放查询与实时控制应分离,播放历史告警时不重新派单、不再次发送通知、不触发设备控制。返回实时模式后重新取得当前状态,不能把回放位置上的旧数值继续当作实时值。
用小型已知样本核对回放结果
由业务人员确认一组带预期结果的记录,再验证连续播放和直接跳转是否得到一致状态。不要只录一段流畅动画作为验收证据。下列样本可纳入首期测试,数量和时间跨度按实际范围约定。
| 测试样本 | 操作 | 应核对结果 |
|---|---|---|
| 一次启停事件 | 跳到事件前后并反向拖动 | 模型、详情和列表在同一时刻一致 |
| 重复、乱序和迟到记录 | 重新载入同一时段 | 不重复计数,补录视角符合约定 |
| 缺测或无历史对象 | 跳到缺口与范围边界 | 明确未知,不凭空生成状态 |
| 模型或规则变更 | 查看变更前后时段 | 版本可解释,对象没有错误对应 |
| 返回实时模式 | 停止回放并刷新当前状态 | 历史消息不触发新操作,当前数据正确 |
历史查询也应按当前访问者的授权核验。设备曾属于其他区域时,是否允许查看其旧记录需单独约定;能看当前设备,不自动等于能读取它的全部历史。
交付时保留样本、预期状态、查询条件、数据及规则版本和结果记录,并约定历史保留范围、查询权限和大跨度跳转的响应目标。数据接口与模型更新后,用同一组样本复验,才知道变化是否影响了原有复盘能力。