阶梯逻辑在自动化中的未来角色

选择编程语言时要考虑的九个问题。阶梯逻辑受到离散行业制造商的青睐,但随着技术和自动化的发展,它与其他IEC 61131-3编程语言和PC编程相比的有用性取决于应用程序的复杂性和其他因素。

通过Jon Breen, Breen机器自动化服务公司 2018年7月3日

梯形逻辑,主要的可编程逻辑控制器(PLC)编程语言,是简单的,并图形表示为继电器触点和线圈。但问题是:与其他编程语言相比,阶梯逻辑能在多大程度上满足当前和未来复杂的自动化需求?答案要比触点和线圈复杂得多。

阶梯逻辑起源

自动化在plc之前就已经存在了,通常使用继电器网络作为应用程序的大脑。没有编程角色;有一个工程师设计电路,一个电工组装电路。该电路将以一种标准结构记录,在纸上绘制时类似于梯子,因此称为“梯形图”(参见图1)。

当plc出现时,他们承诺自动化有很多好处,但没有人知道如何编程。然后有人想到用梯形图来编程plc,这使得业界可以重新利用现有的编程技能集。工程师和电工可以阅读和理解程序,自动化设计可以在很大程度上遵循与继电器相同的模式。

在plc出现之前,继电器占用了机柜中的物理空间,需要花钱购买,并且需要时间布线。它们也仅限于开/关功能——没有模拟、数学或中继逻辑中的数据收集功能(除了特殊继电器中的一些稀疏计时和计数功能)。即使是最大、最复杂的自动化系统也受到物理继电器现实的限制,因此阶梯逻辑语言不必做太多事情。

今天,PLC内部的处理器芯片可以在更低的空间、金钱和实现时间成本下完成比继电器更多的工作。反过来,plc中使用的编程语言也在增长,以反映功能的增加。阶梯逻辑在今天比过去有了更多的应用。plc通常被用于模拟控制、跟踪零件数据(条形码、测试结果、校准)、控制运动和大量其他任务——阶梯逻辑仍然是主要的语言。随着语言的发展和自动化变得越来越复杂,编程plc已经成为一个更专业的职业。阶梯逻辑不再是电工阅读和维护的方便语言,也不再是即将到来的劳动力中广泛存在的技能。

其他PLC编程语言

工业编程受到两个团体的影响:标准IEC 61131-3,国际电工委员会的工业控制编程标准;电脑编程。这些语言通常被视为阶梯逻辑的补充,而不是直接对立。

IEC 61131 - 3

随着plc的流行,工业界发现需要标准来指导编程。IEC委员会通过标准IEC 61131解决了这一需求,并在第三部分(61131-3)中特别介绍了语言。它定义了四种通常可互换的编程语言——梯形图、功能框图、结构化文本和指令列表——以及一种称为顺序功能图的程序组织语言。

每种语言都有自己的优点和缺点,它们可以在一个程序中一起使用,以最好地支持不同的程序功能。对于哪种语言最适合哪种任务(参见图2),当然还有争论的余地。通常,流程将以离散或连续的方式运行。自动化也倾向于主要是数字输入/输出(I/O)或模拟I/O。

电脑语言

从PC世界引入自动化的语言倾向于用于专业/外围应用程序。这可能包括与数据库的接口或编程自动化外围设备,如相机和机器人。结构化文本(在IEC 61131中定义)非常类似于Pascal,在IEC 61131引入时是一种常见的PC编程语言。Pascal后来失宠了,但它是一个很好的例子,说明自动化行业过去是如何借鉴PC行业的。目前在自动化领域使用的PC语言包括c++、Java和c#。这些语言功能强大,但还没有在自动化领域找到强大的立足点。

三个编程问题

在将梯形逻辑与其他可能的选项进行比较之前,了解程序真正需要做什么是很重要的。程序必须使自动化工作,几乎任何语言都可以做到这一点,但现实世界也对它提出了其他要求。这在很大程度上归结为可读性。问这三个关于编程语言的关键问题。

a .程序员或维护技术人员能够看到代码并理解它的功能吗?

B.能否迅速发现问题以减少机器停机时间?

C.当需要新的功能时,扩展程序是否容易?

不同语言的某些特性会影响程序员编写可读程序的能力。有九个方面尤其会影响编程语言的选择。

1.一般知识

梯子逻辑被广泛使用,这使得很容易找到能读懂它的人。其他IEC 61131语言在某些行业中表现出一些偏好,但并没有被普遍使用或理解。在自动化中使用的PC语言往往非常流行,并且有很多支持资源,但在工业社区中并不总是如此,这降低了潜在的好处。

2.内部文档

每种语言都有一种方法让程序员用简单的英语解释程序的意图。在阶梯逻辑中,这主要是通过梯级注释和标签(变量)注释来完成的,这对于简单的梯级很有效,但对于较大的梯级或数学来说用处不大。

其他IEC 61131语言各不相同,但通常都能很好地记录它们擅长的事情。例如,结构化文本可以很好地记录数学和循环结构。

PC语言倾向于提供更多的功能,有许多内部文档选项,有时甚至可以从源代码自动生成文档,为程序员或技术人员创建一个手册,供他们快速参考和理解大局。

3.决策结构和循环

在一个简单的层面上,编程可以归结为“如果发生了这个,就做那个”。这是一个称为“if-then”的决策结构,在这里讨论的所有语言中都很容易使用和理解。但是如果程序员想要做某件事不止一次呢?这些结构没有得到梯形逻辑的很好支持,通常导致代码可读性差。另一方面,结构化文本和PC语言往往非常擅长所有常见的决策和循环结构。

4.数学

加减法很简单,适用于任何语言,但当涉及复杂的数学时会发生什么呢?阶梯逻辑支持算术和一些基本函数,如绝对值或平方根,但由于计算涉及更多的部分,它们往往不太可读。注释在视觉上与它们所记录的内容分离,并且多次执行相同的数学运算并不漂亮,因为循环并不漂亮。结构化文本和PC语言往往更适合使用大型数学函数。PC语言还提供了几乎适用于任何目的的高级数学函数,并且打包为易于使用。

5.可见性

阅读一个不熟悉的程序就像通过纸巾管阅读一本你自己选择的冒险小说。你必须在书的不同部分之间来回翻页,而且一次只能看到一页的一小部分。屏幕上的代码数量会影响程序员弄清程序的功能和方式的能力。阶梯逻辑通常一次在屏幕上显示一到五个梯级。它的图形特性使得信息稀疏,对于程序员来说很难“看到”整个程序。顺序功能图,也是图形化的,通过高级别和本质上的限制,避免了这个问题,就像一本带有目录的短书。基于文本的语言(结构化文本和PC语言)往往更密集,一次在屏幕上显示30-50行代码。

6.封装、代码重用

增加复杂性的答案是什么?抽象。开车时,司机不会考虑点火时机、牵引力控制或发动机冷却策略。所有其他的东西都是抽象的,独立的,自我管理的。在编程中,这被称为“封装”,它的好处不仅仅是让事情在不同的细节级别上更容易理解;这也意味着代码可以被重用。如果一台机器被编程为计算一天中每小时的整体设备效率(OEE),那么它可以被编码为计算一次OEE,然后每小时重复使用它。阶梯逻辑和其他IEC 61131语言在这方面做得很好。PC语言添加了面向对象的特性,这使得这个功能更加强大。IEC 61131有面向对象的规定,但它们并不总是由PLC制造商实现,这意味着程序员不能使用它们。

7.

库允许用户将别人的代码以封装的、测试过的形式添加到程序中,从而将代码重用提升到一个新的水平。就像汽车的例子一样,用户甚至不需要知道引擎盖下有什么就可以利用它。Ladder和IEC语言对这类功能的支持有限。

PC语言有很多库支持,通常是免费的。这些并不打算涵盖ladder擅长的功能,但通常适用于ladder不太适用的领域,如数学、视觉检查和数据处理。

8.模拟与数字

在许多方面,模拟与数字的争论与数学的争论相似。阶梯逻辑在处理数字信号和信息时表现得很好,但在处理模拟信号和信息时就不那么完美了。函数块是另一种IEC 61131语言,它可以很好地处理模拟信号,但在处理数字信号时就不那么优雅了。结构化文本和PC语言往往都能很好地处理这两种语言,但由于它们更灵活,程序员更需要为可读性而组织好代码。

9.决定论

在自动化中,对于控制器(PLC、PC)来说,在可重复的时间范围内读取输入、运行程序和写入输出(例如,每15毫秒一次)通常是很重要的。这就是决定论。阶梯逻辑和所有IEC 61131语言都是确定性的。PC语言各不相同。例如,c++可以是确定性的,但是像Java和c#这样的高级语言通常不能提供确定性。

最好的选择是什么?

那么,梯子逻辑如何与其他逻辑相匹配呢?它仍然受到离散自动化行业的青睐,其中数字输入和输出是常态。另一方面,在模拟输入和输出占主导地位的流程工业中,可以很好地利用函数块语言来处理这些代码部分。

当然,行业偏好只受上述考虑之一的支配:支持。

可用的支持在很大程度上是历史规范的表现,因为最近的历史决定了今天的劳动力有什么经验。由于阶梯逻辑已经成为标准很长一段时间,使用不同的语言似乎是一个可怕的前景。

然而,应届毕业生对基于文本的语言有经验,而对阶梯逻辑没有经验。随着劳动力的转变,随着越来越多的支持可用,行业偏好可能会倾向于基于文本的语言。不过,最终,自动化操作可能涉及多种语言。只用一种语言思考可能不利于实现这些目标。

PLC将使用一种或多种语言,许多外围设备也是如此。对于程序员来说,了解哪些语言是可用的,它们的优点是什么,以及如何应用它们来创建可读的、可支持的代码是很重要的。

乔恩•布林创始人/所有者,布林机器自动化服务公司.由制作编辑克里斯·瓦夫拉编辑,控制工程, CFE传媒,cvavra@cfemedia.com

更多的答案

关键词:梯形逻辑,PLC,编程

梯子逻辑为离散制造商编程所青睐。

对于更复杂的情况应用程序、IEC 61131-3和PC编程语言可能更有用。

任何应用程序可能涉及多种语言,所以尽可能多地了解是有益的。

考虑一下这个

哪些因素在选择阶梯逻辑和其他编程语言时,哪种语言对你的实现最重要?

在线额外

PLCopen解释了更多关于IEC 61131-3编程语言的内容。

IEC提供了超过2000页的IEC 61131标准系列。国际标准IEC 61131-3由65B小组委员会制定:测量和控制装置,部分IEC技术委员会65:工业过程测量、控制和自动化