3. PI Asset Framework(PI AF)建模核心

PI AF 建模的本质,是把工厂里真实存在的物理对象和逻辑对象,翻译成一套可被计算、可被引用、可被复用的数字结构。这套结构由四个基本概念支撑:元素(Element)代表对象本身,属性(Attribute)代表对象的特征或测量值,模板(Template)负责批量复用,层级结构(Hierarchy)负责表达对象之间的从属与关联关系。理解这四者的分工与配合,是后续做计算分析和实时指标开发的前提。

元素与属性:对象及其特征

元素是 AF 中的建模单元,一个元素通常对应一台设备、一条产线、一个车间或一座工厂。元素本身不携带数据,它只是容器,真正承载数据的是属性。属性可以理解为元素的“字段”,每个属性有名称、数据类型和数据来源。

属性的数据来源决定了它的行为方式,常见有四类:

  • PI Point 引用:属性直接绑定一个 PI Data Archive 中的位号,读取该位号的历史值和实时值。例如 Reactor1.Temperature 绑定位号 R1_TEMP。
  • 公式(Formula):属性值由其他属性经过表达式计算得到,例如 Reactor1.DeltaT = OutletTemp - InletTemp。公式属性不存储原始数据,每次求值时按依赖关系计算。
  • 字符串(String):用于存放静态描述信息,如设备编号、介质名称、单位说明,不参与数值计算。
  • 其他属性引用:属性值直接引用同一元素或跨元素的其他属性,用于建立属性之间的映射关系,例如把 Line1.FlowRate 映射到 Line1.FlowRate_Backup。

数据类型需要与数据来源匹配。数值型属性常用 Float32/Float64 承载模拟量,Int32 承载计数或状态码,String 承载文本,Boolean 承载开关状态。若把公式属性设为整型,而表达式结果带小数,AF 会按类型规则截断或报错,因此建模时要先确定量纲和精度。

元素模板与属性模板:批量复用的关键

如果工厂有 20 台同型号反应釜,逐台手工建属性既慢又容易不一致。元素模板(Element Template)就是解决这个问题的机制:先定义一个模板,把这类设备共有的属性、公式、层级子结构全部定义好,再基于模板实例化元素。实例化后的元素自动继承模板中的属性定义,只需为每个实例绑定各自的 PI Point 或填写各自的静态值。

属性模板(Attribute Template)则更细一层,它定义单个属性的通用规则,包括数据类型、默认值、数据引用方式、是否只读、单位等。元素模板内部可以引用属性模板,从而让属性定义也能跨模板复用。两者的关系可以概括为:属性模板定义“字段长什么样”,元素模板定义“一台设备由哪些字段和子结构组成”。

模板一旦被实例引用,修改模板会向下影响所有实例。生产环境中调整模板前,应先确认影响范围,必要时先做模板版本备份。

层级结构:从工厂到传感器

AF 的层级结构用父子关系表达对象的从属关系。典型的生产设备层级为:工厂 → 车间 → 设备 → 传感器。父元素可以聚合子元素的数据,子元素继承父元素的上下文。例如在工厂层做全厂能耗汇总时,可以沿层级向下逐级汇总各车间的电表读数;在设备层做效率计算时,可以直接引用该设备下各传感器的属性。

层级设计要遵循两条原则:一是物理从属关系与业务分析口径一致,避免为了好看而随意嵌套;二是层级深度可控,一般 4 到 6 层足够,过深会让路径引用和权限管理变复杂。下面这张图展示了一个典型的四级设备层级,以及每层元素上挂载的属性类型和数据引用方式。

PI AF 设备层级模型与属性数据引用 工厂 Factory TotalPower(公式:汇总各车间) 车间 A WorkshopPower(PI Point) 车间 B WorkshopPower(PI Point) 反应釜 R1 DeltaT(公式) 泵 P1 RunStatus(PI Point) 换热器 E1 Eff(公式) 压缩机 C1 Load(PI Point) 温度传感器 TT101 PI Point: R1_TEMP 流量传感器 FT201 PI Point: P1_FLOW 温度传感器 TT301 PI Point: E1_TEMP 压力传感器 PT401 PI Point: C1_PRESS 图例 工厂层(汇总公式) 车间层(PI Point) 设备层(公式/位号) 传感器层(PI Point)

建立设备层级模型的实际过程

以“工厂 → 车间 → 设备 → 传感器”为例,实际建模通常按以下顺序推进。第一步,在 AF 中创建数据库,确定根元素为工厂。第二步,为每一类设备定义元素模板,例如“反应釜模板”包含 InletTemp、OutletTemp、DeltaT 三个属性,其中前两个为 PI Point 引用,第三个为公式属性。第三步,基于模板实例化元素,把模板挂到对应车间下,形成层级。第四步,为每个实例绑定具体的 PI Point,例如 R1 的 InletTemp 绑定 R1_IN_TEMP,OutletTemp 绑定 R1_OUT_TEMP。第五步,在工厂层创建汇总属性,用公式沿层级引用各车间属性,例如 TotalPower = WorkshopA.WorkshopPower + WorkshopB.WorkshopPower。

建模完成后,需要做一次数据验证:在 AF 客户端中查看每个属性的当前值,确认 PI Point 引用能取到实时值,公式属性计算结果与手工计算一致。若公式属性返回 No Data,通常是因为依赖的 PI Point 没有数据或路径引用写错;若返回类型错误,则检查数据类型是否与表达式结果匹配。

层级路径引用区分大小写,且父元素名称变更后,所有引用该路径的公式都会失效。重命名元素前应先搜索引用关系。

属性数据引用的选择依据

面对一个具体属性,选择哪种数据引用方式,可以按以下判断:需要读取现场实时测量值的,用 PI Point;需要由已有属性推导出来的,用公式;需要存放固定文本或配置信息的,用字符串;需要把一个属性的值映射到另一个属性、或跨元素传递的,用其他属性引用。四种方式可以组合使用,例如一个公式属性内部既引用 PI Point 属性,也引用字符串属性作为条件判断。