HA — Historical Access
Historical Access 定义了如何访问服务端 "Historian" 中存储的历史数据. 详细概念见 基础知识 → 历史模型.
配套阅读
- 基础知识 — 历史模型 — 5 种 HistoryRead 模式概念
- 快速开始 — History — SDK API 速览
- 示例 — 历史数据导出 — 分批拉 + 导 Excel
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 Data | ua.History.UpdateData(nodeId, dvs) |
| Insert Annotation | ua.History.InsertAnnotation(...) |
| Delete by Range | ua.History.DeleteRange(nodeId, start, end) |
| Delete by Time | ua.History.DeleteAtTime(nodeId, times) |
| Delete Events | ua.History.DeleteEvents(...) |
节点 Historizing
Variable 节点的 Attribute 20 (Historizing) 表示是否在记录. AccessLevel 第 2 位 (0x04) 表示 HistoryRead 是否允许.
聚合 (Aggregates)
聚合函数清单 (节选):
i=2341Interpolativei=2342Averagei=2343TimeAveragei=2344Totali=2346Minimumi=2347Maximumi=2348MinimumActualTimei=2349MaximumActualTimei=2350Rangei=2351AnnotationCounti=2352Counti=2355NumberOfTransitions- ...
例: "查 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 = 不限 (服务端可能强截)