模块2PLC基本指令的应用2.1PLC的编程语言与程序结构2.2S7-200PLC的内部元件2.3基本位逻辑指令机应用2.4编程注意事项及编程技巧2.5PLC程序设计常用的方法2.6定时器指令及应用2.7计数器指令及应用2.8定时器/计数器应用举例在PLC中有多种程序设计语言,包括梯形图、语句表、顺序功能流程图、功能块图等。梯形图和语句表是基本程序设计语言,通常由一系列指令组成,用这些指令可以完成大多数简单的控制功能,例如代替继电器、计数器、计时器完成顺序控制和逻辑控制等,通过扩展或增强指令集,它们也能执行其他的基本操作。供S7-200系列PLC使用的STEP7-Micro/WIN编程软件支持SIMATIC和IEC1131-3两种基本类型的指令集。SIMATIC是PLC专用的指令集,执行速度快,可使用梯形图、语句表、功能块图编程语言。SIMATIC指令和IEC1131-3中的标准指令系统并不兼容。本书重点介绍SIMATIC指令。2.1PLC的编程语言与程序结构2.1.1PLCPLC程序设计语言1.梯形图(LadderDiagram)程序设计语言梯形图程序设计语言是最常用的一种程序设计语言,它来源于继电器逻辑控制系统的描述。在工业过程控制领域,电气技术人员对继电器逻辑控制技术较为熟悉,因此,由这种逻辑控制技术发展而来的梯形图受到了欢迎,并得到了广泛的应用.梯形图与操作原理图相对应,具有直观性和对应性;与原有的继电器逻辑控制技术的不同点是,梯形图中的能流不是实际意义的电流,内部的继电器也不是实际存在的继电器,因此,应用时需与原有继电器逻辑控制技术的有关概念区别对待。LAD图形指令有触点、线圈和指令盒3个基本形式。(1)触点:其基本符号如图2-1(a)、2-1(b)所示。图中的问号代表需要指定的操作数的存储器的地址。触点代表输入条件如外部开关、按钮及内部条件等。触点有常开触点和常闭触点。CPU运行扫描到触点符号时,到触点操作数指定的存储器位访问(即CPU对存储器器的读操作)。该位数据(状态)为1时,其对应的常开触点接通,其对应的常闭触点断开。可见常开触点和存储器的位的状态一致,常闭触点表示对存储器的位的状态取反。计算机读操作的次数不受限制,用户程序中,常开触点、常闭触点可以使用无数次。??????a)常开触点b)常闭触点()???c)线圈(2)线圈:其基本符号如图2-1(c)所示。线圈表示输出结果,即CPU对存储器的赋值操作。线圈左侧接点组成的逻辑运算结果为1时,“能流”可以达到线圈,使线圈得电动作,CPU将线圈的操作数指定的存储器的位置为1;逻辑运算结果为0时,线圈不通电,存储器的位置0。即线圈代表CPU对存储器的写操作。PLC采用循环扫描的工作方式,所以在用户程序中,每个线圈只能使用一次。(3)指令盒。指令盒代表一些较复杂的功能,如定时器、计数器或数学运算指令等。当“能流”通过指令块时,执行指令块所代表的功能。梯形图按照逻辑关系可分成网络段,分段只是为了阅读和调试方便。在本书部分举例中,我们将网络段标记省去。图2-2是梯形图示例。2.语句表(StatementList)程序设计语言语句表程序设计语言是用布尔助记符来描述程序的一种程序设计语言。语句表程序设计语言与计算机中的汇编语言非常相似。语句表设计语言是由助记符和操作数构成的。采用助记符来表示操作功能,操作数是指定的存储器的地址。用编程软件可以将语句表与梯形图相互转换。在梯形图编辑器下录入的梯形图程序,打开“检视”菜单叶选择“STL”,就可将梯形图转换成语句表。反之,也可将语句表转化成梯形图。例如,图2-2(a)所示的梯形图转换为2-2(b)语句表程。网络1LDI0.0OQ0.0ANT37=Q0.0TONT37,+50网络2LDI0.2=Q0.1(b)语句表(a)梯形图图2-2梯形图与语句表的转换语句表程序设计语言是用布尔助记符来描述程序的一种程序设计语言。语句表程序设计语言与计算机中的汇编语言非常相似。语句表设计语言是由助记符和操作数构成的。采用助记符来表示操作功能,操作数是指定的存储器的地址。用编程软件可以将语句表与梯形图相互转换。在梯形图编辑器下录入的梯形图程序,打开“检视”菜单叶选择“STL”,就可将梯形图转换成语句表。反之,也可将语句表转化成梯形图。例如,图2-2(a)所示的梯形图转换为2-2(b)语句表程。3.顺序功能流程图(SepuentialFunctionChart)程序设计顺序功能流程图程序设计是近年来发展起来的一种程序设计。采用顺序功能流程图的描述,控制系统被分为若干个子系统,从功能人手,使系统的操作具有明确的含义,便于设计人员和操作人员设计思想的沟通,便于程序的分工设计和检查调试。顺序功能流程图的主要元素是步、转移、转移条件和动作,如图2-3所示。顺序功能流程图程序设计的特点是:(1)以功能为主线,条理清楚,便于对程序操作的理解和沟通(2)对大型程序,可分工设计,采用较为灵活的程序结构,可节省程序设计时间和调试时间。(3)常用于系统的规模校大、程序关系较复杂的场合。(4)只有在活动步的命令和操作被执行后,寸对活动步后的转换进行扫描,因此,整个程序的扫描时间大大缩短。4.功能块图(FunctionBlockDiagram)程序设计语言功能块图程序设计语言是采用逻辑门电路的编程语言,有数字电路基础的人很容易掌握。功能块图指令由输入、输出段及逻辑关系函数组成。用STEP7—Micro/Win编程软件将图2-2所示的梯形图转换为FBD程序,如图2-4所示。方框的左侧为逻辑运算的输入变量,右侧为输出变量,输入输出端的小圆圈表示“非”运算,信号自左向右流动。图4-2顺序功能流程图步3动作动作动作步1步2起动条件转移条件转移条件图2-3顺序功能流程图图2-4功能块图2.1.2S7-200PLC的程序结构一个系统的控制功能是由用户程序决定的。为完成特定的控制任务,需要编写用户程序,使得PlC能以循环扫描的工作方式执行用户程序。在SIMATICS7系列中,为适应设计用户程序的不同需求,STEP7为用户提供子3种程序设计方法,其程序结构分别为:线性化编程、分部式编程和结构化编程。1.程序结构(1)线性化编程:所谓线形化编程就是将用户程序连续放置在一个指令块内,这个指令块在SIMATIC的PLC中,通常称为组织块OB1。CPU周期性地扫首OB1,使用户程序在OB1内顺序执行每条指令。由于线性化编程将全部指令都放在一个指令块中,它的程序结构具有简单、直接的特点,适合由一个人编写用户程序。S7-200就是采用线性化编程方法。(2)分部式编程:所谓分部式编程就是将一项控制任务分成若干个指令块,每个指令块用于控制一套设备或者完成一部分工作。每个指令块的工作内容与其他指令块的工作内容无关,一般没有子程序的调用,这些指令块的运行是通过组织块OB1内的指令来调用。(3)结构化编程:所谓结构化程序,就是处理复杂自动化控制任务的过程中,为了使任务更易于控制,常把过程要求类似或相关的功能进行分类,分割为可用于几个任务的通用解决方案的小任务,这些小任务以相应的程序段表示。OB1通过调用这些程序块来完成整个自动化控制任务,结构化程序的特点是每个块在OB1中可能会被多次调用。2.S7-200的程序结构S7-200的程序结构属于线性化编程,其用户程序一般由三部分构成:用户程序、数据块和参数块。(1)用户程序:一个完整的用户程序一般是由—个主程序、若干子程序和若干个中断处理子程序组成的。对线性化编程,主程序应安排在程序的最前面,其次为子程序和中断程序。如果用工业编程软件STEP7-Micro/WIN在计算机上编程,可以用两种方法组织程序结构,一种方法是利用编程软件的程序结构窗口,分别双击主程序、子程序和中断程序的图标,即可进入各个程序块的编程窗口编译时编程软件自动对各个程序段进行连接。另一种方法是只进入主程序窗口,将主程序、子程序和中断程序按顺序依次安排在主程序窗口。(3)参数块在S7-200中,参数块中存放的是CPU组态数据,如果在编程软件或其他编程工具上未进行CPU的组态,则系统以默认值进行自动配置。(4)主程序主程序(OB1)是程序的主体,每—个项目都必须并且只能有一个主程序。在主程序中可以调用子程序和中断程序。主程序通过指令控制整个应用程序的执行,每次CPU扫描都要执行一次主程序。STEP7-Micro/WIN的程序编辑器窗口下部的标签用来选择不同的程序,因为各个程序已被分开。(5)子程序子程序是一个可选的指令的集合,仅在被其他程序调用时执行。同一子程序可以在不同的地方被多次调用,使用子程序可以简化程序代码和减少扫描时间。设计得好的子程序容易移植到别的项目中去。(6)中断程序中断程序是指令的一个可选集合,中断程序不是被主程序调用,它们在中断事件发生时由PLC的操作系统调用。中断程序用来处理预先规定的中断事件,因为不能预知何时会出现中断事件,所以不允许中断程序改写可能在其他程序中使用的存储器。2.2S7-200PLC的内部元件2.2.1数据存储类型(1)数据的长度在计算机中使用的都是二进制数,其最基本的存储单位是位(bit),如图2-5中的I3.2,8位二进制数组成1个字节(Byte),如图2-5中的I3,其中的第0位为最低位(LSB),第7位为最高位(MSB),2个字节(16位)组成1个宇(Word),2个字(32位)组成1个双字(DoubleWord),如图2-6所示。二进制数的“位”只有0和1两种取值,开关量(或数字量)也只有两种不同的状态,如触点的断开和接通,线圈的失电和得电等。在S7-200梯形图中,可用“位”描述它们。如果该位为1,则表示对应的线圈为得电状态,触点为转换状态(常开触点闭合、常闭触点断开);如果该位为0,则表示对应线圈、触点的状态与上述状态相反。在数据长度为字或双字时,起始字节均放在高位上。图2-6字节、字、双字图2-5位数据a)8位二进制数组成1个字节(byte)b)两个字节组成1个字(word)c)2字组成一个双字(Doubleword)S7-200系列PLC的数据类型可以是字符串、布尔型(0或1)、整数型和实数型(浮点数)。布尔型数据指字节型无符号整数;整数型数据包括16位符号整数(INT)和32位符号整数(DINT)。实数型数据采用32位单精度数来表示。数据类型及数据范围见表2-1。基本数据类型位数说明布尔型BOOL1位范围:01无符号数字节型BYTE8字节范围:0~255字型WORD16字范围:0~65535双字型DOUBLEWORD32双字范围:0~(232-1)有符号数字节型BYTE8字节范围:-128~+127整数INT16整数范围:-32768~+32768双整数DINT32双整数范围:-231~(232-1)实数型REAL32实数范围:IEEE浮点数表2-1S7-200的数据类型及数据范围(2)数据类型及数据范围S7-200的许多指令中常会使用常数。常数的数据长度可以是字节、字和双字。CPU以二进制的形式存储常数,书写常数可以用二进制、十进制、十六进制、ASCII码或实数等多种形式。书写格式如下:十进制常数:1234;十六进制常数:16#3AC6;二进制常数:2#1010000111100000;ASCII码:“Show”;实数(浮点数):+1.175495E-38(正数),-1.175495E-38(负数)(3)常数PLC的编址就是对PLC内部的元件进行编码,以便程序执行时可以唯一地识别每个元件。PLC内部在数据存储区为每一种元件分配一个存储区域,并用字母作为区域标志符,同时表示元件的类型。例如:数字量输入写入输入映象寄存器(区标志符为I),数字量输出写入输出映象寄存器(区标志符为Q),模拟量输入写入模拟量输入映象寄存器(区标志符为AI),模拟量输出写入模拟量输出映象寄存器(区标志符为AQ)。2.2.2编址方式除了输入输出外,PLC还有其他元件,V表示变量存储器;M表示内部标志位存储器;SM表示特殊标志位存储器;L表示局部存储器;T表