
第二节 S7-200 SMART PLC的编程元件及语言
一、基本数据类型与寻址方式
1 S7-200 SMART PLC的存储器区域
S7-200 SMART PLC的存储器分为用户程序空间、CPU组态空间和数据区空间。
用户程序空间用于存放用户程序,存储器为EEPROM;CPU组态空间用于存放有关PLC配置结构参数,如PLC主机及扩展模块的I/O配置和编址、配置的PLC站地址、设置的保护口令、停电记忆保持区、软件滤波功能等,存储器为EEPROM;数据区空间是用户程序执行过程中的内部工作区域,该区域存放输入信号、运算输出结果、计时值、计数值、高速计数值和模拟量数值等,存储器为EEPROM和ROM。
数据区空间是S7-200 SMART CPU提供的存储器的特定区域,数据区空间使CPU的运行更快、更可靠。S7-200 SMART PLC的数据存储区按存储器存储数据的长短可划分为字节存储器、字存储器和双字存储器等三类。字节存储器有七个,如输入映像寄存器(I)、输出映像寄存器(Q)、变量存储器(V)、位存储器(M)、特殊存储器(SM)、顺序控制继电器(S)、局部变量存储器(L);字存储器有四个,如定时器(T)、计数器(C)、模拟量输入映像寄存器(AI)和模拟量输出映像寄存器(AQ);双字存储器有两个,如累加器(AC)和高速计数器(HC)。
用户对用户程序空间、CPU组态空间和部分数据区空间进行编辑,编辑后写入PLC的EEP-ROM。RAM为EEPROM存储器提供备份存储区,用于PLC运行时动态使用。RAM由大容量电容做停电保持。
2 数据区空间存储器的编址方式
在计算机中使用的数据均为二进制数,二进制数的基本单位是一个二进制位,八个二进制位组成一个字节,两个字节组成一个字,两个字组成一个双字。
存储器由许多存储单元组成,每个存储单元都有唯一的地址,可以依据存储器地址来存取数据。数据区空间存储器的单位可以是位、字节、字、双字,编址方式也可以是位编址、字节编址、字编址和双字编址。
(1)位编址 存储器标识符+字节地址+位地址,如I0.1、M0.0、Q0.3等。如图1-17所示,I1.4表示图中黑色标记的位地址,I是输入映像寄存器的区域标识符,1是字节地址,4是位号,在字节地址1和位号之间用点号“.”隔开。

图1-17 位地址I1.4的表达方式
按照这种位编址方式编址的存储区有输入映像寄存器(I)、输出映像寄存器(Q)、位存储器(M)、特殊存储器(SM)、局部变量存储器(L)、变量存储器(V)和顺序控制继电器(S)。
(2)字节编址、字编址和双字编址 如图1-18所示。

图1-18 字节、字、双字的编址方式
1)字节编址:存储器标识符+字节长度(B)+字节号,如IB0、QB0、VB100等。
2)字编址:存储器标识符+字长度(W)+起始字节号,如VW100表示VB100、VB101这两个字节组成的字,其中VB100是高有效字节,VB101是低有效字节。
3)双字编址:存储器标识符+双字长度(D)+起始字节号,如VD100表示由VW100、VW102这两个字组成的双字或由VB100、VB101、VB102、VB103这4个字节组成的双字,其中VB100是最高有效字节,VB103是最低有效字节。
按照这种字节、字和双字编址方式编址的存储区有输入映像寄存器(I)、输出映像寄存器(Q)、位存储器(M)、特殊存储器(SM)、局部变量存储器(L)、变量存储器(V)、顺序控制继电器(S)、模拟量输入映像寄存器(AI)和模拟量输出映像寄存器(AQ)。
(3)其他编址方式 数据区空间存储器区域中还包括定时器存储器、计数器存储器、累加器、高速计数器等,它们是模拟相关的电器元件,编址方式为区域标识符+元件号,例如,T24表示某定时器的地址,T是定时器的区域标识符,24是定时器号。
3 S7-200 SMART的基本数据类型及基本数制
(1)基本数据类型 在S7-200 SMART PLC的编程语言中,大多数指令要与数据对象一起进行操作。不同的数据对象具有不同的数据类型,不同的数据类型又具有不同的数制和格式选择。因此,程序中所使用的数据需要指定一种数据类型,而在指定数据类型时,首先要确定数据大小及数据位的结构。S7-200 SMART PLC的基本数据类型及其范围见表1-1。
表1-1 S7-200 SMART PLC的基本数据类型及其范围

编程中经常会使用常数,常数数据长度可分为字节、字和双字。在机器内部的数据都以二进制存储,但常数的书写可以用二进制、十进制、十六进制、ASCII码或浮点数(实数)等多种形式。几种常数形式说明如下:
1)二进制的书写格式为“2#二进制数值”,如2#0101 1100 0010 1010;
2)十进制的书写格式为“十进制数值”,如1052;
3)十六进制的书写格式为“16#十六进制数值”,如16#8AC6;
4)ASCII码的书写格式为“‘ASCII码文本’”,如‘good bye’;
5)浮点数的书写格式按IEEE浮点数格式,如I0.5。
(2)PLC中常用数制
1)十进制。十进制是人们日常生活中最熟悉的进位计数制,十进制是一种以10为基数的计数法。在十进制中,数用0、1、2、3、4、5、6、7、8、9这十个符号来描述。计数规则是:逢十进一。
2)二进制。二进制是在计算机系统中采用的进位计数制,二进制是一种以2为基数的计数法,采用0、1两个数值。计数规则是:逢二进一。在二进制中,用0和1两个符号来描述,可以表示开关量的两种不同状态,如触点的闭合与断开,线圈的通电与断电,指示灯的亮与灭等。在PLC梯形图中如果某位为1,则表示该位触点闭合和线圈通电;如果某位为0,则表示该位触点断开和线圈断电;西门子PLC中二进制用前缀2#加数值来表示,如2#0001110就是8位的二进制。
3)八进制。八进制是一种以8为基数的计数法,采用0、1、2、3、4、5、6、7八个数字。计数规则是:逢八进一。在PLC中输入与输出的地址编号用八进制数表示,例如I0.0、I0.1…I0.7。
4)十六进制。十六进制是人们在计算机指令代码和数据的书写中经常使用的数制,十六进制是一种以16为基数的计数法,采用0、1…9、A、B…F等16个符号来描述。计数规则是:逢十六进一。西门子PLC中十六进制用前缀16#加数值来表示,例如16#0A。
5)BCD码。BCD码是用四位二进制数来表示一位十进制数中的0~9这十个数码,是一种二进制的数字编码形式,BCD码和四位自然二进制码不同的是,它只选用了四位二进制码中的前十组代码,即用0000~1001分别代表它所对应的十进制数,余下的六组代码不用,例如十进制数中“6”的BCD码是0110。
4 S7-200 SMART CPU模块操作数的数值范围
S7-200 SMART CPU模块操作数的数值范围见表1-2。
表1-2 S7-200 SMART CPU模块操作数的数值范围

二、PLC的编程元件
PLC在其系统软件的管理下,将用户程序存储器(即装载存储区)划分出若干个区,并赋予这些区不同的功能,分别称为输入继电器、输出继电器、辅助继电器、变量继电器、定时器、计数器、数据寄存器等。
说明:在PLC内部,并不真正存在这些实际的物理器件,与其对应的只是存储器中的某些存储单元。
1 输入继电器I
输入继电器I就是PLC存储系统中的输入映像寄存器。它通过输入继电器,将PLC的存储系统与外部输入端子建立明确的关系,一般按“字节.位”的编址方式来读取一个继电器的状态。
2 输出继电器Q
输出继电器Q就是PLC存储系统中的输出映像寄存器。它通过输出继电器,将PLC的存储系统与外部输出端子建立明确的关系,一般按“字节.位”的编址方式来读取一个继电器的状态。
3 变量寄存器V
S7-200 SMART PLC中有大量的变量寄存器,用于模拟量控制、数据运算、参数设置及存放程序执行过程中控制逻辑操作的中间结果。其数量与CPU型号有关。
4 辅助继电器M
辅助继电器M的功能与传统的继电器控制电路中的中间继电器相同,它借助于辅助继电器的编程,可使输入/输出之间建立复杂的逻辑关系和联锁关系,以满足不同的控制要求。
5 特殊继电器SM
特殊继电器SM用来存储系统的状态变量及有关的控制参数和信息。用户可以通过特殊继电器向PLC反映对操作的特殊要求以及沟通PLC与被控对象之间的信息,PLC通过特殊继电器为用户提供一些特殊的控制功能和系统信息。
例如:
SM0.0:运行监控,PLC在运行状态时,SM0.0总为ON。
SM0.1:初始脉冲,PLC由STOP转为RUN时,一个扫描周期为ON。
SM0.3:PLC上电进入运行状态时,一个扫描周期为ON。
SM0.4:分时钟脉冲,占空比为50%,周期为1min的脉冲串。
SM0.5:秒时钟脉冲,占空比为50%,周期为1s的脉冲串。
SM0.6:扫描时钟,一个周期为ON,下个周期为OFF,交替循环。
SMB28和SMB29:分别对应模拟电位器0和1的当前值,数值范围为0~255。
6 定时器T
定时器T是PLC的重要的编程元件,它的作用与继电器控制电路中的时间继电器基本相似,用来实现按照时间原则进行控制的目的。定时器的设定值通过程序预先输入,当满足定时器的工作条件时,定时器开始定时,当前值从0开始增加;当达到设定值时定时器动作,其动合触点和动断触点动作。表1-3为定时器的精度及编号。
表1-3 定时器的精度及编号

7 计数器C
计数器C的作用是对编程元件状态脉冲的上升进行积累计数,从而实现计数操作。当条件满足时,计数器开始计数,当前值达到设定值后,计数器的动合触点和动断触点动作,实现计数操作。
S7-200 SMART PLC中计数器的数量为256个,范围为C0~C255。它分为三种类型,即递增计数、递减计数和增/减计数。
8 状态(顺序控制)继电器S
状态继电器S又称状态元件,是使用步进控制指令编程时的重要编程元件,用来组织机器操作或进入等效程序段工步,以实现顺序控制和步进控制。顺序控制继电器用于顺序功能图法编程。每一个状态继电器可以用来代表控制状态中的一个步序(能为编程提供方便),可以按位、字节、字或双字来存取S位。S7-200 SMART PLC提供了256个状态继电器,编址范围为S0.0~S15.7。
三、PLC的编程语言
PLC为用户提供了完整的编程语言,以适应编制用户程序的需要。PLC提供的编程语言通常有梯形图(LAD)、指令表(ST)、顺序功能流程图(SFC)和功能块图(FBD)等几种,下面以S7-200 SMART PLC为例加以介绍。
1 梯形图
梯形图(LAD)是国内使用得最多的图形编程语言,被称为PLC的第一编程语言。它沿用了电气工程师熟悉的传统继电器控制电路图的形式和概念,其基本控制思想与继电器控制电路图很相似,只是在使用符号和表达方式上有一定区别。图1-19所示为一个典型的梯形图。

图1-19 PLC梯形图
梯形图是由两条母线(左右两条垂直的线)和两母线之间的逻辑触点和线圈按一定结构形式连接起来的类似于梯子的图形(梯形图常被称为电路或程序,梯形图的设计称为编程)。梯形图直观易懂,很容易掌握,为了更好地理解梯形图,这里把PLC与继电器控制电路相对比做介绍,重点理解几个与梯形图相关的概念。
表1-4给出了PLC与继电器控制电路的电气符号对照关系。
表1-4 PLC与继电器控制电路中的电气符号对照关系

(1)软继电器(即映像寄存器) PLC梯形图中的某些编程元件沿用了继电器这一名称,如输入继电器、输出继电器、内部辅助继电器等,但是它们不是真实的物理继电器,而是一些存储单元(软继电器),每一个软继电器与PLC存储器中映像寄存器的一个存储单元相对应。该存储单元如果为“1”状态,则表示梯形图中对应软继电器的线圈“通电”,其常开触点接通,常闭触点断开,称这种状态是该软继电器的“1”或“ON”状态。如果该存储单元为“0”状态,则对应软继电器的线圈和触点的状态与上述相反,称该软继电器为“0”或“OFF”状态。使用中也常将这些“软继电器”称为编程元件。
(2)能流 当触点接通时,有一个假想的“概念电流”或“能流”从左向右流动,这一方向与执行用户程序时的逻辑运算的顺序是一致的。能流只能从左向右流动。利用能流这一概念,可以帮助人们更好地理解和分析梯形图。
(3)母线 梯形图两侧的垂直公共线称为母线。在分析梯形图的逻辑关系时,为了借用继电器电路图的分析方法,可以想象左右两侧母线(左母线和右母线)之间有一个左正右负的直流电源电压,母线之间有“能流”从左向右流动。右母线可以不画出。
(4)梯形图的逻辑运算 根据梯形图中各触点的状态和逻辑关系,求出与图中各线圈对应的编程元件的状态,称为梯形图的逻辑运算。梯形图中逻辑运算是按从左至右、从上到下的顺序进行的。运算的结果马上可以被后面的逻辑运算所利用。逻辑运算是根据输入映像寄存器中的值,而不是根据运算瞬时外部输入触点的状态来进行的。
2 指令表
指令表(ST)编程语言类似于计算机中的助记符语言,它是PLC最基础的编程语言。所谓指令表编程,是用一个或几个容易记忆的字符来代表PLC的某种操作功能。图1-20所示为一个简单的PLC程序,图1-20a是梯形图程序,图1-20b是相应的指令表。一般来说,指令表编程适合于熟悉PLC和有经验的程序员使用。

图1-20 一个简单的PLC程序
3 顺序功能流程图
顺序功能流程图(SFC)编程是一种图形化的编程方法,亦称功能图,如图1-21所示。使用它可以对具有并行、选择等复杂结构的系统进行编程,许多PLC都提供了用于SFC编程的指令。目前,国际电工委员会(IEC)也正在实施并发展这种语言的编程标准。

图1-21 顺序功能流程图
4 功能块图
S7-200 SMART PLC专门提供了功能块图(FBD)编程语言,利用FBD可以查看到像普通逻辑门图形的逻辑盒指令。它没有梯形图编程器中的触点和线圈,但有与之等价的指令,这些指令是作为盒指令出现的,程序逻辑由这些盒指令之间的连接决定。也就是说,一个指令(如AND盒)的输出可以用来允许另一条指令(如定时器),这样可以建立所需要的控制逻辑。这样的连接思想可以解决范围广泛的逻辑问题。FBD编程语言有利于程序流的跟踪,但在目前使用较少。图1-22所示为FBD的一个简单实例。

图1-22 功能块图