行业见解
面向对象编程(OOP)案例的构建
发表于09/18/2019.
| By: Ray Chalmers, Contributing Editor
虽然不是灵丹妙药,但正确的申请会带来令人印象深刻的回报
它可能不会很快变化,但制造过程不断变化。很大的跳跃,如电气化,计算机数控,启用AI的智能电机和网络自动化之前是突破性的,然后在生产率,安全和质量方面进行大规模的过程。
可编程逻辑控制器(PLC),一种用于制造设备和过程的坚固计算机,就是这种突破之一。开发用于替换每个应用程序的数千个电气继电器的硬布线,正确的PLC编程策略的路径携带许多路标,以吸引您的注意。其中最吸引人的是面向对象编程(OOP)。
早期的PLC设计用于取代继电器逻辑系统。这些PLC被编程为梯形逻辑,它强烈地类似于继电器逻辑的示意图。选择梯子逻辑完成了工作,电气工程师,技术人员和维护人员熟悉,减少了培训需求。其他早期的PLC使用基于基于堆栈的逻辑求解器的指令列表编程形式。
PLC程序通常在个人计算机上的一个特殊应用程序中编写,然后通过直接连接电缆或通过网络下载到PLC。程序存储在PLC中的电池后备RAM或其他非易失性闪存。最早的PLC,即在20世纪90年代中期,使用专有的编程面板或专用编程终端进行编程,通常具有代表PLC程序的各种逻辑元素的专用功能键。专有的时间编程终端显示PLC程序元素作为图形符号,但是触点,线圈和电线的普通ASCII字符表示是常见的。程序存储在盒子上。由于缺乏内存容量,印刷和文档的设施很小。
PLC程序通常在个人计算机上的一个特殊应用程序中编写,然后通过直接连接电缆或通过网络下载到PLC。程序存储在PLC中的电池后备RAM或其他非易失性闪存。
根据IEC(国际电工委员会)标准61131-3(2013年2月发布的第三版),可以使用基于标准的编程语言编程plc。最常用的编程语言是梯形图(LD),也称为梯形逻辑。它使用基于继电器的接触线圈逻辑使程序像一个电气控制图。
IEC 61131-3目前为可编程控制系统定义了五种编程语言:功能框图(FBD),梯形图(LD),结构化文本(ST;类似于PASCAL)、指令列表(IL;类似于汇编语言)和顺序函数图(SFC)。专家表示,即使梯子最初是起点,“随着时间的推移,每个与我们一起工作的人都会倾向于ST。”也就是说,所有这些技术都强调操作的逻辑组织。
功能块图使用基本块来表示函数,并从左边输入的行接收输入。退出到右边的行表示输出结果。
进入OOP
确定面向对象编程的定义可能是一个有趣的命题。维基百科称其为“范例”。某些PLC供应商称之为“原则”,另一些则称之为“架构”。不是一种语言,但受到许多现代高级工业编程语言(包括Java、c++、c#和Python)的支持,也许“方法”很好地涵盖了OOP给聚会带来的东西。
亚当·J·库克斯特兰德斯特朗德的首席技术官,PLC编程越来越困难,因为过程应用越来越复杂。“渴望将数据和行为”分手“的策略变为更可管理的孤立的块,以帮助可读,修改和重用,”他说。“就像Python和其他现有的高级编程语言一样,所选的策略是采用面向对象的编程(OOP),这在构建一般软件系统方面证明是非常有弹性的,”他说。“因此,PLC供应商和IEC标准已经变得更加响应,并更专注于OOP。
Beckhoff自动化公司的Bob Trask甚至说得更清楚:“一般来说,PLC软件开发与其他软件开发没有什么不同,软件开发世界中可用的所有工具也适用于PLC软件开发。(源代码控制,UML, OOP,等等)。当软件以一致的文档方式编写时,它将更容易阅读、更容易修改、更容易重用和更容易更新。这节省了时间,也节省了金钱。”
Matrikon公司OPC产品经理肖恩·伦纳德(Sean Leonard)进一步介绍了背景。历史上,构建控制系统软件应用程序涉及开发算法和数据结构,以解决特定的问题。这个问题可以通过一系列步骤(或程序)来解决。这种编程方法被称为命令式编程或过程式编程。如果问题只需要解决一次,并且问题的规模相对较小,那么这种软件开发方法就非常有效。
随着控制系统软件应用程序所解决问题的规模的增加,复杂性也随之增加,使得程序编程变得很麻烦。使用过程方法开发的软件通常很难描述、维护和扩展。
“从经济角度来看,从开发软件中获利的明显方法是减少需要开发的软件代码的数量”,伦纳德继续存在。“代码重复使用是实现这一目标的最简单方法之一。通常,使用程序方法可以实现的代码重用量相对较小,这意味着程序变得更加复杂,使用程序方法最终变得更少有吸引力“。
软件设计中的基本突破是使用对象的数据抽象的概念。通过建模程序流来代替开发软件,该软件是使用对象建模的。对象是系统的名词。对象是具有内部代码内具有属性的结构和行为模块的单位。此类对象不仅封装了设计决策,它还封装了系统的行为,身份,状态甚至业务规则。表示问题作为一组协作对象的过程,以及对象之间的关系是面向对象的编程。
对象和方法
鲍勃·桁架将OOP作为一种方法。“这是一种思考方式,”他说。世界上的一切都是一个对象,包括系统或机器,它不仅是对象本身,而且由对象组成。“系统的进化和发展是由系统内部或外部的对象之间的相互作用引起的,”他解释道。
考虑一辆自行车。自行车是一个物体。自行车(框架,齿轮,踏板)的性质也是物体,而物体的“动词”(施用制动器,移位齿轮)是物体的方法。
封装、继承和多态性是面向对象的编程属性,有助于组织代码和扩展有效的重用。
使用程序编程,从主程序调用单独的例程。换句话说,过程调用调用该过程。在处理序列之后,控制流程在从呼叫的位置之后进行右转。
对象可以包括许多例程及其数据(“封装”)。由于与任何对象关联的方法和属性数不清,因此可以为调用和数据访问定义许多接口。对象包括行为,对象可以做的事情,比如其他语言中的过程和函数。对象也有属性或属性,即对象“知道”的信息。但最重要的可能是,封装和定义的接口意味着对象可以重用。
Trask将封装描述为OOP的“四大支柱”之一,另外三个支柱是抽象、继承和多态性。封装已定义的对象允许每次发生相同系列的事件、检查或更改时保持一致性。如果操作正确,它可以确保每次都正确地进行属性操作,这有助于单元测试和代码稳定性。
面向对象编程的抽象意味着属性和方法可以在对象中“隐藏”,为更简单的接口制作并降低更改的影响。“OOP是关于封装离散容器内的数据和功能,这意味着它是一个较大系统中的孤立组成部分,”Adam Cook添加。然而,由于继承意味着容器可以继承来自其他容器或功能块的功能;或多个功能块可以规定公共接口。“这极大地帮助代码组织,重用和切断所需的认知负载。”
继承允许在不更改原始工作代码或上下文的情况下扩展现有对象,而多态性允许与对象一起使用的测试算法在后续子类实现中重用,而不需要重新测试算法。这些特性结合起来提供与框架设计和代码可扩展性一致的编程构造。
PLC制造商的支持
这并不是说面向对象的编程可以立即替换所有其他编码方法。如前所述,仍然有大量的机器以梯形逻辑编程,仍然存在支持制造操作。“两者都活着和踢了,”自动化中心美洲董事麦克辰说欧姆龙.“在一天结束的时候,人们保持机器运转。无论你是程序员、操作员还是维护人员,制造公司都有拥有不同技能和期望的员工,他们可以同时使用过程方法和面向对象方法,并优化生产率。”
OOP可能会增加工业市场份额,因为PLC编程人才池继续巩固和从电气工程师转向程序员。对象,封装和继承对于处理复杂算术很好。“这对保护知识产权也非常有用,”他补充道。“OEM可以将机器运送给客户,并确保没有其他人可以访问源代码。”
虽然PLC供应商如欧姆龙继续支持梯形逻辑和OOP编程,但基本规则仍然适用。“你不能只是跑和枪,”陈笔记。考虑公司和部门现实,仍然需要仍然需要最佳解决和代码申请的前期规划和决定。一些制造商希望维护当前的系统,其他人则计划完整的换行符。确定业务优先事项,功能和文化至关重要。
行动中的过程对象
节省时间和提高效率是普遍的优先事项。罗克韦尔自动化概述了过程对象如何在调试一个主要的加工工厂中节省显著的时间。对于柳韩金伯利在韩国金川的转换工厂来说,时间是至关重要的。随着对卫生纸的需求急剧增加,从美国进口原材料在金川工厂进行加工和包装已不再有效。柳韩金伯利公司需要自行生产原料,因此决定将美国工厂的毛巾机转移到金川。
这需要一个主要的控制升级。在这一生产过程中,玉汉kimberly正在运行过时的传统分布式控制系统(DCS)。替换部分是一个挑战,几乎无法获得提高效率所需的更新功能,以提高yuhan-kimberly想要的水平,例如额外的机器安全选项和包括现代化过程解决方案和安全控制的多学科系统。使情况复杂化,以满足生产目标,新系统迁移需要快速完成,没有停机。
Yuhan-Kimberly开始致力于更换工厂的传统控制系统,并对体系结构进行现代化改造,以提高生产率和安全性。该公司需要一个集成系统,能够提供完整的生产线和配方能力,并解决传统DCS存在的质量和一致性问题。由于旧系统的复杂性,新安装的用户友好性很重要。
Yuhan-Kimberly从罗克韦尔自动化和其他自动化供应商那里获得了转换系统的投标,该公司报告称,系统包括控制器、人机界面(HMI)和机器安全。它还分析了遗留系统上使用的应用程序,并考虑了如何在罗克韦尔自动化平台上设计、迁移、安装和调试这些应用程序。
Allen-Bradley Controllogix可编程自动化控制器(PAC)的新流程控制系统中心。与传统控制器不同,ControlyOgix PACS提供多学科控制利用开发工具,网络协议和面向服务的架构,使其成为可以在整个玉汉 - 金伯利工厂中使用的完全集成的可伸缩控制平台。
核心优势的优点是一种硬件和软件解决方案,包括基于集成的架构的现代DCS,(PlantPAX)和通过单个工业网络的机器安全控制:以太网/ IP。为了加速迁移过程,维持一致性并减少安装时间,客户依赖于罗克韦尔
自动化过程对象库。此库简单方便使用,并允许操作员最大限度地减少系统部署和测试时间。结果,这种解决方案提高了生产效率,加快了启动过程,提高了市场的时间。
据该公司称,罗克韦尔自动化过程对象库缩短了两个月的实施时间,因此操作员提前安装了PlantPAx系统。他们立即利用了更简单的操作程序。例如,操作员可以检查和改变机器的运行状态,并通过面板安全地查看联锁状态,而不是逐个检查逻辑程序(这是遗留系统的要求)。
单一平台完成的顺利迁移减少了备件和培训成本。此外,现代DCS还降低了所有权(TCO)的总成本,同时满足客户提高机器安全的要求。
索赔和真理
与许多技术决策一样,建立面向对象的编程的案例值得研究研究和尽职调查与真理中的单独索赔。
宣称: OOP可以节省大量时间。
真相:正如韩国工厂的例子所示,OOP的实施时间缩短了两个月,同时也提供了显著的运行和维护效率。“但这并不能加速软件开发,”Bob Trask说。“如果应用得当,就有很多节省时间的机会。”
宣称:OOP比过程化更好
真相:套用艾森豪威尔的话说,计划是无意义的,计划是必要的。考虑不周的操作目标,OOP代码可能效率低下,而且复杂得不必要。
宣称:OOP很难。
真理: “我觉得洞察力OOP在某些行业中是困难的吗总是增加了比价值更多的难度,我不认为总是真的,“亚当厨师回复。“当然,为了更简单的过程应用程序,OOP可以是矫枉过正的。但是对于甚至适中复杂的程序和改变相当多的操作的程序,OOP可能非常有帮助,并在线下支付一些非常大的股息。
“就像所有新事物一样,考虑到行业齿轮总是慢慢地移动,OOP将自然是外国和可怕的。行业培训正在跨PLC供应商改善(通常已经支持IEC-61131-3和CFC扩展),但即使具有广泛的培训产品,它将需要时间。“
“由个人公司/团队决定他们喜欢和将实施哪些想法(如果有的话),”Bob Trask说过软件开发。“关键项目是一致性,只要所有程序员都遵循相同的方法,软件就会变得更加可读,可重复使用,更强大。”