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采集配置片段,用于说明各术语在配置文件中的实际落点:
[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 | 命名层 | 面向工程师的逻辑标识 | Tag名、单位、描述 |
| Point | 存储层 | PHD数据库中的物理记录 | Point ID、数据类型、采样周期 |
| RDI | 访问层 | PHD原生API,实时与历史访问 | 由HDA Server或PHD工具调用 |
| HDA | 标准层 | OPC历史数据访问规范 | 方法签名、聚合类型定义 |
| HDA Server | 服务层 | 实现HDA标准,翻译查询并返回结果 | ProgID、监听端口、连接配置 |