History 历史 (C)
历史 API 在独立头:
#include <darra_opcua/darra_opcua_history.h>
子页跳转
- 区间内全部原始点请参考 ReadRaw.
- 含修改记录请参考 ReadModified.
- 指定时间点的内插值请参考 ReadAtTime.
- 聚合 (Avg / Min / Max / TimeAverage / ...) 请参考 ReadProcessed.
- 历史事件 (报警 / 条件) 请参考 ReadEvents.
- 写历史 (Insert / Replace / Update) 请参考 HistoryUpdate.
- 删除历史请参考 Delete.
5 种 HistoryRead 模式
| 模式 | API | 说明 |
|---|---|---|
| Raw 原始数据 | DarraUa_Session_HistoryReadRaw | 区间内全部点 |
| Modified 含修改记录 | DarraUa_Session_HistoryReadModified | 区间内含修改记录 |
| AtTime 指定时间点 | DarraUa_Session_HistoryReadAtTime | 给定时间戳的内插值 |
| Processed 聚合 | DarraUa_Session_HistoryReadProcessed | 聚合 (Avg / Min / Max / ...) |
| Events 事件历史 | DarraUa_Session_HistoryReadEvents | 历史事件 (报警 / 条件) |
HistoryUpdate
| API | 用途 |
|---|---|
DarraUa_Session_HistoryUpdateData | Insert / Replace / Update / Remove |
DarraUa_Session_HistoryDeleteRange | 按时间段批量删除 |
时间戳约定
DarraUa_DateTime 是 int64_t, 单位 100ns 自 1601-01-01 UTC (与 Windows FILETIME 同). 时间戳一律 UTC, 不要传本地时间.
/* 当前 UTC → DarraUa_DateTime */
#include <time.h>
DarraUa_DateTime now_to_ft(void)
{
return (DarraUa_DateTime)((int64_t)time(NULL) * 10000000LL + 116444736000000000LL);
}
通用前提
- 服务端必须支持 Historian, 否则统一返回
BadHistoryOperationUnsupported - 节点的
AccessLevelbit 4 (HistoryRead) / bit 8 (HistoryWrite) 必须置位 - 节点
HistorizingAttribute (20) 决定是否在记录历史
内存释放统一规则
| 出参 | 释放 |
|---|---|
out_values (DataValue 数组) | DarraUa_DataValueArray_Delete(arr, count) (一次性) |
out_events (Event 数组) | DarraUa_EventArray_Delete(arr, count) (一次性) |