PLC 是一种工业控制计算机,其软件必然是通过编程语言来编辑的。
目前 PLC 常用的编程语言有梯形图、指令语句表和顺序功能图。功能块图和结构文本高级语言则存在于某些PLC中。
指令语句表也叫助记符或列表,是基于字母符号的一种语言,类似于计算机的汇编语言。
这种编程语言是用一系列操作指令组成的语句表将控制流程描述出来,并通过编程器或者编程软件送到PLC中去。指令语句表是由若干条指令语句组成的程序,指令语句是程序的最小单元。一个操作功能是由一条或若干条指令语句来完成的。PLC的指令系统比计算机的汇编语言简单很多,但表达形式类似,也是由地址、操作码和操作数三部分组成,关于FX 3U PLC的基本指令系统将在第 3 章中给予详细讲解。
下面为指令语句表程序(FX 3U PLC):
0 LD X0
1 OR Y0
2 ANI X1
3 OUT Y0
4 END
如果把指令表的逻辑关系写成逻辑表达式则为Y0=(X0+Y0)· X1。
不同品牌的PLC其指令表的形式是相同的,但是指令的符号表示、各编程元件表示则相差很大。
指令语句表编程语言是最基本的程序设计语言,它具有容易记忆、便于操作的特点,可以用最简单的编程工具——手持编程器进行编程。它与其他语言多有一一对应的关系,而且,一些其他语言无法表达的程序用它都可以进行表达。它的缺点是阅读困难,其中的操作功能很难一眼看出,不便于工控人员之间进行交流和沟通。
早期,在电脑和编程软件普及前,一般都是先用梯形图设计程序,然后再手工编译成指令表程序,最后用手持编程器将程序送入PLC。现在,电脑和编程软件已经普及,在编程软件上,只要编好梯形图程序,软件会自动编译成指令表程序。所以,后续重点是梯形图编程语言的学习和编程软件的操作,对指令表编程语言则不作进一步讲解。但是,PLC的各种操作指令的学习则是必不可少的编程基础。
梯形图编程语言习惯上称为梯形图,其源自继电控制系统电气原理图的形式,也可以说,梯形图是在电气控制原理图上对常用的继电器、接触器等逻辑控制基础上简化了符号演变而来的。
由于PLC的结构和工作原理都和继电器控制系统截然不同,因而它们之间必定存在着许多差异。初学者可以通过继电器控制电路图切入梯形图,但一旦入了门,则必须完全离开继电控制电路图。
图 1.2-7 为根据这一节中的指令表程序所画出的梯形图,其功能和指令表程序一样,但理解却容易多了,电工师傅们一看就知道,这是一个电动机启保停控制程序。
图 1.2-7 PLC梯形图
和指令表编程语言一样,尽管都是梯形图,但各个厂家PLC对梯形图的画法还是有差别的。对最基本的逻辑控制指令差别并不大,但对功能指令(实现数据操作的指令)的表达上差别非常大。这也是为什么学习三菱PLC后再学习西门子S7-300/400,很多人感到不好学的原因之一。
梯形图语言优点非常突出,形象、直观、易学、实用,电气人员容易接受,是目前所有PLC都具备的编程语言,也是用得最多的一种PLC编程语言。
顺序功能图语言是近来发展起来的一种程序设计语言,又叫状态转移图或功能表图。它把程序分成若干“步”,每步执行若干动作,“步”与“步”之间的转移由转移条件实现,如图 1.2-8 所示。
顺序功能图主要用来编制顺序控制程序。由于在实际逻辑控制中,大部分都可以用顺序控制来描述,所以顺序功能图得到了广泛的应用。
目前,大多数PLC都能在编程软件上使用顺序功能图编程语言,但和指令表及梯形图不同,顺序功能图不能像指令表或梯形图那样直接输入PLC,而仅仅作为组织编程的工具,也就是说,先根据顺序控制要求画出顺序功能图,然后再根据顺序功能图人工或用编程软件转换成梯形图。
我们将在第 6 章中对顺序功能图编程语言及顺序控制程序设计进行专门的讲解。
功能块编程语言是一种对应于逻辑电路的图形语言,广泛地用于过程控制。功能块语言是用图形化的方法,以功能模块为单位,来描述控制功能。
图 1.2-9 为一西门子PLC的功能块图。
图 1.2-8 PLC顺序功能图
图 1.2-9 PLC功能块图
它由两个功能块组成,一是逻辑“或(OR)”功能块,一是“与(AND)”功能块,其逻辑关系式I0.0 与Q0.0 相或,或的结果再与I0.1 的非(图中用 表示)相与,结果为输出Q0.0。如果用逻辑或表示为
和上面指令表、梯形图所完成的功能一样。
功能块语言表达简练,逻辑关系清晰,使控制过程的分析和理解变得容易,特别适合于规模较大,控制关系复杂的系统。
三菱FX 3U PLC不支持功能块编程语言,这里不过多介绍。
结构文本是基于文本的高级程序设计语言,和计算机语言BASIC,PASCAl及C语言类似。
结构文本编程语言对程序设计人员的知识要求较高,普通电气人员无法完成,而且目前应用也不普及,仅个别PLC提供这种语言。
【试试,你行的】
PLC有哪几种编程语言?最常用的是哪三种?