3. Historian数据模型

PI Historian 并不是一个“把数据塞进表里”的关系数据库,它是一套面向过程工业的时间序列数据库。理解它的数据模型,是后续做接口配置、采集调优、归档查询和故障排查的基础。本节围绕五个核心概念展开:时间序列数据、标签点(Tag)、属性(Attribute)、事件帧(Event Frame)以及压缩与存储机制。它们共同构成了 Historian 从“采集一个值”到“长期归档并可被业务查询”的完整链路。

一、核心原理:从时间序列到标签点

时间序列数据是 Historian 的最小数据单元,其本质是“某个测量对象在某个时刻的值”。一条时间序列记录通常由三要素构成:时间戳(Timestamp)、数值(Value)和质量码(Quality)。时间戳决定数据在时间轴上的位置,数值是过程量,质量码则说明该值是否可信,例如 Good、Bad、Questionable 等。质量码是 PI 数据模型区别于普通时序库的重要特征,它让上层应用能够判断“这个值能不能用”。

标签点(Tag / PI Point)是时间序列数据的载体和命名单元。一个标签点代表一个可被采集、存储和查询的测点,例如 BA:FI:101.PV 表示某台流量计的过程值。标签点不是“一行数据”,而是一个长期存在的对象,它拥有自己的属性集合,并持续接收来自接口的数值流。可以把标签点理解为“一个测点的档案袋”,时间序列数据则是不断放入档案袋的记录。

属性(Attribute)描述标签点的元数据与配置,例如描述(Descriptor)、工程单位(EngUnits)、量程上下限(Zero/Span)、点类型(PointType)、采集接口(PointSource)、扫描周期、压缩开关、异常限值等。属性决定了 Historian 如何采集、如何压缩、如何显示这个点。属性配置错误,往往表现为“数据能进来但查不到”“单位不对”“压缩后曲线失真”等典型问题。

二、事件帧:把“时间段”变成可查询对象

时间序列数据回答的是“某时刻值是多少”,而事件帧(Event Frame)回答的是“某段时间发生了什么”。事件帧是 Historian 中用于描述批次、报警、停机、检修、实验等有开始和结束的业务事件对象。它通常包含名称、模板、开始时间、结束时间、持续时间、关联标签点以及自定义属性。例如一个“反应釜批次 A”的事件帧,可以关联温度、压力、搅拌转速等标签点,从而支持“按批次查询过程曲线”。

事件帧与标签点的关系是“多对多”:一个事件帧可以关联多个标签点,一个标签点也可以被多个事件帧引用。这种模型让 Historian 不只是存储数据,还能把数据组织成业务语义,为批次分析、SPC 统计、报警复盘提供结构支撑。

三、压缩与存储机制:为什么历史数据能存很久

Historian 的核心优势之一是高效的压缩与存储。它采用“例外偏差 + 压缩”两级机制。例外偏差(Exception Deviation)决定接口是否把新值发送到服务器:当新值与上一次归档值的偏差超过设定阈值时,才认为“值得记录”。压缩(Compression)则在服务器端进一步判断:如果新值落在由前两个归档值构成的趋势带内,则丢弃该值,只保留能代表趋势的关键点。这样既保留了曲线形状,又大幅减少存储量。

存储层面,Historian 使用专有的归档文件(Archive)而非普通表。归档文件按时间顺序写入,支持在线扩展和滚动归档。每个标签点的数据在归档中按时间索引,查询时通过时间范围快速定位。归档文件的大小、数量、备份策略直接影响系统可用性,因此生产环境通常配置主归档、副归档和定期备份。

关键理解:压缩不是“丢数据”,而是“用更少的点表达同样的趋势”。压缩阈值设置过松会导致曲线失真,设置过紧则存储增长过快。工程上需要根据测点的重要性和变化速率分别配置。

四、数据模型关系图解

下图展示了 Historian 数据模型中各对象之间的关系:接口从数据源采集值,写入标签点;标签点拥有属性并产生时间序列数据;事件帧关联标签点,形成业务时间段;压缩与归档机制作用于时间序列数据,最终形成长期存储。

PI Historian 数据模型关系 数据源 DCS / PLC / OPC 采集接口 PI Interface 标签点 Tag BA:FI:101.PV 命名与配置单元 属性 Attribute 单位 / 量程 / 点类型 压缩开关 / 扫描周期 时间序列数据 时间戳 + 数值 + 质量码 2024-06-01 08:00:00 事件帧 Event Frame 批次 / 报警 / 停机 开始时间 ~ 结束时间 压缩与归档 例外偏差 + 压缩 Archive 归档文件 查询与应用 PI Vision / Excel 趋势 / 报表 / 分析 产生 关联 处理 读取 标签点承载时间序列,属性决定行为,事件帧赋予业务语义,压缩归档保障长期存储

五、案例与场景:批次分析中的模型协作

假设某化工厂要分析“反应釜批次 A”的质量波动。工程师首先在 Historian 中建立标签点:R201.TEMP.PV、R201.PRESS.PV、R201.SPEED.PV,并配置单位、量程和压缩阈值。然后创建事件帧模板“反应釜批次”,在批次开始时写入开始时间,结束时写入结束时间,并关联上述三个标签点。查询时,用户只需选择“批次 A”,系统就能自动截取该时间段内的温度、压力、转速曲线,进行对比分析。如果没有事件帧,用户只能手动输入时间范围,效率低且容易出错。

六、常见误区与复盘

  • 误区一:把标签点当成“表的一行”。标签点是长期对象,时间序列数据才是不断追加的记录。删除标签点会同时影响其历史数据和关联事件帧。
  • 误区二:压缩阈值随意设置。压缩过松会导致关键峰值被过滤,压缩过紧会导致归档快速增长。建议按测点变化速率和业务精度要求分别配置。
  • 误区三:忽略质量码。只关注数值而忽略质量码,可能把 Bad 值当成有效数据用于报表,造成误判。
  • 误区四:事件帧只建不用。事件帧需要与业务流程(如 MES 批次号)联动,否则只是“空壳”,无法发挥业务价值。

七、核心对象速查清单

对象 作用 关键内容 典型示例
时间序列数据 记录某时刻的值 时间戳、数值、质量码 08:00:00, 125.6, Good
标签点 Tag 测点的命名与配置单元 点名、点类型、接口、扫描周期 BA:FI:101.PV
属性 Attribute 描述标签点的元数据 单位、量程、压缩开关、异常限 EngUnits = m³/h
事件帧 Event Frame 描述有起止时间的业务事件 名称、模板、开始/结束时间、关联点 批次 A:08:00 ~ 12:00
压缩与归档 减少存储并保留趋势 例外偏差、压缩、Archive 文件 压缩后保留 5 年数据

实践建议:在配置新测点时,先明确“这个点属于哪个业务对象、需要保留多长、精度要求多少”,再决定标签点属性、压缩阈值和是否纳入事件帧。数据模型设计得好,后续查询和分析会事半功倍。

# 典型标签点属性配置示例(PI SMT / PI Builder)
Tag Name:        BA:FI:101.PV
Descriptor:      1号流量计过程值
PointSource:     OPCINT
PointType:       Float32
EngUnits:        m3/h
Zero:            0
Span:            500
CompDev:         0.5
CompMin:         0
CompMax:         3600
ExcDev:          0.1
ExcMin:          0
ExcMax:          60
Step:            ON