2. AVEVA Application Server对象模型搭建

AVEVA Application Server对象模型搭建 学习卡片

包装线对象模型的层级设计

在AVEVA System Platform中,对象模型的核心是模板(Template)与实例(Instance)的分离。模板定义可复用的属性、脚本和报警,实例则继承模板并绑定具体设备。对于一条包装线,推荐建立三层结构:产线层 → 设备层 → 工位层。产线层承载整线状态与产量统计,设备层对应灌装机、封口机、贴标机等独立设备,工位层则细化到每个设备的执行单元(如灌装头、封口模具)。

层级设计的关键约束:属性继承方向自上而下,即产线层定义的公共属性(如LineSpeed、ShiftName)可被设备层和工位层继承;设备层定义的设备专属属性(如RatedCapacity)可被工位层继承,但不可反向传递。脚本和报警的继承遵循同样规则。

产线层:PackagingLine LineSpeed · ShiftName · TotalOutput 继承 灌装机 Filler RatedCapacity · FillVolume 封口机 Sealer SealTemp · SealPressure 贴标机 Labeler LabelPos · LabelSpeed 继承 继承 继承 灌装头 FillHead_01 NozzleDia · FlowRate 封口模具 SealDie_A DieTemp · DwellTime 贴标臂 LabelArm_01 ArmPos · ApplyForce 模板复用机制 Filler模板 → 实例化到灌装机A/B/C;FillHead模板 → 实例化到每个灌装头 产线层 设备层 工位层 属性/脚本继承方向

模板定义与实例化操作

在System Platform的IDE中,模板通过Galaxy → Templates创建。以下以灌装机为例,说明模板定义的关键步骤:

  1. 在Templates节点下新建Base Template,命名为$Filler($前缀表示抽象模板,不可直接实例化)。
  2. 在$Filler下添加属性:RatedCapacity(Int,单位瓶/分钟)、FillVolume(Real,单位mL)、CurrentState(String,枚举:Idle/Running/Fault)。
  3. 添加脚本OnScan,实现状态机逻辑:当RatedCapacity > 0且FillVolume > 0时,CurrentState置为Running。
  4. 在$Filler下创建Derived Template,命名为Filler_ModelA,覆盖RatedCapacity默认值为120。
  5. 将Filler_ModelA拖拽到产线实例PackagingLine下,生成实例Filler_01,并绑定实际PLC的I/O地址。

工位层模板$FillHead继承自$Filler,增加NozzleDia和FlowRate属性。实例化时,每个灌装头自动获得父级RatedCapacity和FillVolume的当前值,无需重复配置。

复用性验证方法:在PackagingLine下再实例化一台Filler_ModelA为Filler_02,修改Filler_01的FillVolume为500,观察Filler_02的FillVolume是否保持模板默认值(应为独立值,不联动)。若联动,说明误用了Reference而非Instance。

继承关系与属性覆盖规则

层级对象可定义内容继承行为
产线层PackagingLineLineSpeed、ShiftName、TotalOutput向下传递至所有设备与工位
设备层Filler_01RatedCapacity、FillVolume、CurrentState继承产线属性;向下传递至工位
工位层FillHead_01NozzleDia、FlowRate继承设备与产线属性;不可反向覆盖

属性覆盖遵循就近原则:若工位层重新定义了FillVolume,则工位层值优先,但设备层和产线层的值不受影响。脚本继承则采用链式执行:产线层OnScan先执行,设备层OnScan后执行,工位层最后执行。

常见错误:在设备层直接修改产线层属性(如LineSpeed),会导致该设备脱离产线统一控制。正确做法是在设备层创建本地覆盖属性(Local Override),仅影响当前实例。

模型验证与复用性检查

完成对象模型搭建后,通过以下方式验证:

  • 属性传播检查:在PackagingLine的LineSpeed写入100,检查Filler_01和FillHead_01的LineSpeed是否同步为100。
  • 实例独立性检查:修改Filler_01的FillVolume为500,确认Filler_02的FillVolume仍为模板默认值。
  • 脚本执行顺序检查:在产线层、设备层、工位层的OnScan中分别写入日志,观察执行顺序是否为产线→设备→工位。
  • 报警继承检查:在$Filler模板中定义HighTemp报警,确认所有Filler_ModelA实例均自动获得该报警配置。

若以上检查全部通过,说明对象模型具备可复用性,后续新增设备只需实例化模板并绑定I/O,无需重复定义属性与脚本。