跳到主要内容

HA — Historical Access

Historical Access 定义了如何访问服务端 "Historian" 中存储的历史数据. 详细概念见 基础知识 → 历史模型.

配套阅读

5 种 HistoryRead 模式

模式适用SDK API
ReadRawModified (raw)区间内全部点ua.ReadHistory(...)
ReadAtTime指定时刻插值ua.History.ReadAtTime(times)
ReadProcessed (聚合)聚合结果ua.History.ReadProcessed(...)
ReadEvents事件历史ua.History.ReadEvents(...)
ReadRawModified (modified)含修改记录ua.History.ReadModified(...)

HistoryUpdate

操作SDK API
Insert / Replace / Update Dataua.History.UpdateData(nodeId, dvs)
Insert Annotationua.History.InsertAnnotation(...)
Delete by Rangeua.History.DeleteRange(nodeId, start, end)
Delete by Timeua.History.DeleteAtTime(nodeId, times)
Delete Eventsua.History.DeleteEvents(...)

节点 Historizing

Variable 节点的 Attribute 20 (Historizing) 表示是否在记录. AccessLevel 第 2 位 (0x04) 表示 HistoryRead 是否允许.

聚合 (Aggregates)

聚合函数清单 (节选):

  • i=2341 Interpolative
  • i=2342 Average
  • i=2343 TimeAverage
  • i=2344 Total
  • i=2346 Minimum
  • i=2347 Maximum
  • i=2348 MinimumActualTime
  • i=2349 MaximumActualTime
  • i=2350 Range
  • i=2351 AnnotationCount
  • i=2352 Count
  • i=2355 NumberOfTransitions
  • ...

例: "查 24 小时温度的每小时平均":

var values = ua.History.ReadProcessed(
nodeId: "ns=2;s=Temperature",
startTime: yesterday, endTime: today,
aggregateNodeId: "i=2342" /* Average */,
processingIntervalMs: 3_600_000);

性能建议

  • 高频原始数据 (>100Hz) 拉一天就上百万点, 务必用 ReadProcessed 聚合
  • 大区间分多次返回 (ContinuationPoint), SDK 自动处理
  • maxValues 限制单次返回上限, 0 = 不限 (服务端可能强截)

相关链接