4. PHD系统核心概念

在Honeywell PHD(Process History Database,过程历史数据库)平台的工程实践中,术语混乱是导致配置错误和排障困难的首要原因。很多工程师把Tag和Point混用,把Collector和Interface当成同一层,把RDI和HDA Server视为可互换的组件,结果在数据不刷新、历史断档或客户端取不到数时无从下手。本节的目标是把这些术语放回它们真实所在的层级,并说清它们之间的数据流关系。

一、从现场信号到客户端查询:一条完整的数据链

PHD的本质是一条从控制系统到应用客户端的单向数据链。理解这条链,比记住每个缩写的全称更重要。链的起点是控制系统中的过程变量,终点是客户端应用(如Uniformance Insight、Excel插件、第三方HDA客户端)发出的历史查询请求。

在这条链上,Interface是数据进入PHD的入口程序。它运行在采集节点上,负责与外部系统通信——例如与Experion PKS的OPC服务器、与TPS系统的GUS接口、或与第三方PLC的Modbus TCP端点。Interface的职责是"取数",它按配置的扫描周期从外部源读取原始值,并交给下一层。

Collector是PHD内部的数据接收与缓冲组件。它接收来自一个或多个Interface的数据,完成时间戳规范化、质量码标注、单位转换和初步过滤,然后把数据写入PHD的实时/历史存储。Collector与Interface之间是多对一或一对多的关系:一个Collector可以服务多个Interface,一个Interface也可以向多个Collector投递数据。工程上常见的错误是把Collector当成"采集器"去配置通信参数,实际上通信参数属于Interface,Collector只关心数据如何入库。

Tag是PHD中数据点的逻辑名称,是工程师和客户端最常打交道的标识符。例如FIC101.PV、TI2301.AV。Tag是面向人的命名,它必须映射到PHD内部的存储实体——Point。Point是PHD数据库中的物理记录,包含Point ID、数据类型、存储类型(如Raw、Snapshot、Summary)、采样周期、压缩方式等属性。一个Tag对应一个Point,但Point ID不一定等于Tag名,中间通过Tag定义表完成映射。这就是为什么在PHD中"改Tag名"和"改Point ID"是两件不同的事。

二、RDI、HDA与HDA Server:查询侧的三层结构

数据写入之后,客户端如何取数?这里涉及三个容易混淆的术语。

RDI(Real-time Data Interface,实时数据接口)是PHD提供的API层,用于实时值读取和历史数据访问。它是一组函数库和协议规范,不是独立进程。RDI定义了客户端如何向PHD请求当前值、如何按时间范围请求历史值、如何订阅数据变化。

HDA(Historical Data Access,历史数据访问)是OPC基金会制定的标准接口规范。它规定了历史数据查询的方法签名、返回结构和聚合方式(如平均值、最大值、最小值、插值)。HDA本身是标准,不是Honeywell的私有实现。

HDA Server是PHD对HDA标准的实现。它作为一个服务进程运行,对外暴露符合OPC HDA规范的接口,内部通过RDI访问PHD存储。客户端(如Uniformance Insight、PI DataLink、第三方HDA客户端)连接HDA Server,发出HDA查询,HDA Server翻译成RDI调用,从PHD取出数据并封装成HDA响应返回。

三者的关系可以概括为:RDI是PHD的原生访问层,HDA是标准化查询语言,HDA Server是两者之间的适配器。客户端不直接调用RDI,而是通过HDA Server间接使用RDI能力。

PHD 数据链:从现场信号到客户端查询 控制系统 / 外部源 Experion PKS · TPS · PLC OPC · Modbus · GUS Interface 通信驱动 · 扫描周期 原始值读取 Collector 时间戳 · 质量码 单位转换 · 入库 PHD 存储 Point 记录 Raw / Snapshot / Summary Tag ↔ Point 映射 Tag:FIC101.PV(逻辑名) → Point ID:P_FIC101_PV(物理记录) 客户端应用 Insight · Excel 插件 第三方 HDA 客户端 HDA Server OPC HDA 标准实现 查询翻译 · 响应封装 RDI PHD 原生 API 实时值 · 历史值 · 订阅 PHD 存储 历史归档 聚合 · 插值 写入路径(上)与查询路径(下) 采集组件 查询组件 存储 映射关系

三、工程配置中的关键对应关系

理解了层级,配置时就不会放错位置。以下是一份典型的PHD采集配置片段,用于说明各术语在配置文件中的实际落点:

[Interface]
Name = OPC_Experion_01
Type = OPC DA
ScanPeriod = 1000
Endpoint = opcda://10.20.30.41/Experion.OPC.Server

[Collector]
Name = COL_Area01
InterfaceList = OPC_Experion_01, OPC_Experion_02
StorageType = Raw
Compression = Deadband
DeadbandValue = 0.5

[Tag]
TagName = FIC101.PV
PointID = P_FIC101_PV
DataType = Float
Unit = t/h
Collector = COL_Area01

这段配置里,Interface负责通信,Collector负责入库策略,Tag负责命名映射。三者各司其职,缺一不可。如果数据不刷新,先查Interface的通信状态;如果数据入库但质量码异常,查Collector的转换配置;如果客户端查不到Tag,查Tag与Point的映射表。

四、常见混淆与判断依据

实际工程中,以下三组混淆最常出现:

  • Collector与Interface混用:Interface是通信进程,Collector是入库进程。一个Interface可以对应多个Collector,但一个Collector通常只服务一个PHD节点。判断依据是看进程列表:Interface进程名通常含通信协议标识,Collector进程名通常含PHD节点标识。
  • RDI与HDA Server混用:RDI是API,HDA Server是服务。客户端配置连接时填的是HDA Server的ProgID或URL,不是RDI。RDI只在HDA Server内部或PHD原生工具中被调用。
  • Tag与Point混用:Tag是逻辑名,Point是物理记录。删除Tag不会删除Point,删除Point会导致Tag失效。在PHD管理工具中,Tag定义和Point定义通常在不同的管理界面。
判断一个术语属于哪一层,可以问三个问题:它负责通信还是入库?它面向人还是面向存储?它是标准还是实现?Interface负责通信,Collector负责入库;Tag面向人,Point面向存储;HDA是标准,HDA Server是实现,RDI是PHD的原生访问层。

五、小结:一张关系表

术语 层级 核心职责 典型配置位置
Interface 采集层 与外部系统通信,读取原始值 通信端点、扫描周期、协议类型
Collector 入库层 时间戳规范化、质量码、压缩、写入存储 存储类型、压缩方式、死区值
Tag 命名层 面向工程师的逻辑标识 Tag名、单位、描述
Point 存储层 PHD数据库中的物理记录 Point ID、数据类型、采样周期
RDI 访问层 PHD原生API,实时与历史访问 由HDA Server或PHD工具调用
HDA 标准层 OPC历史数据访问规范 方法签名、聚合类型定义
HDA Server 服务层 实现HDA标准,翻译查询并返回结果 ProgID、监听端口、连接配置