2. PI System架构与数据流
PI System并不是一个单一软件,而是一套由接口层、数据存储层和应用层共同组成的分布式实时数据基础设施。理解它的关键在于:现场设备产生的数据不会直接“飞”进PI Data Archive,而是先经过接口层采集、缓冲、打时间戳,再以事件流的方式写入归档,最后由应用层读取并呈现。这条链路中任何一环的配置偏差,都会在最终趋势曲线上留下痕迹。
三层分布式架构的职责边界
接口层(Interface Layer)负责与控制系统、仪表、PLC、SCADA、OPC服务器等数据源通信。常见组件包括PI Interface for OPC DA、PI Interface for OPC UA、PI Interface for Modbus TCP、PI UFL(Universal File Loader)以及PI Connector系列。接口层的核心任务不是“存数据”,而是把不同协议、不同刷新周期的数据统一成PI点(PI Point)可识别的值和时间戳。
数据存储层以PI Data Archive为核心,负责长期保存带时间戳的时序数据。它采用专有的压缩与归档机制,能够在有限磁盘空间内保存多年高频数据。PI Data Archive之上通常还有PI AF(Asset Framework),用于把扁平的点组织成设备、单元、产线等资产模型,并承载计算模板和属性映射。AF不是数据库,而是语义层,它让“反应釜R-101的夹套温度”这种业务对象可以被应用层直接引用。
应用层包括PI Vision、PI DataLink、PI ProcessBook(历史产品)、PI Web API、PI Integrator等。它们通过PI Data Archive的SDK或PI Web API读取数据,用于趋势分析、报表、看板、报警回顾和KPI计算。应用层不直接接触现场设备,所有数据都来自存储层,因此接口层的稳定性决定了应用层能看到什么。
从现场设备到PI Data Archive的采集过程
以一台反应釜夹套温度为例,假设现场为西门子S7-1500 PLC,通过OPC UA对外暴露变量,PI Interface for OPC UA以1秒扫描周期采集。接口启动后先建立会话,读取节点列表,把每个需要采集的变量映射为一个PI Point,例如R101_JKT_TEMP。接口内部维护一个扫描队列,每次扫描读取当前值、时间戳和质量码,然后调用PI SDK的UpdateValue或UpdateValues写入PI Data Archive。
这里有一个容易被忽略的细节:接口写入的时间戳默认来自数据源,而不是接口服务器本地时间。如果PLC时钟与PI服务器相差较大,趋势图上会出现“数据提前或滞后”的假象。因此工程上通常要求PLC、接口节点、PI Data Archive服务器统一走NTP,偏差控制在1秒以内。对于没有时间戳的Modbus寄存器,接口会使用采集时刻作为时间戳,此时扫描周期直接决定数据的时间分辨率。
当网络中断或PI Data Archive不可达时,PI Buffer Subsystem会把未写入的数据暂存在接口节点本地磁盘。恢复后按时间顺序补写,保证数据不丢。Buffer的队列深度和磁盘空间需要监控,否则长时间断网会导致缓冲溢出,形成永久性数据缺口。
数据在存储层的组织方式
PI Data Archive中的每个PI Point包含几个关键属性:Tag名称、PointSource(数据来源标识)、PointType(Float32、Float64、Int32、Digital、String等)、Engineering Units、Zero和Span、Compression Deviation和Compression Percentage。压缩不是“有损压缩”,而是基于偏差的例外报告机制:当新值与上一个归档值的偏差超过CompDev时,才写入归档。例如温度点设置CompDev=0.5,意味着0.5℃以内的波动不会被记录,趋势曲线仍然平滑,但归档量显著下降。
PI AF则把点组织成资产。一个反应釜Element可以包含夹套温度、釜内温度、搅拌电流、进料流量等Attribute,每个Attribute通过数据引用指向对应的PI Point或计算表达式。应用层查询时不再面对一堆Tag,而是面对“R-101”这个对象。这种语义映射是PI System从“实时数据库”走向“运营分析平台”的关键一步。
接口配置中的关键参数示例
下面是一段PI Interface for OPC UA的启动参数示例,用于说明接口层实际配置中需要关注哪些字段:
[OPCUA_INTERFACE]
InterfaceID = 1
OPCUA_Server = opc.tcp://10.20.30.15:4840
ScanRate = 1
PointSource = OPCUA
Location1 = 1
BufferSize = 200000
FailoverTime = 30
TimestampSource = SERVER
其中ScanRate=1表示1秒扫描一次,PointSource=OPCUA用于在PI Data Archive中区分数据来源,BufferSize=200000表示本地缓冲可容纳20万个事件,TimestampSource=SERVER表示使用OPC UA服务器时间戳。这些参数直接决定了数据的时间精度、断网容忍度和归档密度。
如何判断数据流是否正常
在PI System Management Tools(SMT)中,可以查看接口的PI Interface Status,关注Scan Count、Points Scanned、Values Written和Buffer Queue Count。如果Values Written长期为0而Points Scanned持续增长,说明接口读到了值但没有写入,通常是PI Point不存在、权限不足或PointSource不匹配。如果Buffer Queue Count持续上升,说明PI Data Archive写入受阻,需要检查归档服务、磁盘空间或网络。
在PI Vision中拉一条趋势,观察曲线是否有断点、台阶或异常尖峰。断点通常对应接口停止或Buffer溢出;台阶对应压缩偏差设置过大或数据源本身分辨率低;尖峰则可能是时间戳错位或质量码异常。把这些现象与接口状态、Buffer队列、归档压缩参数对照,就能定位数据流中是哪一环出了问题。
分布式部署中的时间与网络约束
当接口节点与PI Data Archive跨网段部署时,需要关注防火墙端口。PI Data Archive默认使用TCP 5450,PI AF使用TCP 5457和5459,PI Web API使用443。接口节点到PI Data Archive的延迟建议小于50ms,否则高频扫描会出现写入堆积。对于跨地域场景,通常采用“本地接口+本地Buffer+集中归档”的方式,而不是让远程接口直接写中心归档。
时间同步是分布式架构的隐形基础。所有接口节点、PI Data Archive、AF Server、应用服务器都应指向同一NTP源。若某台接口节点时间偏移超过扫描周期,写入的事件顺序会错乱,PI Data Archive虽然会按时间戳归档,但趋势回放和事件帧计算会出现偏差。工程验收时,可以用piartool -ts或SMT中的时间偏移检查功能确认各节点时间一致性。
理解这三层架构和数据流之后,后续配置接口、建点、建AF模板、做趋势分析时,就能清楚每一步操作影响的是哪一层、会在哪里看到结果、异常时应该先查什么。PI System的稳定性不取决于某一个组件,而取决于从现场信号到应用看板这条链路上每一环的匹配程度。