第六章S7-200PLC功能指令二_第1页
第六章S7-200PLC功能指令二_第2页
第六章S7-200PLC功能指令二_第3页
第六章S7-200PLC功能指令二_第4页
第六章S7-200PLC功能指令二_第5页
已阅读5页,还剩155页未读 继续免费阅读

下载本文档

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

文档简介

1、第六章第六章S7-200PLCS7-200PLC功能指令功能指令4 4:子程序及应用子程序及应用5 5:中断程序及应用中断程序及应用6 6:高速计数器功能及应用高速计数器功能及应用7 7:高速脉冲输出功能及应用高速脉冲输出功能及应用第四节第四节 子程序及应用子程序及应用一、子程序简介一、子程序简介 子程序可以对程序子程序可以对程序 进行分块,使用子程序将进行分块,使用子程序将程序分成容易管理的小块,使程序结构简单清晰,程序分成容易管理的小块,使程序结构简单清晰,易于查错和维护。易于查错和维护。 子程序常用于需要多次反复执行相同任务的子程序常用于需要多次反复执行相同任务的地方,只需要写一次子程序

2、,别的程序在需要的时地方,只需要写一次子程序,别的程序在需要的时候调用它,而无需重写该程序。候调用它,而无需重写该程序。 子程序的调用是有条件的,未调用它时不会子程序的调用是有条件的,未调用它时不会执行子程序中的指令,因此使用子程序可以减少执行子程序中的指令,因此使用子程序可以减少扫描时间。扫描时间。 S7-200 CPU的控制程序由主程序、子程序和的控制程序由主程序、子程序和中断程序组成。中断程序组成。STEP7-Micro/WIN在程序编辑器在程序编辑器窗口里为每个窗口里为每个POU(程序组织单元)提供一个独(程序组织单元)提供一个独立的页。主程序总是第立的页。主程序总是第1页,后面是子程

3、序和中断页,后面是子程序和中断程序。程序。 各个程序在编辑器窗口里被分开,编译时在各个程序在编辑器窗口里被分开,编译时在程序结束的地方自动加上无条件结束程序结束的地方自动加上无条件结束/返回指令,返回指令,用户程序可使用有条件结束用户程序可使用有条件结束/返回指令。返回指令。二、局部变量表二、局部变量表1、局部变量与全局变量局部变量与全局变量 在在SIMATIC符号表或符号表或IEC的全局变量表中定义的的全局变量表中定义的变量为全局变量。程序中的每个变量为全局变量。程序中的每个POU(Program Organizational Unit,程序组织单元)均有自己的由,程序组织单元)均有自己的由

4、64B L存储器组成的局部变量表。它们用来定义有范存储器组成的局部变量表。它们用来定义有范围限制的变量,局部变量只在它被创建的围限制的变量,局部变量只在它被创建的POU中有效。中有效。与之相反,全局符号在各与之相反,全局符号在各POU中均有效,只能在符号中均有效,只能在符号表表/全局变量表中定义。全局符号与局部变量名称相同全局变量表中定义。全局符号与局部变量名称相同时,在定义局部变量的时,在定义局部变量的POU中,该局部变量的定义优中,该局部变量的定义优先,该全局定义则在其它先,该全局定义则在其它POU中使用。中使用。 局部变量优点:局部变量优点: 在子程序中只用局部变量,不用绝对地址或全在子

5、程序中只用局部变量,不用绝对地址或全局符号,子程序可以移植到别的项目去。局符号,子程序可以移植到别的项目去。 如果使用临时变量(如果使用临时变量(TEMP),同一片物理存),同一片物理存储器可以在不同的程序中重复使用。储器可以在不同的程序中重复使用。 局部变量还用来在子程序和调用它的程序之间传局部变量还用来在子程序和调用它的程序之间传递输入参数和输出参数。递输入参数和输出参数。2、局部变量的类型局部变量的类型 局部变量表中的变量类型区定义的变量有:局部变量表中的变量类型区定义的变量有: IN:传入子程序参数,由调用它的:传入子程序参数,由调用它的POU提供的提供的输入参数。输入参数。 OUT:

6、传出子程序参数,将从子程序来的结果:传出子程序参数,将从子程序来的结果值返回到指定参数的位置。值返回到指定参数的位置。 IN/OUT:传入:传入/传出子程序参数。传出子程序参数。 TEMP:暂时变量,只能在子程序内部暂时存:暂时变量,只能在子程序内部暂时存储数据。不能用来传递参数。储数据。不能用来传递参数。 注意:注意: 只有在执行该只有在执行该POU时,定义的临时变量才被使时,定义的临时变量才被使用,用,POU执行完后,不再使用临时变量的数值。在主执行完后,不再使用临时变量的数值。在主程序或中断程序中,局部变量表只包含程序或中断程序中,局部变量表只包含TEMP变量。变量。3、局部变量的赋值局

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

8、一组已被预先定义为已被预先定义为TEMP变量的行。要在表中增加行,变量的行。要在表中增加行,只需用右键单击表中的某一行,在弹出的菜单中执只需用右键单击表中的某一行,在弹出的菜单中执行行“插入插入”“行行”命令,在所选行的上部插入新命令,在所选行的上部插入新的行。执行菜单命令的行。执行菜单命令“插入插入”“下一行下一行” 在所在所选行的下部插入新的行。选行的下部插入新的行。 对于子程序,局部变量表显示数据类型被预先对于子程序,局部变量表显示数据类型被预先定义为定义为IN、IN_OUT、OUT和和TEMP的一系列行,的一系列行,不能改变它们的顺序。如果要增加新的局部变量,不能改变它们的顺序。如果要

9、增加新的局部变量,必须用鼠标右键单击已有的行,并用弹出菜单在所必须用鼠标右键单击已有的行,并用弹出菜单在所击行的上面或下面插入相同类型的另一局部变量。击行的上面或下面插入相同类型的另一局部变量。 5、局部变量数据类型检查局部变量数据类型检查 局部变量作为参数向子程序传递时,在该子局部变量作为参数向子程序传递时,在该子程序的局部变量表中指定的数据类型必须与调用它程序的局部变量表中指定的数据类型必须与调用它的的POU中的数据类型值匹配。中的数据类型值匹配。 例如:在主程序例如:在主程序OB1中调用子程序中调用子程序SBR0,使用名,使用名为为INPUT1的全局符号作为子程序的输入参数。在的全局符号

10、作为子程序的输入参数。在SBR0的局部变量表中,已经定义了一个名为的局部变量表中,已经定义了一个名为FIRST的局部变量作为该输入参数。当的局部变量作为该输入参数。当OB1调用调用SBR0时,时,INPUT1的数值被传入的数值被传入FIRST,INPUT1和和FIRST的数据类型必须完全匹配。的数据类型必须完全匹配。三、建立子程序三、建立子程序在在“编辑编辑”菜单中执行命令菜单中执行命令“插入插入”“子程序子程序”;在程序编辑器视窗中点击鼠标右键,从弹出的菜单中在程序编辑器视窗中点击鼠标右键,从弹出的菜单中执行命令执行命令“插入插入”“子程序子程序”; 新建的子程序,默认的程序名是新建的子程序

11、,默认的程序名是SBR_n,编号,编号n从从0(063)开始按递增顺序生成。开始按递增顺序生成。用鼠标右键点用鼠标右键点击指令树中的子程序的图标,在弹出的菜单中选择击指令树中的子程序的图标,在弹出的菜单中选择“重新命名重新命名”,可以修改它们的名称。,可以修改它们的名称。注意:注意:CPU226的项目中最多可以创建的项目中最多可以创建128个子程序个子程序。四、子程序的调用(四、子程序的调用(CALLCALL指令)指令) 可以带参数或不带参数调用子程序。每个子可以带参数或不带参数调用子程序。每个子程序必须以无条件返回(程序必须以无条件返回(RET)指令作结束,)指令作结束,STEP7-Mici

12、o/WIN编程软件为每个子程序自动加编程软件为每个子程序自动加入无条件返回(入无条件返回(RET)指令。有条件子程序返回)指令。有条件子程序返回(CRET)指令,在控制条件有效时,终止子程)指令,在控制条件有效时,终止子程序(序(n)。子程序执行完毕,控制程序回到主程序)。子程序执行完毕,控制程序回到主程序中子程序调用(中子程序调用(CALL)指令的下一条指令。)指令的下一条指令。 主程序可以用子程序调用(主程序可以用子程序调用(CALL)指令来)指令来调用一个子程序。子程序调用(调用一个子程序。子程序调用(CALL)指令把)指令把程序控制权交给子程序(程序控制权交给子程序(n)。子程序结束后

13、,)。子程序结束后,必须返回主程序。必须返回主程序。子程序被调用时,系统会保存当前的逻辑堆栈。子程序被调用时,系统会保存当前的逻辑堆栈。保存后再置栈顶值为保存后再置栈顶值为1,堆栈的其他值为零,把控制,堆栈的其他值为零,把控制权交给被调用的子程序。子程序执行完毕,通过返权交给被调用的子程序。子程序执行完毕,通过返回指令自动恢复逻辑堆栈原调用点的值,把控制权回指令自动恢复逻辑堆栈原调用点的值,把控制权交还给调用程序。交还给调用程序。因为累加器可在调用程序和被调用程序之间自由因为累加器可在调用程序和被调用程序之间自由传递数据,所以累加器的值在子程序调用开始时不传递数据,所以累加器的值在子程序调用开

14、始时不需要另外保存,在子程序调用结束时也不用恢复。需要另外保存,在子程序调用结束时也不用恢复。说明:说明:在中断程序、子程序中也可调用子程序;主程序在中断程序、子程序中也可调用子程序;主程序中可以嵌套调用子程序,嵌套深度为中可以嵌套调用子程序,嵌套深度为8层。中断程层。中断程序中,不能嵌套调用子程序。序中,不能嵌套调用子程序。 五、带参数子程序的调用五、带参数子程序的调用1、子程序参数、子程序参数 由不超过由不超过23个字符的字母和数字组成,但第一个字符的字母和数字组成,但第一个字符必须是字母。个字符必须是字母。2、变量名、变量名 在子程序带参数调用时可以使用在子程序带参数调用时可以使用4种变

15、量类型。种变量类型。3、变量类型、变量类型ININ类型(传入子程序)类型(传入子程序)IN/OUTIN/OUT类型(传入传出子程序)类型(传入传出子程序)OUTOUT类型(传出子程序)类型(传出子程序)TEMPTEMP类型(暂时型)类型(暂时型) 子程序在带参数调用时,最多可以带子程序在带参数调用时,最多可以带16个参个参数,每个参数包含变量名、变量类型和数据类型。数,每个参数包含变量名、变量类型和数据类型。这些参数在子程序的局部变量表中进行定义。这些参数在子程序的局部变量表中进行定义。4、使用局部变量表、使用局部变量表 当给子程序传递数据时,这些参数被存放在子当给子程序传递数据时,这些参数被

16、存放在子程序的局部变量存储器中,当调用子程序时,输入程序的局部变量存储器中,当调用子程序时,输入参数被拷贝到子程序的局部变量存储器中,当子程参数被拷贝到子程序的局部变量存储器中,当子程序完成时,从局部变量存储器拷贝输出参数到指定序完成时,从局部变量存储器拷贝输出参数到指定的输出参数地址。的输出参数地址。 局部变量表使用局部变量存储器局部变量表使用局部变量存储器L L,CPUCPU在执行在执行子程序时,自动分配给每个子程序子程序时,自动分配给每个子程序6464个局部变量存个局部变量存储器单元,在进行子程序参数调用时,将调用参数储器单元,在进行子程序参数调用时,将调用参数按照变量类型按照变量类型I

17、NIN,IN/OUTIN/OUT,0UT0UT和和TEMPTEMP的顺序依次的顺序依次存入局部变量表中。存入局部变量表中。5、将参数值指定给子程序中的局部内存时应、将参数值指定给子程序中的局部内存时应遵守下列规则:遵守下列规则: 字节、字和双字数值被指定给局部内存,位于字节、字和双字数值被指定给局部内存,位于字节边界(字节边界(LBx、LWx或或LDx)位置。在带参数的)位置。在带参数的“调用子程序调用子程序”指令中,参数必须与子程序局部变量指令中,参数必须与子程序局部变量表中定义的变量完全匹配。参数顺序必须以输入参数表中定义的变量完全匹配。参数顺序必须以输入参数开始,其次是输入输出参数,然后

18、是输出参数。开始,其次是输入输出参数,然后是输出参数。 一至八个连续位参数值被指定给从一至八个连续位参数值被指定给从Lx.0开始开始持续至持续至Lx.7的单字节。的单字节。 参数值指定给局部内存的顺序由参数值指定给局部内存的顺序由CALL指定,指定,参数从参数从L0.0开始。开始。例:带参数的子程序调用如下所示。例:带参数的子程序调用如下所示。注释:注释:Micro/WIN保留保留L内存的最上方的内存的最上方的4个字节个字节(LB60-LB63),用于调用参数数据。),用于调用参数数据。/ L内存被用于保存布尔输入参数状态,内存被用于保存布尔输入参数状态,/ 此类参数在此类参数在LAD和和FB

19、D中被显示为使能位输入。中被显示为使能位输入。/ 从而允许本网络在从而允许本网络在LAD、FBD和和STL编辑器中显示。编辑器中显示。 名为名为“模拟量计算模拟量计算”的子程序如下图所示,在该子的子程序如下图所示,在该子程序的局部变量表中,定义了名为程序的局部变量表中,定义了名为“转换值转换值”、“系数系数1 1”和和“系数系数”的输入(的输入(ININ)变量,名为)变量,名为“模拟值模拟值”的输的输出(出(OUTOUT)变量,和名为)变量,和名为“暂存暂存”的临时(的临时(TEMPTEMP)变量。)变量。局部变量表最左边的一列是每个参数在局部存储器(局部变量表最左边的一列是每个参数在局部存储

20、器(L L)中的地址。中的地址。 # #表示局部变量,软件自动添加表示局部变量,软件自动添加。如果用语句表编程,子程序调用指令的格式为:如果用语句表编程,子程序调用指令的格式为: CALL 子程序号,参数子程序号,参数1,参数,参数2,参数参数n, n=116。上梯形图对应的语句表程序为:上梯形图对应的语句表程序为:LD I0.1CALL 模拟量计算,模拟量计算,AIW2,VW20,+2356,VD40六、子程序中定时器的使用六、子程序中定时器的使用 调用子程序时,子程序中的定时器正常计时;调用子程序时,子程序中的定时器正常计时;停止调用子程序时,线圈在子程序内的位元件的停止调用子程序时,线圈

21、在子程序内的位元件的ON/OFF状态保持不变。如果在停止调用时子程序状态保持不变。如果在停止调用时子程序中的定时器正在定时,中的定时器正在定时,100ms定时器将停止定时,定时器将停止定时,当前值保持不变,重新调用时继续定时;但当前值保持不变,重新调用时继续定时;但1ms和和10ms定时器将继续定时,定时时间到时,它们的定时器将继续定时,定时时间到时,它们的定时器位变为定时器位变为1状态,且可以在子程序之外起作用。状态,且可以在子程序之外起作用。七、子程序应用举例七、子程序应用举例例例1:用两个子程序分别控制两台电动机的启停,:用两个子程序分别控制两台电动机的启停,主程序中调用子程序实现控制。

22、主程序中调用子程序实现控制。OB1SBR0SBR1方案一:无参数传递方案一:无参数传递OB1方案二:带参数传递方案二:带参数传递LD I0.0= L60.0LD I0.1= L63.7LD I0.2= L63.6LD L60.0CALL SBR_0:SBR0, L63.7, L63.6, Q0.0LD I1.0= L60.0LD I1.1= L63.7LD I1.2= L63.6LD L60.0CALL SBR_0:SBR0, L63.7, L63.6, Q1.0SBR0方案二:带参数传递方案二:带参数传递LD #启动启动:L0.0O #电机电机:L0.2AN #停止停止:L0.1= #电机电

23、机:L0.2例例2:设计一记录设备运行时间的子程序,符号名:设计一记录设备运行时间的子程序,符号名为为“运行时间运行时间”。设备运行时。设备运行时I0.0为为ON,用,用I0.0的的常开触点调用子程序。常开触点调用子程序。OB1SBR0第五节第五节 中断程序及应用中断程序及应用一、中断程序简介一、中断程序简介 中断程序可以为中断程序可以为PLC内部或外部的特殊事件内部或外部的特殊事件提供快速反应,在提供快速反应,在PLC控制系统中,对于不定期控制系统中,对于不定期产生的继续处理事件,常通过采用中断处理技术产生的继续处理事件,常通过采用中断处理技术来完成。来完成。 中断程序不是由程序调用,而是在

24、中断事件中断程序不是由程序调用,而是在中断事件发生时由系统调用。发生时由系统调用。 当当CPU响应中断请求后,会暂时停止当前响应中断请求后,会暂时停止当前正在执行的程序,进行现场保护,然后转到相应正在执行的程序,进行现场保护,然后转到相应的中断服务程序中去处理。的中断服务程序中去处理。 一旦中断程序处理结束,立即恢复现场,将一旦中断程序处理结束,立即恢复现场,将保存起来的现场数据和状态重新装入,返回到源保存起来的现场数据和状态重新装入,返回到源程序继续执行。程序继续执行。 在在S7-200中,中断服务程序的调用和处理由中,中断服务程序的调用和处理由中断指令来完成。一般中断程序都较为短小和简中断

25、指令来完成。一般中断程序都较为短小和简明扼要,这样可以加快中断程序执行的速度,使明扼要,这样可以加快中断程序执行的速度,使其他程序不会受到长时间的延误。其他程序不会受到长时间的延误。二、中断源及中断事件二、中断源及中断事件1、中断源及种类、中断源及种类 中断源中断源,即中断事件发出中断请求的来源。,即中断事件发出中断请求的来源。S7-200PLC具有最多可达具有最多可达34个中断源,每个中断源都分个中断源,每个中断源都分配一个编号用以识别,称为配一个编号用以识别,称为中断事件号中断事件号。这些中断。这些中断源大致分为三大类:源大致分为三大类:通信中断通信中断、输入输出中断输入输出中断和和时时基

26、中断基中断。 S7-200中,过程中断分为通信中断和输入输中,过程中断分为通信中断和输入输出中断。通信中断包括通信口出中断。通信中断包括通信口0和通信口和通信口1产生的中产生的中断;输入输出中断包括外部输入中断、高速计数器断;输入输出中断包括外部输入中断、高速计数器中断和高速脉冲串输出中断。中断和高速脉冲串输出中断。1)通信中断:是指)通信中断:是指S7-200的串行通信口可以通过的串行通信口可以通过梯形图或语句表编程的方法来设置波特率、奇偶校梯形图或语句表编程的方法来设置波特率、奇偶校验和通信协议等参数,对通信口的这种操作方式,验和通信协议等参数,对通信口的这种操作方式,又称为自由口通信。利

27、用接收和发送中断可简化程又称为自由口通信。利用接收和发送中断可简化程序对通信的控制。序对通信的控制。2)外部输入中断:来自过程中断的信息可通过)外部输入中断:来自过程中断的信息可通过I0.0,I0.1,I0.2,I0.3的上升沿或下降沿输入到的上升沿或下降沿输入到PLC中中。3)高速计数器中断:应用高速计数器场合,当其当)高速计数器中断:应用高速计数器场合,当其当前值等于设定值时,或当计数方向发生改变时,或当前值等于设定值时,或当计数方向发生改变时,或当其外部复位时,都可能使其向其外部复位时,都可能使其向CPU提出中断请求。提出中断请求。S7-200中,时基中断分为定时中断和定时器中断。中,时

28、基中断分为定时中断和定时器中断。4)高速脉冲串输出中断:当)高速脉冲串输出中断:当PLC完成输出给定数完成输出给定数量的高速脉冲串时,可引起中断。量的高速脉冲串时,可引起中断。1)定时中断:定时中断响应周期性的事件,周期)定时中断:定时中断响应周期性的事件,周期时间以时间以1ms为计量单位,最小周期为为计量单位,最小周期为5ms,最大周,最大周期为期为255ms。 定时中断有两种类型:定时中断定时中断有两种类型:定时中断0和定时中断和定时中断1。对于定时中断对于定时中断0,把周期时间写入特殊继电器,把周期时间写入特殊继电器SMB34;对于定时中断;对于定时中断1,把周期时间写入特殊继,把周期时

29、间写入特殊继电器电器SMB35。利用定时中断可以设定采样周期,实。利用定时中断可以设定采样周期,实现对模拟量的数据采样。现对模拟量的数据采样。2)定时器中断:定时器中断是利用指定的定时器)定时器中断:定时器中断是利用指定的定时器设定的时间产生中断。在设定的时间产生中断。在S7-200中,指定的定时器中,指定的定时器为为1ms的通电延时定时器的通电延时定时器T32和断电延时定时器和断电延时定时器T96。S7-200的的CPU中可响应最多中可响应最多34个中断事件,见下表。个中断事件,见下表。事件事件号号中断事件描述中断事件描述优先优先级别级别CPU221CPU222CPU224CPU2260I0

30、.0上升边沿中断上升边沿中断2 2Y YY YY YY Y1I0.0下降边沿中断下降边沿中断6 6Y YY YY YY Y2I0.1上升边沿中断上升边沿中断3 3Y YY YY YY Y3I0.1下降边沿中断下降边沿中断7 7Y YY YY YY Y事件事件号号中断事件描述中断事件描述优先优先级别级别CPU221CPU222CPU224CPU2264I0.2上升边沿中断上升边沿中断4 4Y YY YY YY Y5I0.2下降边沿中断下降边沿中断8 8Y YY YY YY Y6I0.3上升边沿中断上升边沿中断6 6Y YY YY YY Y7I0.3下降边沿中断下降边沿中断9 9Y YY YY Y

31、Y Y8端口端口 0:接收字符:接收字符0 0Y YY YY YY Y9端口端口0:传输完成:传输完成0 0Y YY YY YY Y10定时中断定时中断00 0Y YY YY YY Y11定时中断定时中断11 1Y YY YY YY Y12HSC0,CV=PV1010Y YY YY YY Y事件事件号号中断事件描述中断事件描述优先优先级别级别CPU221CPU222CPU224CPU22613HSC1,CV=PV1313Y YY Y14HSC1方向改变方向改变1414Y YY Y15HSC1外部复原外部复原1515Y YY Y16HSC2,CV=PV1616Y YY Y17HSC2方向改变方向

32、改变1717Y YY Y18HSC2外部复原外部复原1818Y YY Y19PTO 0完成中断完成中断0 0Y YY YY YY Y20PTO 1完成中断完成中断1 1Y YY YY YY Y21定时器定时器T32,CT=PT中断中断2 2Y YY YY YY Y事件事件号号中断事件描述中断事件描述优先优先级别级别CPU221CPU222CPU224CPU22622定时器定时器T96,CT=PT中断中断2 2Y YY YY YY Y23端口端口0:接收信息完成:接收信息完成0 0Y YY YY YY Y24端口端口1:接收信息完成:接收信息完成1 1Y Y25端口端口1:接收字符:接收字符1

33、1Y Y26端口端口1:传输完成:传输完成1 1Y Y27HSC0方向改变方向改变1111Y YY YY YY Y28HSC0外部复原外部复原1212Y YY YY YY Y29HSC4,CV=PV2020Y YY YY YY Y30HSC4方向改变方向改变2121Y YY YY YY Y2、中断优先级、中断优先级 中断优先级由高到低依次是:通信中断、输入中断优先级由高到低依次是:通信中断、输入输出中断、时基中断。每种中断中的不同中断事件输出中断、时基中断。每种中断中的不同中断事件又有不同的优先权。又有不同的优先权。 主机中的所有中断事件及优先级参照上表所示。主机中的所有中断事件及优先级参照上

34、表所示。事件事件号号中断事件描述中断事件描述优先优先级别级别CPU221CPU222CPU224CPU22631HSC4外部复原外部复原2222Y YY YY YY Y32HSC3,CV=PV1919Y YY YY YY Y33HSC5,CV=PV2323Y YY YY YY Y 在在PLC中,中,CPU一般在指定的优先级内按照先一般在指定的优先级内按照先来先服务的原则响应中断事件的中断请求,在任何时来先服务的原则响应中断事件的中断请求,在任何时刻,刻,CPU只执行一个中断程序。当只执行一个中断程序。当CPU按照中断优按照中断优先级响应并执行一个中断程序时,就不会响应其他中先级响应并执行一个中

35、断程序时,就不会响应其他中断事件的中断请求(尽管此时可能会有更高级别的中断事件的中断请求(尽管此时可能会有更高级别的中断事件发出中断请求),直到将当前的中断程序执行断事件发出中断请求),直到将当前的中断程序执行结束。在结束。在CPU执行中断程序期间,对新出现的中断执行中断程序期间,对新出现的中断事件仍然按照中断性质和优先级的顺序分别进行排队,事件仍然按照中断性质和优先级的顺序分别进行排队,形成中断队列。形成中断队列。CPU22x系列的中断队列的长度如下系列的中断队列的长度如下表所示。如果超过规定的中断队列长度,则产生溢出,表所示。如果超过规定的中断队列长度,则产生溢出,使特殊继电器置位。使特殊

36、继电器置位。中断队列中断队列CPU221CPU222CPU224CPU226溢出位溢出位通信中断通信中断4个个4个个4个个8个个SM4.0I/O中断中断16个个16个个16个个16个个SM4.1时基中断时基中断8个个8个个8个个8个个SM4.2表中断队列的长度及溢出位表中断队列的长度及溢出位CPU型号型号CPU221CPU222CPU224CPU226可连接中断事件数可连接中断事件数253134可连接中断事件号可连接中断事件号012,1923,2733023,2733033表中断数量及事件表中断数量及事件三、中断程序的相关指令三、中断程序的相关指令 中断允许(中断允许(ENI)指令,全局地开放

37、所有被连接)指令,全局地开放所有被连接的中断事件,允许的中断事件,允许CPU接收所有中断事件。接收所有中断事件。1、中断允许指令中断允许指令ENI和中断禁止指令和中断禁止指令DISI 中断禁止(中断禁止(DISI)指令,全局地关闭所有被连)指令,全局地关闭所有被连接的中断事件,禁止接的中断事件,禁止CPU接收各个中断事件的中断接收各个中断事件的中断请求。请求。 执行执行DISI指令后,出现的中断事件就进入中断指令后,出现的中断事件就进入中断队伍排队等候,直到队伍排队等候,直到ENI指令重新允许中断。指令重新允许中断。 CPU进入进入RUN模式时,系统自动禁止了中断。模式时,系统自动禁止了中断。

38、在在RUN模式执行模式执行ENI指令后,开放所有中断。指令后,开放所有中断。 中断允许指令中断允许指令ENI、中断禁止指令、中断禁止指令DISI以线圈以线圈的形式编程,无操作数。的形式编程,无操作数。2、中断连接指令(中断连接指令(ATCH) 中断连接(中断连接(ATCH)指令,用来建立某个中断事)指令,用来建立某个中断事件(件(EVNT)和某个中断程序()和某个中断程序(INT)之间的联系。)之间的联系。并允许这个中断事件。并允许这个中断事件。 在调用一个中断程序前,必须用中断连接指令,在调用一个中断程序前,必须用中断连接指令,建立某中断事件与中断程序的连接,当把某个中断事建立某中断事件与中

39、断程序的连接,当把某个中断事件和中断程序建立连接后,该中断事件发生时会自动件和中断程序建立连接后,该中断事件发生时会自动 执行中断。执行中断。多个中断事件可调用同一个中断程序,但多个中断事件可调用同一个中断程序,但一个中断事件不能同时与多个中断程序建立连接,否一个中断事件不能同时与多个中断程序建立连接,否则,在中断允许且某个中断事件发生时,系统默认执则,在中断允许且某个中断事件发生时,系统默认执行与该事件建立连接的最后一个中断程序。行与该事件建立连接的最后一个中断程序。3、中断分离指令(中断分离指令(DTCH) 中断分离(中断分离(DTCH)指令,用来解除某个中断事)指令,用来解除某个中断事件

40、(件(EVNT)和某个中断程序之间的联系,并禁止该)和某个中断程序之间的联系,并禁止该中断事件。指令操作数中断事件。指令操作数EVNT的数据类型均为的数据类型均为BYTE。 可以用可以用DTCH指令截断中断事件和中断程序之间指令截断中断事件和中断程序之间的联系,以单独禁止某中断事件。的联系,以单独禁止某中断事件。DTCH指令使中断指令使中断回到不激活或无效状态。回到不激活或无效状态。4、中断中断返回返回指令(指令(RETI)、(、(CRETI) 中断返回指令的功能是,当中断结束时,通过中断返回指令的功能是,当中断结束时,通过中断返回指令退出中断服务程序,返回到主程序。中断返回指令退出中断服务程

41、序,返回到主程序。RETI是无条件返回指令,是无条件返回指令,CRETI是有条件返回指令。是有条件返回指令。指令使用举例:指令使用举例:程序实现的功能是程序实现的功能是调用调用I0.1输入点的输入点的上升沿中断,若上升沿中断,若发现发现I/O错误,则错误,则禁止本中断,用禁止本中断,用外部条件可以禁外部条件可以禁止全局中断。止全局中断。四、中断应用举例四、中断应用举例例例1:利用定时中断指令实现对模拟量的等间隔采样:利用定时中断指令实现对模拟量的等间隔采样OB1:LD SM0.1CALL SBR_0:SBR0SBR0:LD SM0.0MOVB 100, SMB34ATCH INT_0:INT0

42、, 10ENIINT0:LD SM0.0MOVW AIW4, VW100例例2:在:在I0.0的上升沿通过中断使的上升沿通过中断使Q0.0立即置位;在立即置位;在I0.1的下降沿通过中断使的下降沿通过中断使Q0.0立即复位。立即复位。/主程序主程序OB1LD SM0.1 /第一次扫描时第一次扫描时ATCH INT_0,0 /I0.0上升沿执行上升沿执行0号中断程序号中断程序ATCH INT_1,3 /I0.1下降沿执行下降沿执行1号中断程序号中断程序ENI /允许全局中断允许全局中断/中断程序中断程序0(INT_0)LD SM0.0 /常常ONSI Q0.0,1 /使使Q0.0立即置位立即置位

43、/中断程序中断程序1(INT_1)LD SM0.0RI Q0.0,1 /使使Q0.0立即复位立即复位例例3:定时中断的定时时间最长为:定时中断的定时时间最长为255ms,如何用定,如何用定时中断时中断1实现周期为实现周期为2s的高精度定时?的高精度定时?/主程序主程序OB1LD SM0.1 /第一次扫描时第一次扫描时MOVB 0,VB10 /中断次数计数器清零中断次数计数器清零MOVB 250,SMB34 /设定中断设定中断0时间间隔为时间间隔为250msATCH INT_0,10 /指定定时中断指定定时中断0执行执行0号中断程序号中断程序ENI /允许全局中断允许全局中断/中断程序中断程序0

44、(INT_0),每隔),每隔250ms中断一次中断一次LD SM0.0 /常常ONINCB VB10 /中断次数计数器加中断次数计数器加1LDB= 8,VB10 /比较,如果中断比较,如果中断8次(次(2s)MOVB 0,VB10 /中断次数计数器清零中断次数计数器清零INCB QB0 /每每2s将将QB0加加1例例4:出现事故时,:出现事故时,I0.0的上升沿产生中断,使输的上升沿产生中断,使输出出Q1.0立即置位,同时将事故发生的日期和时间立即置位,同时将事故发生的日期和时间保存在保存在VB10VB17中。中。/主程序主程序OB1LD SM0.1 /第一次扫描第一次扫描ATCH 0,0 /

45、指定在指定在I0.0上升沿上升沿 /执行中断程序执行中断程序0ENI /开中断开中断/中断程序中断程序INT0LD SM0.0SI Q1.0,1 /使使Q1.0立即置位立即置位TODR VB10 /读实时时钟读实时时钟例例5:使用定时中断的彩灯控制程序,控制:使用定时中断的彩灯控制程序,控制8个彩个彩灯循环左移。灯循环左移。 定时中断定时中断0的中断号为的中断号为10,SMB34中的定时时中的定时时间为间为1255ms。彩灯移位的延时时间一般大于。彩灯移位的延时时间一般大于255ms,将中断的时间间隔设为,将中断的时间间隔设为250ms,用,用VB0做做中断次数计数器,在中断服务程序中将中断次

46、数计数器,在中断服务程序中将VB0加加1,然,然后用比较触点指令判断后用比较触点指令判断VB0是否等于设置的次数是否等于设置的次数N。若相等则将若相等则将QB0循环左移一位,同时循环左移一位,同时VB0清零。移清零。移位时间间隔为位时间间隔为0.25N(s)。)。主程序主程序OB1LD SM0.1CALL SBR_0:SBR0子程序子程序SBR0LD SM0.0MOVB 16#07, QB0MOVB 0, VB0MOVB 250, SMB34ATCH INT_0:INT0, 10ENI中断程序中断程序INT0LD SM0.0INCB VB0LDB= VB0, 4RLB QB0, 1MOVB 0

47、, VB0例例6:使用:使用T32中断的彩灯控制程序,控制中断的彩灯控制程序,控制8个彩个彩灯循环左移。灯循环左移。 1ms定时器定时器T32和和T96的定时时间到时可以产生的定时时间到时可以产生中断,中断号分别为中断,中断号分别为21和和22,最长定时时间为,最长定时时间为32.767s。对于分辨率为。对于分辨率为1ms和和10ms的定时器,不的定时器,不能使用定时器本身触点作为自复位控制,应使用下能使用定时器本身触点作为自复位控制,应使用下面主程序方法。面主程序方法。主程序主程序OB1LD SM0.1CALL SBR_0:SBR0LDN M0.0TON T32, +500LD T32= M

48、0.0子程序子程序SBR0LD SM0.0MOVB 7, QB0ATCH INT_0:INT0, 21ENI中断程序中断程序INT0LD SM0.0RLB QB0, 1总总 结结(1)中断程序构成)中断程序构成 中断程序必须由三部分构成:中断程序标号、中断程序必须由三部分构成:中断程序标号、中断程序指令和无条件返回指令。中断程序指令和无条件返回指令。(2)编程要求)编程要求用中断程序的标号来区别每个中断程序。用中断程序的标号来区别每个中断程序。中断服务程序越短越好,以减少中断程序执行时间。中断服务程序越短越好,以减少中断程序执行时间。在中断程序中不能使用在中断程序中不能使用ENIENI、DIS

49、IDISI、HDEFHDEF、LSCRLSCR、ENDEND指令。指令。中断服务程序的最后一条指令一定是中断服务程序的最后一条指令一定是RETIRETI或或CRETICRETI(其中(其中RETIRETI指令会由编程软件自动添加)。指令会由编程软件自动添加)。第六节第六节 高速计数器功能及应用高速计数器功能及应用一、高速计数器概述一、高速计数器概述 PLC的普通计数器的计数过程与扫描工作方式的普通计数器的计数过程与扫描工作方式有关,有关,CPU通过每一个扫描周期读取一次被测信号通过每一个扫描周期读取一次被测信号的方法来捕捉被测信号的上升沿,被测信号的频率的方法来捕捉被测信号的上升沿,被测信号的

50、频率较高时,会丢失计数脉冲,因此普通计数器的工作较高时,会丢失计数脉冲,因此普通计数器的工作频率很低,一般仅有几十赫兹。高速计数器可以对频率很低,一般仅有几十赫兹。高速计数器可以对普通计数器无能为力的事件进行计数,普通计数器无能为力的事件进行计数,S7-200有有6个高速计数器个高速计数器HSC0HSC5,可以设置多达,可以设置多达12中不中不同的操作模式。同的操作模式。1、高速计数器的数量及编号、高速计数器的数量及编号 高速计数器在程序中使用时的地址编号用高速计数器在程序中使用时的地址编号用HSCn来表示,来表示,HSC表编程元件名称为高速计数器,表编程元件名称为高速计数器,n(n=05)为

51、编号。为编号。 每个高速计数器的计数结果都对应有一个当前值寄存器。每个高速计数器的计数结果都对应有一个当前值寄存器。编程时可通过地址编程时可通过地址HCx(x=05)来读取高速计数器的当前值。)来读取高速计数器的当前值。不同型号的不同型号的PLC主机,高速计数器的数量对应如下表所示。主机,高速计数器的数量对应如下表所示。2、高速计数器的外部输入信号、高速计数器的外部输入信号 每个高速计数器对它所支持的时钟、方向控每个高速计数器对它所支持的时钟、方向控制、复位和启动都有专用的输入点,通过中断控制制、复位和启动都有专用的输入点,通过中断控制完成预定的操作。每个高速计数器所需的外部输入完成预定的操作

52、。每个高速计数器所需的外部输入点如下图所示。点如下图所示。3、高速计数器相关的中断事件、高速计数器相关的中断事件 高速计数器的计数和动作可采用中断方式进行高速计数器的计数和动作可采用中断方式进行控制,与控制,与CPU的扫描周期关系不大,各种型号的的扫描周期关系不大,各种型号的PLC可用的高速计数器的中断事件大致分为可用的高速计数器的中断事件大致分为3类:类:当前值等于预设值中断当前值等于预设值中断、输入方向改变中断输入方向改变中断和和外部外部复位中断复位中断。所有高速计数器都支持当前值等于预设。所有高速计数器都支持当前值等于预设值中断。值中断。 每个高速计数器的每个高速计数器的3种中断的优先级

53、由高到低,种中断的优先级由高到低,不同高速计数器之间的优先级又按编号顺序由高到不同高速计数器之间的优先级又按编号顺序由高到低。具体对应关系如下表所示。低。具体对应关系如下表所示。高速计高速计数器数器当前值当前值=预设值中断预设值中断计数方向改变中断计数方向改变中断外部信号复位中断外部信号复位中断事件号事件号优先级优先级事件号事件号优先级优先级事件号事件号优先级优先级HSC0121027112812HSC1131314141515HSC2161617171818HSC33219无无无无无无无无HSC4292030213122HSC53323无无无无无无无无4、高速计数器的状态字节与控制字节、高速

54、计数器的状态字节与控制字节 在特殊存储器(在特殊存储器(SM)区,每个高速计数器都)区,每个高速计数器都有一个状态字节、一个设置参数用的控制字节、一有一个状态字节、一个设置参数用的控制字节、一个个32位预置值寄存器和一个位预置值寄存器和一个32位当前值寄存器。位当前值寄存器。 状态字节给出了当前计数方向和当前值是否大状态字节给出了当前计数方向和当前值是否大于或等于预置值等信息。只有在执行高速计数器的于或等于预置值等信息。只有在执行高速计数器的中断程序时,状态位才有效。中断程序时,状态位才有效。 控制字节的各位用来设置高速计数器的属性。控制字节的各位用来设置高速计数器的属性。高速计数器的状态字节

55、表高速计数器的状态字节表HSC0HSC1HSC2HSC3HSC4HSC5描描 述述SM36.0 SM46.0 SM56.0SM136.0SM146.0SM156.0不用不用SM36.1 SM46.1 SM56.1SM136.1SM146.1SM156.1不用不用SM36.2 SM46.2 SM56.2SM136.2SM146.2SM156.2不用不用SM36.3 SM46.3 SM56.3SM136.3SM146.3SM156.3不用不用SM36.4 SM46.4 SM56.4SM136.4SM146.4SM156.4不用不用SM36.5 SM46.5 SM56.5SM136.5SM146.5

56、SM156.5计数方向状态计数方向状态0减;减;1增增SM36.6 SM46.6 SM56.6SM136.6SM146.6SM156.6当前值当前值=设定值设定值0;1=SM36.7 SM46.7 SM56.7SM136.7SM146.7SM156.7当前值当前值设定值设定值0;1高速计数器的控制字节表高速计数器的控制字节表高速计数器的当前值和设定值寄存器高速计数器的当前值和设定值寄存器二、高速计数器的工作模式二、高速计数器的工作模式 S7-200的高速计数器有的高速计数器有4类工作模式,共有类工作模式,共有12种。每个模种。每个模式各有不同,可通过编程,使用定义高速计数器指令式各有不同,可通

57、过编程,使用定义高速计数器指令HDEF来来选定工作模式。选定工作模式。1、高速计数器的工作模式、高速计数器的工作模式2、高速计数器的工作模式说明、高速计数器的工作模式说明 从各个高速计数器的工作模式的描述可知:从各个高速计数器的工作模式的描述可知:6个个高速计数器具有不完全相同的功能,最多可能有高速计数器具有不完全相同的功能,最多可能有12种种工作模式,可分为四种类型。下面以工作模式,可分为四种类型。下面以HC1的工作模式的工作模式为例加以说明。为例加以说明。具有内部方向控制的单相增具有内部方向控制的单相增/ /减计数器(模式减计数器(模式02) 用高速计数器的控制字节的第用高速计数器的控制字

58、节的第3位来控制加计数位来控制加计数或减计数。该位为或减计数。该位为1时为加计数,为时为加计数,为0时为减计数。时为减计数。具有外部方向控制的单相增具有外部方向控制的单相增/ /减计数器(模式减计数器(模式35) 方向输入信号为方向输入信号为1时为加计数,为时为加计数,为0时为减计数。时为减计数。具有增具有增/ /减计数脉冲输入的双向计数器(模式减计数脉冲输入的双向计数器(模式68) 若加计数脉冲和减计数脉冲的上升沿出现的时若加计数脉冲和减计数脉冲的上升沿出现的时间间隔不到间间隔不到0.3ms,高速计数器认为这两个事件是同,高速计数器认为这两个事件是同时发生的,当前值不变,也不会有计数方向变化

59、的指时发生的,当前值不变,也不会有计数方向变化的指示。反之,高速计数器能捕捉到每一个独立事件。示。反之,高速计数器能捕捉到每一个独立事件。A/BA/B相正交计数器(模式相正交计数器(模式911) 正交:是指正交:是指A、B两相输入脉冲相位互差两相输入脉冲相位互差90。当当A相脉冲超前相脉冲超前B相脉冲相脉冲90时,计数为增计数;时,计数为增计数;当当A相脉冲滞后相脉冲滞后B相脉冲相脉冲90时,计数为减计数。时,计数为减计数。 正交计数器有两种工作状态:正交计数器有两种工作状态: 一种是输入一种是输入1个计数脉冲时,当前值计个计数脉冲时,当前值计1个数,此个数,此时的计数倍率为时的计数倍率为1。

60、 另一种工作状态是输入另一种工作状态是输入1个计数脉冲时,当前值个计数脉冲时,当前值计计4个数,此时的计数倍率为个数,此时的计数倍率为4。1倍率正交计数器时序图倍率正交计数器时序图4倍率正交计数器时序图倍率正交计数器时序图三、高速计数器指令三、高速计数器指令1、高速计数器定义指令、高速计数器定义指令HDEF 使能输入有效时,为指定的高速计数器分配一种使能输入有效时,为指定的高速计数器分配一种工作模式,即用来建立高速计数器与工作模式之间的工作模式,即用来建立高速计数器与工作模式之间的联系。梯形图指令盒中有两个数据输入端:联系。梯形图指令盒中有两个数据输入端:HSC,高速计数器编号,为,高速计数器

温馨提示

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

最新文档

评论

0/150

提交评论