1.5 PLC的编程语言
PLC是专为工业控制而开发的装置,主要使用者是企业电气技术人员。为了适应他们的传统习惯和掌握能力,通常PLC不采用计算机编程语言,而采用面向控制过程、面向问题的“自然语言”编程。国际电工委员会(IEC)1994年5月公布的IEC 61131-3《可编程控制器语言标准》详细地说明了句法、语义和下述5种编程语言:
(1)梯形图(Ladder Diagram,LD)。
(2)语句表(Statement List,STL)。
(3)顺序功能图(Sequential Function Chart,SFC),也称为状态转移图。
(4)功能块图(Function Block Diagram,FBD)。
(5)结构文本(Structured Text,ST)。
其中,梯形图(LD)和功能块图(FBD)为图形语言;语句表(STL)和结构文本(ST)为文字语言;顺序功能图(SFC)是一种结构块控制流程图。
目前已有越来越多的生产PLC的厂家提供符合IEC 61131-3标准的产品,有的厂家推出的在个人计算机上运行的“PLC软件包”也是按IEC 61131-3标准设计的。
1.5.1 梯形图
梯形图是使用最多的图形编程语言,其基本结构形式如图1-19所示。梯形图与继电器控制系统的电路图很相似,特别适用于开关量逻辑控制。梯形图常被称为电路或程序,梯形图的设计称为编程。梯形图由触点、线圈(主要指Q、M等寄存器、标志位存储器)和指令盒等组成。线圈通常代表逻辑输出结果和输出标志位。触点代表逻辑输入条件。
图1-19 梯形图基本结构形式
1.基本概念
(1)能流:
在梯形图中,为了分析各个元器件间的输入与输出关系,就会假想一个概念电流,也称为能流(Power Flow)。认为能流是按照从左到右的方向流动,这一方向与执行用户顺序时的逻辑运算关系是一致的。在图1-19中,当I0.1与I0.2的触点接通,或Q0.1与I0.2的触点接通时,就会有一个假想的能流流过Q0.1的线圈,使线圈通电。利用能流这一概念,可以帮助我们更好地理解和分析梯形图,能流只能从左向右流动,层次改变只能从上向下。
(2)母线:
梯形图两侧的垂直公共线称为母线(Bus Bar)。母线之间有能流从左向右流动。通常梯形图中的母线有左右两条,左侧的母线必须画出,但右侧母线可以省略不画,如图1-19所示。
(3)触点与线圈:
PLC梯形图中的某些编程元件沿用了继电器这一名称,如输入继电器(输入映像寄存器)、输出继电器(输出映像寄存器)、内部辅助继电器(内部标志位存储器)等,但是它们不是真实的物理继电器,而是一些存储单元(或存储器“位”,称为软继电器),每个软继电器的触点与PLC存储器中映像寄存器的一个存储单元相对应,所以把这些触点称为软触点。这些软触点的“1”或“0”状态代表着相应继电器触点或线圈的接通或断开。在继电器控制系统的接线中,触点的数目是有限的,而PLC内部的软触点的数目和使用次数是没有限制的,用户可以根据控制现场的具体要求在梯形图程序中多次使用同一软触点。在梯形图程序与动态检测中,触点与线圈所代表的意义如表1-1所示。
表1-1 梯形图程序中触点与线圈所代表的意义
2.梯形图的特点
PLC的梯形图源于继电器逻辑控制系统的描述,并与电气控制系统梯形图的基本思想是一致的,只是在使用符号和表达方式上有一定的区别。它采用梯形图的图形符号来描述程序设计,是PLC程序设计中最常用的一种程序设计语言。
这种程序设计语言采用因果的关系来描述系统发生的条件和结果。其中每个梯级是一个因果关系。在梯级中,描述系统发生的条件表示在左面,事件发生的结果表示在右面。PLC的梯形图使用的是内部辅助继电器、定时器/计数器等,都是由软件实现的。它的最大优点是使用方便、修改灵活、形象、直观和实用。这是传统电气控制的继电器硬件接线所无法比拟的。
每个梯形图网络由多个梯级组成。每个输出元素可构成一个梯级,每个梯级可有多个支路。通常每个支路可容纳11个编程元素,最右边的元素必须是输出元素。一个网络最多允许16条支路。
梯形图有以下8个基本特点。
(1)PLC梯形图与电气操作原理图相对应,具有直观性和对应性,并与传统的继电器逻辑控制技术相一致。
(2)梯形图中的“能流”不是实际意义的电流,而是“概念”电流,是用户程序解算中满足输出执行条件的形象表示方式。“能流”只能从左向右流动。
(3)梯形图中各编程元件所描述的常开触点和常闭触点可在编制用户程序时无限引用,不受次数的限制,既可常开又可常闭。
(4)梯形图格式中的继电器与物理继电器是不同的概念。PLC的编程元件沿用了继电器这一名称,如输入继电器、输出继电器、内部辅助继电器等。对于PLC来说,其内部的继电器并不是实际存在的具有物理结构的继电器,而是指软件中的编程元件(软继电器)。编程元件中的每个软继电器触点都与PLC存储器中的一个存储单元相对应。因此,在应用时,必须与原有继电器逻辑控制技术的有关概念区别对待。
(5)梯形图中输入继电器的状态只取决于对应的外部输入电路的通/断状态,因此在梯形图中没有输入继电器的线圈。输出线圈只对应输出映像区的相应位,不能用该编程元件直接驱动现场机构,位的状态必须通过I/O模板上对应的输出单元,才能驱动现场执行机构进行最后动作的执行。
(6)根据梯形图中各触点的状态和逻辑关系,可以求出与图中各线圈对应的编程元件的ON/OFF状态,称为梯形图的逻辑解算。逻辑解算是按梯形图中从上到下、从左至右的顺序进行的。逻辑解算是根据输入映像寄存器中的值,而不是根据逻辑解算瞬时外部输入触点的状态来进行的。
(7)梯形图中的用户逻辑解算结果,马上可为后面用户程序的逻辑解算所利用。
(8)梯形图与其他程序设计语言有一一对应关系,便于相互的转换和对程序的检查。但对于较为复杂的控制系统,与顺序功能图等程序设计语言比较,梯形图的逻辑性描述还不够清晰。
3.梯形图设计规则
(1)由于梯形图中的线圈和触点均为“软继电器”,因此同一标号的触点可以反复使用,次数不限,这也是PLC区别与传统控制的一大优点。但为了防止输出出现混乱,规定同一标号的线圈只能使用一次。
(2)每个梯形图由多层逻辑行(梯级或网络)组成,每层逻辑行起始于左母线,经过触点的各种连接,最后通过线圈或指令盒结束,不能将触点画在线圈的右边,只能在触点的右边接线圈。每一逻辑行实际代表一个逻辑方程。
(3)梯形图中的“输入触点”仅受外部信号控制,而不能由内部继电器的线圈将其接通或断开,即线圈和指令盒不能直接与左母线相连接。所以在梯形图中只能出现“输入触点”,而不可能出现“输入继电器的线圈”。
(4)几个串联回路相并联时,应将触点最多的那个串联回路放在梯形图的最上面;几个并联回路相串联时,应将触点最多的并联回路放在梯形图的最左面。这种安排所编制的程序简洁明了,指令较少。
(5)触点应画在水平线上,不能画在垂直分支上。画在垂直线上,就难于正确识别它与其他触点间的关系,也难于判断通过触点对输出线圈的控制方向。因此梯形图的书写顺序是自左至右、自上至下的,CPU也是按此顺序执行程序。
(6)梯形图中的触点可以任意串联和并联,但输出线圈和指令盒只能并联,不能串联。
1.5.2 语句表
PLC的指令是一种与汇编语言中的指令相似的助记符表达式。语句表表达式与梯形图有一一对应关系,由指令组成的程序叫做指令(语句表)程序。在用户程序存储器中,指令按步序号顺序排列。将图1-19所示梯形图程序用语句表编写如下:
序号 操作码 操作数 1 LD I0.1 2 O Q0.1 3 AN I0.2 4 = Q0.1
1.5.3 顺序功能图
顺序功能图(状态转移图)是一种较新的编程方法,如图1-20所示。它将一个完整的控制过程分为若干阶段,各阶段具有不同的动作,阶段间有一定的转换条件,转换条件满足就实现阶段转移,上一阶段动作结束,下一阶段动作开始。它提供了一种组织程序的图形方法。在顺序功能图中可以用别的语言嵌套编程,步、路径和转换是顺序功能图中的3种主要元素。顺序功能图主要用来描述开关量顺序控制系统,根据它可以很容易地画出顺序控制梯形图程序。图1-20(a)所示为表示该任务的示意图,要求控制电动机正/反转,实现小车往返行驶。按钮SB控制启、停。SQ11、SQ12、SQ13分别为3个限位开关,控制小车的行程位置;
图1-20 顺序功能图
图1-20(b)所示为动作要求示意图;图1-20(c)所示为按照动作要求画出的流程图;图1-20(d)所示为将流程图中符号改为PLC指定符号后的功能流程图程序。可以看到,整个程序完全按动作顺序直接编程,非常直观简便,思路很清楚,很适合顺序控制的场合。
1.5.4 功能块图
功能块图是一种类似于数字逻辑门电路的编程语言,有数字电路基础的人很容易掌握。该编程语言用类似与门、或门的方框来表示逻辑运算关系。方框的左侧为逻辑运算的输入变量,右侧为输出变量。I/O端的小圆圈表示“非”运算,方框被“导线”连接在一起,信号自左向右流动。功能块图程序如图1-21所示,对应的梯形图程序如图1-22所示,功能块图输出逻辑为:
Q0.1=(I0.1+SM0.2+Q0.1)?{L-End} ?{L-End}
图1-21 功能图块程序
图1-22 梯形图程序
图1-22所示梯形图转换为语句表如下:
LD I0.1 O SM0.2 O Q0.1 AN Q0.0 AN I1.0 = Q0.1
S7-200 PLC用功能块图编写的控制逻辑程序可以转换得到相应的梯形图程序及语句表,但是,并不是所有的梯形图程序都能转换出功能块图程序,尤其是逻辑关系复杂的梯形图程序,是不能转换出功能块图程序的。因此,功能块图方式编程使用相对较少,但对分析逻辑关系相对容易的编程是有好处的。
1.5.5 结构文本
结构文本是为IEC 61131-3标准创建的一种专用的高级编程语言,如VB语言、VC语言等。它采用计算机的描述语句来描述系统中各种变量之间的各种运算关系,完成所需的功能或操作。与梯形图相比,它能实现复杂的数学运算,编写的程序非常简洁和紧凑。在大中型的可编程控制器系统中,常采用结构文本设计语言来描述控制系统中各个变量的关系。它也被用于集散控制系统的编程和组态。在进行PLC程序设计过程中,除了允许几种编程语言供用户使用外,标准还规定编程者可在同一程序中使用多种编程语言,这使编程者能选择不同的语言来适应特殊的工作,使PLC的各种功能得到更好的发挥。