IEC61131-3工控编程语言国际标准及其应用

(整期优先)网络出版时间:2019-02-20
/ 3

摘 要 针对当前控制系统编程语言的流行趋势,从基本编程元素和编程语言两个方面详细介绍了标准IEC61131-3的内容。并且以浙大中自SunyTech工业控制应用软件平台为背景,对标准具体内容的应用作了针对性的阐述,充分展现了IEC61131-3标准在控制系统软件编程中的作用。

关键词 IEC61131-3;软件模型;编程语言;工控编程软件; PLC;控制系统


1 引言

IEC(International Electrotechnical Commission) 61131-3是第一个为工业自动化控制系统的软件设计提供标准化编程语言的国际标准。该标准将现代软件的概念和现代软件工程的机制与传统的PLC编程语言成功地结合,又对各种工业控制系统的编程语言、软件设计的概念和软件模型等进行了标准化,适应了当今世界软件、工业控制系统的发展方向,是一种非常先进的设计技术。

2 标准的主要内容[1][2]

IEC61131-3将标准分为两个部分:公共元素和编程语言。IEC61131-3标准的层次和结构如图1所示。

1451301058.jpg

图1 IEC61131-3标准的结构图

公共元素部分规范了数据类型、变量的定义,给出了软件模型,并引入配置(Configuration)、资源(Resources)、任务(Tasks)和程序(Program)的概念、程序组织单元POU (Porgram Organizition Unit)和顺序功能图SFC(Sequential Function Chart)等。

IEC61131-3标准共规定了4种编程语言,其中两种图形化语言,两种文本化语言。图形化语言有梯形图LD(Ladder Diagram),功能块图FBD(Function Block Diagram);文本化语言有指令表IL(Instruction List)和结构文本ST(Structured Text)。

2.1 基本编程概念和公共元素

1)软件模型

IEC61131-3标准的软件模型如图2所示。

1451315858.jpg

图 2 IEC61131-3标准的软件模型图

该软件模型是一种分层结构,最上层是配置,它定义了单元的结构,专指一个特定类型的控制系统,等同于一个PLC应用系统,包括硬件装置、处理资源、I/O通道的存储地址和系统能力。

在每一个配置中,有一个或多个“资源”,“资源”不仅为运行程序提供了一个支持系统,而且它反映了PLC的物理结构,在程序和PLC物理I/O通道之间提供了一个接口。

任务用于规定程序及其功能块的运行期特性。程序或功能块通常保持完全的待用状态,由一个配置后的任务来周期性地执行,或由一个特定的事件触发开始执行程序。

程序组织单元是标准PLC系统用户程序最小的、独立的软件单元。包括3种统一的基本类型,分别为功能FUN(Function)、功能块FB (Function Block)和程序 PROG (Program)。

其中,功能FUN类型是一些在程序执行过程中的软件元件,这些软件元件对一系列特定的输入值会产生相应的输出结果,如算术功能COS()、SIN()等。IEC 61131-3标准预定义了一系列经常使用的标准功能集,其中包括50种功能和12种功能块,它们的名称保留为关键字(详细的标准功能和功能块的描述可参阅IEC61131-3标准)。

功能块FB类型是该标准中的核心元素,它体现了一种全新的面向对象程序设计理念。功能块类型对应于经典面向对象语言中的类的概念,功能块的实例(Instance)对应于对象的概念。功能块类型具有天然的封装特性,能够把特定的算法封装在某个特定的功能块中,它把具体的操作和操作数据相分离,也把系统的总体算法组态和单个算法的研制开发过程分开,以增加程序的可重用性和移植性。

程序 PROG类型是任务的直接构成基础,PROG类型的程序组织单元可构成系统的主程序,典型的IEC程序由主程序和许多互连的功能和功能块组成,一个程序中的不同部分的执行通过任务来控制。另外,当用户需要自己编写自定义算法块并对其进行重复使用时,就可以利用PROG类型的程序组织单元。

2)变量和数据类型

标准中定义了5种不同的变量类型:全局变量、局部变量、输入变量、输出变量、输入输出变量。其中,局部变量只能在程序内部的一部分进行寻址,全局变量能被所有的程序组织单元寻址,输入、输出和输入/输出变量是与程序、功能和功能块密切相关的,它们能在被分配的程序组织单元内通过读或写来改变,而要在程序组织单元外部改变时必须进行定义,且在使用变量时要加以说明。标准为输入、输出和输入/输出变量提供了两种定义形式,直接表达的变量形式和符号变量形式。直接表达变量的定义给出了统一的固定的格式,符号变量的存储位置由预先设置的分配表和符号表决定。定义变量的同时,还定义了变量的属性和限定符,通过它们使变量具有丰富的特性。

该标准统一定义了编程中常用的数据类型。一类称作基本数据类型,是一种预定义的、标准化的数据类型。还有一类称作导出数据类型,程序员可以创建“自定义”数据类型,它一般包括枚举类型、数组类型、结构类型等,为面向对象的编程模式提供支持。

另外,标准还规定了编程中常用的标识符、关键字以及注释等一些通用语言单元,以提供用户程序的通用性和移植性。

3)软件的通讯模式

IEC 61131标准提供了以下的通讯模式:内部变量通讯模式、全局变量通讯模式、调用参数通讯模式、使用存取路径通讯模式以及通讯块通讯模式等。

前三种模式用于一个配置内的通信,通过内部变量和全局变量的建立可以在一个配置内的程序、功能块和功能之间相互连接形成一个网络,数据信息可以通过这个内部的网络进行通讯。

存取路径的通讯模式用于各个配置之间的数据交换,也就是要跨越一个PLC系统的范围,它可用于配置和程序层。存取路径可以认为是全局变量的一个扩展,其符号名由固定格式的语言结构定义,这样通过定义的存取路径的符号名,该配置的变量可为其它配置所访问。

通讯块是用于从发送方向接收方传送数据包的专用功能块,对于标准通讯块,在IEC61131-5标准中专门地作出了定义,这里就不详细介绍。

IEC61131-3只给出了一个单一的集中PLC系统的配置机制,为了适应分布式结构的软件要求,PLCOpen组织对IEC61131-3进行了适当的扩展,制定了IEC61499《工业过程测量与控制系统用功能块》标准。按照IEC61499的模型,PLC可表示为其内有多个资源的装置,采用了互联的事件驱动功能块,所给出的应用程序模型,由若干可能分散在多个设备中的功能块互联而成,功能块中的控制算法还用IEC61131-3的语言来编程的,但在系统配置时采取了封装的、可反复使用的和分散的机制。IEC61499系统模型如图3所示。

1451317881.jpg

图3 IEC61499系统模型图

该模型包括与被控过程(或机械)的接口、与通信网络的接口,以及隐含的分布式应用程序。 IEC61499中融入了面向对象的概念,以消息总线为纽带,协调各功能块的运行。

2.2 编程语言

IEC 61131-3规定了两类编程语言:文本化编程语言和图形化编程语言。在标准的文本中没有把顺序功能图单独列入编程语言,而是将它在公用元素中予以规范。但不论在文本化语言中,还是在图形化语言中,都可以运用SFC的概念、句法和语法,所以有些控制软件有时也称自己实现了标准的五种控制语言[3]

梯形图语言LD使用网络的概念,一个LD网络的边界是在左侧和右侧所谓的电力轨线。左侧的电力轨线,名义上是为“功率流”从左向右沿着水平梯级通过各个触点、功能、功能块、线圈等提供能量,“功率流”的终点是右侧的电力轨线。期间的每一个触点代表了一个布尔变量的状态,每一个线圈代表了一个实际设备的状态,还可以有功能或功能块,根据这些元素的逻辑状态来决定是否允许能量流通过,便构成了所需要的逻辑程序。

功能块图语言FBD用来描述功能、功能块和程序的行为特征,还可以在顺序功能流程图中描述步、动作和转变的行为特征。功能块用矩形块来表示,每一功能块的左侧有不少于一个的输入端,在右侧有不少于一个的输出端,线条代表的是信号的流向,所传递的信息可能是一个布尔数值、整型数值、实数或者是一个字符串,在程序中,它可看作两个过程元素之间的信息流。

指令表语言IL是一种最接近于机器码的用户端语言,与汇编语言相比较,它吸收和借鉴了PLC厂商的指令表语言,并在此基础上形成了一种标准语言。可用来描述功能,功能块和程序段行为,也可用来调用和转移等。

结构化文本语言ST是一种专门为工业控制而开发的高级语言,可以追溯到Pascal和C语言。它特别适合于定义复杂的功能块,它具有很强的编程能力,可方便地对变量赋值、调用功能和功能块、创建表达式、编写条件语句和迭代程序等。

3 标准的应用[4]

近几年来,国内致力于IEC61131-3编程系统开发的有亚控科技、浙大中自、大连理工大学计控研究所,以及北京凯迪恩自动控制技术公司等。其中亚控的KingAct已经实用,浙大中自的SunyIEC实现了标准IEC61131-3中的五种控制语言,是目前国内自行开发并拥有自主知识产权的编程系统,达到了较高的技术水平。下面以浙大中自的SunyTech工业控制应用软件平台为例来介绍标准IEC61131-3在实践当中的应用。

SunyTech工业控制应用软件平台以SunyIEC控制算法编辑器为主体,由工程管理器、算法编辑器、数据库编辑器、编译链接器、仿真调试程序、实时运行程序等几大模块构成。为用户提供了5种编程语言(FBD、LD、SFC、ST、IL)和友好的图形化编程界面,以及程序编译和数据类型检查、离线仿真、在线监视和组态等功能。

工程管理器对应于IEC61131-3软件模型的最上层——配置层,对整个控制系统进行管理。该层可包含多个资源,每个资源可认为是控制系统中的一台PLC,配置层将各个资源组合成组,实现资源之间的通讯。

实时数据库编辑器主要负责变量的创建、维护、属性的设定和修改以及各个控制站之间共享的网络变量的管理。由于标准中的I/O变量仍然保留了直接与硬件有关的变量表示方法,不利于系统之间的程序移植,采用实时数据库技术可以有效地解决这个问题。变量、功能块和功能的存储地址在数据区中的分配全部由系统自主实现,这样PLC中物理存储空间的分布情况对用户完全透明。实时数据库编辑器还以直观的方式实现全局变量的声明、定义、初始化以及到物理I/O点的图形化连接。在标准的软件模型中,一个资源内同时运行多个任务,一个任务又由多个独立的程序组织单元构成,一个任务的完成就是依靠全局变量在不同资源之间的通讯来实现的。

算法编辑器不但提供了标准的功能块和函数块,而且还为特定应用领域提供了专用的函数库和功能块库。另外,还设置有用户自定义算法块,用户自己可以用4种编程语言中的一种或几种来编写子程序供程序调用,通过CALL功能块调用子程序来实现用户自定义功能块,并可以自行对其进行封装以实现重复使用。算法编辑器的主体界面分为菜单栏、工具栏、导航栏、观察窗口、编辑画面、输出窗口6个部分,所有图形程序的编辑都可以通过拖曳方式完成。创建控制程序时可以通过选择导航栏中的不同程序分支类型来实现周期运行和中断触发运行两种运行方式。

编译器的编译过程分成词法分析、语法分析、语义分析、代码生成及代码优化等几个步骤。词法分析、语法分析进行拼写、语法的检查,生成抽象的语法树。语义分析过程进行数据类型的检查,传统的PLC的数据类型从格式和编码两个方面都不兼容,编译器使用了标准中的一组统一的标准化的数据类型,并且支持用户通过使用数组和结构体来提高程序的移植性。

4 结束语

IEC61131-3标准本身是一个不断发展和完善的标准,它的生命力在于不但在制定之初能够做到“兼容并蓄,推陈出新”,而且一直在不遗余力地去推广应用,在应用过程中发现缺陷并加以改进,而且还正在适应技术进步和市场要求的环境,对标准做适当的修订。

符合IEC61131-3标准的软件系统是一个结构完美、可重复使用、可维护的工业控制系统软件。目前,国内致力于自主知识产权的IEC61131-3编程系统的开发已经取得了长足的进展,其中最有说服力的例子就是浙大中自在建立了编程开发平台后,每开发一个新的控制系统系列,不必再在编程软件方面花费大量重复劳动,大大缩短了新产品的开发周期,同时也降低了成本。

参考文献

[1] JOHN K H, MICHAEL T. IEC61131-3:工业自动化系统的程序编制.中国机电一体化技术应用协会秘书处翻译, 2002.

[2]NEMA. Programmable Controllers-Part 3:Programming langugages[S]. Virginia:National Electrical Manufacturers Association, 2005.

[3] 彭瑜. 工控编程语言国际标准IEC61131-3及其影响[J]. 国内外机电一体化技术, 2006.4:53-61.

[4]葛益军, 王文海. 基于IEC61131-3的编程系统的设计和实现[J].制造业自动化. 2006,28(7): 61-63.