IEC61131-3标准编程语言
2020-07-01王保飞
王保飞
【摘要】IEC (国际电工委员会)61131-3是IEC61131国际标准的第三部分,是第一个为工业自动化控制系统的软件设计提供标准化编程语言的国际标准。本文通过对IEC61131-3标准的深入分析并通过举例,探讨自动化工程师在编写PLC程序时如何符合国际标准。如何编写程序才能使程序具备可移植性。
【关键词】IEC61131-3 国际电工委员会 PLC 编程语言
前言:在开发PLC(Programmable Logic Controller)的早期阶段,并没有一个统一的国际标准。不同的自动化制造厂依据自己的习惯,使用自己的编程语言。这些编程语言不论从内容上还有形式上来看都不尽相同。然而美国公司却更加喜欢由继电器控制逻辑而衍生的梯形图语言和控制鼓。法国公司则使用了除梯形图语言之外的另一种语言GRAFCET语言,这种语言更加适合完成顺序控制。这对PLC程序的编制带来了不便。为此国际电工技术委员会IEC于1993年正式颁布了IEC 1131-3的国际标准。并由IEC的第七工作组在其基础上制定了新的IEC61131-3的标准。
一、编程语言
结合各大公司的PLC系统,使标准具有更加宽泛的应用范围。IEC 61131-3共定义了两大类共计5种编程语言。①指令表(Instruction List,IL);②结构化文本(Structured Text Language,STL);③梯形图(Ladder Diagram,LD);④功能块图(Function Block Diagram,FBD);⑤顺序功能图(Sequential Function Chart,SFC)。
二、文本类
文本类语言顾名思义就是编写一条接一条的文本指令。而后通过这些指令形成有效地控制逻辑。文本类语言包含指令表与结构化文本两个部分。
(一)指令表(Instruction List)
指令表是类似组合语言的低阶语言。它与汇编语言有些相似。虽然指令表是最单调的编程语言,编程可阅读性差,不利用非计算机专业工程师理解,但是其程序的高效性與执行速度是其它语言所不具备的。在IEC 61131-3标准中指令表定义了四类操作符:一般操作符、比较操作符、跳转操作符和调用操作符。
(1)一般操作符在程序中经常使用,是构成程序的重要组成。例如:转入指令LD ;逻辑指令AND(与)、OR(或);算数指令ADD(加)、SUB(减)、MUL(乘)、DIV(除)等。
(2)比较操作符是用于比较大小的,它包括:GT(大于)、LE(小于)、EQ(等于)等。
(3)程序控制操作符:JMP(跳转)、CALL(调用)等。
(二)结构化文本(Structured Text)
结构化文本是一种高级程序语言,它有些类似Pasical程序语言,其语法也类似Pasical。它不采用底层的面相机器操作符,它具有大量的语句可以用来描述功能,功能块和程序的行为,还可以在顺序功能流程图中描述步、动作和转变的行为。相对于指令表来说结构化(ST)语言更是易学易用。此外,结构化文本语言还易读易理解,特别是使用有实际意义的标识符、批注来注释时,更加容易理解程序的含义。结构化文本语言的典型语句类型包括:赋值语句、程序控制语句、判断选择语句、循环语句等。
(1)结构化文本定义了一些操作符主用于算数运算与逻辑运算。例如:逻辑运算符AND、OR;算数运算符+、-、*、/、=等;
(2)赋值语句不但可以完成简单的赋值也可以完成较为复杂的数组或结构赋值。执行赋值操作时,等号左边是操作数,右边是被赋予的表达式的值,例如:%MW52:=9527;
(3)程序控制语句用于在程序中调用功能块。在功能块被调用时,输入参数会被分配为默认值;执行完毕后,输入参数值保留为最后一次调用的值。功能块调用和函数调用不同,函数调用时一个表达式,儿功能块调用是一条语句,他没有返回值。
(4)判断选择语句的功能是,某一条件满足时执行相应的选择语句。例如:IF…THEN…ELSE条件语句,该选择语句依据不同的条件分别执行相应THEN及ELSE语句;CASE 条件语句,该选择语句的执行方向取决于CASE语句的条件, 并有一返回值。
三、图形类
图形类语言指使用者以拖拽拼图的方式开发出应用程序,不需要任何的代码编写。这样就大大降低了PLC编程的门槛。图形类编程语言主要包括:梯形图、顺序功能图、功能块图。
(一)梯形图 (LaDder Logic)
梯形图起源于美国,它最初是用来表示继电器逻辑关系的,直观易理解,很容易被电气工作人员所掌握。它特别适用于开关量逻辑控。梯形图包含一系列的网络(类似电路中的正负极),网络连接各种类型的触点、线圈和用方框表示的功能块。梯形图编程就像设计电路。
梯形图中的许多元件符号仍旧使用继电器这一名称,例如输入继电器、输出继电器、内部辅助继电器等,但是它们不是真实的物理继电器,而是在用户程序中使用的编程元件。
(二)功能块图(Function Block Diagram)
功能块图起源于信号处理领域。功能块图是一种类似于数字逻辑门电路的编程语言,有数字电路基础的人比较容易掌握。该编程语言用类似与门、或门和非门的方框来表示逻辑运算关系,它将各种功能块连接起来实现所需控制的功能,其图形由功能、功能块和连接元素组成。方框的左边为逻辑运算的输入变量,右边为输出变量,信号由左向右流动。
(三)顺序功能图(Sequential Function Chart)
顺序功能图源自于法国,它将整个控制流程分割为一系列的控制步,并描述程序的执行顺序和控制条件。顺序功能图是一种位于其他编程语言之上的图形语言,主要用来编制顺序控制程序。顺序功能图提供了一种组织程序的图形方向,可以用来描述系统的功能,根据它可以很容易画出梯形图。
四、总结
IEC61161-3继承了在PLC发展过程中的多种特点明显的多样化编程语言,为PLC技术的进一步发展提供了广阔的空间。我们在编程过程中尽可能的遵循这一标准,为PLC程序在不同机型之间的移植提供便利。
参考文献:
[1]IEC 61131-3 编程语言,2003.