资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,PLC,功能指令,1,一、程序控制指令,1,、条件结束与停止指令,(,1,),END,:条件结束指令,执行条件成立(左侧逻辑值为,1,)时结束主程序,返回主程序的第一条指令执行。在梯形图中该指令不连在左侧母线。,END,指令只能用于主程序,不能在子程序和中断程序中使用。,END,指令无操作数。,(,2,),MEND,:无条件结束指令,结束主程序,返回主程序的第一条指令执行。在梯形图中无条件结束指令直连接左侧母线。用户必须以无条件结束指令,结束主程序。条件结束指令,用在无条件结束指令前结束主程序。在编程结束时一定要写上该指令,否则出错;在调试程序时,在程序的适当位置插入,MEND,指令可以实现程序的分段调试。,2,2,、监控定时器复位指令,监控定时器,时钟的定时时间为,300,毫秒,每次扫描它都被自动复位一次,正常工作时,如果扫描周期小于,300,毫秒,,监控定时器,不起作用。如果强烈的外部干扰使可编程控制器偏离正常的程序执行路线,,警戒时钟不再被周期性的复位,定时时间到,,可编程控制器将停止运行。若程序扫描的时间超过,300,毫秒,为了防止在正常的情况下警戒时钟动作,可将警戒时钟刷新指令,(WDR),插入到程序中适当的地方,使警戒时钟复位。这样,可以增加一次扫描时间。指令格式如图,4-65,所示。,LD M2.5 /M2.5,接通时,WDR /,重新触发,WDR,,,/,允许扩展扫描时间,3,3,、循环指令,程序循环结构用于描述一段程序的重复循环执行。由,FOR,和,NEXT,指令构成程序的循环体。,FOR,指令标记循环的开始,,NEXT,指令为循环体的结束指令。,FOR INDX,,,INIT,,,FINAL,NEXT,4,使能输入与使能输,出,LD I2.4,MOVW VW10,VW14 /VW10VW14,AENO,/I VW12,VW14 /VW14/VW12VW14,AENO,MOVBVB0,VB2 /VB0VB2,*,除数,VW12,为,0,时无能流流出。删除,AENO,后两个方框变为并联,5,在,LAD,中,,FOR,指令为指令盒格式,,EN,为使能输入端。,INDX,:当前值计数器,操作数为:,VW,,,IW,,,QW,,,MW,,,SW,,,SMW,,,LW,,,T,,,C,,,AC,。,INIT,:循环次数初始值,操作数为:,VW,,,IW,,,QW,,,MW,SW,,,SMW,,,LW,,,T,,,C,,,AC,,,AIW,,常数。,FINAL,:循环计数终止值。操作数为:,VW,,,IW,,,QW,,,MW,,,SW,,,SMW,,,LW,,,T,,,C,,,AC,,,AIW,,常数,工作原理:使能输入,EN,有效,循环体开始执行,执行到,NEXT,指令时返回,每执行一次循环体,当前值计数器,INDX,增,1,,达到终止值,FINAL,时,循环结束。,使能输入无效时,循环体程序不执行。每次使能输入有效,指令自动将各参数复位。,FOR/NEXT,指令必须成对使用,循环可以嵌套,最多为,8,层。,6,内循环,外循环,7,4,、跳转指令,JMP,:跳转指令,使能输入有效时,把程序的执行跳转到同一,程序指定的标号(,n,)处执行。,LBL,:指定跳转的目标标号。,操作数,n,:,0255,。,跳转指令及标号必须同在主程序内或在同一子程序内,同一中断服务程序内,不可由主程序跳转到中断服务程序或子程序,也不可由中断服务程序或子程序跳转到主程序。,8,方式选择开关,起动按钮,停止按钮,M1,起动按钮,M1,停止按钮,M2,起动按钮,M2,停止按钮,M3,起动按钮,M3,停止按钮,I0.0,I0.1,I0.2,I0.3 Q0.0,I0.4 Q0.1,I0.5 Q0.2,I0.6,I0.7,I1.0,KM1,KM2,KM3,自动,手动,JMP,、,LBL,指令在工业现场控制中,常用于工作方式的选择。,如有,3,台电动机,M1,M3,,具有两种起停工作方式:,1,)手动操作方式:分别用每个电动机各自的起停按钮控制,M1,M3,的起停状态。,2,)自动操作方式:按下起动按钮,,M1,M3,每隔,5s,依次起动;按下停止按钮,,M1,M3,同时停止。,9,10,5,、子程序调用及子程序返回指令,建立子程序:,1,)、从“编辑”菜单,选择插入(,Insert,),/,子程序(,Subroutine,),2,)、从“指令树”,用鼠标右键单击“程序块”图标,并从弹出菜单选择插入(,Insert,),子程序(,Subroutine,),3,)、从“程序编辑器”窗口,用鼠标右键单击,并从弹出菜单选择插入(,Insert,),子程序(,Subroutine,)。,程序编辑器从先前的,POU,显示更改为新的子程序。程序编辑器底部会出现一个新标签,代表新的子程序。此时,可以对新的子程序编程。,用右键双击指令树中的子程序图标,在弹出的菜单中选择,/,重新命名,可修改子程序的名称。如果为子程序指定一个符号名,例如,USR_NAME,,该符号名会出现在指令树的,“,子例行程序,”,文件夹中。,11,12,子程序调用及子程序返回指令,CALL SBRn,:子程序调用指令。在梯形图中为指令盒的形式。子程序的编号,n,从,0,开始,随着子程序个数的增加自动生成。,操作数:,n,:,063,。,CRET,:子程序条件返回指令,条件成立时结束该子程序,返回原调用处的指令,CALL,的下一条指令。,RET,:子程序无条件返回指令,子程序必须以本指令作结束。由编程软件自动生成,。,13,(,1,),子程序可以多次被调用,也可以嵌套(最多,8,层)还可以自己调自己。,(,2,),子程序调用指令用在主程序和其它调用子程序的程序中,子程序的无条件返指令在子程序的最后网络段,梯形图指令系统能够自动生成子程序的无条件返回指令,用户无须输入。,14,子程序的调用举例,在主程序中调用子程序:,LD I0.4,CALL,模拟量计算,AIW2,VW20,+2356,VD40,15,二、比较指令,比较指令是将两个操作数按指定的条件比较,操作数可以是整数,也可以是实数,在梯形图中用带参数和运算符的触点表示比较指令,比较条件成立时,触点就闭合,否则断开。,比较触点可以装入,也可以串、并联。比较指令为上、下限控制提供了极大的方便。,16,“xx”,表示比较运算符:,=,等于、,小于、,大于、,=,小于等于,、,=,大于等于,、,不等于。,“,”,表示操作数,N1,,,N2,的数据类型及范围:,B,(,Byte,):字节比较(无符号整数)。,I,(,INT,),/W,(,Word,):整数比较,(有符号整数)注意:,LAD,中用“,I”,,,STL,中用“,W”,。,DW,(,Double Word,):双字的比较(有符号整数),如:,OD=VD24 MD1,R,(,Real,):实数的比较(有符号的双字浮点数,仅限于,CPU214,以上),N1,,,N2,操作数的类型包括:,I,,,Q,,,M,,,SM,,,V,,,S,,,L,,,AC,,,VD,,,LD,,常数。,17,例:调整模拟调整电位器,0,,改变,SMB28,字节数值,当,SMB28,数值小于或等于,50,时,,Q0.0,输出,其状态指示灯打开;当,SMB28,数值小于或等于,150,时,,Q0.1,输出,状态指示灯打开。,LD I0.0,LPS,AB=SMB28,150,=Q0.1,18,整数字比较若,VW0 +10000,为真,,Q0.2,有输出。,程序常被用于显示不同的数据类型。还可以比较存储在可编程存中的两个数值(,VW0 VW100,)。,LD I0.3,LPS,AW VW0,,,+10000,=Q0.2,LRD,AD VD6,,,5.001E-006,19,数据传送指令,将变量存储器,VW10,中内容送到,VW100,中。,LD I0.1,MOVW VW10,VW100,20,数据传送指令,BLKMOV,将变量存储器,VB20,开始的,4,个字节(,VB20-VB23,)中的数据,移至,VB100,开始的,4,个字节中(,VB100-VB103,)。,LD I0.0,BMW VB20,,,VB100,,,4,21,移位与循环指令,移位指令分为左、右移位,移位指令按移位数据的长度又分字节型、字型、双字型,3,种。,左、右移位数据存储单元与,SM1.1,(溢出)端相连,,移出位被放到特殊标志存储器,SM1.1,位。移位数据,存储单元的另一端补,0,。,22,循环移位指令:将移位数据存储单元的首尾相连,同时又与溢出标志,SM1.1,连接,,SM1.1,用来存放被移出的位。,将,AC0,中的字循环右移,2,位,将,VW200,中的字左移,3,位。,23,例:用,I0.0,控制接在,Q0.0,Q0.7,上的,8,个彩灯循环移位,从,左到右以,0.5s,的速度依次点,亮,保持任意时刻只有一个,指示灯亮,到达最右端后,,在从左到右依次点亮。,24,移位寄存器指令(,SHRB,),移位寄存器指令:指定移位寄存器的长度和移位方向的移位指令。,(,1,)移位寄存器指令,SHRB,将,DATA,数值移入移位寄存器。梯形图中,,EN,为使能输入端,连接移位脉冲信号,每次使能有效时,整个移位寄存器移动,1,位。,DATA,为数据输入端,连接移入移位寄存器的二进制数值,执行指令时将该位的值移入寄存器。,S_BIT,指定移位寄存器的最低位。,N,指定移位寄存器的长度和移位方向,移位寄存器的最大长度为,64,位,,N,为正值表示左移位,输入数据(,DATA,)移入移位寄存器的最低位(,S_BIT,),并移出移位寄存器的最高位。移出的数据被放置在溢出内存位(,SM1.1,)中。,N,为负值表示右移位,输入数据移入移位寄存器的最高位中,并移出最低位(,S_BIT,)。移出的数据被放置在溢出内存位(,SM1.1,)中。,(,2,),DATA,和,S-BIT,的操作数为,I,Q,M,SM,T,C,V,S,L,。数据类型为:,BOOL,变量。,N,的操作数为,VB,IB,QB,MB,SB,SMB,LB,AC,常量,SHRB DATA,,,S-BIT,,,N,25,26,数据转换指令,转换指令是对操作数的类型进行转换,并输出到指定目标地址中去。转换指令包括数据的类型转换、数据的编码和译码指令以及字符串类型转换指令。,不同功能的指令对操作数要求不同。类型转换指令可将固定的一个数据用到不同类型要求的指令中,包括字节与字整数之间的转换,整数与双整数的转换,双字整数与实数之间的转换,BCD,码与整数之间的转换等。,27,1,、七段码译码指令,七段显示器的,abcdefg,段分别对应于字节的第,0,位第,6,位,字节的某位为,1,时,其对应的段亮;输出字节的某位为,0,时,其对应的段暗。将字节的第,7,位补,0,,则构成与七段显示器相对应的,8,位编码,称为七段显示码。,28,编写显示数字,0,的七段显示码的程序,LD I0.1,SEG 0,AC1,若采用直接寻址,则将对应地址的低,4,位转换为对应的七段码。,29,2,、,ASCII,码与十六进制数之间的转换指令,ATH IN,,,OUT,,,LEN,ASCII,至,HEX,(,ATH,)指令将从,IN,开始的长度为,LEN,的,ASCII,字符转换成十六进制数,放入从,OUT,开始的存储单元。,HTA IN,,,OUT,,,LEN,HEX,至,ASCII,(,HTA,)指令将从输入字节(,IN,)开始的长度为,LEN,的十六进制数转换成,ASCII,字符,放入从,OUT,开始的存储单元。,合法的,ASCII,码对应的十六进制数包,括,30H,到,39H,,,41H,到,46H,30,将,VB10,VB12,中存放的,3,个,ASCII,码,33,、,45,、,41,,转换成十六进制数。,梯形图和语句表程序,程序运行结果如下:,可见将,VB10,VB12,中存放的,3,个,ASCII,码,33,、,45,、,41,,转换成十六进制数,3E,和,Ax,,放在,VB20,和,VB21,中,,“,x”,表示,VB21,的,“,半字节,”,即低四位的值未改变。,31,表功能指令,数据表是用来存放字型数据的表格,如图,5-23,所示。表,格的第一个字地址即首地址,为表地址,首地址中的数,值是表格的最大长度(,TL,),即最大填表数。表格的第,二个字地址中的数值是表的实际长度(,EC,),指定表格,中的实际填表数。每次向表格中增加新数据后,,EC,加,1,。,从第三个字地址开始,存放,数据(字)。表格最多可存,放,100,个数据(字),不包,括指定最大填表数(,TL,),和实际填表数(,EC,)的参数。,32,输入表格的最大填表数的方法:,确定表格的最大填表数后,可用表功能指令在表中存取字型数据。表功能指令包括,填表指令(,ATT DATA,,,TBL,),,表查找指令(,FND,),,字填充指令(,FILL,)。,33,34,读写时钟指令,利用时钟指令可以实现调用系统实时时钟或根据需要设定时钟,这对控制系统运行的监视、运行记录及和实时时间有关的控制等十分方便。时钟指令有两条:读实时时钟和设定实时时钟。,读实时时钟:,TODR T,系统读取实时时钟当前时间和日期,并将其载入以地址,T,起始的,8,个字节的缓冲区。,35,设定实时时钟指令:系统将包含当前时间和日期以地址,T,起始的,8,个字节的缓冲区装入,PLC,的时钟。,TODW T,36,编写程序,要求读时钟并以,BCD,码显示秒钟。,时钟缓冲区从,VB0,开始,,VB5,中存放着秒钟,第一次用,SEG,指令将字节,VB100,的秒钟低四位转换成七段显示码由,QB0,输出,接着用右移位指令将,VB100,右移四位,将其高四位变为低四位,再次使用,SEG,指令,将秒钟的高四位转换成七段显示码由,QB1,输出。,37,38,编写程序,要求控制灯的定时接通和断开。要求,18,:,00,时开灯,,06,:,00,时关灯。时钟缓冲区从,VB0,开始。,/,网络,1,读实时时钟,“小时”在,VB3,LD SM0.0,TODR VB0,/,网络,2 18,点之后,,6,点之前开灯,时间,/,用,BCD,码,LDB=VB3,16#18,OB=VB3,16#06,=Q0.0,39,数学运算指令,1,、加、减指令,整数加法(,ADD-I,)和减法(,SUB-I,)指令是:使能输入有效时,将两个,16,位符号整数相加或相减,并产生一个,16,位的结果输出到,OUT,。,双整数加法(,ADD-D,)和减法(,SUB-D,)指令是:使能输入有效时,将两个,32,位符号整数相加或相减,并产生一个,32,位结果输出到,OUT,。,整数与双整数,加减法指令影,响算术标志位,SM1.0,(零标,志位),,SM1.1,(溢出标志位),和,SM1.2,(负数标志位)。,40,当,IN1,、,IN2,和,OUT,操作数的地址不同时,在,STL,指令中,首先用数据传送指令将,IN2,中的数值送入,OUT,,然后再执行加、减运算即:,OUT+IN1=OUT,、,OUT-IN1=OUT,。为了节省内存,在整数加法的梯形图指令中,可以指定,IN2=OUT,,这样,可以不用数据传送指令。如指定,IN2=OUT,,则语句表指令为:,+I IN1,,,OUT,。在整数减法的梯形图指令中,可以指定,IN2=OUT,,则语句表指令为:,-I IN1,,,OUT,。这个原则适用于所有的算术运算指令,且乘法和加法对应,减法和除法对应。,另外:还有实数加(,+R,)、减(,-R,)指令。,41,整数乘除法指令,使,ENO=0,的错误条件:,0006,(间接地址),,SM1.1,(溢出),,SM1.3,(除数为,0,)。,对标志位的影响:,SM1.0,(零标志位),,SM1.1,(溢出),,SM1.2,(负数),,SM1.3,(被,0,除)。,42,整数乘法指令(,MUL-I,)是:使能输入有效时,将两个,16,位符号整数相乘,并产生一个,16,位积,从,OUT,指定的存储单元输出。,整数除法指令(,DIV-I,)是:使能输入有效时,将两个,16,位符号整数相除,并产生一个,16,位商,从,OUT,指定的存储单元输出,不保留余数。如果输出结果大于一个字,则溢出位,SM1.1,置位为,1,。,双整数乘法指令(,MUL-D,):使能输入有效时,将两个,32,位符号整数相乘,并产生一个,32,位乘积,从,OUT,指定的存储单元输出。,双整数除法指令(,DIV-D,):使能输入有效时,将两个,32,位整数相除,并产生一个,32,位商,从,OUT,指定的存储单元输出,不保留余数。,整数乘法产生双整数指令(,MUL,):使能输入有效时,将两个,16,位整数相乘,得出一个,32,位乘积,从,OUT,指定的存储单元输出。,整数除法产生双整数指令(,DIV,):使能输入有效时,将两个,16,位整数相除,得出一个,32,位结果,从,OUT,指定的存储单元输出。其中高,16,位放余数,低,16,位放商。,整数乘除法指令格式如表,5-15,所示。,整数双整数乘除法指令操作数及数据类型和加减运算的相同。,整数乘法除法产生双整数指令的操作数:,IN1/IN2,:,VW,IW,QW,MW,SW,SMW,T,C,LW,AC,AIW,常量,*VD,*LD,*AC,。数据类型:整数。,43,乘除法指令应用举例,LD I0.0,MUL AC1,,,VD100,DIV VW10,,,VD200,44,加减乘除指令应用,用模拟电位器(,N=0-255,)调节定时器,T37,时间(,5S-200S,),(,200-50,)*,N/255+50=150*N/255+50,LD I0.4 /,上升沿启动设定,EU,MOVB SMB28,AC0 /,模拟电位器,0,对应,SMB28,转换数值,MUL +150,AC0,/D +255,AC0,+I +50,AC0,MOVW AC0,VW10,LD I0.5 /,启动,T37,定时,TON T37,VW10,45,浮点数函数运算指令,IN,:,VD,ID,QD,MD,SMD,SD,LD,AC,常量,*VD,*LD,*AC,OUT,:,VD,ID,QD,MD,SMD,SD,LD,AC,*VD,*LD,*AC,数据类型:实数,46,例,:,先将,45,转换为弧度:(,3.14159/180,),*,45,,再求正弦值,LD I0.1,MOVR 3.14159,AC1,/R 180.0,AC1,*R 45.0,AC1,SIN AC1,AC0,47,逻辑运算指令,逻辑运算是对无符号数按位进行与、或、异或和取反等操作。操作数的长度有,B,、,W,、,DW,1,、取反指令,取反(,INV,)指令:将输入,IN,按位取反,将结果放,OUT,指定的存储单元。,48,2,、字节、字、双字逻辑运算指令,在梯形图指令中设置,IN2,和,OUT,所指定的存储单元相同,这样对应的语句表指令如表中所示。若在梯形图指令中,,IN2,(或,IN1,)和,OUT,所指定的存储单元不同,则在语句表指令中需使用数据传送指令,将其中一个输入端的数据先送入,OUT,,在进行逻辑运算。,如,MOVB IN1,,,OUT,ANDB IN2,,,OUT,ENO=0,的错误条件:,0006,间接地址,,SM4.3,运行时间,对标志位的影响:,SM1.0,(零),49,逻辑运算编程举例,50,6.6,中断程序与中断指令,1,、中断程序的创建,51,*,中断,程序,的设,计应,该越,短越,好!,52,2,、中断事件与中断指令,中断允许与中断禁止指令:,全局性,53,开中断(,ENI,)指令全局性允许所有中断事件。关中断(,DISI,)指令全局性禁止所有中断事件,中断事件的每次出现均被排队等候,直至使用全局开中断指令重新启用中断。,PLC,转换到,RUN,(运行)模式时,中断开始时被禁用,可以通过执行开中断指令,允许所有中断事件。执行关中断指令会禁止处理中断,但是现用中断事件将继续排队等候。,54,中断连接指令与中断分离指令,中断事件,中断源即发出中断请求的事件,又叫中断事件。为了便于识别,系统给每个中断源都分配一个编号,称为中断事件号。,S7-200,系列可编程控制器最多有,34,个中断源,分为三大类:通信中断、输入,/,输出中断和时基中断。,在自由口通信模式下,用户可通过编程来设置波特率、奇偶校验和通信协议等参数。用户通过编程控制通讯端口的事件为通信中断。,I/O,中断包括外部输入上升下降沿中断、高速计数器中断和高速脉冲输出中断。,S7-200,用输入(,I0.0,、,I0.1,、,I0.2,或,I0.3,)上升下降沿产生中断。,55,定时中断用于支持一个周期性的活动。周期时间从,1,毫秒至,255,毫秒,时基是,1,毫秒。使用定时中断,0,,必须在,SMB34,中写入周期时间;使用定时中断,1,,必须在,SMB35,中写入周期时间。,定时中断可以用来对模拟量输入进行采样或定期执行,PID,回路。定时器,T32/T96,中断指允许对定时间间隔产生中断。这类中断只能用时基为,1ms,的定时器,T32/T96,构成。当中断被启用后,当前值等于预置值时,在,S7-200,执行的正常,1,毫秒定时器更新的过程中,执行连接的中断程序。,56,中断连接指令:,中断连接指令(,ATCH,)指令将中断事件(,EVNT,)与中断程序号码(,INT,)相连接,并启用中断事件。,注意:一个中断事件只能连接一个中断程序,但多个中断事件可以调用一个中断程序。,中断事件见,P106,57,中断分离指令,分离中断(,DTCH,)指令取消某中断事件(,EVNT,)与所有中断程序之间的连接,并禁用该中断事件。,中断返回指令:,CRETI,58,程序举例,编写由,I0.1,的上升沿产生的中断事件的初始化程序,LD SM0.1 /,首次扫描时,,ATCH INT_0,,,2 /,将,INT_0,和,EVNT2,连接,ENI /,并全局启用中断,LD SM5.0 /,如果检测到,I/O,错误,,DTCH 2 /,禁用用于,I0.1,的上升沿中断,LD M5.0 /,当,M5.0=1,时,DISI /,禁用所有的中断,59,编程完成采样工作,要求每,10ms,采样一次,60,利用定时中断功能编制一个程序,实现如下功能:当,I0.0,由,OFF,ON,,,Q0.0,亮,1s,,灭,1s,,如此循环反复直至,I0.0,由,ON,OFF,,,Q0.0,变为,OFF,61,喷泉的模拟控制,62,6.7,高速计数器与高速脉冲输出指令,前面讲的计数器指令的计数速度受扫描周期的影响,对比,CPU,扫描频率高的脉冲输入,就不能满足控制要求了。为此,,SIMATIC S7-200,系列,PLC,设计了高速计数功能(,HSC,),其计数自动进行不受扫描周期的影响,最高计数频率取决于,CPU,的类型,,CPU22x,系列最高计数频率为,30KHz,,用于捕捉比,CPU,扫描速更快的事件,并产生中断,执行中断程序,完成预定的操作。高速计数器最多可设置,12,种不同的操作模式。用高速计数器可实现高速运动的精确控制。,SIMATIC S7-200 CPU22x,系列,PLC,还设有高速脉冲输出,输出频率可达,20KHz,,用于,PTO,(输出一个频率可调,占空比为,50%,的脉冲)和,PWM,(输出占空比可调的脉冲),高速脉冲输出的功能可用于对电动机进行速度控制及位置控制和控制变频器使电机调速。,63,1.,高速计数器占用输入端子,各高速计数器不同的输入端有专用的功能,如:时钟脉冲端、方向控制端、复位端、起动端。,注意:同一个输入端不能用于两种不同的功能。但是高速计数器当前模式未使用的输入端均可用于其他用途,如作为中断输入端或作为数字量输入端。例如,如果在模式,2,中使用高速计数器,HSC0,,模式,2,使用,I0.0,和,I0.2,,则,I0.1,可用于边缘中断或用于,HSC3,。,64,3,、高速计数器的工作模式,高速计数器有,12,种工作模式,模式,0,模式,2,采用单路脉冲输入的内部方向控制加,/,减计数;模式,3,模式,5,采用单路脉冲输入的外部方向控制加,/,减计数;模式,6,模式,8,采用两路脉冲输入的加,/,减计数;模式,9,模式,11,采用两路脉冲输入的双相正交计数。,65,66,4,、高速计数器指令及有关特殊存储器,每个高速计数器都有一个,32,位当前值和一个,32,位预置值,当前值和预设值均为带符号的整数值。要设置高速计数器的新当前值和新预置值,必须设置控制字节,67,高速计数器状态字节,每个高速计数器都有一个状态字节,状态位表示当前计数方向以及当前值是否大于或等于预置值。每个高速计数器状态字节的状态位。,68,高速计数器控制字节,69,HSC0-HSC5,当前值和预置值,给高速计数器写入新的,当前值和预置值前,需先设置控制字节,将对应,高速计数器的,控制字节,第五、六位置,1,后,才可更新,当前值和预置值。,70,高速计数器指令的初始化的步骤,(,1,)用首次扫描时接通一个扫描周期的特殊内部存储器,SM0.1,去调用一个子程序,完成初始化操作。,(,2,)在初始化的子程序中,根据希望的控制设置控制字。,(,3,)执行,HDEF,指令,设置,HSC,的编号(,0-5,),设置工作模式(,0-11,)。,(,4,)用新的当前值写入,32,位当前值寄存器。如写入,0,,则清除当前值。,(,5,)用新的预置值写入,32,位预置值寄存器。若写入预置值为,16#00,,则高,速计数器处于不工作状态。,(,6,)为了捕捉当前值等于预置值的事件,将条件,CV=PV,中断事件(事件,13,)与一个中断程序相联系。,(,7,)为了捕捉计数方向的改变,将方向改变的中断事件(事件,14,)与一,个中断程序相联系。,(,8,)为了捕捉外部复位,将外部复位中断事件(事件,15,)与一个中断程,序相联系。,(,9,)执行全局中断允许指令(,ENI,)允许,HSC,中断。,(,10,)执行,HSC,指令使,S7-200,对高速计数器进行编程。,(,11,)结束子程序。,71,高速计数器的应用举例,(,1,)主程序,(,2,)初始化的子程序,72,中断程序,INT-0,73,用,S7-200,编程软件生成初始化程序和中断程序,74,75,76,77,78,点击“完成”自动生成梯形图,79,80,4,、高速脉冲输出,S7-200,有,PTO,、,PWM,两台,高速脉冲发生器。,PTO,脉,冲串功能可输出指定个数,指定周期的方波脉冲,(占空比,50%,);,PWM,功能可输出脉宽变化的脉冲信号,用户可以指定脉冲的周期和脉冲的宽度。若一台发生器指定给数字输出点,Q0.0,,另一台发生器则指定给数字输出点,Q0.1,。当,PTO,、,PWM,发生器控制输出时,将禁止输出点,Q0.0,、,Q0.1,的正常使用;当不使用,PTO,、,PWM,高速脉冲发生器时,输出点,Q0.0,、,Q0.1,恢复正常的使用,即由输出映像寄存器决定其输出状态。,81,每个,PTO/PWM,发生器都有,一个控制字节(,8,位)、一个脉冲计数值(无符号的,32,位数值)和一个周期时间和脉宽值(无符号的,16,位数值)。这些值都放在特定的特殊存储区(,SM,)。执行,PLS,指令时,,S7-200,读这些特殊存储器位(,SM,),然后执行特殊存储器位定义的脉冲操作,即对相应的,PTO/PWM,发生器进行编程。,82,83,84,注意:,(,1,)可在起用,PTO,或,PWM,操作之前,将用于,Q0.0,和,Q0.1,的输出映像寄存器设为,0,。,(,2,),PTO/PWM,输出必须至少有,10%,的额定负载,才能完成从关闭至打开以及从打开至关闭的顺利转换,即提供陡直的上升沿和下降沿,85,单段流水线是指:流水线中每次只能存储一个脉冲串的控制参数,初始,PTO,段一旦起动,必须按照对第二个波形的要求立即刷新,SM,,并再次执行,PLS,指令,第一个脉冲串完成,第二个波形输出立即开始,重复此这一步骤可以实现多个脉冲串的输出。,单段流水线中的各段脉冲串可以采用不同的时间基准,但有可能造脉冲串之间的不平稳过渡。输出多个高速脉冲时,编程复杂。,多段流水线是指在变量存储区,V,建立一个包络表。包络表存放每个脉冲串的参数,执行,PLS,指令时,,S7 200 PLC,自动按包络表中的顺序及参数进行输出脉冲串。包络表中每段脉冲串的参数占用,8,个字节,由一个,16,位周期值(,2,字节)、一个,16,位周期增量值,(,2,字节)和一个,32,位脉冲计数值(,4,字节)组成。,多段流水线的特点是编程简单,能够通过指定脉冲的数量自动增加或减少周期,周期增量值,为正值会增加周期,周期增量值,为负值会减少周期,若,为零,则周期不变。在包络表中的所有的脉冲串必须采用同一时基,在多段流水线执行时,包络表的各段参数不能改变。多段流水线常用于步进电机的控制。,86,包络表,87,控制要求列出,PTO,包络表,步进电机的控制要求如图所示。从,A,点到,B,点为加速过程,从,B,到,C,为恒速运行,从,C,到,D,为减速过程。,f,:,KHz,A,B,C,D,4000,个脉冲,200,200,2,10,88,流水线可以分为,3,段,需建立,3,段脉冲的包络表。起始和终止脉冲频率为,2 kHz,,最大脉冲频率为,10 kHz,,所以起始和终止周期为,500 s,,与最大频率的周期为,100 s,。,1,段:加速运行,应在约,200,个脉冲时达到最大脉冲频率;,2,段:恒速运行,约(,4000-200-200,),=3600,个脉冲;,3,段:减速运行,应在约,200,个脉冲时完成。某一段每个脉冲周期增量值,用以下式确定:,周期增量值,=,(该段结束时的周期时间,-,该段初始的周期时间),/,该段的脉冲数,89,编程前首先选择高速脉冲发生器为,Q0.0,,并确定,PTO,为,3,段流水线。设置控制字节,SMB67,为,16#A0,表示允许,PTO,功能、选择,PTO,操作、选择多段操作、以及选择时基为微秒,不允许更新周期和脉冲数。建立,3,段的包络表(例,6-6,),并将包络表的首地址装入,SMW168,。,PTO,完成调用中断程序,使,Q1.0,接通。,PTO,完成的中断事件号为,19,。用中断调用指令,ATCH,将中断事件,19,与中断程序,INT-0,连接,并全局开中断。,主程序,LD SM0.1 /,首次扫描时,将,/Q0.0,复位,R Q0.0,1,CALL SBR_0 /,调用子程序,0,90,子程序,0,/,写入,PTO,包络表,LD SM0.0,MOVB 3,VB200 /,包络表段为,3,MOVW +500,VW201/,段,1,的初始循环时间,MOVW -2,VW203 /,段,1,的,设为,-2 ms,MOVD +200,VD205 /,段,1,的脉冲数设为,200,91,/,段,2,MOVW +100,VW209/,段,2,的初始周期,MOVW +0,VW211 /,段,2,的,设为,0 ms,MOVD +3600,VD213/,段,2,中的脉冲数,/,段,3,MOVW +100,VW217/,段,3,的初始周期,MOVW +1,VW219 /,段,3,的,设为,1ms,MOVD +200,VD221 /,段,3,中的脉冲数,92,LD SM0.0,MOVB 16#A0,SMB67 /,设置控制字节,MOVW +200,SMW168 /,将包络表起始地址,/,指定为,V200,。,ATCH INT_0,19 /,设置中断,ENI /,全局开中断,PLS 0 /,起动,PTO,,由,Q0.0,输出,中断程序,0,LD SM0.0 /PTO,完成时,输出,Q1.0,=Q1.0,93,
展开阅读全文