利用OOIP,第2部分:抽象、嵌套和接口

第2部分:工厂和设备由对象组装而成,控制架构也应该如此。工业程序员通过使用面向对象的工业程序设计(OOIP),可以在不降低复杂性的前提下,实现面向对象程序设计(OOP)的生产力。查看确定开发系统是否支持OOIP的9种方法。

通过加里·普拉特,体育老师 2019年8月4日

面向对象的工业编程(OOIP)技术提供了面向对象编程(OOP)的生产力收益,同时保持了工业控制应用程序所需的易用性和可靠性。

本系列的第1部分展示了OOIP可用于从一组可重用组件构建工厂或机器控制程序,这些组件反映了从现成组件构建工厂或机器的方式,如图1所示。

第2部分展示了如何在其他块上构建块以创建大型分层分区系统,以及如何在OOIP设计中管理输入/输出(I/O)和配置。

抽象、嵌套和接口

除了第1部分中介绍的封装之外,抽象、嵌套和接口是OOIP中使用的另外三个概念。抽象是将细节按层次结构中的级别分组,因此程序员只需要在设计的任何一个级别上处理相关的复杂性级别。嵌套允许对象实例化其他对象,以构建和逻辑分区大型分层系统。接口提供了与层次结构中的下一层进行交互的标准化方法。在第1部分中的野马类比中,汽车有一个发动机,有一个启动器,有一个电枢,有铜线,如图2所示,这些铜线是在世界各地的某些地点开采和精炼的。抽象将引擎的嵌套复杂性和挖掘它的“铜”留给了其他人,其中细节级别适用于层次结构中的该级别。用户只需要知道引擎的接口——点火开关和油门踏板。

图3显示了如何使用抽象、嵌套和接口来构建分层流程工厂。在顶层,plant程序可以嵌套(实例化)两个反应器对象,每个对象都抽象了两个螺旋钻对象的复杂性,螺旋钻对象本身嵌套了电机和轴编码器对象。轴编码器和电机对象封装了接收来自轴编码器的脉冲和控制电机所需的所有功能(如关闭其接触器,监控其辅助触点或向心开关以验证其启动,如果未启动则产生警报,jog等)。

由于抽象的存在,在层次结构的任何一层上唯一需要关注的是到下一层的接口。例如,螺旋钻中的变速电机有一个接口来设置电机的速度。在螺旋钻级别,用户不需要知道或处理电机的任何底层复杂性,例如确定电机是否响应或产生警报。

一个例外是,如果需要知道电机是否响应,如果螺旋钻有多余的电机,就会出现这种情况。然而,在这种情况下,额外的功能将被抽象到一个额外的层次结构层中。与螺旋机实例化一个变速电机(VSM)不同,它将实例化一个冗余VSM,冗余VSM将实例化多个vsa本身,并在主电机故障时使用备用电机的逻辑。冗余VSM的接口仍然只是speed命令。每一层都封装了它能做到的所有功能,并且只在更高的级别上寻找它自己无法完成的任务。

对象配置,I/O映射

第1部分中描述的基于任务的控制和第2部分中描述的基于对象的控制之间的区别可以与不同形式的政府进行比较。基于任务的控制类似于一个强大的中央政府,其中新功能必须在联邦缩放局和联邦警报局注册,等等。基于对象的控制类似于去中心化的政府,其中新的功能是自我支持的,并且可以在很大程度上照顾自己。

现在,你可能会想:“大多数人会同意需要某种程度的政府”,“并不是所有的野马都是一样的。”野马有不同的特点和选择。这些在OOIP中是如何处理的?和“全局I/O内存如何与OOIP一起工作?”这些都是好问题。

图3:用于实现流程工厂的抽象、嵌套和接口概念。图片来源:ControlSphere LLC[/caption]

配置问题是通过中央服务处理的。在启动时,对象实例向中央配置器服务注册自己,然后该服务从CSV文件或SQL数据库获取配置数据,并将值分发给每个实例,如图5所示。配置输入允许一小组对象类型满足尽可能广泛的需求,从而简化了设计。本系列的第3部分将展示如何使用额外的OOP技术来实现集中式配置服务。

九个OOIP环境元素

寻找9个功能来确定开发系统是否支持OOIP:

  1. 一种创建自包含控制对象的方法,该控制对象对应于匹配的工厂对象,并执行该工厂对象所需的所有功能,如报警、审计、物理I/O、人机接口(HMI) I/O、缩放、控制等。
  2. 图形化编辑器,允许声明无限数量的对象实例,以任意方式连接对象的实例,以及将其他对象实例化到任意深度和复杂性的层次结构中的对象。在运行时,编辑器应该允许层次结构的简单导航,例如双击对象的实例以下降到项目层次结构并导航回来。
  3. 在运行时调试对象的个别实例的能力,包括:在个别实例中设置断点,单步进入个别实例,以及查看/更改对象实例的私有变量。
  4. 通过为实例在项目层次结构中的任何位置的配置输入分配唯一值来区分相同对象的实例的一种方法。这些配置值应该来自. csv /Microsoft Excel文件、SQL数据库或OPC UA。还必须有一种方法可以在运行时搜索这些配置变量的值(例如,搜索ISA标记名配置)。
  5. 将物理I/O映射到项目层次结构中任何位置的任何实例中的任何变量的能力(包括将输入点映射到多个实例)。组合I/O(例如来自现场总线设备的I/O)必须能够映射到单个变量,或者映射到项目层次结构中的任何位置的一个或多个数据结构变量。该工具必须提供一种方法来跟踪信号从其输入、通过逻辑到其驱动的输出的路径(同样地,从物理输出返回到影响该输出的逻辑的物理输入)。
  6. 构建与分层控制对象相匹配的分层HMI对象的能力,以及通过顶级对象的实例名互连两个对象(以及它们潜在的数千个底层互连)的能力。
  7. 能够打印层次结构设计的“扁平”版本,显示对象实例之间的相互连接和每个实例上的唯一配置值。
  8. 实现继承、方法、多态性和接口的能力会很有帮助。
  9. 一个活跃的用户社区和论坛,开源植物对象和建议可以共享。

接下来是第三部分

本系列的第3部分描述了IEC 61131-3“接口”的强大功能,并展示了该特性如何允许分布式对象向中央服务注册,以及如何实现中央服务。示例包括一个中央配置服务,它允许将分布在整个工厂的对象的配置输入写入或从一个集中的CSV或SQL数据库中读取,一个中央存储服务,它允许从分布式对象中收集调优参数,并在硬件故障时进行备份,以及一个集中警报服务,它允许对象处理自己的警报并通过中央服务进行协调。

为什么使用OOIP,数字化

除了本系列第1部分中讨论的封装和实例化之外,抽象、接口和嵌套的概念进一步促进了对象的可重用性和控制系统设计的简化。此外,全路径映射和集中式配置服务是可重用对象的关键支持因素。总的来说,OOIP的这些特性允许控制系统设计从对象中构建,就像工厂或设备从对象中构建一样,因此物理和控制设计可以成为一体。数字与物理以一种可以理解的方式匹配。也许在未来,设备供应商将为他们的设备提供这些控制对象。

OOIP不仅使设计易于构建,还使设计易于为工厂技术人员排除故障,并易于为未来的控制工程师进行维护。正如工业控制领域采用了其他最好的通用软件进步一样,OOIP也遵循着同样的模式。面向对象ip是控制工程的未来。

本系列的第3部分讨论了OOIP接口和方法

加里·普拉特,体育老师的主席ControlSphere有限责任公司.由内容经理马克·霍斯克编辑,控制工程, CFE传媒,mhoske@cfemedia.com

更多的答案

关键词:控制系统编程,面向对象的工业编程,面向对象ip

面向对象工业编程(OOIP)提供了OOP之外的好处。

OOIP功能包括创建与现实世界对象相匹配的自包含控件对象的能力。

第3部分查看IEC 61131-3接口。

考虑一下这个

你支持具有OOIP的数字设计,将对象与现实世界的组件和系统相匹配?

网上临时演员

关于作者的更多信息:普拉特的职业生涯始于1982年的雪佛龙公司工程,包括整个工业控制行业的许多职位。他拥有工业控制方面的专利,并致力于通过IEC 61131-3和CODESYS培训和咨询与下一代分享知识和经验。

开源OOIP功能块和设计示例的交流中心可以在www.OOIP-Foundation.org

本文中的示例使用CODESYS IDE可以免费下载。下载包括一个完整的基于软件的PLC,它将在重置之间运行2小时。

有关OOIP、模拟和配置对象的视频演示,请参见看这个视频: www.controlsphere.pro /视频/ ooip。

对于在OOIP中实现的离散、批处理和连续控制系统设计的更详细的示例,看这个视频


作者简介:Gary L. Pratt,他是ControlSphere LLC的总裁。