read_history_modified
如果服务端允许 HistoryUpdate (修改历史), 数据可能被改过. read_history_modified 拉到所有版本及修改记录, 用于审计 / 法规合规.
前置 / 配套
- 普通读取不带审计请用 read_history (Raw).
- 写历史 / 修改历史请看 update_history.
签名
def read_history_modified(self,
node_id: str,
start_utc: datetime,
end_utc: datetime,
max_values: int = 0,
return_bounds: bool = False) -> List[OpcUaDataValue]: ...
| 参数 | 默认 | 说明 |
|---|---|---|
node_id | — | 目标 NodeId |
start_utc | — | 区间起 (UTC) |
end_utc | — | 区间止 (UTC) |
max_values | 0 (不限) | 单次返回上限 |
return_bounds | False | 是否返回区间边界处的内插值 |
用法
import datetime as dt
today = dt.datetime.now(dt.timezone.utc)
yesterday = today - dt.timedelta(days=1)
modified = ua.read_history_modified("ns=2;s=Temperature", yesterday, today)
for m in modified:
with m:
print(f"{m.source_timestamp.isoformat()}: {m.value} ({m.status.name})")
# 当前 SDK 透出基础 DataValue, ModificationInfo (UserName/ModificationType/ModificationTime)
# 待后续版本暴露
何时用
- 法规合规: GMP / FDA 21 CFR Part 11 等要求"数据可追溯"
- 审计日志: 谁动了关键参数
- 数据修复回滚: 知道改之前的值是什么
服务端要求
- 必须实现 HistoryUpdate
- 必须保留修改历史 (而不是直接覆盖)
- 用户身份必须正确传递 (Username / Certificate Token)