1.3 PLC的编程语言
可编程控制器是通过程序对系统进行控制的,各种机型的PLC都有自己的编程语言。PLC编程语言有多种,其中3种是图形化语言,包括梯形图(Ladder Diagram,LD)、功能块(Function Block,FB)、顺序功能图(Sequential Function Chart,SFC);两种是文本化语言,包括语句表(Instruction List,IL)和结构文本(Structured Text,ST)。
1.梯形图LD编程语言
梯形图编程语言是一种图形语言,是若干图形符号的组合。不同厂家的PLC各有自己的一套梯形图符号。这种编程语言具有继电器控制电路形象、直观的优点,使熟悉继电器控制的技术人员很容易掌握。可见,各种机型的PLC都把梯形图作为第一编程语言。
表1.4列出了物理的继电器与OMRON PLC输出继电器的梯形图符号。
图1.6(a)是用继电器控制的电动机直接启、停(也称启保停)控制梯形图,图1.6(b)是用PLC控制的梯形图程序。由图可见,这两种梯形图形式很相似。但是,它们只是形式上的相似,实质上却存在着本质的差别,其主要区别有以下几点。
(1)两种继电器的区别
①继电器控制电路中使用的继电器都是物理的电器,继电器与其他控制电器间的连接必须通过硬接线来完成;PLC的继电器不是物理的电器,它是PLC内部的寄存器位,常称为“软继电器”。之所以称为“软继电器”,是因为它具有与物理继电器相似的功能。例如,当它的“线圈”通电时,其所属的常开触点闭合、常闭触点断开,当它的“线圈”断电时,其所属的常开触点和常闭触点均恢复常态。PLC梯形图中的接线称为“软接线”,这种“软接线”是通过编程序来实现的。
②PLC的每一个继电器都对应着内部的一个寄存器位,由于可以无限次地读取某位寄存器的内容,所以,可以认为PLC的继电器有无数个常开、常闭触点可供用户使用。而物理继电器的触点个数是有限的。
表1.4 两种继电器符号对照
图1.6 两种控制方式的梯形图
③PLC的输入继电器是由外部信号所驱动的,在梯形图中只能使用输入继电器的触点,而不出现它的线圈。而物理继电器触点的状态取决于其线圈中有无电流通过,在继电器控制电路中,若不接继电器线圈,只接其触点,则触点永远不会动作。
(2)两种梯形图的区别
PLC梯形图左右的两根线也叫母线,但与继电器控制电路的两根母线不同。继电器控制电路的母线与电源连接,其每一行(也称梯级)在满足一定条件时将通过两条母线形成电流通路,从而使电器动作;而PLC梯形图的母线并不接电源,它只表示每一个梯级的起始和终了,PLC的每一个梯级中并没有实际的电流通过。通常说PLC的线圈接通了,这只不过是为了分析问题方便而假设的概念电流通路,而且概念电流只能从左向右流,这是PLC梯形图与继电器控制电路本质的区别。
(3)实现控制功能手段的区别
继电器控制是靠改变电器间的硬接线来实现各种控制功能的,而PLC是通过编程序来实现控制的。
图1.7是对应图1.6(b)的PLC外部接线。图中只画出了一部分输入和输出端子。0.00、0.01等是输入端子,100.00、100.01等是输出端子,输入和输出端子各有自己的公共端COM。
当启动按钮SB1闭合时,0.00输入端子对应的输入继电器线圈通电,它的触点相应动作;当停止按钮SB2闭合时,0.01输入端子对应的输入继电器线圈通电,它的触点相应动作。当100.00输出端子对应的输出继电器线圈通电时,外部负载KM的线圈通电。根据上述关系,分析图1.6(b)启、停电动机的过程是:
图1.7 PLC的外部接线
按下启动按钮SB1,0.00输入端子对应的输入继电器线圈通电,其常开触点0.00闭合。由于没有按动SB2,所以常闭触点0.01处于闭合状态。因此输出继电器100.00线圈通电,使KM通电。KM的主触点接在电动机的主电路中,于是电动机启动。释放启动按钮SB1后,由于100.00线圈通电,其常开触点100.00闭合起自锁作用。
在电动机运行过程中按下SB2,0.01输入端子对应的输入继电器线圈通电,其常闭触点0.01断开,输出继电器100.00线圈断电,使KM断电,于是电动机停转。
2.语句表IL编程语言
语句表编程语言类似计算机的汇编语言,用助记符来表示各种指令的功能。对同样功能的指令,不同厂家的PLC使用的助记符一般不同。
对图1.6(b)的梯形图,其语句表为指令语句是PLC用户程序的基础元素,多条语句的组合构成了语句表。一个复杂的控制功能是用较长的语句表来描述的。
语句表编程语言不如梯形图形象、直观,但是在使用简易编程器输入用户程序时,只能输入语句表程序。
3.功能块FB编程语言
OMRON推出的CS1、CJ1和CP1系列PLC和CX-P(5.0及其以上的版本)可直接支持用户定义的标准功能块编程。功能块是由完成特定功能的程序段组成的。功能块是一个包含标准处理功能的基本单元,该标准处理功能事先已定义好。用户可以将已定义好的功能块嵌入到梯形图程序中调用,同时设置执行功能块的输入/输出条件。功能块不包含实际地址,只有变量。用户可以在变量中设置地址或常数。
功能块编程的内容为:创建功能块和调用功能块。而创建一个功能块需要进行变量定义和算法设计。一旦在功能块中创建了标准编程并将其保存为文件,便可将功能块嵌入程序中并设置功能块I/O参数,进行反复使用,以达到简化程序的目的。
4.结构文本ST
随着PLC技术的发展,PLC的高级功能越来越多,有时用梯形图来实现编程,会很不方便。为了方便用户使用PLC的数学运算、数据处理、图形显示、打印报表等功能,许多大中型或先进的PLC都配备了结构文本编程语言。
ST语言是符合工业控制编程语言标准IEC61131-3的高级编程语言,用结构化的语句编写程序。在大、中型PLC控制系统中,常采用这种编程方式来表达控制系统中各变量的关系。
ST语言类似于Pascal语言,但在表达式和语句的种类方面都做了简化。一个ST程序由多条语句组成,而一个语句是由变量和表达式组成。通过编写不同的语句建立不同的控制关系。表达式包含着运算符和操作数(变量或常数)。运算符包括算术运算、逻辑运算和比较运算等算法。语句可以分为赋值语句和控制语句。赋值语句将表达式计算的结果保存于变量中。控制语句包含选择语句、循环语句、条件语句等。
用户除了可以创建梯形图编程的FB之外,熟悉高级编程的技术人员还可以创建ST语言的FB。CX-P为熟悉不同编程语言的用户提供了不同的编程平台。懂得高级语言的用户编写好复杂的ST语言功能块后,其他用户甚至不熟悉ST语言的操作人员也可以使用该功能块,这就大大降低了对操作人员所使用编程语言的限制。另外,使用高级语言编程,可以轻松完成复杂的数学运算。若用梯形图语言编辑复杂的算术运算功能,需要编写很多条程序,占用更多的程序容量;而用ST语言来写,表达式就可以代替梯形图中的复杂程序,要方便得多。
5.顺序功能图SFC
顺序功能图是一种图形化的功能性说明语言,专用于描述工业顺序控制程序,使用它可以对具有并发、选择等复杂结构的系统进行编程。OMRON的CS1、CJ1和CP1(除CP1E外)等系列PLC支持SFC编程。
顺序功能图程序设计语言有如下特点:
①以功能为主线,条理清楚,便于对程序操作的理解和沟通。
②常用于系统的规模较大,程序关系较复杂的场合;对大型的程序,可分工设计,采用较为灵活的程序结构,可节省程序设计时间和调试时间。
③顺序功能图是由步构成的。在活动步的命令和操作被执行后,对活动步后的转换进行扫描,因此,整个程序的扫描时间较其他程序编制的程序扫描时间要大大缩短。