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层,不适合要求毫秒级响应的控制回路或在线判定。
按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适合作为MES在线集成的默认接口,PI SDK用于同域低延迟补充,PI OLEDB服务报表与批量取数,PI Integrator for Business Analytics承担分析层发布。四者不是互斥关系,而是按数据消费模式分层组合,才能在性能、成本和可维护性之间取得平衡。