PLC 是最普及的自动化控制设备,PLC 厂商都已经在产品中置入了OPC UA的功能。本文更深入一点来讨论PLC 的OPC UA 信息模型。
PLC 的软件模型
IEC61131-3 是世界范围内工业自动化第一个极力推行的标准化设计语言,它独立于任何单一厂商。
IEC61131-3 是IEC61131 的第三部分。IEC61131 包括了下面几部分
- 通用信息
- 设备需求和测试
- 程序设计语言
- 用户指南
- 通信
- 安全
- 模糊控制
- 编程语言的实现和应用指南
IEC61131-3基本上描述了公共单元和程序设计语言。IEC61131-3 的软件模型如下图所示。
了解PLCopen 的软件模型有助于我们学习PLCopen 的OPC UA信息模型。
PLC 的OPC UA模型
OPC UA 为PLC 推荐了两个配套规范(Companion Specifications),它们分别是:
OPC UA DI NodeSets
OPC UA PLCopen NodeSets
OPC UA DI
DI 是英文(Device Integration)的缩写。又称为OPC UA For Device。它是一种通用的方式来表达设备及其组件的结构。DI是更专业设备模型的基础。例如分析设备(ADI),现场设备(FDI)或者符合PLCopen 标准的PLC。
在DI的模型中,顶层是设备对象(Device Object),它包含了两个组件:
parameterSet
包含了描述该设备的所有参数:它们包括:
- 设备的型号(Model)
- 制造厂商
- 制造厂商的Uri
- 硬件版本
- 设备版本
- 软件版本
- 网络地址
- 设备序列号
- 产品代码
MethodSet
为客户端提供的所有方法,典型的方法包括Start Stop。
这两个对象都是从TopologyElementType 继承过来的。FunctionGroup 将参数和方法组成逻辑群组。在下面的例子中有ProcesData和Configuration
UA Part DU 的另外一个概念是ConfugurableObjectType它提供了一种方法来组织设备的子组件。用来指明那些子组件能够被实例化。它们能够被SupportType引用。这些信息可以被配置客户端使用,使用户能够选择类型来实例化设备的子组件。
SuportedType 文件夹包含了一组ModuleControlType 类型的实例。它包含了配置中能够实例化的模块。要由用户选择性地实例化。唯有CPU是已经配置好的ModuleType类型。。
OPC UA PLCOpen
OPC UA PLCOpen 是建立在DI模型基础上关于IEC61131-3 信息模型。下图给出了PLCopen 信息模型的基本框架:
从上面的模型可见,OPCUA PLopen 的信息模型包括下面三个主要部分:
CtrlConfigurationType
此ObjectType定义 OPC UA地址空间中可编程控制器系统的Ctrl 配置的表示。它引入了对象来对 Ctrl资源和不同类型的Ctrl 变量进行分组。CtrlConfigurationType 派生自 OPC 10000-100中定义的TopologyElementType。图 15显示了CtrlConfigurationType,
CtrlResourceType
ObjectType定义 OPC UA地址空间中可编程控制器系统的Crtl 资源的表示。它引入了对象来分组配置和诊断功能、GlobalVars和在Tasks控制下执行的Ctrl 程序。CtrlResourceType派生 自OPC 10000-100中定义的DeviceType。图 16显示了CtrlResourceType。
CtrlProgramOrganizationUnitType
ObjectType定义OPC UA地址空间中可编程控制器系统的Ctrl 程序组织单元。它定义了如何表示Ctrl程序组织单元的组件,如变量和Ctrl 功能块。CtrlProgramOrganizationUnitType 派生自 OPC 10000-100中定义的BlockType。
观察和操作的入口
从上面的描述可以看出来,OPC UA的模型并不是简单的分层结构, 它们是交叉引用的。我们可以使用不同方式来构建信息模型,也就是所谓的切入点。下面是分层结构的切入方法。
以Ctrl Resources的对象作为入口
关于PLCopen POCUA信息模型的更多细节,可以阅读下列网址。
https://reference.opcfoundation.org/src/v104/PLCopen/v102/docs/readme.htm
实际产品的OPC UA 信息模型
上面讲述了OPC UA DI和OPCUA PLCopen 的信息模型。它们还是比较复杂的,全面的。对于实际的产品而言,并没有如此复杂。通常都是将能够向外部暴露的数据放置到OPC UA Server 上。
以西门子S7-1200 为例。它的软件模型如下:
OB(Organization block)
OB 是PLC 放置程序的块。S7-1200 提供了7种OB。
- Program Cycle
- Startup
- Time delay interrupt
- Cyclic interrupt
- Hardware interrupt
- Time error interrupt
- Diagnostic error interrupt
FB(Function block)功能块
DB (Data block)数据块
数据块可以分为全局数据块。功能块实例的数据块。
S7-1200 配置OPC UA 的方式是在Global 数据块中选择某些数据放置到OPC UA Server 中。
结束语
OPC UA 为PLC 建立了完整的信息模型。下一步我们研究如何参考这个模型构建IEC61499 控制器的信息模型。如何为没有实现OPC UA server 的PLC,控制器设备增加OPC UA Server 的方法,目前流行的做法是使用kepServer 软件。