跳到主要内容

History 历史 (C)

历史 API 在独立头:

#include <darra_opcua/darra_opcua_history.h>
子页跳转

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_HistoryUpdateDataInsert / Replace / Update / Remove
DarraUa_Session_HistoryDeleteRange按时间段批量删除

时间戳约定

DarraUa_DateTimeint64_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
  • 节点的 AccessLevel bit 4 (HistoryRead) / bit 8 (HistoryWrite) 必须置位
  • 节点 Historizing Attribute (20) 决定是否在记录历史

内存释放统一规则

出参释放
out_values (DataValue 数组)DarraUa_DataValueArray_Delete(arr, count) (一次性)
out_events (Event 数组)DarraUa_EventArray_Delete(arr, count) (一次性)

下一步