4. PI Data Archive 入门

PI Data Archive 是 PI System 的时序数据核心,负责接收、归档、压缩并对外提供过程数据。理解它的第一步,是分清“点位”“标签”“属性”这三个常被混用的概念,再理解数据从接口写入到落盘归档的完整链路。

一、核心概念:点位、标签与属性

在 PI Data Archive 中,点位(Point)是数据存储的最小逻辑单元,每个点位对应一个可被采集和查询的测量值。点位在系统中由 Tag Name(标签名)唯一标识,例如 BA:FI:101.PV。日常口语里说的“标签”,通常就是指这个点位名称。

点位本身不是单一数值,而是由一组属性(Attributes)描述其身份、来源、量程、单位和归档行为。常见属性包括:

  • PointSource:数据来源接口,如 R、O、I 等,决定由哪个接口写入。
  • PointType:数据类型,如 Float32、Float64、Int32、Digital、String。
  • Location:接口内的位置编号,常与设备通道对应。
  • Zero / Span:量程下限与上限,用于工程单位换算和显示。
  • EngUnits:工程单位,如 ℃、kPa、m³/h。
  • CompDev / CompMin / CompMax:压缩偏差与压缩时间参数,决定归档密度。
  • ExcDev / ExcMin / ExcMax:例外偏差与例外时间参数,决定接口上报频率。
  • Shutdown / Step / TypicalValue:停机值、阶跃标记与典型值,影响压缩判断。
记忆要点:点位是容器,标签是名字,属性是行为规则。查询历史数据时用的是标签名,但数据是否被归档、归档多密,取决于属性中的压缩与例外参数。

二、数据归档、压缩与存储机制

PI Data Archive 采用“例外 + 压缩”两级过滤机制,这是它能在有限磁盘上保存海量时序数据的关键。

例外(Exception)发生在接口侧。接口按扫描周期读取设备值,只有当前值与上一次上报值之差超过 ExcDev,或超过 ExcMax 时间未上报时,才把数据发给 PI Data Archive。例外过滤减少了网络与写入压力。

压缩(Compression)发生在归档侧。PI Data Archive 收到快照值后,用旋转门压缩算法判断该点是否偏离当前归档趋势线超过 CompDev。若未超过,则只更新快照,不写入归档;若超过,则把前一个点写入归档,并开始新的趋势线。这样,平稳过程只保留少量归档点,突变过程则被完整保留。

归档后的数据以专有时序结构存储在归档文件(Archive)中,配合事件队列、快照和归档文件轮转机制,实现高吞吐写入与快速时间范围检索。查询时,PI Data Archive 按时间区间定位归档文件,再按标签索引读取数据点。

PI Data Archive 数据链路:例外过滤 → 快照 → 压缩归档 → 查询 现场设备 PLC / DCS / RTU 原始测量值 接口例外过滤 ExcDev / ExcMin / ExcMax 变化超限才上报 快照 Snapshot 当前最新值 内存中的实时状态 旋转门压缩 CompDev / CompMin / CompMax 偏离趋势线才归档 归档文件 Archive 按时间轮转的时序存储 标签索引 + 时间区间定位 查询与消费 PI SDK / PI Web API / PI Vision 按标签与时间范围取数 例外过滤减少上报量,压缩减少归档量,两者共同决定历史数据的密度与精度

三、基本查询方式

PI Data Archive 对外提供多种查询入口,常见方式如下:

查询方式 典型工具 适用场景
PI SDK / AF SDK C#、VB.NET 程序 定制应用、批量取数、写入控制
PI Web API REST / JSON Web 前端、跨平台集成
PI SQL / OLEDB SQL 客户端、报表工具 关系型报表、历史数据导出
PI Vision / PI ProcessBook 图形化趋势 运行监视、趋势分析
PI DataLink Excel 插件 离线分析、报表制作

以 PI Web API 为例,查询某标签在指定时间区间的记录值,请求形式如下:

GET /piwebapi/streams/{webId}/recorded
    ?startTime=2024-06-01T00:00:00Z
    &endTime=2024-06-01T08:00:00Z
    &maxCount=1000

返回 JSON 中包含 Timestamp、Value、Good 等字段,
Good 表示数据质量,常见值包括 Good、Bad、Questionable。

若使用 PI SDK,则通常先按标签名获取 PIPoint,再调用 RecordedValues 或 InterpolatedValues 方法。前者返回实际归档点,后者按固定间隔插值,适合做等间隔趋势对比。

四、案例场景:一个温度点位的归档过程

假设标签 REACTOR1.TEMP 的 ExcDev=0.5、CompDev=0.2,接口每 1 秒扫描一次。当温度从 120.0 ℃ 缓慢升到 120.3 ℃ 时,接口侧变化未超过 0.5,不上报;当升到 120.6 ℃ 时,超过例外偏差,上报到快照。归档侧判断该点偏离当前趋势线未超过 0.2,仍不写归档;直到温度升到 121.0 ℃,偏离超过压缩偏差,才把前一个归档点写入 Archive。最终,一段缓慢升温过程只留下少量归档点,而快速波动段则被密集记录。

关键结论:例外决定“发不发”,压缩决定“存不存”。调大 ExcDev 和 CompDev 可节省存储,但会丢失细节;调小则数据更精细,但归档增长更快。

五、常见误区与复盘

  • 误区一:把标签名当成点位全部。标签名只是标识,真正决定行为的是属性集合。改标签名不等于改数据来源。
  • 误区二:认为所有采集值都会进归档。未通过例外和压缩判断的值只更新快照,不会写入历史归档。
  • 误区三:查询不到数据就认为数据丢失。先检查时间范围、标签名、PointSource 和压缩参数,再确认归档文件是否在线。
  • 误区四:随意调大 CompDev 节省空间。压缩偏差过大会让趋势线“抄近路”,关键峰值可能被平滑掉,影响报警复盘和工艺分析。

复盘时建议按“接口是否上报 → 快照是否更新 → 压缩是否归档 → 查询条件是否正确”四步排查。掌握这条链路,就能在 PI Data Archive 中既保证数据可用性,又控制存储成本。