4. PI System实时数据接口选型

在MES与PI System集成项目中,接口选型往往比数据建模更早决定项目成败。MES侧通常需要三类数据:一是工单执行过程中的实时工艺参数(温度、压力、流量、批号关联值),二是批次结束后用于质量放行的历史曲线与统计值,三是用于看板与OEE计算的聚合结果。不同接口在协议、部署位置、调用方式、吞吐能力和授权成本上差异明显,选错接口会导致后期出现性能瓶颈、授权超支或架构返工。

四类接口的本质差异

PI Web API是RESTful风格的HTTP接口,基于PI AF和PI Data Archive对外暴露资源,支持JSON、OData查询和批量读取。它天然适合跨网络、跨语言调用,MES若采用Java、.NET Core或前端框架,都可以直接通过HTTP访问,无需在MES服务器安装PI客户端组件。其典型调用形式是GET /piwebapi/streams/{webId}/value或/streams/{webId}/recorded,配合maxCount、startTime、endTime参数控制数据窗口。

PI SDK是传统的COM/.NET编程接口,直接连接PI Data Archive,提供PISDK、PISDKCommon、PITimeServer等程序集。它的优势是访问路径短、延迟低、可精细控制时间戳与质量码,适合部署在PI服务器同域内的Windows服务或桌面工具。缺点是必须在调用端安装PI SDK,跨平台能力弱,且随着OSIsoft(现AVEVA)主推Web API,SDK已进入维护状态。

PI OLEDB提供者把PI Data Archive和PI AF映射为关系型表结构,MES或报表工具可以通过SQL直接查询,例如SELECT tag, time, value FROM piarchive..picomp2 WHERE tag = 'TIC101' AND time BETWEEN '*-1h' AND '*'。它适合已有SQL技能栈的团队快速取数,但复杂查询容易把压力转移到PI服务器,且不擅长高频小批量实时调用。

PI Integrator for Business Analytics是面向分析型消费的发布工具,通过创建“视图”把PI数据按计划或触发方式推送到SQL Server、Oracle、SAP HANA、Kafka或文件。它不提供点对点实时请求,而是以批量、准实时方式输出宽表,适合MES的报表库、数据仓库和BI层,不适合要求毫秒级响应的控制回路或在线判定。

PI System 四类接口在 MES 集成中的定位与数据路径 PI Data Archive 实时值 / 历史归档 质量码 / 时间戳 PI Point 标签体系 PI AF Server 元素 / 属性 / 模板 分析 / 事件框架 层级化资产模型 PI Web API REST / JSON / OData 跨平台、免客户端安装 适合在线实时查询 PI SDK COM / .NET 程序集 低延迟、精细控制 需同域部署客户端 PI OLEDB SQL 查询接口 适合报表与批量取数 复杂查询压力较大 PI Integrator for BA 视图 / 计划发布 / 宽表 推送至 SQL / Kafka / HANA 面向分析与报表层 MES 侧消费场景 • 在线工艺参数校验(秒级) • 批次曲线与质量放行(分钟级) • OEE / 看板聚合(准实时) • 报表库与数据仓库(小时/天) • 事件触发与工单联动 • 历史追溯与审计 选型依据:延迟、吞吐、部署位置、 授权成本、开发语言、运维复杂度 实时/准实时 低延迟 批量SQL 批量发布

按MES场景匹配接口

在线工艺参数校验场景要求MES在几秒内拿到当前值并判断是否超限。此时PI Web API的/streams/{webId}/value配合缓存或PI AF分析结果最合适;若MES服务与PI服务器同域且追求更低延迟,可用PI SDK订阅PIEventPipe或轮询PIData。PI OLEDB和Integrator都不适合这种高频点查。

批次结束后生成质量证书,需要读取整批时间窗内的历史曲线、最大值、最小值、平均值。PI Web API的/streams/{webId}/recorded支持maxCount和边界插值,一次HTTP请求即可返回JSON数组;PI OLEDB则可用一条SQL完成聚合,例如按time BETWEEN '2024-06-01 08:00:00' AND '2024-06-01 10:00:00'取picomp2,再用AVG、MAX计算。两者都可行,但Web API更适合MES应用内嵌调用,OLEDB更适合独立报表任务。

OEE看板与报表库通常按分钟或小时聚合,数据量大、查询模式固定。PI Integrator for Business Analytics可以把AF元素属性、PI点统计值按视图发布到SQL Server宽表,MES直接查本地库,避免每次访问PI服务器。这种方式把“取数压力”从PI在线层转移到分析库,适合对实时性要求不苛刻但查询频繁的场景。

性能与工程约束对比

接口典型延迟部署要求适合MES场景主要限制
PI Web API百毫秒级服务端部署,客户端免安装在线点查、批次曲线、跨平台调用批量大时需分页与限流
PI SDK十毫秒级调用端安装SDK,同域低延迟Windows服务、事件订阅跨平台弱,已逐步维护化
PI OLEDB秒级安装OLEDB提供者报表、批量历史取数复杂SQL压力大,不适合高频
PI Integrator for BA分钟级独立服务,配置视图与目标库看板、数仓、BI宽表非点对点,实时性有限

选型决策与配置示例

实际项目中建议按“延迟要求—部署边界—查询模式—授权成本”四步筛选。若MES要求秒级在线判定,优先PI Web API;若MES与PI同域且需要毫秒级事件响应,评估PI SDK;若主要是报表和批量历史,PI OLEDB或Integrator更经济;若数据要进入企业数仓供多系统消费,Integrator的发布视图最合适。

以PI Web API读取某反应釜温度为例,MES可先通过AF元素路径获取WebId,再请求最近10分钟记录:

GET /piwebapi/streams/{webId}/recorded
  ?startTime=*-10m
  &endTime=*
  &maxCount=1000
  &selectedFields=Items.Timestamp;Items.Value;Items.Good

响应示例:
{
  "Items": [
    {"Timestamp": "2024-06-01T08:00:00Z", "Value": 152.3, "Good": true},
    {"Timestamp": "2024-06-01T08:00:05Z", "Value": 152.6, "Good": true}
  ]
}

若用PI OLEDB完成同一批次的统计,可写成:

SELECT tag, AVG(value) AS avg_v, MAX(value) AS max_v
FROM piarchive..picomp2
WHERE tag = 'TIC101'
  AND time BETWEEN '2024-06-01 08:00:00' AND '2024-06-01 10:00:00'
  AND value > -100
GROUP BY tag;
选型时不要只看“能不能取到数”,还要看“取数频率×并发数×时间窗”是否会把PI服务器压垮。Web API建议启用缓存与分页,OLEDB避免在MES事务中直接执行大范围查询,Integrator视图要合理设置发布周期与增量策略。
PI SDK已不再作为新项目首选,若现有MES仍依赖SDK,应规划向PI Web API迁移;迁移时注意时间戳时区、质量码映射和批量接口的差异,避免历史数据对不上。

综合来看,PI Web API适合作为MES在线集成的默认接口,PI SDK用于同域低延迟补充,PI OLEDB服务报表与批量取数,PI Integrator for Business Analytics承担分析层发布。四者不是互斥关系,而是按数据消费模式分层组合,才能在性能、成本和可维护性之间取得平衡。