3.1 PLC的编程语言
3.1.1 PLC编程语言的国际标准
PLC是专为工业控制而开发的装置,主要使用者是企业电气技术人员。为了适应他们的传统习惯和掌握能力,通常PLC不采用计算机编程语言,而采用面向控制过程、面向问题的“自然语言”编程。1993年12月国际电工委员会(IEC)公布了IEC 61131-3可编程逻辑控制器的编程语言标准,规范了可编程控制器的编程语言及其基本元素。自IEC 61131-3正式公布后,它获得了广泛的接受和支持:
①国际上各大PLC厂商都宣布其产品符合该标准的规范,在推出其编程软件新产品时,遵循该标准的各种规定。
②许多稍后推出的DCS产品,或者DCS的更新换代产品,也遵照IEC 61131-3的规范,提供DCS的编程语言。
③以PC为基础的控制作为一种新兴控制技术正在迅速发展,大多数PC控制的软件开发商都按照IEC 61131-3的编程语言标准规范其软件产品的特性。
④正因为有了IEC 61131-3,才真正出现了一种开放式的可编程控制器的编程软件包,它不具体地依赖于特定的PLC硬件产品,这就为PLC的程序在不同机型之间的移植提供了可能。
IEC 61131-3编程语言标准详细阐述了5种编程语言,如图3-1所示。具体情况如下:
①梯形图(Ladder Diagram,LD);
②功能块图(Function Block Diagram,FBD);
③指令表(Instruction List,IL);
④结构文本(Structured Text,ST);
⑤顺序功能图(Sequential Function Chart,SFC)。
图3-1 PLC的编程语言
其中,梯形图(LD)和功能块图(FBD)为图形语言;指令表(IL)和结构文本(ST)为文字语言;顺序功能图(SFC)是一种结构块控制流程图。
3.1.2 梯形图及其编程规则
梯形图是PLC编程中使用最多的图形编程语言,其基本结构形式如图3-2所示。它是在继电器控制电路的基础上演绎出来的,因此分析梯形图的方法和分析继电器控制电路的方法非常相似。
图3-2 梯形图基本结构形式
(1)梯形图编程的基本概念
梯形图通常由触点、线圈、功能框三个基本编程要素构成。为了进一步了解梯形图,需要弄清以下几个基本概念。
①能流 在梯形图中,为了分析各个元器件输入输出关系而引入的一种假象的电流,称之为能流(Power Flow)。通常认为能流是按从左到右的方向流动,能流不能倒流,这一方向与执行用户顺序时的逻辑运算关系是一致的,如图3-2所示。在图3-2中,在X0闭合的前提下,能流有4条路径,现以其中的2条为例给予说明:一条为触点X0、X1和线圈Y0构成的电路;另一条为触点Y0、X1和线圈Y0构成的电路。
利用能流这一概念,可以帮助我们更好地理解和分析梯形图。能流只能从左向右流动,层次改变只能从上向下。
②母线 梯形图中两侧垂直的公共线称之为母线(Bus Bar)。母线可分为左母线和右母线。通常左母线不可省,右母线可省,能流可以看成由左母线流向右母线,如图3-2所示。
③触点 触点表示逻辑输入条件。触点闭合表示有“能流”流过,触点断开表示无“能流”流过。常用的触点有常开触点和常闭触点2种,如图3-2所示。
④线圈 线圈表示逻辑输出结果。若有“能流”流过线圈,线圈吸合,否则断开。
⑤功能框 代表某种特定的功能。“能流”通过功能框时,则执行功能框的功能。功能框代表的功能有多种,如数据传递、移位、数据运算等,如图3-2所示。
(2)软触点
PLC梯形图中的某些编程元件沿用了继电器这一名称,如输入继电器、输出继电器、内部辅助继电器等,但是它们不是真实的物理继电器,而是一些存储单元,每个软继电器的触点与PLC存储器中映像寄存器的一个存储单元相对应,所以这些触点称为软触点。这些软触点的“1”或“0”状态代表着相应继电器触点或线圈的接通或断开。而且对于PLC内部的软触点,该存储单元如果为“1”状态,则表示梯形图中对应软继电器的线圈通电,其常开触点()接通,常闭触点()断开。在继电器控制系统的接线中,触点的数目是有限的,而PLC内部的软触点的数目和使用次数是没有限制的,用户可以根据控制现场的具体要求在梯形图程序中多次使用同一软触点。触点与线圈在梯形图程序与动态检测中所代表的意义如表3-1所示。
表3-1 梯形图程序中触点与线圈所代表的意义
(3)梯形图设计规则
①由于梯形图中的线圈和触点均为“软继电器”,因此同一标号的触点可以反复使用,次数不限,这也是PLC区别于传统控制的一大优点。
②每个梯形图由多层逻辑行(梯级)组成,每层逻辑行起始于左母线,经过触点的各种连接,最后结束于线圈,不能将触点绘制在线圈的右侧,只能在触点的右侧接线圈。每一逻辑行实际代表一个逻辑方程。
③梯形图中的“输入触点”仅受外部信号控制,而不能由内部继电器的线圈将其接通或断开,即线圈不能直接与左母线相连接。所以在梯形图中只能出现“输入触点”,而不可能出现“输入继电器的线圈”。
④在多个串联回路相并联时,应将触点最多的那个串联回路放在梯形图的最上面。在多个并联回路相串联时,应将触点最多的并联回路放在梯形图的最左面。这种安排所编制的程序简洁明了,指令较少。
⑤触点应绘制在水平线上,不能绘制在垂直分支上。被绘制在垂直线上的触点,难以正确识别它与其他触点间的关系,也难以判断通过触点对输出线圈的控制方向。因此梯形图的书写顺序是自左至右、自上至下,CPU也按此顺序执行程序。
⑥梯形图中的触点可以任意串联、并联,但输出线圈只能并联,不能串联。
3.1.3 指令表
指令表(语句表)是一种类似于微机汇编语言的文本语言,指令表表达式与梯形图有一一对应的关系。每一条指令表指令都包含操作码和操作数两部分,其中操作码表示操作功能(例如LD、OR、ANI、OUT等),操作数表示指定的存储器的地址,操作数一般由标识符和地址码组成(例如X001、X002、M0、Y000等),如图3-3所示。
图3-3 指令表的构成图
3.1.4 顺序功能图
顺序功能图(状态转移图)是一种图形语言,主要用来描述开关量顺序控制系统,根据它可以很容易绘制出顺序控制梯形图程序,如图3-4所示。它是一种较新的编程方法,主要由步、有向连线、转换条件和动作等要素组成。在顺序程序的编写时,往往根据输出量的状态将一个完整的控制过程划分为若干个阶段,每个阶段就称为步,步与步之间有转换条件,且步与步之间有不同的动作。当上一步被执行时,满足转换条件立即跳到下一步,同时上一步停止。在编写顺序控制程序时,往往先画出顺序功能图,然后再根据顺序功能图写出梯形图,经过这一过程后使程序的编写大大简化。
图3-4 顺序功能图