讲方言:理解IEC 61131-3编程语言

长期以来,IEC 61131-3可编程控制器语言标准一直被认为是欧洲的一种现象,现在它在美国越来越受欢迎。许多控制工程师熟悉这些语言中的一种或几种,但不是全部。这使得他们很难根据编程语言特征为给定的应用程序做出最佳选择。见图。

通过Ted Thayer,博世力士乐电气驱动和控制 二零零九年一月三十日
在线额外

以下是每种语言的详细介绍,并附有图表。

长期以来,IEC61131-3可编程控制器语言标准被认为只是欧洲的一种现象,而现在它在美国正获得越来越多的关注。许多控制工程师熟悉这些语言中的一种或几种,但不是全部。这使得他们很难根据编程语言特征为给定的应用程序做出最佳选择。

由于国际电工委员会(IEC),出现了五种标准语言,用于编程过程和离散控制器:

  • 梯形图(LD)

  • 功能框图(FBD)

  • 顺序功能图(SFC)

  • 说明书(IL)

  • 结构化文本(ST)

什么时候应该使用一个而不是另一个?每种方法的优点和缺点是什么?要深入了解每种编程语言的代码示例,请参阅本文的在线版本控制工程网站www.globalelove.com通过2009年1月的档案。

选择合适的语言

有了不同的编程语言,在决定为您的应用程序使用哪种语言之前,考虑几个因素是很重要的。当然,如果你已经熟悉了某种语言,那么你可能会倾向于坚持你所知道的。但是,在做出决定之前,请考虑每种语言的高级优势,如下所述:

  • 最终用户易于维护:SFC;

  • 语言的普遍接受:LD;

  • 在欧洲的接受度:IL或ST;

  • PLC的执行速度:IL或ST;

  • 应用主要采用数字I/O和基本处理:LD或FBD;

  • 易于更改代码:LD;

  • 新工程师易于使用:ST;

  • 易于实现复杂的数学运算:ST;和

  • 具有重复进程或需要联锁和并发操作的进程的应用程序:SFC。

您的PLC或PAC平台也可能影响编程语言的选择,因为并非所有自动化供应商都提供完全兼容IEC61131-3的编程软件。事实上,大多数非欧洲的供应商都不提供这个功能,或者只有非常有限的选项,比如Ladder和SFC。

另一个考虑因素是,由于缺乏内存或处理器速度,并非所有plc都能够运行各种IEC语言。这往往是许多微型plc的情况。

当许多程序员被客户规范所束缚时,如果他们有选择硬件平台的自由,他们应该决定哪种或哪种语言最适合应用程序,然后选择支持它的硬件和软件。

在线额外

梯形图

梯形图(Ladder Diagram,简称LD)可能是使用最广泛的控制器编程语言。梯子编程的发明是为了取代基于继电器的硬连线控制系统,大约95%的应用都使用梯子编程。从视觉上看,这种语言类似于一系列控制电路,为了激活一个或多个输出,需要“制造”或“为真”一系列输入。

梯子经历了如此广泛的采用,几乎任何国家或行业的每个程序员都可以阅读和编写这种语言。因为它类似于我们所熟悉的电路格式,即使是一个没有电气背景的非程序员也可以按照程序进行故障排除。

用Ladder开始编写程序也很容易。只要有了输入和输出信号的基本轮廓,就可以开始编写代码了。大多数其他IEC语言需要更多的准备工作,例如绘制所有潜在过程流的流程图。最后,大多数Ladder实现允许将程序组织到可下载到PLC的文件夹或子程序中,从而允许简单的程序分段。

梯子编程非常适合简单的材料处理应用,例如,传感器检测到盒子的存在,其他传感器检查障碍物,然后输出触发执行器将盒子推到另一个输送机上。数字输入检查各种条件,程序分析输入并响应数字输出。程序中可能有计时器,或者一些基本的比较,或者数学运算,但是不涉及复杂的函数。

然而,随着PLC功能的复杂性的增长,梯子已经面临挑战,以满足这些进步,仍然保持易于可视化和理解的范式。现在许多控制应用中需要的功能,如PID回路,三角函数和数据分析,可能难以实现。另一个挑战是,随着程序规模的增长,除非有广泛的文档记录,否则梯子会变得非常难以阅读和解释。最后,在Ladder中实现完整的流程可能是令人望而生畏的——想象一个梯形,在一个流程的几个阶段中使用一个输出,其中有许多输入条件,试图控制该输出何时需要打开。

功能框图

虽然梯子可能是最广泛使用的语言,但由控制工程杂志几个月前强调了除梯子以外的编程语言使用的增长。功能框图(FBD)编程就是一个例子。尽管相对于其他语言(如结构化文本),这种语言的采用率最近有所放缓,但FBD可能是第二大最广泛使用的语言。

在许多方面,这种图形化语言甚至比梯子代码更像接线图。使用FBD,这些块被“连接”在一起,形成一个易于遵循的序列。它使用与Ladder相同的指令,但对于不精通继电器逻辑的观看者来说,在视觉上更容易理解。它的主要优点是用FBD编写的程序易于遵循——只需遵循路径即可!

FBD是由数字输入(如光电传感器)和输出(如阀歧管)组成的简单程序的理想选择,可用于梯子工作良好的任何应用。

但是,对于使用特殊I/O和功能的大型程序,FBD并不理想。如果程序达到任何实质性的尺寸,那么所需的大量屏幕空间会迅速使程序变得笨拙。此外,用FBD编写程序需要更多的前期准备,以便在编写任何代码之前了解程序及其流程,因为之后很难进行更正。

顺序功能图

顺序功能图(SFC)编程类似于许多工程师在大学时代绘制的计算机流程图。初始步骤“动作框”(流程图的起点)之后是一系列转换和附加的操作步骤。SFC的概念很简单:一个操作框,里面的代码用程序员选择的任何语言编写,在它下面的过渡步骤激活之前一直处于活动状态。当前的动作框被关闭,序列中的下一个是活动的。转换步骤还包含检查是否满足必要条件以允许程序进入下一步的代码。这种语言对维护工程师来说非常友好,因为它的可视化特性和自然的代码分割使它易于故障排除。

缺点是,这种编程风格并不适合每个应用程序,因为它强加于程序的结构可能会增加不必要的复杂性。在尝试任何编程之前,必须花费大量时间进行准备和计划,否则图表会变得笨拙且难以遵循。这种类型的程序所需的开销导致它比其他语言执行得慢。

最后要考虑的是无法转换为其他语言。IL, FBD, ST和梯形程序可以很容易地相互转换,允许一段代码以最舒适的方式显示给用户。然而,SFC无法转换。

指令表

指令表编程(IL)由许多行代码组成,每行只表示一个操作。因此,它在布局和格式上非常循序渐进,这使得一系列简单的数学函数的输入变得容易。

IL是一种低级语言,因此,它的执行速度比图形语言(如Ladder)快得多。IL也更紧凑,在PLC存储器中消耗更少的空间。这种语言支持的简单单行文本输入方法也允许非常快速的程序输入-不需要鼠标,不需要单击选项卡!在遗留系统中,用IL编写的程序更容易在手持编程单元上显示和编辑,不需要软件或笔记本电脑。

尽管IL有很多优点,但维护和服务工程师似乎并不喜欢它。这可能是因为它不如Ladder可视化,这可能会使解释程序正在做什么以及它正在经历什么错误变得更加困难。

IL可以使输入复杂的函数,如PID回路和复杂的数学计算,一个斗争。IL不能很好地适用于任何形式的结构化编程,例如状态编程或阶梯编程,这进一步限制了它在实现大型程序时的有用性。同样有争议的是,考虑到现代plc的处理速度和大量可用的内存,速度和紧凑性的优势不太相关。

结构化文本

通过IF…THEN循环、CASE选择器和以分号结尾的行,结构化文本(ST)与Pascal和c等高级计算机编程语言非常相似控制工程调查表明,在所有iec61131定义的编程语言中,ST的采用增长最快。

在IEC语言中,ST可能最好地包含PLC编程的日益复杂,例如塑料或化学制造中涉及的过程控制功能。三角函数、微积分和数据分析可以比在Ladder或IL中更容易实现。决策循环和指针(用于间接寻址的变量)允许比在Ladder中实现的更紧凑的程序实现。大多数编程包中常见的灵活的ST编辑器使得在整个程序中插入注释以及使用缩进和行间距来强调代码的相关部分变得很容易。这使得构建复杂程序的任务变得更加容易。

ST基于文本,非图形化,类似于IL,运行速度也比Ladder快得多。ST的另一个好处是,它比大多数其他语言更接近实现IEC61131标准的可移植性目标,将程序员从硬件平台中解放出来。

最后一个好处是,许多目前从工程专业毕业的学生在计算机语言方面比在电线基础方面有更好的背景,因此比梯子编程更容易精通ST。

缺点是,对于许多以前有经验的程序员或维护和服务人员来说,ST环境是不熟悉的。编写代码和结构以使其易于维护可以减少其紧凑性的一些优点。

因此,控制工程师倾向于在“幕后”使用ST。例如,IEC 61131允许程序员用一种语言构建他或她自己的函数,然后将它们作为另一种语言的子程序插入。使用此选项,程序员通常将ST程序封装在指令中,然后将其嵌入到Ladder程序中。

为什么要使用软件验证?

随着控制系统应用程序变得越来越复杂,在初始开发和后续维护期间保持软件质量变得越来越困难。在可下载的白皮书中控制工程LDRA有限公司的软件工程师Paul Humphreys对控制软件进行了广泛的测试,并解释了世界级嵌入式控制软件开发人员使用的程序,以确保无错误的应用程序。下载白皮书。

更多信息:

www.iec.ch

www.boschrexroth-us.com

作者信息
Ted Thayer是博世力士乐电气驱动与控制公司的自动化系统产品经理。与他联系:ted.thayer@boschrexroth-us.com