比较阶梯逻辑和面向对象编程

封面故事:许多年轻的自动化专业人员熟悉面向对象编程(OOP),但是阶梯逻辑仍然是工业自动化应用的标准。参见面向对象编程和阶梯逻辑的优缺点。

通过杰瑞Reaves 2018年7月12日

在科学、技术、工程和数学(STEM)、FIRST和其他高中技术课程中,许多年轻人都使用或编程了树莓派、Arduino或类似的微控制器。在默认情况下,大多数人正在学习使用某种类型的面向对象编程(OOP)方法来编程,因此当他们进入现实世界时就会被它所吸引。

然而,近50年来,工业自动化一直依赖于阶梯逻辑,也称为阶梯图。拥有数十年工业编程经验的程序员喜欢它。但他们不会永远留在这里,这个行业正在涌入已经熟悉面向对象编程的年轻员工。我们如何将这些新的劳动力进入者引入阶梯逻辑?虽然OOP有优点也有缺点,但它是梯子逻辑的一个很好的起点。

理解面向对象

OOP比阶梯逻辑的历史更悠久,出现在20世纪60年代早期或更早。“创客”世界现有的硬件和软件正在增加它的受欢迎程度。领先的微控制器,如Arduino和树莓派,就是例子(图1)。

Arduino微控制器硬件通常使用C语言编程的基本形式。树莓派是一个基于linux的系统,有很多OOP编程平台,如Python和Java。这些低成本的微控制器和微软的。net平台使得那些想学习OOP的人可以使用OOP。

OOP的优势

与梯形逻辑相比,OOP的优势包括:

  • 代码是可移植的,易于重用
  • 很容易与数学,循环等工作。
  • 几乎每门计算机编程课程都有教授
  • 代码可以在各种硬件平台上运行。

OOP使用对象;理解对象的概念和它们的用法对于掌握OOP是必要的。一旦编写了对象或模块化类,就很容易重用并多次调用它。例如,当创建一个对象来控制电机时,它会处理所有的输入、输出和故障。当需要控制多个电机时,这个单一对象可以作为实例多次使用。它在需要时被调用,在使用时创建一个实例。

每一个实例,对于每一个电机,都有自己的特性,如电机关闭,电机运行,电机转速,电机过载等。大部分编程工作是在第一次创建对象时完成的。这是一种不同于阶梯逻辑的思维方式,它更强大,因为一旦构建了对象,就很容易使用和重用。

OOP还使复杂的数学计算、循环计算、数组和嵌套子例程变得更容易。它也被教授在几乎所有的计算机编程课程在高中,大学和在线。所创建的代码是可移植的,可以在各种硬件平台上运行。

OOP的缺点

与梯形逻辑相比,OOP的缺点包括:

  • 更高的开销
  • 更陡峭的学习曲线
  • 维修人员不容易排除故障
  • 通常必须编译,以便源代码可以上传到处理器。

OOP可能比阶梯逻辑有更高的开销,因为它往往需要更多的内存和处理能力。OOP编程语言的学习曲线可能会更长。掌握核心概念可能需要大量的时间、练习、测试和应用,可能是在课堂上。

程序员必须经常研究OOP,以便使用跟踪器或调试器跟踪代码以跟踪逻辑。使用这种类型的高级编程,可能很难执行实时监控。源代码必须在下载到控制器之前进行编译。通常,源代码不会出现在处理器内存中。这意味着必须仔细备份源代码,因为编译后的代码通常是不可编辑的。

使用OOP,库需要连接到程序编译期间使用的其他资源。如果不了解连接和资源,就很难运行程序。

学习阶梯逻辑

阶梯逻辑是一种非常简单和自文档化的编码方法,有些人甚至争论它是否是一种编程语言。它遵循继电器控制系统中使用的梯形电气图的格式,大多数人可以很快学会它。几十年来,它是机器自动化领域中唯一具有工业强度的编程语言,并且它仍然是自动化行业中使用的主要编程语言(图2)。

随着时间的推移,不同的人从不同的领域和背景进入这个行业,不同的语言被添加到工业自动化工具箱中。其中包括功能块编程、结构化文本编程、状态编程和顺序功能图。这四种语言和阶梯逻辑构成了国际电工委员会(IEC)的编程语言标准IEC 61131-3。

IEC 61131背后的想法是,如果每个供应商都遵循该标准,至少在某种程度上,一个人可以一次学习这五种语言,并轻松地在不同供应商的不同平台之间迁移。然而,现实并非如此。

基本的阶梯逻辑(例如中继触点和线圈的使用)是相同的,但是编程时的语法和用户体验,以及如何使用编程平台的细节,必须为每个供应商学习。

尽管缺乏标准化,阶梯逻辑相对于OOP的优势包括:

  • 非常适合机器和过程控制
  • 很容易理解,因为它自然地是自文档化的
  • 易于使用的故障排除控制系统
  • 易于调试
  • 通常可以存储在处理器中的源代码。

阶梯逻辑非常适合于机器和过程控制,特别是具有大量离散输入/输出(I/O)的自动化系统。梯子逻辑经过多年的修改,也可以处理模拟I/O,使其非常适合许多过程控制应用程序,与机器控制应用程序相比,这些应用程序往往具有更高比例的模拟I/O。

许多熟练的技术人员和工程人员都可以快速学习梯子逻辑,因为它比OOP更容易使用。逻辑是非常系统和有序的,由于其自文档的性质,使得它易于遵循和理解。每一行代码都必须为真,才能打开某些东西。如果有5个马达,通常至少有5行代码,提供了高度的简化。

更容易学习

梯子逻辑对于电气工程师和维护人员来说是直观的。虽然阶梯逻辑需要与OOP不同的思维方式,但它可以很快学会,并且理解其他人编写的代码所需的时间更少。当逻辑是正确的时候,这是非常清楚的。触点的开启或关闭、通电线圈、比较变量和常见数学函数都很容易操作——即使是编程经验有限的人也可以操作(图3)。

它的易用性也简化了故障排除和调试。在监视逻辑时,很容易看到发生了什么。不需要软件学位或高级编程技能。使用梯子逻辑,维护和工程人员可以很容易地遵循流程并了解正在发生的事情。阶梯逻辑可以被认为是一个真值表。如果左边的逻辑为真,右边的逻辑就被解决或打开。

梯形逻辑源代码和描述符通常存储在控制器中。这可以消除程序员在不访问源代码的情况下试图理解编译程序时的挫败感,这是OOP的一个常见问题。

然而,与面向对象编程相比,阶梯逻辑可以:

  • 不熟悉计算机程序员、信息技术(IT)等。
  • 难以处理数学、文本和数据
  • 依赖于扫描时间
  • 需要专门的硬件来执行,如可编程逻辑控制器(PLC)。

阶梯逻辑对于计算机程序员和IT人员来说是一种不熟悉的符号语言,因为这不是他们通常在学校学习的东西。在阶梯逻辑中处理数学、文本字符串和数据可能比较困难,因为阶梯逻辑最初并不是为处理这些函数而设计的。

阶梯逻辑也是扫描时间相关的。较大的程序需要更长的时间来扫描和解决逻辑。使用阶梯逻辑,读取输入,扫描逻辑,更新数据表和输出,执行开销通信,然后循环重复。可以实现中断等函数和其他编程技术,以确保更快地执行某些梯级。虽然具有梯形逻辑的基于软件的PLC可以在PC上运行,但通常硬件(如PLC)与编程软件相匹配,两者都从同一供应商购买。这保证了兼容性,但阻碍了供应商的切换。

除了比较梯形逻辑和面向对象编程的优缺点之外,用户还应该评估这些语言在将要部署的环境中的现有使用情况。如果工厂或设施在阶梯逻辑上进行了标准化,则不鼓励使用OOP,即使它更适合应用程序。然而,OOP的使用正在增长,预计在未来几十年里它将与阶梯逻辑共存。一个有抱负的自动化专业人士会很好地学习梯子和面向对象编程方法。

杰瑞Reaves他是AutomationDirect的PLC筒仓产品经理。由内容经理马克·霍斯克编辑,控制工程, CFE传媒,mhoske@cfemedia.com。

更多的答案

关键词:PLC编程,梯形逻辑,面向对象

  • 梯子逻辑面向对象编程
  • PLC)编程策略
  • 学习阶梯逻辑和面向对象编程会有帮助。

考虑一下这个

做你的PLC程序员是否受过足够的培训?


作者简介:Jerry Reaves是AutomationDirect的PLC产品经理,已经在该公司工作了14年以上,毕业于DeVry大学电气与电子工程专业。