2. PI System数据模型与MES数据模型对照

在把 PI System 与 MES 打通之前,必须先回答一个基础问题:两边各自用什么方式描述"同一个工厂、同一条产线、同一批物料"。PI System 侧的核心是 Asset Framework(AF),MES 侧的核心是工单、物料、BOM 与工艺路线。它们描述的对象高度重叠,但组织方式完全不同——AF 是"资产层级 + 属性"的树状模型,MES 是"业务单据 + 主数据"的关系模型。理解两者的映射关系,是后续接口设计、数据对齐和故障排查的前提。

AF 数据模型的三个基本构件

AF 用三个概念描述物理世界:元素(Element)、属性(Attribute)、模板(Template)。

元素是资产的实例化节点,可以嵌套。例如"华东一厂 → 一号灌装线 → 灌装机A → 电机M1"就是一条元素路径。元素本身不存数值,它只是容器和层级关系的载体。

属性挂在元素上,是真正承载数据的地方。属性分两类:一类是 PI Point 引用属性,直接绑定到 PI Data Archive 中的位号(如 \\PISERVER\FIC-101.PV),用于读取实时/历史时序数据;另一类是静态属性或公式属性,用于存放设备编号、额定功率、设计产能等不随时间快速变化的量,或由其他属性计算得出的派生值。

模板是元素的"类型定义"。把一台灌装机的所有属性(进料压力、灌装量、运行状态、额定产能)定义成一个模板,之后每新增一台同型号设备,只需基于模板创建元素并填写差异属性,无需重复建属性。模板保证了同类资产结构一致,这也是 AF 能规模化建模的关键。

MES 数据模型的四个核心对象

MES 侧围绕生产执行组织数据,最常与 AF 发生映射的是四类对象:

  • 工单(Work Order):一次生产任务的载体,包含工单号、产品编码、计划数量、计划起止时间、目标产线、状态(已下达/生产中/已完工)。工单是"随时间流动"的业务对象。
  • 物料(Material):主数据,包含物料编码、名称、规格、单位、批次管理标识。物料是相对静态的。
  • BOM(Bill of Materials):描述"一个成品由哪些物料按什么用量构成",是结构关系,通常带层级(成品→半成品→原料)。
  • 工艺路线(Routing):描述"按什么工序顺序加工",包含工序号、工序名称、工作中心、标准工时、关键工艺参数(如温度、压力设定值)。

映射关系的本质:层级对层级,属性对字段

两套模型能对上,是因为它们都在描述"设备—工序—产品"这条链,只是切分角度不同。映射可以归纳为三条主线:

第一条:资产层级 ↔ 工作中心/产线。 AF 的元素路径(厂→车间→产线→设备)与 MES 的工作中心编码体系对应。通常做法是在 AF 元素上增加一个静态属性 MES_WorkCenterCode,把 AF 元素与 MES 工作中心一一锚定。这条映射是其余映射的基础,锚点错了,后面全错。

第二条:AF 属性 ↔ 工艺参数/工单实绩。 工艺路线中定义的"关键工艺参数"(如杀菌温度 85℃、灌装压力 0.3MPa)在 AF 中表现为对应设备的 PI Point 属性。工单执行时,MES 把设定值下发给设备,PI System 采集实际值,两者按"工单号 + 工序 + 时间窗"关联,就能算出该工单在该工序的实际工艺曲线。

第三条:物料/BOM ↔ AF 元素属性或独立元素。 物料主数据一般不在 AF 中建模,而是在集成层做关联:AF 元素上的 Current_Material 属性记录当前加工物料编码,与 MES 物料主数据表关联后即可展开 BOM 用量,用于投入产出比对。

映射不是"把 MES 表搬进 AF",而是找到两边都认可的业务主键。最稳的主键组合是:工作中心编码 + 工单号 + 时间戳。设备位号只作为数据来源,不作为跨系统主键。

一张对照图看清映射结构

下图把 AF 侧的树状结构与 MES 侧的对象关系并排呈现,中间的连线表示实际集成时需要建立的映射键。左侧关注"数据从哪来",右侧关注"数据属于哪张单",中间是两者对齐的锚点。

PI AF 资产模型 与 MES 业务模型 映射对照 PI Asset Framework(资产树) 华东一厂(Element) 一号灌装线(Element) 灌装机A(Element · 模板: Filler) 属性(Attribute) FIC-101.PV(PI Point 引用) 灌装量设定值(静态属性) MES_WorkCenterCode(映射键) Current_Material(当前物料) 模板保证同类设备属性结构一致 MES 业务模型 工单 Work Order 工单号 · 产品 · 数量 · 状态 物料 Material 物料编码 · 规格 · 单位 · 批次 BOM 成品 → 半成品 → 原料 用量 工艺路线 Routing 工序 · 工作中心 · 标准工时 · 参数 工作中心 Work Center 编码 · 所属产线 · 产能 工单执行时按工序采集实绩 与 PI 实际值按时间窗关联 ① 元素 ↔ 工作中心 MES_WorkCenterCode 锚定 ② 属性 ↔ 工艺参数 设定值下发 / 实际值回采 ③ 物料属性 ↔ 物料/BOM Current_Material 关联主数据 跨系统主键:工作中心编码 + 工单号 + 时间戳

映射落地时的三个关键判断

判断一:粒度是否一致。 AF 元素可能细到单台电机,而 MES 工作中心可能只到"灌装工段"。如果粒度不匹配,就要在 AF 中增加一个"工段级"元素作为聚合节点,或把多台设备的属性在 AF 中用公式属性汇总后再映射。强行一对一映射会导致大量空值。

判断二:时间语义是否一致。 MES 工单有"计划开始/实际开始/实际结束",PI 数据是连续时间序列。关联时必须明确用哪个时间做窗口边界。工程上常用"实际开始到实际结束"作为采集窗口,并前后各留 5 分钟缓冲,避免边界丢数。

判断三:谁主谁从。 工作中心编码、物料编码、工单号这类主数据,权威源在 MES;设备位号、实时值、历史值,权威源在 PI。集成时只做单向引用,不做双向写入,否则一旦两边都能改,数据一致性无法保证。

常见错误:直接把 PI 位号名当作设备唯一标识去和 MES 设备表关联。位号会因改造、扩容而变更,而 MES 工作中心编码相对稳定。正确做法是在 AF 元素上维护稳定的业务编码属性,位号只作为该属性下的数据来源之一。

一个可参考的映射配置样例

下面是一段 AF 元素属性配置的示意(以灌装机A为例),展示了如何把映射键和业务字段固化到 AF 中,供接口程序读取:

Element: 一号灌装线\灌装机A
  Template: Filler
  Attributes:
    MES_WorkCenterCode   = "WC-FILL-01"      # 映射键,与MES工作中心一致
    MES_LineCode         = "LINE-01"
    RatedCapacity        = 12000  (瓶/小时)   # 静态属性
    Current_Material     = "MAT-8801"         # 由MES下发或人工维护
    FIC101_PV            = \\PISERVER\FIC-101.PV   # PI Point引用
    FillVolume_SP        = 500    (mL)        # 工艺设定值
    FillVolume_PV        = \\PISERVER\FILL-101.PV
    OEE_Calc             = 公式属性,引用RatedCapacity与运行状态

接口程序按 MES_WorkCenterCode 找到对应元素,读取 FIC101_PV、FillVolume_PV 等属性在工单时间窗内的值,回写到 MES 的工单实绩表。这样,AF 负责"数据在哪、怎么取",MES 负责"数据属于哪张单、怎么用",职责清晰。

把这三条映射主线、三个判断和一份配置样例串起来,就构成了 PI 与 MES 数据模型对照的完整认知。后续无论是做接口开发、数据校验还是异常排查,都可以回到这张对照图上来定位问题出在哪一层。