西门子PLC从入门到精通
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第2章 S7-200PLC指令及应用

2.1 基础知识

2.1.1 数据类型

(1)数据类型

S7-200PLC的指令系统所用的数据类型有1位布尔型(BOOL)、8位字节型(BYTE)、16位无符号整数型(WORD)、16位有符号整数型(INT)、32位符号双字整数型(DWORD)、32位有符号双字整数型(DINT)和32位实数型(REAL)。

(2)数据长度与数据范围

在S7-200PLC中,不同的数据类型有不同的数据长度和数据范围。通常情况下,用位、字节、字和双字所占的连续位数表示不同数据类型的数据长度,其中布尔型的数据长度为1位,字节的数据长度为8位,字的数据长度为16位,双字的数据长度为32位。数据类型、数据长度和数据范围如表2-1所示。

表2-1 数据类型、数据长度和数据范围

2.1.2 存储器数据区划分

S7-200PLC存储器有3个存储区,分别为程序区、系统区和数据区。

程序区用来存储用户程序,存储器为EEPROM;系统区用来存储PLC配置结构的参数,如PLC主机、扩展模块I/O配置和编制、PLC站地址等,存储器为EEPROM。

数据区是用户程序执行过程中的内部工作区域。该区域用来存储工作数据和作为寄存器使用,存储器为EEPROM和RAM。数据区是S7-200PLC存储器特定区域,具体如图2-1所示。

图2-1 数据区划分示意图

(1)输入映像寄存器(I)与输出映像寄存器(Q)

① 输入映像寄存器(I) 输入映像寄存器是PLC用来接收外部输入信号的窗口,工程上经常将其称为输入继电器。在每个扫描周期的开始,CPU都对各个输入点进行集中采样,并将相应的采样值写入输入映像寄存器中。

需要说明的是,输入映像寄存器中的数值只能由外部信号驱动,不能由内部指令改写;输入映像寄存器有无数个常开和常闭触点供编程时使用,且在编程时,只能出现输入继电器触点不能出现线圈。

输入映像寄存器可采用位、字节、字和双字来存取。S7-200PLC操作数地址范围如表2-2所示。

表2-2 S7-200PLC操作数地址范围

② 输出映像寄存器(Q) 输出映像寄存器是PLC向外部负载发出控制命令的窗口,工程上经常将其称为输出继电器。在每个扫描周期的结尾,CPU都会根据输出映像寄存器的数值来驱动负载。

需要指出的是,输出继电器线圈的通断状态只能由内部指令驱动,即输出映像寄存器的数值只能由内部指令写入;输出映像寄存器有无数个常开和常闭触点供编程时使用,且在编程时,输出继电器触点、线圈都能出现,线圈的通断状态表示程序最终的运算结果,这与下面要介绍的辅助继电器有着明显的区别。

输出映像寄存器可采用位、字节、字和双字来存取。地址范围如表2-2所示。

(2)内部标志位存储器(M)

内部标志位存储器在实际工程中常称作辅助继电器,作用相当于继电器控制电路中的中间继电器,它用于存放中间操作状态或存储其他相关数据。内部标志位存储器在PLC中无相应的输入/输出端子对应,辅助继电器线圈的通断只能由内部指令驱动,且每个辅助继电器都有无数对常开/常闭触点供编程使用。辅助继电器不能直接驱动负载,它只能通过本身的触点与输出继电器线圈相连,由输出继电器实现最终的输出,从而达到驱动负载的目的。

内部标志位存储器可采用位、字节、字和双字来存取。地址范围如表2-2所示。

(3)特殊标志位存储器(SM)

有些内部标志位存储器具有特殊功能或用来存储系统的状态变量和有关控制参数及信息,这样的内部标志位存储器被称为特殊标志位存储器。它用于CPU与用户之间的信息交换,其位地址有效范围为SM0.0~SM179.7,共有180个字节,其中SM0.0~SM29.7这30个字节为只读型区域,用户只能使用其触点。

常用的特殊标志位存储器有如下几个,具体如图2-2所示。

常用的特殊标志位存储器时序图及举例如图2-3所示。

图2-2 常用的特殊标志位存储器

图2-3 常用的特殊标志位存储器时序图及举例

① SM1.0 零标志位,当运算结果=0时,该位置为1。

② SM1.1 溢出标志位,当运算结果=1时,该位置为1;SM1.0、SM1.1在移位指令中有应用。

其他特殊标志位存储器的用途这里不做过多说明,若有需要可参考附录,或者查阅PLC的相关书籍、文献和手册。

(4)顺序控制继电器存储器(S)

顺序控制继电器用于顺序控制(也称步进控制),与辅助继电器一样也是顺序控制编程中的重要编程元件之一,它通常与顺序控制继电器指令(也称步进指令)联用,以实现顺序控制编程。

顺序控制继电器存储器可采用位、字节、字和双字来存取,地址范围如表2-2所示。需要说明的是,顺序控制继电器存储器的顺序功能图与辅助继电器的顺序功能图基本一致。

(5)定时器存储器(T)

定时器相当于继电器控制电路中的时间继电器,它是PLC中的定时编程元件。按其工作方式的不同可以分为通电延时型定时器、断电延时型定时器和保持型通电延时定时器三种。定时时间=预置值×时基,其中预置值在编程时设定,时基有1ms、10ms和100ms三种。定时器的位存取有效地址范围为T0~T255,因此定时器共计256个。在编程时定时器可以有无数个常开和常闭触点供用户使用。

(6)计数器存储器(C)

计数器是PLC中常用的计数元件,它用来累计输入端的脉冲个数。按其工作方式的不同可以分为加计数器、减计数器和加减计数器三种。计数器的位存取有效地址范围为C0~C255,因此计数器共计256个,但其常开和常闭触点有无数对供编程使用。

(7)高速计数器(HC)

高速计数器的工作原理与普通计数器基本相同,只不过它是用来累计高速脉冲信号的。当高速脉冲信号的频率比CPU扫描速度更快时必须用高速计时器来计数。注意高速计时器的计数过程与扫描周期无关,它是一个较为独立的过程;高速计数器的当前值为只读值,在读取时以双字寻址。高速计数器只能采用双字的存取形式,CPU224、CPU226的双字有效地址范围为HC0~HC5。

(8)局部存储器(L)

局部存储器用来存放局部变量,并且只在局部有效,局部有效是指某个局部存储器只能在某一程序分区(主程序、子程序和中断程序)中被使用。它可按位、字节、字和双字来存取。地址范围如表2-2所示。

(9)变量存储器(V)

变量存储器与局部存储器十分相似,只不过变量存储器存放的是全局变量,它用在程序执行的控制过程中,控制操作中间结果或其他相关数据。变量存储器全局有效,全局有效是指同一个存储器可以在任意程序分区(主程序、子程序和中断程序)被访问。它和局部存储器一样可按位、字节、字和双字来存取。地址范围如表2-2所示。

(10)累加器(AC)

累加器是用来暂时存储计算中间值的存储器,也可向子程序传递参数或返回参数。S7-200PLC的CPU提供了4个32位累加器(AC0、AC1、AC2、AC3),可按字节、字和双字存取累加器中的数值。累加器是可读写单元。累加器的有效地址为AC0~AC3。

(11)模拟量输入映像寄存器(AI)

模拟量输入模块将外部输入连续变化的模拟量信号通过A/D(模数转换)转换为1个字长(16位)的数字量信号,并存放在模拟量输入映像寄存器中,供CPU运算和处理。模拟量输入映像寄存器中的数值为只读值,且模拟量输入映像寄存器的地址必须使用偶数字节地址来表示,如AIW2,AIW4等。模拟量输入映像寄存器的地址编号范围因CPU模块型号的不同而不同,CPU224、CPU226地址编号范围为AIW0~AIW62。

(12)模拟量输出映像寄存器(AQ)

CPU运算相关结果存放在模拟量输出映像寄存器中,将1个字长(16位)的数字量信号通过D/A(数模转换)转换为模拟量输出信号,用以驱动外部模拟量控制设备。和模拟量输入映像寄存器一样,模拟量输出映像寄存器中的数值也为只读值,且模拟量输出映像寄存器的地址也必须使用偶数字节地址来表示,如AQW2,AQW4等。CPU224、CPU226地址编号范围为AQW0~AQW62。

2.1.3 数据区存储器的地址格式

存储器由许多存储单元组成,每个存储单元都有唯一的地址,在寻址时可以依据存储器的地址来存储数据。数据区存储器的地址格式有如下几种。

(1)位地址格式

位是最小的存储单位,常用0、1两个数值来描述各元件的工作状态。当某位取值为1时,表示线圈闭合,对应触点发生动作,即常开触点闭合、常闭触点断开;当某位取值为0时,表示线圈断开,对应触点不动作,即常开触点断开、常闭触点闭合。

数据区存储器位地址格式可以表示为区域标识符+字节地址+字节与位分隔符+位号,例如I1.5,如图2-4所示,其中第0位为最低位(LSB),第7位为最高位(MSB)。

图2-4 数据区存储器位地址格式

(2)字节地址格式

相邻的8位二进制数组成一个字节。字节地址格式可以表示为区域识别符+字节长度符B+字节号,例如QB0,表示由Q0.0~Q0.7这8位组成的字节,如图2-5所示。

图2-5 数据区存储器字节地址格式

(3)字地址格式

两个相邻的字节组成一个字。字地址格式可以表示为区域识别符+字长度符W+起始字节号,且起始字节为高有效字节,例如VW100,表示由VB100和VB101这2个字节组成的字,如图2-6所示。

图2-6 数据区存储器字地址格式

(4)双字地址格式

相邻的两个字组成一个双字。双字地址格式可以表示为区域识别符+双字长度符D+起始字节号,且起始字节为最高有效字节,例如VD100,表示由VB100~VB103这4个字节组成的双字,如图2-7所示。

图2-7 数据区存储器双字地址格式

需要说明的是,以上区域标识符与图2-1一致。

2.1.4 S7-200PLC的寻址方式

在执行程序过程中,处理器根据指令中所给的地址信息来寻找操作数的存放地址的方式称为寻址方式。S7-200PLC的寻址方式有立即寻址、直接寻址和间接寻址,如图2-8所示。

图2-8 寻址方式

(1)立即寻址

可以立即进行运算操作的数据称为立即数,对立即数直接进行读写的操作寻址称为立即寻址。立即寻址可用于提供常数和设置初始值等。立即寻址的数据在指令中常常以常数的形式出现,常数可以为字节、字、双字等数据类型。CPU通常以二进制方式存储所有常数,指令中的常数也可按十进制、十六进制、ASCII等形式表示,具体格式如下。

① 二进制格式 在二进制数前加2#表示二进制格式,如2#1010。

② 十进制格式 直接用十进制数表示即可,如8866。

③ 十六进制格式 在十六进制数前加16#表示十六进制格式,如16#2A6E。

④ ASCII码格式 用单引号ASCII码文本表示,如‘Hi’。

需要指出,“#”为常数格式的说明符,若无“#”则默认为十进制。

重点提示

此段文字很短,但点明数据的格式,请读者加以重视,尤其是在功能指令中,此应用很多。

(2)直接寻址

直接寻址是指在指令中直接使用存储器或寄存器地址编号,直接到指定的区域读取或写入数据。直接寻址有位、字节、字和双字等寻址格式,如I1.5、QB0、VW100、VD100,具体图例与图2-4~图2-6大致相同,这里不再赘述。

需要说明的是,位寻址的存储区域有I、Q、M、SM、L、V、S;字节、字、双字寻址的存储区域有I、Q、M、SM、L、V、S、AI、AQ。

(3)间接寻址

间接寻址是指数据存储在存储器或寄存器中,在指令中只出现所需数据所在单元的内存地址,即指令给出的是存储操作数地址的存储单元的地址,把存储单元地址的地址称为地址指针。在S7-200PLC中只允许使用指针对I、Q、M、L、V、S、T(仅当前值)、C(仅当前值)存储区域进行间接寻址,而不能对独立位(bit)或模拟量进行间接寻址。

① 建立指针 间接寻址前必须事先建立指针,指针为双字(即32位),存放的是另一个存储器的地址,指针只能为变量存储器(V)、局部存储器(L)或累加器(AC1、AC2、AC3)。建立指针时,要使用双字传送指令(MOVD)将数据所在单元的内存地址传送到指针中,双字传送指令(MOVD)的输入操作数前需加“&”符号,表示送入的是某一存储器的地址而不是存储器中的内容。例如“MOVD&VB200,AC1”指令,表示将VB200的地址送入累加器AC1中,其中累加器AC1就是指针。

② 利用指针存取数据 在利用指针存取数据时,指令中的操作数前需加“*”符号,表示该操作数作为指针。例如“MOVW*AC1,AC0”指令,表示把AC1中的内容送入AC0中,如图2-9所示。

图2-9 间接寻址图示

③ 间接寻址举例 用累加器(AC1)作地址指针,将变量存储器VB200、VB201中的2个字节数据内容1234移入标志位寄存器MB0、MB1中。

解析:如图2-10所示。

a.建立指针,用双字节移位指令MOVD将VB200的地址移入AC1中。

b.用字移位指令MOVW将AC1中的地址VB200所存储的内容(VB200中的值为12,VB201中的值为34)移入MW0中。

图2-10 间接寻址举例

2.1.5 PLC编程语言

利用PLC厂家的编程语言来编写用户程序是PLC在工业现场控制中最重要的环节之一。用户程序的设计主要面向的是企业电气技术人员,因此对于用户程序的编写语言来说,应采用面对控制过程和控制问题的“自然语言”。1994年5月国际电工委员会(IEC)公布了IEC 61131-3《PLC编程语言标准》,该标准具体阐述、说明了PLC的句法、语义和5种编程语言,具体情况如下:

① 梯形图语言(ladder diagram,LD);

② 指令表(instruction list,IL);

③ 顺序功能图(sequential function chart,SFC);

④ 功能块图(function block diagram,FBD);

⑤ 结构文本(structured text,ST)。

在该标准中,梯形图(LD)和功能块图(FBD)为图形语言;指令表(IL)和结构文本(ST)为文字语言;顺序功能图(SFC)是一种结构块控制程序流程图。

(1)梯形图

梯形图是PLC编程中使用最多的编程语言之一,它是在继电器控制电路的基础上演绎出来的,因此分析梯形图的方法和分析继电器控制电路的方法非常相似。对于熟悉继电器控制系统的电气技术人员来说,学习梯形图不用花费太多的时间。

① 梯形图的基本编程要素 梯形图通常由触点、线圈和功能框3个基本编程要素构成。为了进一步了解梯形图,需要清楚以下几个基本概念。

a.能流 在梯形图中,为了分析各个元器件输入/输出关系而引入的一种假象的电流,称为能流。通常认为能流按从左到右的方向流动,能流不能倒流,这一流向与执行用户程序的逻辑运算关系一致,如图2-11所示。在图2-11中,在I0.0闭合的前提下,能流有两条路径:一条为触点I0.0、I0.1和线圈Q0.0构成的电路;另一条为触点Q0.0、I0.1和Q0.0构成的电路。

b.母线 梯形图中两侧垂直的公共线,称为母线。通常左母线不可省,右母线可省,能流可以看成由左母线流向右母线,如图2-11所示。

c.触点 触点表示逻辑输入条件。触点闭合表示有“能流”流过,触点断开表示无“能流”流过。常用的有常开触点和常闭触点2种,如图2-11所示。

d.线圈 线圈表示逻辑输出结果。若有“能流”流过线圈,线圈吸合,否则断开。

e.功能框 代表某种特定的指令。“能流”通过功能框时,则执行功能框的功能,功能框代表的功能有多种,如定时、计数、数据运算等,如图2-11所示。

图2-11 PLC梯形图基础要素

② 举例 三相异步电动机的启保停电路,如图2-12所示。

图2-12 三相异步电动机的启保停电路

通过上图的分析不难发现,梯形图的电路和继电器的控制电路一一呼应,电路结构大致相同,控制功能相同,因此对于梯形图的理解完全可以仿照分析继电器控制电路的方法。对于两者元件的对应关系,如表2-3所示。

表2-3 梯形图电路与继电器控制电路符号对照表

③ 梯形图的特点

a.梯形图与继电器原理图相呼应,形象直观,易学易懂。

b.梯形图可以有多个网络,每个网络只写一条语言,在一个网络中可以有一个或多个梯级,如图2-13所示。

图2-13 梯形图特点验证

c.在每个网络中,梯形图都起于左母线,经触点,终止于软继电器线圈或右母线,如图2-14所示。

图2-14 触点、线圈和母线排布情况

d.线圈不能与左母线直接相连;如果线圈动作需要无条件执行时,可借助未用过元件的常闭触点或特殊标志位存储器SM0.0的常开触点,使左母线与线圈隔开,如图2-15所示。

图2-15 线圈与左母线直接相连的处理方案

e.同一编号的输出线圈在同一程序中不能使用两次,否则会出现双线圈问题,双线圈输出很容易引起误动作,应尽量避免,如图2-16所示。

图2-16 双线圈问题的处理方案

f.不同编号的线圈可以并行输出,如图2-17所示。

图2-17 并联输出问题

g.能流不是实际的电流,而是为了方便对梯形图的理解假想出来的电流,能流方向为从左向右,不能倒流。

h.在梯形图中每个编程元素都应按一定的规律加标字母和数字串,例I0.0与Q0.1。

i.梯形图中的触点、线圈仅为软件上的触点和线圈,不是硬件意义上的触点和线圈,因此在驱动控制设备时需要接入实际的触点和线圈。

④ 常见的梯形图错误图形 在编辑梯形图形时,虽然可以利用各种梯形符号组合成各种图形,但 PLC处理图形程序的原则是由上而下、由左至右,因此在绘制时,要以左母线为起点,右母线为终点,从左向右逐个横向写入。一行写完,自上而下依次再写下一行。表2-4给出了常见的梯形图错误图形及错误原因。

表2-4 常见的梯形图错误图形及错误原因

⑤ 梯形图的书写规律

a.写输入时 要左重右轻,上重下轻,如图2-18所示。

b.写输出时 要上轻下重,如图2-19所示。

图2-18 梯形图输入的书写规律

图2-19 梯形图输出的书写规律

(2)语句表

在S7系列的PLC中将指令表称为语句表(statement list,STL),语句表是一种类似于微机汇编语言的一种文本语言。

① 语句表的构成 语句表由助记符(也称操作码)和操作数构成。其中助记符表示操作功能,操作数表示指定存储器的地址,语句表的操作数通常按位存取,如图2-20所示。

图2-20 语句表的构成图

② 语句表的特点

a.在语句表中,一个程序段由一条或多条语句构成,多条语句的情况如图2-20所示。

b.在语句表中,几块独立的电路对应的语句可以放在一个网络中。

c.语句表和梯形图可以相互转化,如图2-21所示。

图2-21 梯形图和语句表转化图

d.语句表可供经验丰富的编程员使用,它可以实现梯形图所不能实现的功能。

(3)顺序功能图

顺序功能图是一种图形语言,在5种国际标准语言中,顺序功能图被确定为首位编程语言,尤其是在S7-300/400PLC中更有较大的应用,其中S7 Graph就是典型的顺序功能图语言。顺序功能图具有条理清晰、思路明确、直观易懂等优点,往往适用于开关量顺序控制程序的编写。

顺序功能图主要由步、有向连线、转换条件和动作等要素组成,如图2-22所示。在编写顺序程序时,往往根据输出量的状态将一个完整的控制过程划分为若干个阶段,每个阶段就称为步,步与步之间有转换条件,且步与步之间有不同的动作。当上一步被执行时,满足转换条件立即跳到下一步,同时上一步停止。在编写顺序控制程序时,往往先画出顺序功能图,然后再根据顺序功能图写出梯形图,经过这一过程后使程序的编写大大简化。

图2-22 顺序功能图

重点提示

① 顺序功能图的画法:根据输出量的状态将一个完整的控制过程划分为若干个步,步与步之间有转换条件,且步与步之间有不同的动作。

② 程序编制方法:先画顺序功能图,再根据顺序功能图编写梯形图程序。

(4)功能块图

功能块图是一种类似于数字逻辑门电路的图形语言,它用类似于与门(AND)、或门(OR)的方框表示逻辑运算关系。

如图2-23所示,方框左侧表示逻辑运算输入变量,方框右侧表示逻辑运算输出变量,若输入/输出端有小圆圈则表示“非”运算,方框与方框之间用导线相连,信号从左向右流动。

图2-23 功能块图

在S7-200中,梯形图、语句表和功能块图之间可以相互转化,如图2-24所示。需要指出的是,并不是所有的梯形图、语句表和功能块图都能相互转化,对于逻辑关系较复杂的梯形图和语句表就不能转化为功能块图。功能块图在国内应用较少,但对于逻辑比较明显的程序来说,用功能块图就非常简单、方便。功能块适用于有数字电路基础的编程人员。

图2-24 梯形图、语句表和功能块图之间的相互转换

(5)结构文本

结构文本是为IEC 61131-3标准创建的一种专用高级编程语言,与梯形图相比它能实现复杂的数学运算,编写程序非常简洁和紧凑。通常用计算机的描述语句来描述系统中的各种变量之间的运算关系,完成所需的功能或操作。在大中型PLC中,常常采用结构文本设计语言来描述控制系统中各个变量的关系,同时也被集散控制系统的编程和组态所采用,该语句适用于习惯使用高级语言编程的人员使用。