第六章SPLC功能指令二_第1页
第六章SPLC功能指令二_第2页
第六章SPLC功能指令二_第3页
第六章SPLC功能指令二_第4页
第六章SPLC功能指令二_第5页
已阅读5页,还剩152页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第六章SPLC功能指令二第1页,共157页,2023年,2月20日,星期一4:子程序及应用5:中断程序及应用6:高速计数器功能及应用7:高速脉冲输出功能及应用第2页,共157页,2023年,2月20日,星期一第四节子程序及应用一、子程序简介

子程序可以对程序进行分块,使用子程序将程序分成容易管理的小块,使程序结构简单清晰,易于查错和维护。

子程序常用于需要多次反复执行相同任务的地方,只需要写一次子程序,别的程序在需要的时候调用它,而无需重写该程序。

子程序的调用是有条件的,未调用它时不会执行子程序中的指令,因此使用子程序可以减少扫描时间。第3页,共157页,2023年,2月20日,星期一S7-200CPU的控制程序由主程序、子程序和中断程序组成。STEP7-Micro/WIN在程序编辑器窗口里为每个POU(程序组织单元)提供一个独立的页。主程序总是第1页,后面是子程序和中断程序。

各个程序在编辑器窗口里被分开,编译时在程序结束的地方自动加上无条件结束/返回指令,用户程序可使用有条件结束/返回指令。第4页,共157页,2023年,2月20日,星期一二、局部变量表1、局部变量与全局变量

在SIMATIC符号表或IEC的全局变量表中定义的变量为全局变量。程序中的每个POU(ProgramOrganizationalUnit,程序组织单元)均有自己的由64BL存储器组成的局部变量表。它们用来定义有范围限制的变量,局部变量只在它被创建的POU中有效。与之相反,全局符号在各POU中均有效,只能在符号表/全局变量表中定义。全局符号与局部变量名称相同时,在定义局部变量的POU中,该局部变量的定义优先,该全局定义则在其它POU中使用。第5页,共157页,2023年,2月20日,星期一局部变量优点:①在子程序中只用局部变量,不用绝对地址或全局符号,子程序可以移植到别的项目去。②如果使用临时变量(TEMP),同一片物理存储器可以在不同的程序中重复使用。局部变量还用来在子程序和调用它的程序之间传递输入参数和输出参数。第6页,共157页,2023年,2月20日,星期一2、局部变量的类型

局部变量表中的变量类型区定义的变量有:

IN:传入子程序参数,由调用它的POU提供的输入参数。

OUT:传出子程序参数,将从子程序来的结果值返回到指定参数的位置。

IN/OUT:传入/传出子程序参数。

TEMP:暂时变量,只能在子程序内部暂时存储数据。不能用来传递参数。

第7页,共157页,2023年,2月20日,星期一注意:

只有在执行该POU时,定义的临时变量才被使用,POU执行完后,不再使用临时变量的数值。在主程序或中断程序中,局部变量表只包含TEMP变量。3、局部变量的赋值

在局部变量表中赋值时,只需指定局部变量的类型(TEMP、IN、IN_OUT或OUT)和数据类型,不用指定存储器地址,程序编辑器按照子程序指令的调用顺序,将参数值分配给局部变量存储器,起始地址是L0.0;8个连续位的参数值分配一个字节,从LX.0到LX.7。

第8页,共157页,2023年,2月20日,星期一4、在局部变量表中增加新的变量

对于主程序与中断程序,局部变量表显示一组已被预先定义为TEMP变量的行。要在表中增加行,只需用右键单击表中的某一行,在弹出的菜单中执行“插入”→“行”命令,在所选行的上部插入新的行。执行菜单命令“插入”→“下一行”

在所选行的下部插入新的行。对于子程序,局部变量表显示数据类型被预先定义为IN、IN_OUT、OUT和TEMP的一系列行,不能改变它们的顺序。如果要增加新的局部变量,必须用鼠标右键单击已有的行,并用弹出菜单在所击行的上面或下面插入相同类型的另一局部变量。

第9页,共157页,2023年,2月20日,星期一5、局部变量数据类型检查

局部变量作为参数向子程序传递时,在该子程序的局部变量表中指定的数据类型必须与调用它的POU中的数据类型值匹配。

例如:在主程序OB1中调用子程序SBR0,使用名为INPUT1的全局符号作为子程序的输入参数。在SBR0的局部变量表中,已经定义了一个名为FIRST的局部变量作为该输入参数。当OB1调用SBR0时,INPUT1的数值被传入FIRST,INPUT1和FIRST的数据类型必须完全匹配。第10页,共157页,2023年,2月20日,星期一三、建立子程序在“编辑”菜单中执行命令“插入”→“子程序”;在程序编辑器视窗中点击鼠标右键,从弹出的菜单中执行命令“插入”→“子程序”;新建的子程序,默认的程序名是SBR_n,编号n从0(0~63)开始按递增顺序生成。用鼠标右键点击指令树中的子程序的图标,在弹出的菜单中选择“重新命名”,可以修改它们的名称。注意:CPU226的项目中最多可以创建128个子程序。第11页,共157页,2023年,2月20日,星期一四、子程序的调用(CALL指令)

可以带参数或不带参数调用子程序。每个子程序必须以无条件返回(RET)指令作结束,STEP7-Micio/WIN编程软件为每个子程序自动加入无条件返回(RET)指令。有条件子程序返回(CRET)指令,在控制条件有效时,终止子程序(n)。子程序执行完毕,控制程序回到主程序中子程序调用(CALL)指令的下一条指令。主程序可以用子程序调用(CALL)指令来调用一个子程序。子程序调用(CALL)指令把程序控制权交给子程序(n)。子程序结束后,必须返回主程序。第12页,共157页,2023年,2月20日,星期一第13页,共157页,2023年,2月20日,星期一②子程序被调用时,系统会保存当前的逻辑堆栈。保存后再置栈顶值为1,堆栈的其他值为零,把控制权交给被调用的子程序。子程序执行完毕,通过返回指令自动恢复逻辑堆栈原调用点的值,把控制权交还给调用程序。③因为累加器可在调用程序和被调用程序之间自由传递数据,所以累加器的值在子程序调用开始时不需要另外保存,在子程序调用结束时也不用恢复。说明:①在中断程序、子程序中也可调用子程序;主程序中可以嵌套调用子程序,嵌套深度为8层。中断程序中,不能嵌套调用子程序。第14页,共157页,2023年,2月20日,星期一五、带参数子程序的调用1、子程序参数

由不超过23个字符的字母和数字组成,但第一个字符必须是字母。2、变量名

在子程序带参数调用时可以使用4种变量类型。3、变量类型①IN类型(传入子程序)②IN/OUT类型(传入传出子程序)③OUT类型(传出子程序)④TEMP类型(暂时型)子程序在带参数调用时,最多可以带16个参数,每个参数包含变量名、变量类型和数据类型。这些参数在子程序的局部变量表中进行定义。第15页,共157页,2023年,2月20日,星期一4、使用局部变量表

当给子程序传递数据时,这些参数被存放在子程序的局部变量存储器中,当调用子程序时,输入参数被拷贝到子程序的局部变量存储器中,当子程序完成时,从局部变量存储器拷贝输出参数到指定的输出参数地址。局部变量表使用局部变量存储器L,CPU在执行子程序时,自动分配给每个子程序64个局部变量存储器单元,在进行子程序参数调用时,将调用参数按照变量类型IN,IN/OUT,0UT和TEMP的顺序依次存入局部变量表中。第16页,共157页,2023年,2月20日,星期一5、将参数值指定给子程序中的局部内存时应遵守下列规则:③字节、字和双字数值被指定给局部内存,位于字节边界(LBx、LWx或LDx)位置。在带参数的“调用子程序”指令中,参数必须与子程序局部变量表中定义的变量完全匹配。参数顺序必须以输入参数开始,其次是输入/输出参数,然后是输出参数。②一至八个连续位参数值被指定给从Lx.0开始持续至Lx.7的单字节。

①参数值指定给局部内存的顺序由CALL指定,参数从L0.0开始。第17页,共157页,2023年,2月20日,星期一例:带参数的子程序调用如下所示。第18页,共157页,2023年,2月20日,星期一第19页,共157页,2023年,2月20日,星期一注释:Micro/WIN保留L内存的最上方的4个字节(LB60-LB63),用于调用参数数据。//L内存被用于保存布尔输入参数状态,//此类参数在LAD和FBD中被显示为使能位输入。//从而允许本网络在LAD、FBD和STL编辑器中显示。第20页,共157页,2023年,2月20日,星期一名为“模拟量计算”的子程序如下图所示,在该子程序的局部变量表中,定义了名为“转换值”、“系数1”和“系数2”的输入(IN)变量,名为“模拟值”的输出(OUT)变量,和名为“暂存”的临时(TEMP)变量。局部变量表最左边的一列是每个参数在局部存储器(L)中的地址。#表示局部变量,软件自动添加。第21页,共157页,2023年,2月20日,星期一如果用语句表编程,子程序调用指令的格式为:

CALL子程序号,参数1,参数2,……参数n,n=1~16。上梯形图对应的语句表程序为:LDI0.1CALL模拟量计算,AIW2,VW20,+2356,VD40第22页,共157页,2023年,2月20日,星期一六、子程序中定时器的使用调用子程序时,子程序中的定时器正常计时;停止调用子程序时,线圈在子程序内的位元件的ON/OFF状态保持不变。如果在停止调用时子程序中的定时器正在定时,100ms定时器将停止定时,当前值保持不变,重新调用时继续定时;但1ms和10ms定时器将继续定时,定时时间到时,它们的定时器位变为1状态,且可以在子程序之外起作用。第23页,共157页,2023年,2月20日,星期一七、子程序应用举例例1:用两个子程序分别控制两台电动机的启停,主程序中调用子程序实现控制。OB1SBR0SBR1方案一:无参数传递第24页,共157页,2023年,2月20日,星期一OB1方案二:带参数传递LDI0.0=L60.0LDI0.1=L63.7LDI0.2=L63.6LDL60.0CALLSBR_0:SBR0,L63.7,L63.6,Q0.0LDI1.0=L60.0LDI1.1=L63.7LDI1.2=L63.6LDL60.0CALLSBR_0:SBR0,L63.7,L63.6,Q1.0第25页,共157页,2023年,2月20日,星期一SBR0方案二:带参数传递LD#启动:L0.0O#电机:L0.2AN#停止:L0.1=#电机:L0.2第26页,共157页,2023年,2月20日,星期一例2:设计一记录设备运行时间的子程序,符号名为“运行时间”。设备运行时I0.0为ON,用I0.0的常开触点调用子程序。OB1第27页,共157页,2023年,2月20日,星期一SBR0第28页,共157页,2023年,2月20日,星期一第五节中断程序及应用一、中断程序简介

中断程序可以为PLC内部或外部的特殊事件提供快速反应,在PLC控制系统中,对于不定期产生的继续处理事件,常通过采用中断处理技术来完成。

中断程序不是由程序调用,而是在中断事件发生时由系统调用。

当CPU响应中断请求后,会暂时停止当前正在执行的程序,进行现场保护,然后转到相应的中断服务程序中去处理。第29页,共157页,2023年,2月20日,星期一

一旦中断程序处理结束,立即恢复现场,将保存起来的现场数据和状态重新装入,返回到源程序继续执行。

在S7-200中,中断服务程序的调用和处理由中断指令来完成。一般中断程序都较为短小和简明扼要,这样可以加快中断程序执行的速度,使其他程序不会受到长时间的延误。第30页,共157页,2023年,2月20日,星期一二、中断源及中断事件1、中断源及种类

中断源,即中断事件发出中断请求的来源。S7-200PLC具有最多可达34个中断源,每个中断源都分配一个编号用以识别,称为中断事件号。这些中断源大致分为三大类:通信中断、输入输出中断和时基中断。S7-200中,过程中断分为通信中断和输入输出中断。通信中断包括通信口0和通信口1产生的中断;输入输出中断包括外部输入中断、高速计数器中断和高速脉冲串输出中断。第31页,共157页,2023年,2月20日,星期一1)通信中断:是指S7-200的串行通信口可以通过梯形图或语句表编程的方法来设置波特率、奇偶校验和通信协议等参数,对通信口的这种操作方式,又称为自由口通信。利用接收和发送中断可简化程序对通信的控制。2)外部输入中断:来自过程中断的信息可通过I0.0,I0.1,I0.2,I0.3的上升沿或下降沿输入到PLC中。3)高速计数器中断:应用高速计数器场合,当其当前值等于设定值时,或当计数方向发生改变时,或当其外部复位时,都可能使其向CPU提出中断请求。第32页,共157页,2023年,2月20日,星期一S7-200中,时基中断分为定时中断和定时器中断。4)高速脉冲串输出中断:当PLC完成输出给定数量的高速脉冲串时,可引起中断。1)定时中断:定时中断响应周期性的事件,周期时间以1ms为计量单位,最小周期为5ms,最大周期为255ms。

定时中断有两种类型:定时中断0和定时中断1。对于定时中断0,把周期时间写入特殊继电器SMB34;对于定时中断1,把周期时间写入特殊继电器SMB35。利用定时中断可以设定采样周期,实现对模拟量的数据采样。第33页,共157页,2023年,2月20日,星期一2)定时器中断:定时器中断是利用指定的定时器设定的时间产生中断。在S7-200中,指定的定时器为1ms的通电延时定时器T32和断电延时定时器T96。S7-200的CPU中可响应最多34个中断事件,见下表。事件号中断事件描述优先级别CPU221CPU222CPU224CPU2260I0.0上升边沿中断

2YYYY1I0.0下降边沿中断6YYYY2I0.1上升边沿中断3YYYY3I0.1下降边沿中断7YYYY第34页,共157页,2023年,2月20日,星期一事件号中断事件描述优先级别CPU221CPU222CPU224CPU2264I0.2上升边沿中断4YYYY5I0.2下降边沿中断8YYYY6I0.3上升边沿中断6YYYY7I0.3下降边沿中断9YYYY8端口0:接收字符0YYYY9端口0:传输完成0YYYY10定时中断00YYYY11定时中断11YYYY12HSC0,CV=PV10YYYY第35页,共157页,2023年,2月20日,星期一事件号中断事件描述优先级别CPU221CPU222CPU224CPU22613HSC1,CV=PV13YY14HSC1方向改变14YY15HSC1外部复原15YY16HSC2,CV=PV16YY17HSC2方向改变17YY18HSC2外部复原18YY19PTO0完成中断0YYYY20PTO1完成中断1YYYY21定时器T32,CT=PT中断2YYYY第36页,共157页,2023年,2月20日,星期一事件号中断事件描述优先级别CPU221CPU222CPU224CPU22622定时器T96,CT=PT中断2YYYY23端口0:接收信息完成0YYYY24端口1:接收信息完成1Y25端口1:接收字符

1Y26端口1:传输完成1Y27HSC0方向改变11YYYY28HSC0外部复原12YYYY29HSC4,CV=PV20YYYY30HSC4方向改变21YYYY第37页,共157页,2023年,2月20日,星期一2、中断优先级

中断优先级由高到低依次是:通信中断、输入输出中断、时基中断。每种中断中的不同中断事件又有不同的优先权。主机中的所有中断事件及优先级参照上表所示。事件号中断事件描述优先级别CPU221CPU222CPU224CPU22631HSC4外部复原22YYYY32HSC3,CV=PV19YYYY33HSC5,CV=PV23YYYY第38页,共157页,2023年,2月20日,星期一在PLC中,CPU一般在指定的优先级内按照先来先服务的原则响应中断事件的中断请求,在任何时刻,CPU只执行一个中断程序。当CPU按照中断优先级响应并执行一个中断程序时,就不会响应其他中断事件的中断请求(尽管此时可能会有更高级别的中断事件发出中断请求),直到将当前的中断程序执行结束。在CPU执行中断程序期间,对新出现的中断事件仍然按照中断性质和优先级的顺序分别进行排队,形成中断队列。CPU22x系列的中断队列的长度如下表所示。如果超过规定的中断队列长度,则产生溢出,使特殊继电器置位。第39页,共157页,2023年,2月20日,星期一中断队列CPU221CPU222CPU224CPU226溢出位通信中断4个4个4个8个SM4.0I/O中断16个16个16个16个SM4.1时基中断8个8个8个8个SM4.2表中断队列的长度及溢出位CPU型号CPU221CPU222CPU224CPU226可连接中断事件数253134可连接中断事件号0~12,19~23,27~330~23,27~330~33表中断数量及事件第40页,共157页,2023年,2月20日,星期一三、中断程序的相关指令中断允许(ENI)指令,全局地开放所有被连接的中断事件,允许CPU接收所有中断事件。1、中断允许指令ENI和中断禁止指令DISI中断禁止(DISI)指令,全局地关闭所有被连接的中断事件,禁止CPU接收各个中断事件的中断请求。执行DISI指令后,出现的中断事件就进入中断队伍排队等候,直到ENI指令重新允许中断。第41页,共157页,2023年,2月20日,星期一CPU进入RUN模式时,系统自动禁止了中断。在RUN模式执行ENI指令后,开放所有中断。中断允许指令ENI、中断禁止指令DISI以线圈的形式编程,无操作数。第42页,共157页,2023年,2月20日,星期一2、中断连接指令(ATCH)

中断连接(ATCH)指令,用来建立某个中断事件(EVNT)和某个中断程序(INT)之间的联系。并允许这个中断事件。

在调用一个中断程序前,必须用中断连接指令,建立某中断事件与中断程序的连接,当把某个中断事件和中断程序建立连接后,该中断事件发生时会自动

执行中断。多个中断事件可调用同一个中断程序,但一个中断事件不能同时与多个中断程序建立连接,否则,在中断允许且某个中断事件发生时,系统默认执行与该事件建立连接的最后一个中断程序。第43页,共157页,2023年,2月20日,星期一3、中断分离指令(DTCH)

中断分离(DTCH)指令,用来解除某个中断事件(EVNT)和某个中断程序之间的联系,并禁止该中断事件。指令操作数EVNT的数据类型均为BYTE。

可以用DTCH指令截断中断事件和中断程序之间的联系,以单独禁止某中断事件。DTCH指令使中断回到不激活或无效状态。第44页,共157页,2023年,2月20日,星期一4、中断返回指令(RETI)、(CRETI)

中断返回指令的功能是,当中断结束时,通过中断返回指令退出中断服务程序,返回到主程序。RETI是无条件返回指令,CRETI是有条件返回指令。第45页,共157页,2023年,2月20日,星期一指令使用举例:程序实现的功能是调用I0.1输入点的上升沿中断,若发现I/O错误,则禁止本中断,用外部条件可以禁止全局中断。第46页,共157页,2023年,2月20日,星期一四、中断应用举例例1:利用定时中断指令实现对模拟量的等间隔采样第47页,共157页,2023年,2月20日,星期一OB1: LDSM0.1 CALLSBR_0:SBR0SBR0:

LDSM0.0 MOVB100,SMB34 ATCHINT_0:INT0,10 ENIINT0: LDSM0.0 MOVWAIW4,VW100第48页,共157页,2023年,2月20日,星期一例2:在I0.0的上升沿通过中断使Q0.0立即置位;在I0.1的下降沿通过中断使Q0.0立即复位。第49页,共157页,2023年,2月20日,星期一//主程序OB1LDSM0.1//第一次扫描时ATCHINT_0,0//I0.0上升沿执行0号中断程序ATCHINT_1,3//I0.1下降沿执行1号中断程序ENI//允许全局中断//中断程序0(INT_0)LDSM0.0//常ONSIQ0.0,1//使Q0.0立即置位//中断程序1(INT_1)LDSM0.0RIQ0.0,1//使Q0.0立即复位第50页,共157页,2023年,2月20日,星期一例3:定时中断的定时时间最长为255ms,如何用定时中断1实现周期为2s的高精度定时?第51页,共157页,2023年,2月20日,星期一//主程序OB1LDSM0.1//第一次扫描时MOVB0,VB10//中断次数计数器清零MOVB250,SMB34//设定中断0时间间隔为250msATCHINT_0,10//指定定时中断0执行0号中断程序ENI//允许全局中断//中断程序0(INT_0),每隔250ms中断一次LDSM0.0//常ONINCBVB10//中断次数计数器加1LDB=8,VB10//比较,如果中断8次(2s)MOVB0,VB10//中断次数计数器清零INCBQB0//每2s将QB0加1第52页,共157页,2023年,2月20日,星期一例4:出现事故时,I0.0的上升沿产生中断,使输出Q1.0立即置位,同时将事故发生的日期和时间保存在VB10~VB17中。第53页,共157页,2023年,2月20日,星期一//主程序OB1 LD SM0.1//第一次扫描 ATCH0,0//指定在I0.0上升沿 //执行中断程序0 ENI//开中断//中断程序INT0 LD SM0.0 SI Q1.0,1//使Q1.0立即置位 TODRVB10//读实时时钟第54页,共157页,2023年,2月20日,星期一例5:使用定时中断的彩灯控制程序,控制8个彩灯循环左移。

定时中断0的中断号为10,SMB34中的定时时间为1~255ms。彩灯移位的延时时间一般大于255ms,将中断的时间间隔设为250ms,用VB0做中断次数计数器,在中断服务程序中将VB0加1,然后用比较触点指令判断VB0是否等于设置的次数N。若相等则将QB0循环左移一位,同时VB0清零。移位时间间隔为0.25N(s)。第55页,共157页,2023年,2月20日,星期一第56页,共157页,2023年,2月20日,星期一第57页,共157页,2023年,2月20日,星期一主程序OB1LDSM0.1CALLSBR_0:SBR0子程序SBR0LDSM0.0MOVB16#07,QB0MOVB0,VB0MOVB250,SMB34ATCHINT_0:INT0,10ENI中断程序INT0LDSM0.0INCBVB0LDB=VB0,4RLBQB0,1MOVB0,VB0第58页,共157页,2023年,2月20日,星期一例6:使用T32中断的彩灯控制程序,控制8个彩灯循环左移。1ms定时器T32和T96的定时时间到时可以产生中断,中断号分别为21和22,最长定时时间为32.767s。对于分辨率为1ms和10ms的定时器,不能使用定时器本身触点作为自复位控制,应使用下面主程序方法。第59页,共157页,2023年,2月20日,星期一第60页,共157页,2023年,2月20日,星期一主程序OB1LDSM0.1CALLSBR_0:SBR0LDNM0.0TONT32,+500LDT32=M0.0子程序SBR0LDSM0.0MOVB7,QB0ATCHINT_0:INT0,21ENI中断程序INT0LDSM0.0RLBQB0,1第61页,共157页,2023年,2月20日,星期一总结(1)中断程序构成中断程序必须由三部分构成:中断程序标号、中断程序指令和无条件返回指令。(2)编程要求①用中断程序的标号来区别每个中断程序。②中断服务程序越短越好,以减少中断程序执行时间。③在中断程序中不能使用ENI、DISI、HDEF、LSCR、END指令。④中断服务程序的最后一条指令一定是RETI或CRETI(其中RETI指令会由编程软件自动添加)。第62页,共157页,2023年,2月20日,星期一第六节高速计数器功能及应用一、高速计数器概述PLC的普通计数器的计数过程与扫描工作方式有关,CPU通过每一个扫描周期读取一次被测信号的方法来捕捉被测信号的上升沿,被测信号的频率较高时,会丢失计数脉冲,因此普通计数器的工作频率很低,一般仅有几十赫兹。高速计数器可以对普通计数器无能为力的事件进行计数,S7-200有6个高速计数器HSC0~HSC5,可以设置多达12中不同的操作模式。第63页,共157页,2023年,2月20日,星期一1、高速计数器的数量及编号高速计数器在程序中使用时的地址编号用HSCn来表示,HSC表编程元件名称为高速计数器,n(n=0~5)为编号。每个高速计数器的计数结果都对应有一个当前值寄存器。编程时可通过地址HCx(x=0~5)来读取高速计数器的当前值。不同型号的PLC主机,高速计数器的数量对应如下表所示。第64页,共157页,2023年,2月20日,星期一2、高速计数器的外部输入信号每个高速计数器对它所支持的时钟、方向控制、复位和启动都有专用的输入点,通过中断控制完成预定的操作。每个高速计数器所需的外部输入点如下图所示。第65页,共157页,2023年,2月20日,星期一3、高速计数器相关的中断事件

高速计数器的计数和动作可采用中断方式进行控制,与CPU的扫描周期关系不大,各种型号的PLC可用的高速计数器的中断事件大致分为3类:当前值等于预设值中断、输入方向改变中断和外部复位中断。所有高速计数器都支持当前值等于预设值中断。第66页,共157页,2023年,2月20日,星期一每个高速计数器的3种中断的优先级由高到低,不同高速计数器之间的优先级又按编号顺序由高到低。具体对应关系如下表所示。高速计数器当前值=预设值中断计数方向改变中断外部信号复位中断事件号优先级事件号优先级事件号优先级HSC0121027112812HSC1131314141515HSC2161617171818HSC33219无无无无HSC4292030213122HSC53323无无无无第67页,共157页,2023年,2月20日,星期一4、高速计数器的状态字节与控制字节在特殊存储器(SM)区,每个高速计数器都有一个状态字节、一个设置参数用的控制字节、一个32位预置值寄存器和一个32位当前值寄存器。第68页,共157页,2023年,2月20日,星期一状态字节给出了当前计数方向和当前值是否大于或等于预置值等信息。只有在执行高速计数器的中断程序时,状态位才有效。控制字节的各位用来设置高速计数器的属性。第69页,共157页,2023年,2月20日,星期一高速计数器的状态字节表HSC0HSC1HSC2HSC3HSC4HSC5描述SM36.0SM46.0SM56.0SM136.0SM146.0SM156.0不用SM36.1SM46.1SM56.1SM136.1SM146.1SM156.1不用SM36.2SM46.2SM56.2SM136.2SM146.2SM156.2不用SM36.3SM46.3SM56.3SM136.3SM146.3SM156.3不用SM36.4SM46.4SM56.4SM136.4SM146.4SM156.4不用SM36.5SM46.5SM56.5SM136.5SM146.5SM156.5计数方向状态0减;1增SM36.6SM46.6SM56.6SM136.6SM146.6SM156.6当前值=设定值0≠;1=SM36.7SM46.7SM56.7SM136.7SM146.7SM156.7当前值>设定值0≤;1>第70页,共157页,2023年,2月20日,星期一高速计数器的控制字节表第71页,共157页,2023年,2月20日,星期一高速计数器的当前值和设定值寄存器第72页,共157页,2023年,2月20日,星期一二、高速计数器的工作模式S7-200的高速计数器有4类工作模式,共有12种。每个模式各有不同,可通过编程,使用定义高速计数器指令HDEF来选定工作模式。1、高速计数器的工作模式第73页,共157页,2023年,2月20日,星期一第74页,共157页,2023年,2月20日,星期一第75页,共157页,2023年,2月20日,星期一第76页,共157页,2023年,2月20日,星期一2、高速计数器的工作模式说明从各个高速计数器的工作模式的描述可知:6个高速计数器具有不完全相同的功能,最多可能有12种工作模式,可分为四种类型。下面以HC1的工作模式为例加以说明。①具有内部方向控制的单相增/减计数器(模式0~2)用高速计数器的控制字节的第3位来控制加计数或减计数。该位为1时为加计数,为0时为减计数。第77页,共157页,2023年,2月20日,星期一第78页,共157页,2023年,2月20日,星期一②具有外部方向控制的单相增/减计数器(模式3~5)方向输入信号为1时为加计数,为0时为减计数。第79页,共157页,2023年,2月20日,星期一③具有增/减计数脉冲输入的双向计数器(模式6~8)第80页,共157页,2023年,2月20日,星期一若加计数脉冲和减计数脉冲的上升沿出现的时间间隔不到0.3ms,高速计数器认为这两个事件是同时发生的,当前值不变,也不会有计数方向变化的指示。反之,高速计数器能捕捉到每一个独立事件。④A/B相正交计数器(模式9~11)正交:是指A、B两相输入脉冲相位互差90°。当A相脉冲超前B相脉冲90°时,计数为增计数;当A相脉冲滞后B相脉冲90°时,计数为减计数。第81页,共157页,2023年,2月20日,星期一正交计数器有两种工作状态:

一种是输入1个计数脉冲时,当前值计1个数,此时的计数倍率为1。

另一种工作状态是输入1个计数脉冲时,当前值计4个数,此时的计数倍率为4。第82页,共157页,2023年,2月20日,星期一1倍率正交计数器时序图第83页,共157页,2023年,2月20日,星期一4倍率正交计数器时序图第84页,共157页,2023年,2月20日,星期一三、高速计数器指令1、高速计数器定义指令HDEF使能输入有效时,为指定的高速计数器分配一种工作模式,即用来建立高速计数器与工作模式之间的联系。梯形图指令盒中有两个数据输入端:HSC,高速计数器编号,为0~5的常数,字节型;MODE,工作模式,为0~11的常数,字节型。第85页,共157页,2023年,2月20日,星期一2、高速计数器指令HSC使能输入有效时,根据高速计数器特殊存储器位的状态,并按照HDEF指令指定的工作模式,设置高速计数器并控制其工作。梯形图指令盒数据输入端N:高速计数器编号,为0~5的常数,字型。第86页,共157页,2023年,2月20日,星期一四、高速计数器的使用使用高速计数器时,每个高速计数器只能用一条HDEF指令,可以用首次扫描存储器位SM0.1,在第一个扫描周期调用包含HDEF指令的子程序来定义高速计数器。1、设置的一般步骤①选择计数器及工作模式

②设置控制字节

③执行HDEF指令

④设定当前值和预设值

⑤设置中断事件并全局开中断

⑥执行HSC指令

第87页,共157页,2023年,2月20日,星期一2、应用举例例1:要对一高速事件精确控制,通过对脉冲信号进行增计数,计数当前值达到24产生中断,重新从0计数,对中断次数进行累计。计数方向用一个外部信号控制,并能实现外部复位。所用的主机型号为CPU221。设计步骤:①选择高速计数器HSC0,并确定工作方式4;②令SM37=16#F8;

③执行HDEF指令,输入端HSC为0,MODE为4;④装入当前值,令SMD38=0;⑤装入设定值,令SMD42=24;⑥执行中断连接ATCH指令,输入端INT为INT0,EVNT为12。第88页,共157页,2023年,2月20日,星期一第89页,共157页,2023年,2月20日,星期一五、旋转编码器在工业控制中的某些场合,PLC高速计数器输入的高速脉冲信号一般可通过旋转编码器获得。

1、增量式编码器光电增量式编码器的码盘上有均匀刻制的光栅。码盘旋转时,输出与转角的增量成正比的脉冲,需要用计数器来计脉冲数。根据输出信号的个数,有三种增量式编码器:第90页,共157页,2023年,2月20日,星期一①单通道增量式编码器单通道增量式编码器内部只有一对光耦合器,只能产生一个脉冲序列。②双通道增量式编码器双通道增量式编码器又称为A、B相型编码器,内部有两对光耦合器,能输出相位差为90°的两组独立脉冲序列。正转和反转时两路脉冲的超前和滞后关系刚好相反(如下图),如果使用A、B相型编码器,PLC可以识别出转抽旋转的方向。第91页,共157页,2023年,2月20日,星期一③三通道增量式编码器编码器内部除了有双通道增量式编码器的两对光耦合器外,在脉冲码盘的另外一个通道有一个透光段,每转一圈,输出一个脉冲,该脉冲称为Z相零位脉冲,用作系统清零信号,或坐标的原点,以减少测量的积累误差。A相B相A相B相a)正转b)反转第92页,共157页,2023年,2月20日,星期一

N位绝对式编码器有N个码道,最外层的码道对应编码的最低位。每一码道有一个光耦合器,用来读取该码道的0、1数据。绝对式编码器输出的N位二进制数反映了运动物体所处的绝对位置,根据位置的变化情况,可以判别出旋转的方向。2、绝对式编码器第93页,共157页,2023年,2月20日,星期一例2:控制要求包装箱用传送带输送,当箱体到达检测传感器A时,开始计数。计数到2000个脉冲时,箱体刚好到达封箱机下进行封箱,此时传送带并没有停下,而是继续运转。则在封箱过程中,箱体还在前行。假设封箱过程共用300个脉冲,然后封箱机停止工作。继续前行,当计数脉冲又累加到1500个码时,开始喷码,喷码机开始工作,假设喷码机共用5秒钟进行喷码,喷码结束后,整个工作过程结束。第94页,共157页,2023年,2月20日,星期一第95页,共157页,2023年,2月20日,星期一第96页,共157页,2023年,2月20日,星期一主程序第97页,共157页,2023年,2月20日,星期一子程序第98页,共157页,2023年,2月20日,星期一注意:使用高速计数器时,需要根据有关的特殊存储器的意义来编写初始化程序和中断程序。这些程序的编写繁琐,容易出错。

STEP7-Micro/WIN的向导功能很强,使用向导来完成某些功能的编程既简单方便,又不容易出错。使用指令向导能简化高速计数器的编程过程。第99页,共157页,2023年,2月20日,星期一例3:用指令向导生成高速计数器HSC0的初始化程序和中断程序,HSC0为无外部方向输入信号的单相加/减计数器(模式0),计数值为10000~20000时Q4.0输出1。执行菜单命令“工具”→“指令向导…”,按下面的步骤设置高速计数器的参数:1)在第1页选择“HSC”(配置高速计数器),每次操作完成后点击“下一步>”按钮。2)在第2页选择HSC0和模式0。第100页,共157页,2023年,2月20日,星期一3)在第3页设置计数器的预置值为10000,当前值为0,初始计数方向为加(增)计数。使用默认的初始化子程序符号名HSC_INIT。4)在第4页设置当前值等于预置值时产生中断(中断事件编号为12),使用默认的中断程序符号名COUNT_EQ。

向导允许高速计数器按多个步骤进行计数,即在中断程序中修改某些参数,例如修改计数器的计数方向、当前值和预置值,并将另一个中断程序连接至相同的中断事件。第101页,共157页,2023年,2月20日,星期一

本例设置编程2步,在中断程序COUNT_EQ中,修改预置值为20000,计数当前值和计数方向不变。完成设置后自动生成下述的初始化子程序HSC_INIT、中断程序COUNT_EQ和HSC0_STEP1。在主程序中,首次扫描时调用HSC_INIT,中断程序中对Q4.0置位和复位的语句是用户添加的。最后一个步骤可以重新连接第一个中断程序,使计数过程循环进行。第102页,共157页,2023年,2月20日,星期一①主程序 LD SM0.1 CALL HSC_INIT②初始化子程序HSC_INIT LD SM0.0 MOVB 16#F8,SMB37 MOVD +0,SMD38 MOVD +10000,SMD42 HDEF 0,0 ATCH COUNT_EQ,12 ENI HSC 0第103页,共157页,2023年,2月20日,星期一③中断程序COUNT_EQ LD SM0.0 MOVB 16#A0,SMB37 MOVD +20000,SMD42 ATCH HSC0_STEP1,12 HSC 0 SI Q4.0,1 //用户添加第104页,共157页,2023年,2月20日,星期一④中断程序HSC0_STEP1 LD SM0.0 MOVB 16#80,SMB37 DTCH 12 HSC 0 RI Q4.0,1 //用户添加第105页,共157页,2023年,2月20日,星期一第七节高速脉冲输出功能及应用一、高速脉冲输出概述

小型PLC的脉冲量输出一般都采用晶体管输出形式,用于支持位置控制功能。位置控制功能的目的是通过速度的设定将物体从当前位置准确转移到预设位置。当连接到不同的伺服驱动装置或步进电动机控制装置时,可通过脉冲信号控制位置的高精确度,如下图:第106页,共157页,2023年,2月20日,星期一1、高速脉冲输出的形式

高速脉冲输出有两种输出形式:高速脉冲序列(高速脉冲串)输出PTO和脉冲宽度调制输出PWM,可通过特殊继电器来定义输出形式。第107页,共157页,2023年,2月20日,星期一①脉冲串输出PTO可以输出一串脉冲(占空比为50%),用户可以控制脉冲的周期和个数。第108页,共157页,2023年,2月20日,星期一②脉冲调制输出PWM可以输出连续的、占空比可以调制的脉冲串,用户可以控制脉冲的周期和脉宽。第109页,共157页,2023年,2月20日,星期一2、输出端子的确定

在S7-200中,只有输出继电器Q0.0和Q0.1具有高速脉冲输出功能,如果不需要进行高速脉冲输出时,Q0.0和Q0.1可以作为普通的数字量输出点使用。一旦需要使用高速脉冲输出功能时,必须通过Q0.0和Q0.1输出高速脉冲。

在使用PTO和PWM操作之前,需要将两者的过程映像寄存器清零。第110页,共157页,2023年,2月20日,星期一3、脉冲输出指令

高速脉冲输出指令在梯形图中以功能框的形式编程,指令名称是PLS,其功能是当允许输入EN有效时,检测各个相关特殊继电器的状态,激活由控制字节定义的高速脉冲输出操作。PLS指令只有一个输入端Q,字型数据,只能取常数0或1,对应从Q0.0或Q0.1输出高速脉冲。第111页,共157页,2023年,2月20日,星期一4、相关的寄存器每个高速脉冲发生器对应一定数量特殊标志寄存器,这些寄存器包括控制字节寄存器、状态字节寄存器和参数数值寄存器,用以控制高速脉冲的输出形式、反映输出状态和参数值。各寄存器分配如下表所示。第112页,共157页,2023年,2月20日,星期一①状态字节状态字节在程序运行时根据运行状况自动使某些位置位,可以通过程序来读相关位的状态,用以作为判断条件实现相应的操作。状态字节中各状态位的功能如下表所示。第113页,共157页,2023年,2月20日,星期一②控制字节通过对控制字节中指定位的编程,根据操作要求设置字节中各控制位,如脉冲输出允许、PTO/PWM模式选择、单段/多段选择、更新方式、时间基准、允许更新等。控制字节中各控制位的功能如下表所示。第114页,共157页,2023年,2月20日,星期一二、高速脉冲串输出(PTO)

脉冲宽度与脉冲周期之比称为占空比,脉冲序列(PTO)功能提供周期与脉冲数目可以有用户控制的占空比为50%的方波脉冲输出。第115页,共157页,2023年,2月20日,星期一脉冲计数范围用双字长无符号数表示,脉冲数的取值范围是1~4294967295。如果编程时指定脉冲数为0,则系统默认脉冲数为1个。PTO可提供单脉冲串或多脉冲串(脉冲轮廓)。用户可以指定脉冲数和周期(以微妙或毫秒递增),周期范围为10~65535μm或2~65535ms。周期值一般设定为偶数,若指定周期值为奇数(如75ms)会引起占空比的轻微失真。1、周期和脉冲数第116页,共157页,2023年,2月20日,星期一PTO方式中,如果要输出多个脉冲串,每个脉冲串的周期和脉冲数可以不同。当需要输出多个脉冲串时,允许脉冲串进行排队,形成管线,当前输出的脉冲串完成之后,立即输出新脉冲串,这保证了脉冲串顺序输出的连续性。单段管线多段管线2、PTO输出方式第117页,共157页,2023年,2月20日,星期一①单段管线PTO

在单段管线PTO输出时,管线中只能存放1个脉冲串的控制参数(入口地址)。在当前脉冲串输出期间,就要对与下一个脉冲串相关的特殊继电器进行更新,待当前的脉冲串输出完成后,通过执行PLS指令,就可以立即输出新的脉冲串,实现多段脉冲串的连续输出。

采用单段管线PTO的优点是:各个脉冲串的时间基准可以不同。

采用单段管线PTO的缺点是:编程复杂且烦琐,当参数设置不当时,会造成各个脉冲串连接的不平滑。第118页,共157页,2023年,2月20日,星期一②多段管线PTO

当采用多段管线PTO输出高速脉冲串时,需要在变量存储器区(V)中建立一个包络表,在包络表中存储各个脉冲串的参数,当执行PTO指令时,CPU自动按顺序从包络表中调出各个脉冲串的入口地址,连续输出各个脉冲串。

采用多段管线PTO的优点是:编程简单,可按照程序设定的周期增量值自动增减脉冲周期。

采用多段管线PTO的缺点是:所有脉冲串的时间基准必须一致,当执行PLS指令时,包络表中的所有参数均不能改变。第119页,共157页,2023年,2月20日,星期一③PTO包络表

包络表由包络段数和各段构成。每段长度为8个字节,包括:脉冲周期值(16位);

周期增量值(16位);脉冲计数值(32位)。以3段包络的包络表为例,包络表的结构如下表所示。第120页,共157页,2023年,2月20日,星期一第121页,共157页,2023年,2月20日,星期一3、中断事件类型

高速脉冲串输出可以采用中断方式进行控制,各种型号的PLC可用的高速脉冲串输出的中断事件有两个,如下表所示。第122页,共157页,2023年,2月20日,星期一4、PTO的使用使用高速脉冲串输出时,要按以下步骤进行:①确定脉冲发生器及工作模式

②设置控制字节③写入周期值、周期增量值和脉冲数④装入包络的首地址⑤设置中断事件并全局开中断⑥执行PLS指令第123页,共157页,2023年,2月20日,星期一三、高速脉冲串输出应用举例1、控制要求步进电机转动过程中,要从A点加速到B点后恒速运行,又从C点开始减速到D点,完成这一过程时用指示灯显示。电机的转动受脉冲控制,A点和D点的脉冲频率为2kHz,B点和C点的频率为10kHz,加速过程的脉冲数为400个,恒速转动的脉冲数为4000个,减速过程脉冲数为200个。工作过程如下图所示。第124页,共157页,2023年,2月20日,星期一第125页,共157页,2023年,2月20日,星期一2、分析确定脉冲发生器及工作模式

设置控制字节

写入周期值、周期增量值和脉冲数

装入包络表首地址

中断调用

执行PLS指令

第126页,共157页,2023年,2月20日,星期一①确定脉冲发生器及工作模式选择由Q0.0输出,由上图选择3段管线(AB段、BC段、CD段)PTO的输出形式。②设置控制字节确定周期值的时基单位,由于在BC段输出的频率最大为10kHz,对应的周期值为100µs,因此选择时基单位µs,向SMB67写入控制字16#A0。第127页,共157页,2023年,2月20日,星期一③确定周期初始值、周期增量值Ⅰ、初始值确定较为容易,只需将每段初始频率转换为时间即可:AB段为500µs,BC段为100µs,CD段为100µs。Ⅱ、周期增量值的确定:Tn+1:该段结束的周期时间;Tn:该段开始的周期时间;N:该段的脉冲数。第128页,共157页,2023年,2月20日,星期一④建立包络表设包络表的首地址为VB400,包络表如下:V变量存储器参数参数值VB400总段数3VW401加速段初始周期值500µsVW403周期增量值-1µsVD405输出脉冲数400VW409恒速段初始周期值100µsVW411周期增量值0µsVD413输出脉冲数4000VW417减速段初始周期值100µsVW419周期增量值2µsVD421输出脉冲数200第129页,共157页,2023年,2月20日,星期一⑤确定中断

PTO0高速脉冲串输出完成中断事件19,对应中断程序中设置控制指示灯的输出点置位。⑥程序实现本控制系统主程序、初始化子程序SBR_1、包络表子程序及中断程序如下:第130页,共157页,2023年,2月20日,星期一第131页,共157页,2023年,2月20日,星期一第132页,共157页,2023年,2月20日,星期一第133页,共157页,2023年,2月20日,星期一第134页,共157页,2023年,2月20日,星期一三、宽度可调脉冲输出(PWM)

脉冲宽度调制功能提供连续的、周期与脉冲宽度可以由用户控制的输出。时间基准可设置为μm或ms,周期范围为10~65535μm或2~65535ms,脉冲宽度的变化为0~65535μm或0~65535ms。

当指定的脉冲宽度值大于周期值时,占空比为100%,输出连续接通;当脉冲宽度为0时,占空比为0%,输出断开。PWM的高频输出波形经滤波后可以得到与占空比成正比的模拟量输出电压。1、周期和脉冲宽度第135页,共157页,2023年,2月20日,星期一2、更新方式

同步更新:PWM的典型操作是当周期时间保持常数时变化脉冲宽度。所以不需要改变时间基准。不改变时间基准,就可以进行同步更新。同步更新时,波形特性的变化发生在周期边沿,可提供平滑过渡。

异步更新:若需改变PWM发生器的时间基准,就要使用异步更新。异步更新会造成PWM功能被瞬时禁止,和PWM输出波形不同步。这会引起被控设备的振动。因此,建议选择一个适合于所有周期时间的时间基准来采用PWM同步更新。第136页,共157页,2023年,2月20日,星期一3、PWM指令

执行菜单命令“工具”→“位置控制向导”,打开位置控制向导。在第1页选择“配置S7-200PLC内置PTO/PWM操作”。在第2页选择组态Q0.0或Q0.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论