IEC (International Electrotechnical Commission)1131-3是 IEC 1131国际标准的第三部分,是第一个为工业自动化控制系统的软件设计提供标准化编程语言的国际标准。该标准得到了世界范围的的众多厂商的支持,但又独立于任何一家公司。该国际标准的制定,是IEC工作组在合理地吸收、借鉴世界范围的各可编程序控制器(PLCs)厂家的技术、编程语言、方言等的基础之上,形成的一套新的国际编程语言标准。1131-3国际标准随着可编程序控制器(PLCs)技术、编程语言等的不断进步也在不断地进行着补充和完善。
1131-3国际标准得到了包括有美国AB公司、德国西门子公司等世界知名大公司在内的众多厂家的共同推动和支持,它极大地改进了工业控制系统的编程软件质量及提高了软件开发效率;它定义的一系列图形化语言和文本语言,不仅对系统集成商和系统工程师的编程带来很大的方便,而且对最终用户同样会带来很大的方便;它在技术上的实现是高水平的,有足够的发展空间和变动余地,使得能很好地适应于下一个世纪。IEC 1131-3标准最初主要用于可编程序控制器(PLCs)的编程系统,但它目前同样也适用于过程控制领域、分散型控制系统、基于控制系统的软逻辑、SCADA等。1131-3国际标准正在受到越来越多的国外公司、厂商的重视和采用,1131-3国际标准因其具有的诸多优点,也正在受到越来越多的国内公司、厂商的重视和采用。
IEC 1131国际标准包括8部分:Part 1: 综述;Part 2: 硬件;Part 3: 可编程语言;Part 4: 用户导则;Part 5: 通信;Part 6:现场总线通信;Part 7:模糊控制编程;Part 8:编程语言的实施方针。IEC 1131-3是IEC 1131中最重要、最具代表性的部分。IEC 1131-3国际标准将是下一代PLC的基础。IEC 1131-5是IEC 1131的通信部分,通过IEC 1131-5,可实现可编程序控制器与其它工业控制系统,如机器人,数控系统,现场总线等的通信。
一、采用IEC 1131-3国际标准的必要性
1. 对系统“开放性”的要求
成熟的工业控制市场已经开始对“开放性系统”产品提出了越来越多的要求,IEC
1131-3国际标准正是适应了这种要求。
2. 传统PLC梯形图编程的缺点
l 不同PLC产品的梯形图符号和编程变化很大。
l 有限的数据封装能力,很难将一个复杂的程序分解为数个简单的程序部分:现在的梯形图编程,一个程序块的内部数据还缺乏对外部隐藏其数据的封装能力,因而,一个大的程序要想分解为几个简单的小程序,并且各个小程序之间具有的清晰的接口是很困难的。
l 有限的程序可重用性:程序可重用性是现在编程的一个发展趋势,传统的PLC不能通过重复调用相同的逻辑策略和算法,实现程序重复使用。
l 不支持数据结构:在许多复杂的应用中,程序需要把一些数据组织成象高级语言PASCAL 、C中的数据结构那样的数据类型,而目前的梯形图程序还不支持数据结构。
l 支持有限的对顺序操作功能编程:传统的PLC梯形图编程对顺序操作的处理方法是,为每一个顺序状态提供一个状态位,这种对顺序操作的处理能力是很有限的。
l 程序执行的局限性:PLC程序是顺序执行的,执行一次程序的时间取决于程序的长短和复杂性,对很大和很复杂的程序,执行一次程序的时间就较长,这对有些对时间有苛刻要求的应用,是有很大的局限性的。
l 执行算术操作的局限性:传统的PLC梯形图程序对算术操作处理是很困难的。
3. 采用IEC 1131-3国际标准的优点
因采用一致的IEC 1131-3国际标准编程,各个PLC厂家的编程系统都是统一的,因而,对用户来说具有如下优点:
l 减少了人力资源,如培训、调试、维护和咨询的浪费
l 高水平软件再使用性,它聚焦于解决控制中的问题
l 减少了编程中的误解和错误
l 适用于宽环境范围的编程技术:通用的工业控制
l 连接来自不同程序、项目、公司、地区或国家的部件
IEC 1131-3软件:一种先进的工业控制编程系统 .
IEC 1131-3是第一个为工业控制系统提供标准化编程语言的国际标准,该标准针对工业控制系统所阐述的的软件设计概念、模型等适应了当今世界软件、工业控制系统的发展方向,是一种非常先进的设计技术,它不但极大地推动了工业控制系统的软件设计的进步,而且它的许多概念还对现场总线设备的软件设计产生了很大影响。符合IEC 1131-3的软件系统是一个结构完美、可重复使用、可维护的工业控制系统软件,不但能被应用在PLC(可编程控制器),而且还能被应用在控制工业及制造过程的一切软件中,是一种先进的工业控制编程系统。 IEC 1131-3标准包括两部分:编程和公共元素。编程部分描述了两个重要模型:IEC 软件模型和通讯模型。公共元素定义了编程系统中需要的的数据类型。
一、 IEC 1131-3的两个重要模型 IEC 1131-3标准有两个模型:IEC 软件模型和通讯模型。这两个模型构成了实现符合IEC 1131-3国际标准的编程系统的概念基础,它们不但是IEC 1131-3编程系统区别于传统的PLC编程系统的重要标志,而且也是IEC 1131-3编程系统优越于传统的PLC编程系统的原因所在。IEC 软件模型从理论上描述了如何将一个复杂的程序分解为若干个小的不同的可管理部分,并且在各个被分解部分之间有清晰的和规范的接口的方法;描述了一台PLC如何实现多个独立程序的同时装载、运行;描述了系统如何实现对程序执行的完全控制等。通讯模型同样从理论上描述了不同程序组织单元(POU – Program Organization Units)之间如何交换信息的方法。程序组织单元包括程序,功能块和功能。为了更好地描述IEC 软件模型,我们先通过一个实际的应用系统来描述IEC 1131-3软件与实际系统的关系,然后再进一步说明1131-3软件模型。
二、IEC 1131-3软件与实际系统的关系如图1为一采用PLC的直接数字控制系统。来自物理传感器的连续信号被转换为数字采样信号后,PLC控制系统就可以运行诸如比例,积分,微分(PID)等算法产生控制信号输出,最终实现对装置位置的控制。在图1中,IEC 1131-3软件假设,来自传感器或变送器 图一应用PLC系统的直接数字控制系统的外部数值被直接放在一段特定的内存区,同时,程序运行后产生的结果也被放在一段特定的内存区,更新这些内存区数值,即实现了对执行器或显示器的驱动。到PLC的I/O装置的内存映射并没有定义在标准中,它会随着不同的PLC厂商有很大的不同。三、IEC 软件模型 IEC 1131-3软件模型如图二所示。该软件模型是一种分层结构,每一层隐藏了其下层的许多特征。IEC 1131-3具有的这种分层结构,构成了IEC 1131-3软件优越于传统的PLC软件的理论基础,是IEC 1131-3软件先进性的体现。下面我们先描述软件模型的各个部分的概念,同时分析、总结IEC 1131-3编程系统所具有的优点。
1. 配置、资源、程序和任务在模型的最上层是软件“配置”,它等同于一个PLC软件,使用在一个具体应用的定义PLC行为的整个软件中,它与配置系统的实际过程是不同的。如在一个复杂的由多台PLC组成的自动化生产线中,每台PLC中的软件就是一个独立的“配置”。一个“配置”可与其它的IEC“配置”通过定义的接口进行通讯。在每一个配置中,有一个或多个“资源”,“资源”不仅为运行程序提供了一个支持系统,而且它反映了PLC的物理结构,在程序和PLC物理I/O通道之间提供了一个接口。一个IEC程序只有在装入“资源”后才能执行。“资源”通常放在PLC内,但也可以放在其它系统内。一个IEC程序可以用不同的IEC编程语言来编写。典型的IEC程序由许多互连的功能块组成,各功能块之间可互相交换数据。一个程序可以读写I/O变量,并且能够与其它的程序通讯。一个程序中的不同部分的执行通过“任务”来控制。 “任务”被配置以后,可以控制一系列程序和/或功能块周期性地执行程序或由一个的特定的事件触发开始执行程序。IEC程序或功能块通常保持完全的待用状态,只有当是由一个特定的被配置的任务来周期性地执行或由一个特定的变量状态改变来触发执行的情况,IEC程序或功能块才会执行。
2. 功能块和功能功能块概念是IEC 1131-3标准编程系统的一个重要的特征。任何功能块可以用其它的更小的更易管理的功能块来编程,这样就可以由许多的功能块创建一个有层次的结构合理的程序。IEC 1131-3还允许程序设计人员利用现有的功能块和其它的软件元件生成新的功能块。 图二:IEC软件模型功能也是IEC 1131-3标准中的一个重要概念,但在软件模型中未表现出来,它常常使人们与功能块混淆。功能是一些在程序执行过程中的软件元件,这些软件元件对一系列特定的输入值会产生相应的输出结果,如算术功能COS(),SIN()等。IEC 1131-3标准中有大量的用于处理不同数据类型的功能。
3.变量和存取路径在配置、系统资源、程序、功能或功能块内,可以声明和使用局部变量、全局变量、直接变量。局部变量是仅仅能在配置、资源、程序、功能或功能块内声明和存取的变量;全局变量在一个程序(或配置)内声明,它能被程序(配置)内的所有软件元件存取;直接变量是PLC程序的内存区直接用地址变量来表示的变量。存取路径提供了在不同的配置之间交换数据和信息的设备。每一配置内的变量可被其它远程配置存取。配置之间存取数据和信息可采用基于以太网的网络,现场总线或通过底板总线交换数据。
4、软件模型到实际系统的映射 IEC 软件模型到实际系统的映射,针对不同的系统有如下的不同的映射关系: 1.具有一个主处理器的小型系统:小型系统的模型典型地退化为一个配置、一个资源和一条程序。 2.具有多处理器的较复杂系统:整个PLC被看作一个配置,每个处理器用一个资源描述,一个资源支持一条或多条程序。 3. 对于分散PLC 系统:分散PLC 系统将包含多个配置,一个配置对应多个处理器,每个处理器用一个资源描述,一个资源支持一条或多条程序。 IEC 软件模型可以充分地适应于从简单到较复杂PLC系统,甚至是非常复杂的PLC系统,这就大大地扩展了传统PLC的应用范围和领域。
五、 IEC 软件模型的优点 IEC 软件模型具有如下优点: 1.在一台PLC中同时装载、启动和执行多个独立的程序:IEC 1131-3标准允许一个“配置”内有多个“资源”,每个“资源”能够支持多个程序,这使得在一台PLC中可以同时装载、启动和执行多个独立的程序,而传统的PLC程序只能同时运行一个程序。 2.实现对程序执行的完全控制能力:IEC1131-3标准的这种“任务”机制,保证了PLC系统对程序执行的完全控制能力。传统PLC程序只能顺序扫描、执行程序,对某一段程序不能按用户的实际要求定时执行,而IEC 1131-3 程序允许程序的不同部分在不同的时间、以不同的比率并行执行,这大大地扩大了PLC的应用范围。 3.IEC软件模型能够适应很广范围的不同的PLC结构:IEC软件模型是一个国际标准的软件模型,它不是针对具体的PLC系统,而是具有很强的适用性。 4. IEC软件模型既能适合小型的PLC系统,也可适合较大的分散系统。 5. IEC软件支持程序组织单元的重用特性:软件的重用性是IEC软件的重要优点。 6. IEC软件支持分层设计:一个复杂的IEC软件通常可以通过一层层的分解,最终分解为可管理的程序单元。
六、通讯模型根据不同的通讯要求,IEC 1131标准规定了以下四种通讯模型: 1.内部通讯:在程序、功能块和功能内部之间可以互相连接以形成一个网络,数据信息可以通过这个内部的网络进行通讯。 2.局变量通讯:全局变量可以被用来在功能块与其它的程序组织单元之间交换数据信息。 3. 外部变量通讯:IEC 1131的第五部分定义了一个通讯功能块家族来通过一个网络来交换数据。 4.使用存取路径通讯:存取变量提供了一种方法用于从远程设备存取特定的变量。丁一在IEC 1131的第五部分的通讯功能块还能读写远程配置中的ACCESS变量。 IEC 1131标准规定的这四种通讯模型,使得不但在IEC编程系统内部的通讯灵活、便捷,而且还有效地支持了IEC编程系统的功能扩展对通讯提出的要求,使得新一代编程系统可以更有效地适应未来对网络、现场总线、远程通讯等新技术发展的要求。七、公共元素公共元素描述了IEC 1131-3五种编程语言、IEC 软件模型及通讯模型中需用到的全部公共编程元素的变量和数据类型,给出了如何命名这些软件元素、声明变量、变量及数据类型的初始化等规则,是实现IEC 1131-3编程系统不可缺少的有机组成部分。八、结论 IEC 1131-3软件是一个功能强大、设计思想和技术先进并能很好地适应未来发展的编程系统。
IEC 1131-3 的编程语言(一):文本化语言 IEC 1131-3国际标准的编程语言包括图形化编程语言和文本化编程语言。图形化编程语言包括:梯形图(LD-Ladder Diagram)、功能块图(FBD - Function Block Diagram)、顺序功能图(SFC - Sequential Function Chart)。文本化编程语言包括:指令表(IL-Instruction List)和结构化文本 (ST-Strutured Text)。IEC 1131-3的编程语言是IEC工作组对世界范围的PLC厂家的编程语言合理地吸收、借鉴的基础上形成的一套针对工业控制系统的国际编程语言标准,它不但适用于PLC系统,而且还适用于更广泛的工业控制领域;IEC 1131-3 的编程工具提供对现场总线系统的支持,并对现场总线装置的软件设计产生了很大影响。本专题将分两部分介绍IEC 1131-3的编程语言,本文是IEC 1131-3编程语言的第一部分,重点介绍IEC 1131-3的两种文本化编程语言;第二部分重点介绍IEC 1131-3的两种三种图形化编程语言,将在下一篇文章作介绍。
一、结构化文本(ST)结构化文本(ST)是一种高级的文本语言,可以用来描述功能,功能块和程序的行为,还可以在顺序功能流程图中描述步、动作和转变的行为。结构化文本(ST)语言表面上与PASCAL语言很相似,但它是一个专门为工业控制应用开发的编程语言,具有很强的编程能力用于对变量赋值、回调功能和功能块、创建表达式、编写条件语句和迭代程序等。结构化文本(ST)非常适合应用在有复杂的算术计算的应用中。结构化文本(ST)程序格式自由,可以在关键词与标识符之间任何地方插入制表符、换行字符和注释。对于熟悉计算机高级语言开发的人员来说,结构化文本(ST)语言更是易学易用。此外,结构化文本(ST)语言还易读易理解,特别是当用有实际意义的标识符、批注来注释时,更是这样。
1.1 操作符结构化文本(ST)定义了一系列操作符用于实现算术和逻辑运算,如逻辑运算符:AND,&,XOR,OR; 算术运算符:<, >, <=, >=, =, <>, +, -, MOD, / 等,此外,还定义了这些操作符的优先级。如下是操作符预算的两个例子: Start := Oilpress AND Stream AND Pump; V : = K*(-W*T)
1.2 赋值语句 结构化文本(ST)程序既支持很简单的赋值语句,如 X:=Y, 也支持很复杂的数组或结构赋值,如Profile[3]:=10.3+SQRT((Rate+2.0)), Alarm.TimeOn:=RCT1.CDT。
1.3在程序中调用功能块在结构化文本(ST)程序中可以直接调用功能块。功能块在被调用以前,输入参数被分配为缺省值;在调用后,输入参数值保留为最后一次调用的值。功能块调用的格式如下: FunctionBlockInstance( InputParameter1:=ValueExpression1, InputParameter2:=ValueExpression2, …); ValueExpression1……ValueExpressionN是符合功能块数据类型输入变量,InputParameter1……InputParameterN功能块的输入参数。FunctionBlockInstance是要调用的功能块。
1.4结构化文本(ST)程序中的条件语句条件语句的功能是,某一条件满足时执行相应的选择语句。结构化文本(ST)有如下的条件语句: l IF …THEN…ELSE条件语句该选择语句依据不同的条件分别执行相应THEN及ELSE语句。该条件语句可以嵌套入另一条件语句中,以实现更复杂的条件语句。条件语句的格式如下: IF THEN ELSE < statements2…> END_IF; “boolean expression_r”可以是“true”或“false”,根据“true”或“false”的情况,程序执行相应的statements1或statements2语句。 l CASE 条件语句该选择语句的执行方向取决于CASE语句的条件, 并有一返回值。实例见最后的应用举例。该条件语句的格式如下: CASEOF < integer selector value1> : < statements1…> < integer selector value2> : < statements2…> …… ELSE < statements …> END_CASE; “integer expression_r”可以是一个数值,根据数值的不同执行相应的statements1或statements2等语句。
1.5 结构化文本(ST)程序中的迭代语句迭代语句适用于需要一条或多条语句重复执行许多次的情况,迭代语句的执行取决于某一变量或条件的状态。应用迭代语句应避免迭代死循环的情况。 l FOR…DO 该迭代格式语句允许程序依据某一整型变量迭代。该迭代格式语句格式如下: FOR TO BY DO END_FOR “initialize iteraion variable”是迭代开始的计数值,“final value expression_r” 迭代结束的计数值。迭代从“initialize iteraion variable”开始,每迭代一次,计数值增加“increment expression_r”,计数值增加到“final value expression_r”,迭代结束。结构化文本(ST)程序中还有其它的迭代语句,如WHILE … DO,REPEAT … UNTIL等,迭代原理与FOR…DO 格式基本相同。此外,结构化文本(ST)的迭代语句中还有EXIT,RETURN两种格式,分别用于程序的返回和退出。
1.6 编程举例:用结构化文本(ST)程序编功能块本程序是一用结构化文本(ST)程序编功能块的例子。该实例描述的是如何用功能块控制箱体中的流体,箱体可以通过阀门被注满和倒空,如图所示,箱体的重量由一个称重单元监视。功能块通过比较两个输入值FullWeight和EmptyWeight以确定箱体是满的还是空的。图一 水箱控制及功能块示意图 该功能块提供了一个“Command”输入,该输入有四种状态,1.给箱体加水;2. 保持不变;3.起动“Stirrer”;4. 清空箱体。实现该功能块算法的结构化文本(ST)程序如下: (*箱体状态*) TYPE_T_STATE: (FULL,NOT_FULL,EMPTIED);END_TYPE; (*阀门状态*) TYPE_T_VALVE: (OPEN,SHUT);END_TYPE; FUNCTION_BLOCK TankControl VAR_IN (**) Command:SINT; Weight :REAL; FullWeight,EmptyWeight : REAL; END_VAR VAR_OUT (**) FillValve :T_VALVE:=SHUT; EmptyValve :T_VALVE:=SHUT; StirSpeed :REAL:=0.0; END_VAR VAR State :=T_STATE :=EMPTYIED; END_VAR
二、指令表(IL-Instruction List) IEC 1131-3的指令表(IL-Instruction List)语言是一种低级语言,与汇编语言很相似,是在借鉴、吸收世界范围的PLC厂商的指令表语言的基础上形成的一种标准语言,可以用来描述功能,功能块和程序的行为,还可以在顺序功能流程图中描动作和转变的行为。指令表语言能用于调用,如有条件和无条件地调用功能块和功能,还能执行赋值以及在区段内执行有条件或无条件的转移。指令表语言不但简单易学,而且非常容易实现,可不通过编译和连编就可以下载到PLC。IEC 1131-3的其它语言如功能块图、结构化文本等都可以转换为指令表语言。
2.1指令表语言结构指令表语言是由一系列指令组成的语言。每条指令在新一行开始,指令由操作符和紧随其后的操作数组成,操作数是指在IEC 1131-3的“公共元素”中定义的变量和常量。有些操作符可带若干个操作数,这时各个操作数用逗号隔开。指令前可加标号,后面跟冒号,在操作数之后可加注释。 IL是所谓面向累加器(Accu)的语言,即每条指令使用或改变当前Accu内容。IEC 1131-3将这一Accu标记为“结果”。通常,指令总是以操作数LD(“装入Accu命令”)开始。指令表程序如下所示:
2.2 指令表操作符 IEC 1131-3指令表包括四类操作符:一般操作符、比较操作符、跳转操作符和调用操作符。
2.2.1一般操作符符指令表一般操作符是指在程序中经常会用到的操作符. l 装入指令:LD N等。 l 逻辑指令:AND N( (与指令)、OR N( (或指令)、XOR N( (异或指令)等。 l 算术指令:ADD ((加指令)、SUB((减指令)、MUL ( (乘指令),DIV((除指令)、MOD ( (取模指令)等。 2.2.2 比较指令:GT ( (大于)、GE ( (大于等于)、EQ( (等于)、 NE( (不等于)、 LE( (小于等于)、 LT( (小于)等。 2.2.3 跳转及调用操作符 JMP C,N (跳转操作符)、 CALL C,N (调用操作符)等。
2.3 在指令表中调用功能及功能块 在IEC 1131-3指令表的程序中,可以直接调用功能块和功能。指令表的功能块调用有种格式,功能调用有两种格式。详细的调用可见IEC 1131-3标准。
2.4 用指令表定义功能及功能块指令表可用于定义功能块和功能。当用指令表定义功能时,功能的返回值是结果寄存内的最新值;当用指令表定义功能块时,指令表引用功能块的输入参数(VAR_INPUT),并且把值写到输出参数(VAR_OUPUT)。
2.5 指令表与其它语言的移植性指令表语言转换为其它语言是非常困难的,除非指令表操作符的使用范围及书写格式受到严格的限制,才有可能实现转换。IEC 1131-3的其它语言较容易转换为指令表。
2.6 IL的编程实例本例是一个用指令表程序定义功能的实例,功能描述的计算平面上两点的移动距离。 两点X,Y的坐标如下图所示。 图二用指令表编功能实例用结构化文本描述的两点间距离的计算公式为:Travel_distance:=SQRT((X1-X2)*(X1-X2)+(Y1-Y2)*(YI-Y2)))。TMax是X,Y两点见的最大距离,当计算值小于TMax时,说明计算正确;当计算值大于TMax时,说明X,Y两点间的距离超出了最大距离,在这种情况下,功能是没有输出的。用指令表编写的该功能的函数TRAVEL()如下: FUNCTION TRAVEL : REAL VAR_INPUT X1,X2,Y1,Y2 : REAL (*点X,Y坐标*) TMax : REAL (*最大移动距离*) END_VAR VAR Temp : REAL; (*中间值*) END_VAR LD Y1 SUB Y2 (*计算Y2-Y1*) ST Temp (*将Y2-Y1值存入Temp *) MUL Temp (*计算(Y2-Y1)的平方*) ADD( X1 SUB X2 (*计算(X1-X2)*) ST Temp (*将(X1-X2)值存入Temp *) MUL Temp (*计算(X1-X2)的平方*) ) (*将两平方值相加*) CAL SQRT (*调平方根函数*) ST TRAVEL (*设定计算结果*) GT TMax (*比TMax 大吗?*) JMPC ERR (*是,转到ERR 执行*) S ENO (*设定ENO *) ERR: RET (*错误返回,ENO 不输出*) END_FUNCTION功能块图(FBD)、梯形图(LAD)和顺序功能流程图(SFC)。
一、功能块图(FBD - Function Block Diagram)功能块图用来描述功能、功能块和程序的行为特征,还可以在顺序功能流程图中描述步、动作和转变的行为特征。功能块图与电子线路图中的信号流图非常相似,在程序中,它可看作两个过程元素之间的信息流。功能块图普遍地应用在过程控制领域。功能块用矩形块来表示,每一功能块的左侧有不少于一个的输入端,在右侧有不少于一个的输出端,功能块的类型名称通常写在块内,但功能块实例的名称通常写在块的上部,功能块的输入输出名称写在块内的输入输出点的相应地方。
1.1 功能块图的信号流在功能块网路中,信号通常是从一个功能或功能块的输出传递到另一个功能或功能块的输入。信号经由功能块左端流入,并求值更新,在功能块右端流输出。 l 布尔信号的取反在使用布尔信号时,功能或功能块的取反输入或输出可以在输入端或输出端用一个小圆点来表示,这种表示与在输入端或输出端加一个“取反”功能是一致的。如下图是一功能块图取反的实例。 l 信号反馈功能块图允许功能块的输出反馈回网路左侧的功能块输入,形成反馈路径。下图是一功能块反馈路径的实例,功能块Load1的输出端Level反馈回功能块Loop1的输入端ProcessValue。 1.2 功能块网路设计 功能块图的设计首先应该保证主信号流的线路清晰,避免过多的信号跨接和线路方向改变。
1.3 功能的执行控制功能块图网路中的功能执行控制隐含地从各功能所处的位置中表现出来。每一功能的执行隐含地是由一个输入使能EN控制,该输入EN是一个布尔类型变量,允许功能有选择的求值。当输入EN为TRUE时,该功能就执行,否则,功能不执行。功能的输出ENO也是一个布尔变量,当ENO从FALSE变成TRUE就表明功能已经完成了求值。 1.4 跳转和标注功能块图允许使用“Jump”功能使得功能块图控制从程序的一个部分跳转到另一个由标识符“Lable”标识的部分继续执行。如下图是一个跳转的实例:当GasLevel的值超过0。15时,相应的控制即转移到有表识符GAS_ALARM的程序段继续执行。
1.5 结构化文本与功能块图之间的转换特点 l 功能块图中的大部分程序能够转换为结构化文本。 l 结构化文本程序能够容易地转化为功能、功能块及其相关的参数值。 l 结构化文本直接转化为功能块网路是很困难的,IF…THEN, CASE,FOR, WHILE, REPEAT格式的语句还不能直接转换为功能块网路。
1.6 连续功能流程图(CFC-Continuous Function Chart)连续功能流程图是功能块图的一种特殊形式,它用于描述资源的顶层结构以及程序和功能块对任务的分配。连续功能流程图和功能块图之间的主要区别是资源和任务分配的不同。每一功能用任务的名称来描述,如图所示。程序也是箱是的情况。如果一个程序内的功能块象它的父程序一样在相同的任务下执行,任务关联是隐含的。在这种情况下,任务名称就没有必要显示在功能块中。连续功能流程图如图7所示。
1.7 功能块图应用实例如图是一个功能块应用的实例,该实例描述了用功能块控制空气风门的情况。信号ReqOpen以及ReqClose给出了所要求的风门的位置,该位置被保存在RS双稳态功能块中,来自“Position” 功能块输出及转换输出用于用于产生DemandOpen和DemandClose信号,这些信号驱动风门转动到合适的位置。 图一 功能块实例图二功能块程序示意图风门上的限位开关OpenLS和CloseLS返回的是风门的实际位置信号。限位开关信号与要求的风门位置进行与比较,如果任何一个校对失败,比如风门已打开到要求的位置,而限位开关OpenLS处于false,延时计时器将起动。如果风门未按要求移动到要求的位置并且在限定的有限时间MoveTimeOut内不能确定限位开关的情况,定时器Timer1将产生Discrepancy信号。二. 梯形图(LD-Ladder Diagram)梯形图IEC 1131-3的三种图形化编程语言种一种,它可被用来描功能,功能块和程序即程序组织单元(POU-Porgramm Orgnization Unit)的行为,以及顺序功能图(SFC - Sequential Function Charts)中的行为和转移。
2.1 LD背景梯形图来源于美国,它基于图形表示的继电器逻辑,是PLC编程中被最广泛使用一种图形化语言。梯形图程序的左、右两侧有两垂直的电力轨线,左侧的电力轨线名义上为功率流从左向右沿着水平梯级通过各个触点、功能、功能块、线圈等提供能量,功率流的终点是右侧的电力轨线。每一个触点代表了一个布尔变量的状态,每一个线圈代表了一个实际设备的状态,功能或功能块与IEC 1131-3中的标准库或用户创建的功能或功能块相对应。一简单的梯形图程序如图(一)所示。
2.2 IEC 1131-3的LD图形符号 IEC 1131-3中的梯形图(LD)语言是对各PLC厂家的梯形图(LD)语言合理地吸收、借鉴,语言中的各图形符号与各PLC厂家的基本一致。IEC 1131-3的主要的图形符号包括:1.触点类:常开触点、常闭触点、正转换读出触点、负转换触点。2. 线圈类:一般线圈、取反线圈、置位(锁存)线圈、复位去锁线圈、保持线圈、置位保持线圈、复位保持线圈、正转换读出线圈、负转换读出线圈。 3. 功能和功能块:包括标准的功能和功能块以及用户自己定义的功能块,图形太多这里未给出。
2.3 IEC 1131-3的LD编程
2.3.1 在梯形图中连接功能块功能块能被连接在梯形图的梯级中,每一功能块有相应的布尔输入和输出量。输入量可以被梯形图梯级直接驱动,输出可以提供驱动线圈的功率流。在每一个块上至少应有一个布尔输入和布尔输出以允许功率流通过这个块。功能块可以是标准库中的也可以是自定义的。如下图二是一个在梯形图中连接功能块以驱动电动马达的实例。
2.3.2 在梯形图中连接功能每一个功能有一个附加的布尔输入EN和布尔输出ENO。EN提供了流入功能的功率流信号;ENO提供了可用来驱动其它功能和线圈的功率流。如下图三是在梯形图中连接功能的实例,第一个功能是在三个数中取最大,第二个功能是从第一功能输出的最大数与1000.0比较,根据比较1000.0的大小来控制线圈COOL。
2.3.3 在梯形图中有反馈回路在梯形图程序中可包含反馈回路,例如,在反馈回路中,一个或多个触点值被用作功能或功能块的输入的情况。如图三是在梯形图中有反馈回路的情况。
2.3.4 梯形图中使用跳转和标注使用梯形图的跳转功能使得梯形图程序可以从程序的一个部分跳转到由一个标识符标识的另一部分。如下图四是在梯形图中使用跳转和标注的实例,当变量OXYGEN或PRESSURE是OFF,控制即转移到由SPARGE标识的控制程序处执行。
2.4 ST、FBD及LD之间的可移植性 l 简单的主要包含“与”和“或”逻辑梯形图程序可以与结构化文本程序转换;在大部分的情况下,梯形图程序可以与功能块图程序进行转换。 l 用结构化文本描述的功能可以直接与梯形图、功能块转换 l 除简单的逻辑描述外,由结构化文本程序到梯形图程序的转换常常是不可能的
2.5 梯形图编程如图五是一个用梯形图编写的火灾报警程序。FD1,FD2和FD3 是三个火灾探测器, 图三 火灾报警系统示意图 图四火灾报警系统的梯形图程序 MAN1是一个手动按钮,用来触发火灾报警。当三个探测器中的任两个或三个全部探测到有火灾情况发生时,于是Alarm_SR功能块驱动报警线圈报警。ClearAlarm按钮清除报警。当有一个探测器处于ON,相应的火灾警告指示灯亮。如果该指示灯在报警清除后继续保持亮,就表明该探测器或者有错,或者在该探测器的附近有火灾。三. 顺序功能流程图(SFC-Sequential Function Chart) 顺序功能流程图是IEC 1131-3三种图形化语言中的一种,是一种强大的描述控制程序的顺序行为特征的图形化语言,可对复杂的过程或操作由顶到底地进行辅助开发。SFC允许一个复杂的问题逐层地分解为步和较小的能够被详细分析的顺序。
3.1 顺序功能流程图的基本概念顺序功能流程图可以由步、有向连线和过渡的集合描述。如下图反映了SFC的主要特征。 l 步步用矩形框表示,描述了被控系统的每一特殊状态。MFC中的每一步的名字应当是唯一的并且应当在MFC中仅仅出现一次。一个步可以是激活的,也可以是休止的,只有当步处于激活状态时,与之相应的动作才会被执行,至于一个步是否处于激活状态,则取决于上一步及过渡。 l 有向连线有向连线表示功能图的状态转化路线,每一步是通过有向连线连接的。 l 过渡过渡表示从一个步到另一个步的转化,这种转化并非任意的,只有当满足一定的转换条件时,转化才能发生。转换条件可以用ST、LD或FBD来描述。转换定义可以用ST、IL、LD或FBD来描述。过渡用一条横线表示,可以对过渡进行编号。 l 动作(action)每一步是用一个或多个动作(action)来描述的。动作包含了在步被执行时应当发生的一些行为的描述,动作用一个附加在步上的矩形框来表示。每一动作可以用IEC的任一语言如ST、FBD、LD或IL来编写。每一动作有一个限定器(Qulifier),用来确定动作什么时候执行;标准还定义了一系列限定器(Qulifier),精确地定义了一个特定与步相关的动作什么时候执行。每一动作还有一个指示器变量,该变量仅仅是用于注释。动作的表示如下图所示: l 转化规则顺序功能流程图的任一步可能是激活的,也可能是休止的,与之相应的动作(Action)只有在步处于激活状态时,方能被执行,所以,步被激活和被休止的过程编确定了系统的行为。初始状态是指指令运行的开始即被激活的那个状态,这个步的标志为S0。每个过程都可以是有效的,也可以是无效的,只有紧接其前的各个阶段都处于激活状态时,过渡才是有效的,只有同时满足(1)过渡是有效的(2)过渡对应的接受特性为真,与过渡相连的下一步方能处于激活状态,同时,紧接其前的各个步全部被休止。当几个过渡可以同时被超越时,他们将同时被超越。
3.2 顺序功能流程图(SFC)的几种主要形式按着结构的不同,顺序功能流程图(SFC)可分为以下几种形式:单序列控制、同时序列控制、分支结构序列、转移序列和起始步。
3.3 顺序功能流程图(SFC)的程序执行顺序功能流程图(SFC)程序的执行应遵循相应的规则,每一程序组织单元(POU)与一任务(task)相对应,任务负责周期性地执行程序组织单元(POU)内的IEC程序,顺序功能流程图(SFC)内的动作也是以同样周期被执行。
3.4 对不安全的SFC的处理 SFC编译器有能力采用相应的算法检测到某些结构不安全的SFC。如果一个完全整个流程图能分解为一个单步,该SFC就是安全的,否则是不安全的。 3.5 SFC编程举例我们现在用SFC编写一个工业电梯(lift)程序。电梯(lift)系统如图所示。电梯通过 图五 提升机示意图图六提升机控制的SFC程序一个电动绞车控制上升或下降,可按要求停止在任一楼层。当电梯将到达某一被选楼层的位置时,一微型接近开关(Proximity Switch)起作用并发出信号,让电梯减速并停在正确的位置。当电梯停下后,门微动开关(Floor Switches)起作用并将门打开。该工业电梯(lift)的MFC程序如图所示。程序从“Init”起始步开始。主要顺序从“DoorOpen”步开始,依次执行“Shutting”步、“MoveLeft”步、“Inching”步、 “Stopping”步、 “Opening”步等,最终实现对电梯的顺序控制。