1. 课程导入与工程全景
在流程工业、电力、水务、制药等连续生产场景中,控制系统每秒都在产生大量过程数据。DCS、PLC、SCADA、智能仪表、在线分析仪等设备各自维护着实时值,但这些值通常只保留很短时间,一旦被新采样覆盖,历史信息就永久丢失。PI System(Plant Information System)正是为解决这一问题而生的工业数据基础设施:它把分散在各控制系统中的实时数据持续采集、压缩、归档,形成可长期追溯、可跨系统共享、可供分析与优化的时间序列历史库。
理解PI System,不能只把它当作一个"数据库"。它更像一条从现场信号到业务决策的数据链路:底层是数据源,中间是接口与服务器,上层是客户端与分析应用。本课程围绕这条链路展开,目标是让读者能够独立完成从接口配置、点位规划、压缩参数设定,到历史数据回补、性能排查与高可用部署的完整工程任务。
PI System的核心组件与职责
PI System由若干职责明确的组件构成,工程中最常接触的有以下几类:
- PI Data Archive(PI数据归档服务器):系统的历史库核心,负责存储所有时间序列数据点(PI Point)。每个点包含时间戳、数值和质量码,并依靠旋转门压缩算法(Swinging Door Compression)在保留趋势特征的前提下大幅降低存储量。
- PI Interface(接口):连接外部数据源的采集程序,如PI Interface for OPC DA、PI Interface for Modbus TCP、PI Interface for OPC UA等。接口按扫描周期读取源系统数据,写入PI Data Archive。
- PI Asset Framework(AF,资产框架):在数据点之上建立设备、工艺单元、管线等资产模型,把散点组织成有语义的层级结构,并支持属性、模板、计算与分析。
- PI Vision / PI DataLink / PI Web API:面向不同使用者的访问层。PI Vision用于流程画面与趋势展示,PI DataLink用于Excel取数分析,PI Web API为第三方系统提供REST访问入口。
- PI Interface Node / PI Collective:接口运行节点与高可用集合,决定采集的可靠性与冗余能力。
这些组件之间不是简单堆叠,而是有明确的数据流向和依赖关系。下图给出一个典型的PI System工程全景,帮助建立整体认知。
从现场信号到历史库:数据是如何流动的
以一台反应釜的温度采集为例。现场变送器输出4~20mA信号进入DCS,DCS在控制器内以500ms周期刷新该测点。PI接口通过OPC DA连接到DCS的OPC服务器,按1s扫描周期读取该测点的实时值。接口把读到的数值连同时间戳写入PI Data Archive中名为REACTOR1_TEMP的PI Point。归档服务器根据该点设定的压缩偏差(例如0.5℃)判断是否保存新值:若温度变化未超过偏差,则不落盘,仅更新当前值;若超过偏差或达到最大时间间隔(例如600s),则写入一条归档记录。
这样做的结果是:一个温度点一天可能产生86400次采样,但实际归档的记录可能只有几百到几千条,既保留了趋势形状,又显著降低了存储与查询压力。当操作人员在PI Vision上查看该温度趋势时,系统从归档中读取记录并插值还原曲线;当工程师用PI DataLink在Excel中做班次统计时,取到的是同一份历史数据。这就是"一次采集、多处复用"的价值。
学习路径与工程能力地图
本课程按"认知—配置—优化—运维"的顺序推进,建议读者按以下路径建立能力:
- 建立全景认知:理解PI Data Archive、接口、AF、访问层的分工与数据流向,能画出自己工厂的PI架构草图。
- 掌握点位与接口配置:能根据测点清单规划PI Point属性,配置OPC/Modbus接口实例,设定扫描周期与死区。
- 理解压缩与归档机制:能根据工艺特征选择压缩偏差和最大间隔,判断压缩对趋势还原的影响。
- 完成历史数据回补:当接口中断后,能通过接口缓冲或手动回补把缺失时段的数据补入归档。
- 具备运维与排障能力:能通过接口状态、点属性、归档统计判断采集是否正常,定位常见故障。
一个可参考的工程起点:测点规划表
在真正配置接口之前,先把测点规划清楚,能避免后期大量返工。下面是一份可直接参考的测点规划表样例,字段和取值均为示例,实际项目应按现场情况调整。
| PI Point名称 | 描述 | 点类型 | 量程 | 工程单位 | 扫描周期 | 压缩偏差 | 最大间隔 |
|---|---|---|---|---|---|---|---|
| REACTOR1_TEMP | 1号反应釜温度 | Float32 | 0~200 | ℃ | 1s | 0.5 | 600s |
| REACTOR1_PRESS | 1号反应釜压力 | Float32 | 0~1.6 | MPa | 1s | 0.01 | 600s |
| PUMP2_FLOW | 2号泵出口流量 | Float32 | 0~500 | m³/h | 2s | 1.0 | 900s |
| PUMP2_RUN | 2号泵运行状态 | Digital | 0/1 | — | 1s | — | — |
| TANK3_LEVEL | 3号储罐液位 | Float32 | 0~100 | % | 5s | 0.2 | 1200s |
这张表里,模拟量点需要关注压缩偏差和最大间隔,数字量点通常不做压缩、按变化存储。扫描周期的选择要兼顾实时性与接口负载:温度、压力这类变化较慢的过程量用1~5s即可,流量、转速等快变量可适当缩短,但不宜盲目追求1s以下,否则接口和归档压力会明显上升。