3. 自动化对象模型
在 AVEVA System Platform 中,工厂监控平台的一切可视化、报警、历史与逻辑都建立在同一个核心概念之上——AutomationObject(自动化对象)。它不是简单的画面元素,而是一个带有属性、脚本、报警与历史能力的“活对象”。理解 AutomationObject 的构成方式,是掌握整个平台建模方法的前提。
AutomationObject 是什么
AutomationObject 是 System Platform 中承载设备语义的最小可复用单元。一个泵、一个阀门、一个电机、一条生产线,都可以被抽象为一个 AutomationObject。它由若干关键部分组成:
- 属性(Attribute):描述对象状态与参数的数据点,如
Speed、RunStatus、Setpoint、PV。 - 脚本(Script):附着在对象上的逻辑,如启动联锁、状态判断、数据换算。
- 报警与历史:属性可绑定报警限值与历史采集,使对象自带监控能力。
- 图形符号:对象可关联画面符号,拖入画面即自动生成可视化。
AutomationObject 分为两类:模板(Template)与实例(Instance)。模板是“类”,定义结构与默认行为;实例是“对象”,继承模板结构并绑定具体设备。模板与实例之间通过继承关系连接,修改模板可批量影响所有实例,这是工厂建模效率的关键。
模板、实例与继承关系
模板定义属性、脚本、报警与图形符号。实例从模板派生,自动获得这些定义,并可在实例层覆盖默认值。继承关系是单向的:模板 → 实例。实例可以覆盖属性初值、绑定具体 PLC 地址、调整报警限值,但不能反向修改模板结构。
例如,定义一个 $Pump 模板,包含属性 Cmd、Status、Speed、Fault,并附带启动联锁脚本。创建实例 Pump_101 时,只需绑定 Cmd 到 PLC 地址 DB10.DBX0.0,其余结构自动继承。若后续在模板中新增 RunHours 属性,所有实例会自动获得该属性,无需逐个修改。
属性的类型与绑定
属性是 AutomationObject 的数据骨架。System Platform 中属性分为多种类型,常见的有:
| 属性类型 | 用途 | 示例 |
|---|---|---|
| Boolean | 开关量状态 | RunStatus、Fault |
| Integer / Real | 数值量 | Speed、PV、Setpoint |
| String | 文本信息 | DeviceName、BatchID |
| DateTime | 时间戳 | LastStartTime |
属性可绑定到 PLC 地址、其他对象属性或表达式。绑定方式决定了数据流向:输入绑定从 PLC 读取到对象,输出绑定从对象写入 PLC。例如 Status 绑定 DB10.DBX0.1 作为输入,Cmd 绑定 DB10.DBX0.0 作为输出。绑定关系在实例层配置,模板层只定义属性名与类型。
脚本与继承的协同
脚本附着在对象上,可访问本对象属性、其他对象属性以及系统函数。脚本分为模板脚本与实例脚本。模板脚本定义通用逻辑,所有实例自动继承;实例脚本用于处理该设备特有的逻辑,优先级高于模板脚本。
以泵的启动联锁为例,模板脚本可写:
If Me.Cmd == True And Me.Fault == False Then
Me.Status = True
Me.Speed = Me.Setpoint
Else
Me.Status = False
Me.Speed = 0
End If
该脚本在模板层定义后,Pump_101、Pump_102、Pump_103 均自动具备此逻辑。若 Pump_102 需要额外的温度联锁,可在实例层追加脚本,而不影响其他实例。这就是继承与覆盖的协同:共性放模板,个性放实例。
工厂设备建模的基本方法
掌握上述概念后,建模可按以下思路推进:
- 设备分类:将工厂设备按类型归并,如泵、阀、电机、罐、传送带。每类定义一个模板。
- 定义属性:为每类设备确定必要属性,区分输入、输出与内部计算量。属性命名保持统一规范,如
Cmd、Status、PV、SP。 - 编写模板脚本:将通用联锁、状态判断、单位换算写入模板脚本。
- 创建实例:从模板派生实例,绑定具体 PLC 地址与初始值。
- 关联图形符号:为模板指定画面符号,实例拖入画面后自动显示对应状态。
- 验证与调整:在实例层覆盖差异项,检查绑定与脚本执行结果。
建模示例:泵组对象结构
假设某车间有 3 台泵,共用同一模板 $Pump。模板定义属性 Cmd(Boolean,输出)、Status(Boolean,输入)、Speed(Real,输入)、Fault(Boolean,输入)、Setpoint(Real,内部)。模板脚本实现启停联锁。实例层分别绑定:
- Pump_101:Cmd → DB10.DBX0.0,Status → DB10.DBX0.1,Speed → DB10.DBW2,Fault → DB10.DBX0.2
- Pump_102:Cmd → DB10.DBX1.0,Status → DB10.DBX1.1,Speed → DB10.DBW4,Fault → DB10.DBX1.2
- Pump_103:Cmd → DB10.DBX2.0,Status → DB10.DBX2.1,Speed → DB10.DBW6,Fault → DB10.DBX2.2
若后续需要为所有泵增加运行小时统计,只需在模板中新增 RunHours 属性并编写累加脚本,三个实例自动获得该能力,无需逐个修改。这正是 AutomationObject 继承机制在工厂建模中的核心价值。
总结来说,AutomationObject 建模的核心逻辑是:模板定义结构与共性逻辑,实例绑定具体设备与差异参数,继承关系保证批量一致性,脚本赋予对象行为。掌握这四者的关系,就能以可维护、可扩展的方式完成工厂设备建模,为后续画面、报警与历史配置打下坚实基础。