3. PI Data Archive核心机制

PI Data Archive 是 AVEVA PI System 的时序数据存储核心,它并不是一个普通的关系数据库,而是一套围绕“测点(PI Point)”和“时间戳—数值”对构建的专用历史库。理解它的数据模型、压缩机制和归档原理,是后续做接口、建点、调优和排障的基础。

一、时间序列数据模型:以 PI Point 为中心

PI Data Archive 中所有数据都归属于某个 PI Point。一个 PI Point 可以理解为一条独立的时间序列通道,它由唯一的 Tag 名称标识,并携带一组属性(Attributes)描述“这条序列是什么、来自哪里、如何存储”。每个数据记录由 时间戳(Timestamp)+ 数值(Value)+ 质量(Quality) 三要素构成,时间戳通常采用 UTC 存储、按客户端时区显示。

PI Point 的命名通常遵循层级化约定,例如 Plant1.Area2.Pump101.Speed,用点号分隔设备层级,便于批量检索和权限管理。数据来源可以是接口采集(Interface)、手动录入、计算点(PI AF Analytics 或 Performance Equation)或外部写入。

二、PI Point 类型与关键属性

PI Point 类型决定了数值的存储格式和取值范围,常见类型如下:

Point Type含义典型用途
Float3232 位浮点一般模拟量,精度要求不高
Float6464 位浮点高精度模拟量、累计量
Int3232 位整数计数、状态码
Digital枚举状态集开关、报警状态
String字符串批次号、文本信息
Timestamp时间值事件发生时刻

除类型外,几个属性直接影响存储与查询行为:Zero 与 Span 定义量程,用于百分比和压缩判断;CompDev(压缩偏差)决定异常检测灵敏度;CompMin 与 CompMax 限制压缩时间间隔;ExcDev、ExcMin、ExcMax 控制异常报告;PointSource 标识数据来源接口;Location1~5 用于接口寻址。这些属性在建点时就要规划好,后期修改会影响历史数据的解释。

三、数据压缩与异常检测

PI Data Archive 的压缩不是“丢弃数据”,而是基于 旋转门压缩算法(Swinging Door) 判断新值是否偏离上一条已存储值超过 CompDev。若未超过,则不落库,仅更新快照;若超过,则写入归档。这样既保留趋势特征,又大幅减少存储量。

异常检测(Exception Reporting)发生在接口侧:接口按 ExcDev 判断采集值是否“异常”,只有异常值才发送给 PI Data Archive。压缩则发生在服务器侧,决定是否真正写入归档。两者配合,形成“接口过滤 + 服务器压缩”的双层机制。

CompDev 与 ExcDev 的取值通常参考量程 Span 的 0.1%~1%。例如 Span=100,CompDev 可设为 0.5,表示变化超过 0.5 才归档。

四、快照与归档原理

每个 PI Point 都有一个 快照(Snapshot),保存当前最新值和时间戳,查询“当前值”时直接读快照,速度极快。快照之外的历史数据按 归档(Archive) 文件存储,归档文件是定长的二进制文件,写满后自动切换到下一个归档。归档文件有 Archive Shift 机制,可通过 Archive Configuration 查看各归档的起止时间和剩余空间。

当查询跨越多个归档时,PI Data Archive 会按时间范围定位到对应归档文件并合并结果。归档文件不可直接编辑,备份和迁移需使用 piarchss 等工具。若归档写满且未配置新归档,数据将无法写入,因此归档规划是运维重点。

PI Data Archive 数据流与存储机制 数据源 PLC / DCS / 手工 接口层 Exception 过滤 (ExcDev) PI Data Archive 快照 Snapshot 最新值 + 时间戳 查询当前值直接读取 压缩判断 Swinging Door |Δ| > CompDev ? 归档 Archive(历史数据) Archive 1 已写满 Archive 2 当前写入 Archive 3 待启用 写入 客户端查询 PI Vision / AF SDK 历史查询 → 定位归档 ExcDev:接口侧异常过滤,减少传输量 CompDev:服务器侧压缩,减少归档写入 快照 = 最新值缓存,归档 = 历史持久化 Archive Shift 自动切换,需提前规划容量

五、建点与调优的实操要点

实际建点时,建议先明确量程和单位,再设置 CompDev。例如一个温度点,Span=200°C,CompDev 取 0.2°C,既能保留趋势又不会写入过多数据。若该点用于报警,ExcDev 应更小,确保异常及时上报。对于累计量(如电量),应使用 Float64 并关闭压缩(CompDev=0),避免累计误差。

# 示例:通过 PI SMT 或 AF SDK 创建 PI Point 的关键属性
Tag          = Plant1.Boiler.Temp
PointType    = Float32
Zero         = 0
Span         = 200
CompDev      = 0.2
ExcDev       = 0.1
PointSource  = OPCInterface
Location1    = 1

归档规划方面,可通过 PI SMT 的 Archive Configuration 查看每个归档的起止时间、大小和剩余空间。若发现当前归档即将写满,应提前创建新归档并确认自动切换正常。定期检查 piarchss 状态和归档文件完整性,是保障历史数据可查的关键。

修改 CompDev 或 PointType 不会自动重写历史数据,已归档的数据仍按原规则存储。若需重新压缩,必须使用 piarchss 或重新采集。

总结来说,PI Data Archive 的核心机制可以概括为:PI Point 定义数据通道,快照提供实时值,压缩决定写入,归档承载历史。掌握这四者的关系,就能在建设与运维中做出合理决策。