2. PI System核心概念回顾

在讨论 PI System 与数据湖分析平台集成之前,需要先把 PI System 内部几个核心组件在集成链路中的位置和数据模型梳理清楚。很多集成方案失败,并不是因为数据湖侧技术不行,而是因为对 PI 侧“谁负责采集、谁负责语义、谁负责对外服务”的边界认识模糊,导致取数口径、时间戳语义和资产维度在两端对不上。本节围绕四个组件展开:PI Data Archive、PI Asset Framework(AF)、PI Interfaces 和 PI Web API,并说明它们在集成中各自承担的角色。

一、PI Data Archive:时间序列的事实来源

PI Data Archive 是 PI System 的时序数据库,存储的是带时间戳的原始测量值,例如 sinusoid 标签在 2024-06-01 08:00:00 的值为 42.7。它的数据模型非常“扁平”:核心对象是 PI Point(标签点),每个点由标签名(Tag Name)唯一标识,附带 Point Type、Engineering Units、Zero、Span 等属性。PI Data Archive 不关心“这个点属于哪台泵、哪条产线”,它只负责按时间存值。

在集成中,PI Data Archive 是事实数据的最终来源。数据湖要获取的原始时序,最终都来自这里。需要特别注意的是它的时间语义:PI 使用 UTC 存储时间戳,但对外展示时按服务器时区或客户端时区转换;同时 PI 支持“快照(Snapshot)”和“归档值(Archive Value)”两种读取方式,前者返回当前最新值,后者返回指定时间区间的历史值。集成时若混用,会出现“同一时间点两次取数结果不同”的现象。

二、PI Asset Framework:把标签点组织成资产

PI AF 建立在 PI Data Archive 之上,解决的是“语义层”问题。它通过 Element(元素)、Attribute(属性)、Template(模板) 和 Hierarchy(层级) 把散落的标签点组织成有业务含义的资产模型。例如一个“泵”Element 可以拥有“入口压力”“出口压力”“运行状态”等 Attribute,每个 Attribute 通过 Data Reference 指向 PI Data Archive 中的具体标签点,也可以指向另一个 Attribute 的计算结果。

AF 在集成中的角色是提供资产上下文和计算能力。数据湖如果只拿到标签点,分析时还需要人工把标签映射到设备;而通过 AF,可以直接按“资产—属性—时间序列”的结构导出数据,天然带上设备层级和属性语义。AF 还支持 Analysis(分析)和 Rollup(汇总),可以在 PI 侧先完成单位换算、状态判断、班次汇总等计算,再交给数据湖,减少下游重复加工。

PI System 核心组件在集成链路中的角色与数据流 现场设备 / DCS / PLC 传感器、控制器、仪表 产生原始过程信号 PI Interfaces 采集接口 / 缓冲 / 断点续传 OPC、Modbus、RDBMS 等 PI Data Archive 时序数据库(PI Point) 时间戳 + 值 + 质量码 PI Asset Framework Element / Attribute / Template 资产层级 + 计算 + 上下文 PI Web API RESTful 接口 / JSON 流式读取 / 批量查询 数据湖分析平台 原始层 / 明细层 / 汇总层 Spark、Flink、SQL 引擎 信号 写入 引用标签点 资产数据 时序数据 REST / JSON 批量抽取 集成关注点 • 时间戳:UTC 存储,读取时注意时区转换 • 质量码:Good / Bad / Questionable 需保留 • 资产维度:优先通过 AF 导出,避免手工映射 • 接口方式:Web API 适合增量,AF SDK 适合批量

三、PI Interfaces:采集入口与缓冲

PI Interfaces 是 PI System 与现场数据源之间的桥梁,常见类型包括 OPC DA/UA 接口、Modbus 接口、RDBMS 接口、CSV 接口等。它的职责是把外部协议的数据转换成 PI Point 写入 PI Data Archive。在集成架构中,PI Interfaces 通常不直接面向数据湖,但它的稳定性决定了上游数据是否完整。

实际工程中需要关注接口的缓冲机制。当 PI Data Archive 不可达时,接口会把数据暂存在本地缓冲区,恢复后补写。这意味着数据湖在某个时间段可能读到“迟到”的数据。如果数据湖侧做了基于时间窗口的聚合,必须考虑这种延迟写入,否则会出现“当时算出来是空的,过一会儿又有值”的情况。建议在集成时记录每个批次的抽取水位线(watermark),而不是简单按当前时间拉取。

四、PI Web API:面向集成的服务出口

PI Web API 是 PI System 对外提供 RESTful 服务的组件,它把 PI Data Archive 和 PI AF 的能力封装成 HTTP 接口,返回 JSON 格式数据。典型端点包括:/piwebapi/streams/{webId}/recorded 读取历史值,/piwebapi/streams/{webId}/value 读取当前值,/piwebapi/assetdatabases 获取 AF 数据库列表。它支持按 WebId 定位对象,WebId 是 AF 元素、属性或 PI Point 在 Web API 中的唯一标识。

在集成中,PI Web API 是最常用的数据出口,尤其适合数据湖侧用 Python、Java 或调度工具做增量抽取。它的优势是跨平台、无需安装 PI 客户端;局限是批量读取大量标签点时性能不如 AF SDK,且默认有请求频率限制。因此实际方案中常见“Web API 做增量、AF SDK 做全量初始化”的组合。

五、四个组件在集成中的协作关系

把四个组件串起来看:PI Interfaces 负责把现场信号写入 PI Data Archive;PI Data Archive 保存原始时序;PI AF 在时序之上建立资产模型和计算属性;PI Web API 把时序和资产数据以 REST 方式暴露给数据湖。数据湖侧拿到的每一条记录,理想情况下应同时包含:时间戳、值、质量码、PI Point 名称、所属资产路径、属性名称。缺少资产路径,后续分析就要靠人工映射;缺少质量码,就无法区分真实值和无效值。

集成设计时建议先明确“以 AF 路径为主键,还是以 PI Point 名为主键”。若以 AF 路径为主键,资产重命名或移动会导致主键变化,需要在数据湖侧保留历史映射;若以 PI Point 名为主键,则资产语义需要额外关联表维护。两种方式各有取舍,应在方案初期确定并保持一致。

六、数据模型对照与集成注意点

组件 核心数据模型 集成中的角色 常见注意点
PI Data Archive PI Point(标签点)+ 时间戳 + 值 + 质量码 原始时序事实来源 UTC 时区、快照与归档值区别、压缩存储
PI AF Element / Attribute / Template / Hierarchy 资产语义与计算层 Attribute 可能来自计算而非标签点,需确认 Data Reference
PI Interfaces 接口实例 + 扫描周期 + 缓冲队列 现场采集与断点续传 缓冲补写导致数据迟到,需按水位线抽取
PI Web API WebId + JSON 响应 + REST 端点 对外数据服务出口 频率限制、批量性能、WebId 稳定性