您好,欢迎访问三七文档
第3章S7-200SMART编程基础3.1PLC的编程语言与程序结构IEC61131-3标准的5种编程语言:1)顺序功能图(SequentialFunctionChart);2)梯形图(LadderDiagram,LAD);3)功能块图(FunctionBlockDiagram,FBD);4)指令表(InstructionList),西门子叫语句表(STL);5)结构文本(StructuredText)。1.顺序功能图用来编制顺序控制程序,将在第5章详细介绍。2.梯形图(LAD)程序被划分为若干个程序段,一个程序段只能有一块独立电路。触点接通时有“能流”流过线圈。“能流”只能从左向右流动。3.语句表(STL)程序由指令组成,适合程序设计经验丰富的程序员使用。4.功能块图(FBD)类似于数字逻辑电路,国内很少使用。5.结构文本是为IEC61131-3标准创建的一种专用的高级编程语言。6.编程语言的相互转换和选用在编程软件中,可以选用梯形图、功能块图和语句表。梯形图中输入信号(触点)与输出信号(线圈)之间的逻辑关系一目了然,易于理解。设计复杂的数字量控制程序时建议使用梯形图语言。语句表程序输入方便快捷,可以为每条语句加上注释,便于复杂程序的阅读。7.S7-200SMART的程序结构1)主程序OB1是程序的主体,每次扫描都要执行主程序。每个项目都必须有且只能有一个主程序。2)子程序仅在被调用时执行,使用子程序可简化程序代码、减少扫描时间。3)中断程序用来及时处理不能事先预测何时发生的中断事件。在中断事件发生时由PLC的操作系统调用中断程序。8.S7-200SMART与S7-200的指令基本上相同。3.2数据类型与寻址方式3.2.1数制1.二进制数(1)用1位二进制数表示数字量二进制数的1位只能为0和1。用1位二进制数来表示开关量的两种不同的状态,线圈通电、常开触点接通、常闭触点断开为1状态(ON),反之为0状态(OFF)。二进制位的数据类型为BOOL(布尔)型。(2)多位二进制数多位二进制数用来表示大于1的数字。从右往左的第n位(最低位为第0位)的权值为2n。2#0000010010000110对应的十进制数为1158222212710(3)有符号数的表示方法用二进制补码来表示有符号数,最高位为符号位,最高位为0时为正数,反之为负数。正数的补码是它本身,最大的16位二进制正数为2#0111111111111111(32767)。将正数的补码逐位取反(0变为1,1变为0)后加1,得到绝对值与它相同的负数的补码。例如将1158的补码2#0000010010000110逐位取反后加1,得到−1158的补码1111101101111010。2.十六进制数十六进制数用于简化二进制数的表示方法,16个数为0~9和A~F(10~15),4位二进制数对应于1位十六进制数,例如2#1010111001110101可以转换为16#AE75(或AE75H)。十六进制数“逢16进1”,第n位的权值为16n。16#2F对应的十进制数为2161+15160=47。3.BCD码(BinaryCodedDecimal)是各位按二进制编码的十进制数,“逢10进1”,用4位二进制数来表示1位十进制数,每一位只能是2#0000~2#1001。4位BCD码对应于16位二进制数,允许范围为16#9999~16#0000。BCD码用于PLC的输入和输出。拨码开关用来设置多位十进制参数值,PLC用输入点读取的多位拨码开关的输出值就是BCD码。用16#表示BCD码,图3-5的拨码开关的输出为2#100000101001,其BCD码为16#829。电梯的楼层数转换为BCD码后,分别送给译码驱动芯片4547。3.2.2数据类型1.位:二进制位(bit)的数据类型为BOOL(布尔)。I3.2中的I表示输入,3是字节地址,2是字节中的位地址(0~7)。2.字节一个字节(Byte)由8个位数据组成,IB3由I3.0~I3.7这8位组成。3.字和双字相邻的两个字节组成一个字(Word),相邻的两个字或4个字节组成一个双字(DoubleWord)。用VB100的地址编号作为VW100和VD100的地址编号。组成字和双字的编号最小的字节VB100为VW100和VD100的最高位字节。字节、字和双字都是无符号数,它们的数值用16#表示。4.16位整数INT和32位双整数DINT都是有符号数。最高位为符号位。5.32位浮点数(REAL,实数)可以表示为1.m2E,IEEE标准格式的浮点数的格式为1.m2e,最高位为符号位。指数e=E+127,为8位正整数。第0~22位是尾数的小数部分m,第23~30位是指数部分e。在编程软件中,用小数表示浮点数。6.ASCII码字符:美国信息交换标准代码。用单引号表示,例如’AB12’。7.字符串的数据类型为STRING,由若干个ASCII码字符组成,第一个字节是字符串的长度(0~254),后面的每个字符占一个字节。字符串用双引号表示,例如”LINE2”。3.2.3CPU的存储区1.过程映像输入寄存器(I):外部输入电路接通时对应的过程映像输入寄存器为ON(1状态),反之为OFF(0状态)。2.过程映像输出寄存器(Q):梯形图中Q0.0的线圈“通电”时,输出模块中对应的硬件继电器的常开触点闭合。3.变量存储器(V):用来存放程序执行的中间结果和有关数据。4.位存储器(M):类似于继电器控制系统的中间继电器,32个字节。5.定时器存储器(T):定时器、计数器的当前值为16位有符号整数,定时器位用来描述定时器的延时动作的触点的状态。6.计数器存储器(C):计数器用来累计其计数脉冲上升沿的次数。计数器位用来描述计数器的触点的状态。7.高速计数器(HC):用来累计比CPU的扫描速率更快的事件。当前值为32位有符号整数。8.累加器(AC0~AC3):32位,可以按字节、字和双字来访问累加器中的数据。按字节、字只能访问累加器的低8位或低16位。常用于向子程序传递参数和从子程序返回参数,或用来临时保存中间的运算结果。9.特殊存储器(SM)特殊存储器用于CPU与用户程序之间交换信息。SM0.0一直为ON;SM0.1仅在执行用户程序的第一个扫描周期为ON。SM0.4和SM0.5分别提供周期为1分钟和1秒的时钟脉冲。SM1.0、SM1.1和SM1.2分别为零标志、溢出标志和负数标志。10.局部存储器(L):各POU都有自己的64字节的局部存储器,仅仅在它被创建的POU中有效。作为暂时存储器,或给子程序传递参数。同一调用级别的POU的局部变量使用分配给它们的公用的物理存储器。11.模拟量输入(AI):AI模块将模拟量按比例转换为一个字的数字量。AI地址应从偶数字节开始(例如AIW2),AI为只读数据。12.模拟量输出(AQ):AQ模块将一个字的数字值按比例转换为电流或电压。AQ地址应从偶数字节开始(例如AQW2),用户不能读取AQ。13.顺序控制继电器(S):用于顺序控制编程(见5.4节),32字节。I、Q、V、M、S、SM和L存储器区均可以按位、字节、字和双字来访问。3.2.4直接寻址与间接寻址直接寻址指定了存储器的区域、长度和位置,例如VB200。间接寻址给出一个被称为地址指针的存储单元的地址,32位地址指针里存放的是真正的操作数的地址。只能用V、L或累加器作指针。间接寻址可用于访问I、Q、V、M、S、AI、AQ、SM,以及T和C的当前值。不能访问单个位(bit)地址、HC、L存储区和累加器。指令“MOVD&VB200,AC1”将VB200的地址&VB200传送给AC1。指令“MOVW*AC1,AC0”将指针AC1所指的VW200中的数据(*AC1)传送给AC0。用指针访问相邻的下一个字节时,指针值加1;访问字时,指针值加2;访问双字时,指针值加4。【例3-1】从0时开始,某发电机计划发电时每个小时的有功功率给定值被依次存放在VW100~VW146中。VD20中是从实时时钟读取的小时值,用间接寻址读取当时的功率给定值,送给VW30。LDSM0.0MOVD&VB100,VD10//表的起始地址送VD10+DVD20,VD10//起始地址加偏移量+DVD20,VD10MOVW*VD10,VW30//读取表中的数据一个字由两个字节组成,地址相邻的两个字的地址增量为2(两个字节),所以用了两条加法指令。在上午8时,VD20的值为8,执行两次加法指令后VD10中为VW116的地址。3.3位逻辑指令3.3.1触点指令与堆栈指令1.标准触点指令常开触点对应的位地址为ON时,该触点闭合。常闭触点对应的位地址为OFF时,该触点闭合。2.输出指令输出指令(=)对应于梯形图中的线圈。梯形图中两个并联的线圈用两条相邻的输出指令来表示。【例3-2】已知图3-11中I0.1的波形,画出M0.0的波形。在I0.1的下降沿之前,I0.1为ON,它的两个常闭触点均断开,M0.0和M0.1均为OFF,其波形用低电平表示。在I0.1的下降沿,I0.1和M0.1的常闭触点同时闭合,M0.0变为ON。从I0.1下降沿之后的第二个扫描周期开始,M0.1为ON,其常闭触点断开,使M0.0为OFF。M0.0只是在I0.1的下降沿ON一个扫描周期。交换上下两行电路,M0.0的线圈不会通电。3.逻辑堆栈的基本概念S7-200SMART有一个32位的堆栈,最上面的第一层称为栈顶。堆栈中的数据一般按“先进后出”的原则访问。执行LD指令时,将指令指定的位地址中的二进制数装载入栈顶。执行A(与)指令时,指令指定的位地址中的二进制数和栈顶中的二进制数作“与”运算,运算结果存入栈顶。栈顶之外其他各层的值不变。执行O(或)指令时,指令指定的位地址中的二进制数和栈顶中的二进制数作“或”运算,运算结果存入栈顶。4.或装载指令OLD图3-15中前两条指令执行完后,“与”运算的结果S0存放在堆栈的栈顶,第3、4条指令执行完后,“与”运算的结果S1压入栈顶(见图3-16),原来在栈顶的S0被推到堆栈的第2层,下面各层的数据依次下移一层。OLD指令对堆栈第一、二层的二进制数作“或”运算,运算结果S2=S0+S1存入堆栈的栈顶,第3~31层中的数据依次向上移动一层。5.与装载指令ALD图3-15中OLD下面的两条指令并联运算的果S3被压入栈顶,堆栈中原来的数据依次向下一层推移。ALD指令对堆栈第一、二层的数据作“与”运算,运算结果S4=S2·S3存入堆栈的栈顶,第3~31层中的数据依次向上移动一层。【例3-3】已知图3-17中的语句表程序,画出对应的梯形图。首先将电路划分为若干块,各电路块从含有LD的指令(例如LD、LDI和LDP等)开始,在下一条含有LD的指令(包括ALD和OLD)之前结束;然后分析各块电路之间的串并联关系。OLD或ALD指令并、串联的是它上面靠近它的已经连接好的电路。6.其他堆栈操作指令逻辑进栈LPS指令复制栈顶的值并将其压入堆栈的第2层,堆栈中原来的数据依次向下一层推移。逻辑读栈LRD指令将堆栈第2层的数据复制到栈顶,原来的栈顶值被复制值替代。第2层~第31层的数据不变。逻辑出栈LPP指令将栈顶值弹出,堆栈各层的数据向上移动1层,第2层的数据成为新的栈顶值。装载堆栈指令LDS很少使用。下图中的第1条LPS指令将栈顶的A点逻辑运算结果保存到堆栈的第2层,第2条LPS指令将B点的逻辑运算结果保存到堆栈的第2层,A点的逻辑运算结果被“压”到堆栈的第3层。第1条LPP指令将堆栈第2层B点的逻辑运算结果上移到栈顶,第3层中A点的逻辑运算结果上移到堆栈的第2层。最后一条LPP指令将堆栈第二层的A点的逻辑运算结果上移到栈顶。7.立即触点立即触点指令只能用于输入位I,立即读入物理输入点的值,但是并不更新该物理输入点对应的过程映像输入寄存器。3.3.2输出类指令与其他指令1.立即输出图3-21中的立即输出将栈顶值立即写入指定的物理输出点和对应的过程映像输出寄存器。该指令只能用于输出位Q。2.置位与复位置位与复位指令分别将指定
本文标题:SMART编程基础
链接地址:https://www.777doc.com/doc-6497115 .html