第六章S7 200PLC功能指令二课件.ppt
《第六章S7 200PLC功能指令二课件.ppt》由会员分享,可在线阅读,更多相关《第六章S7 200PLC功能指令二课件.ppt(160页珍藏版)》请在三一办公上搜索。
1、第六章S7-200PLC功能指令,主讲:李宏伟,4:子程序及应用,5:中断程序及应用,6:高速计数器功能及应用,7:高速脉冲输出功能及应用,第四节 子程序及应用,一、子程序简介,子程序可以对程序 进行分块,使用子程序将程序分成容易管理的小块,使程序结构简单清晰,易于查错和维护。,子程序常用于需要多次反复执行相同任务的地方,只需要写一次子程序,别的程序在需要的时候调用它,而无需重写该程序。,子程序的调用是有条件的,未调用它时不会执行子程序中的指令,因此使用子程序可以减少扫描时间。,S7-200 CPU的控制程序由主程序、子程序和中断程序组成。STEP7-Micro/WIN在程序编辑器窗口里为每个
2、POU(程序组织单元)提供一个独立的页。主程序总是第1页,后面是子程序和中断程序。,各个程序在编辑器窗口里被分开,编译时在程序结束的地方自动加上无条件结束/返回指令,用户程序可使用有条件结束/返回指令。,二、局部变量表,1、局部变量与全局变量,在SIMATIC符号表或IEC的全局变量表中定义的变量为全局变量。程序中的每个POU(Program Organizational Unit,程序组织单元)均有自己的由64B L存储器组成的局部变量表。它们用来定义有范围限制的变量,局部变量只在它被创建的POU中有效。与之相反,全局符号在各POU中均有效,只能在符号表/全局变量表中定义。全局符号与局部变量
3、名称相同时,在定义局部变量的POU中,该局部变量的定义优先,该全局定义则在其它POU中使用。,局部变量优点:,在子程序中只用局部变量,不用绝对地址或全局符号,子程序可以移植到别的项目去。,如果使用临时变量(TEMP),同一片物理存储器可以在不同的程序中重复使用。,局部变量还用来在子程序和调用它的程序之间传递输入参数和输出参数。,2、局部变量的类型,局部变量表中的变量类型区定义的变量有:,IN:传入子程序参数,由调用它的POU提供的输入参数。,OUT:传出子程序参数,将从子程序来的结果值返回到指定参数的位置。,IN/OUT:传入/传出子程序参数。,TEMP:暂时变量,只能在子程序内部暂时存储数据
4、。不能用来传递参数。,注意:,只有在执行该POU时,定义的临时变量才被使用,POU执行完后,不再使用临时变量的数值。在主程序或中断程序中,局部变量表只包含TEMP变量。,3、局部变量的赋值,在局部变量表中赋值时,只需指定局部变量的类型(TEMP、IN、IN_OUT或OUT)和数据类型,不用指定存储器地址,程序编辑器按照子程序指令的调用顺序,将参数值分配给局部变量存储器,起始地址是L0.0;8个连续位的参数值分配一个字节,从LX.0到LX.7。,4、在局部变量表中增加新的变量,对于主程序与中断程序,局部变量表显示一组已被预先定义为TEMP变量的行。要在表中增加行,只需用右键单击表中的某一行,在弹
5、出的菜单中执行“插入”“行”命令,在所选行的上部插入新的行。执行菜单命令“插入”“下一行” 在所选行的下部插入新的行。 对于子程序,局部变量表显示数据类型被预先定义为IN、IN_OUT、OUT和TEMP的一系列行,不能改变它们的顺序。如果要增加新的局部变量,必须用鼠标右键单击已有的行,并用弹出菜单在所击行的上面或下面插入相同类型的另一局部变量。,5、局部变量数据类型检查,局部变量作为参数向子程序传递时,在该子程序的局部变量表中指定的数据类型必须与调用它的POU中的数据类型值匹配。,例如:在主程序OB1中调用子程序SBR0,使用名为INPUT1的全局符号作为子程序的输入参数。在SBR0的局部变量
6、表中,已经定义了一个名为FIRST的局部变量作为该输入参数。当OB1调用SBR0时,INPUT1的数值被传入FIRST,INPUT1和FIRST的数据类型必须完全匹配。,三、建立子程序,在“编辑”菜单中执行命令“插入”“子程序”;,在程序编辑器视窗中点击鼠标右键,从弹出的菜单中执行命令“插入”“子程序”;,新建的子程序,默认的程序名是SBR_n,编号n从0(063)开始按递增顺序生成。用鼠标右键点击指令树中的子程序的图标,在弹出的菜单中选择“重新命名”,可以修改它们的名称。注意:CPU226的项目中最多可以创建128个子程序。,四、子程序的调用(CALL指令),可以带参数或不带参数调用子程序。
7、每个子程序必须以无条件返回(RET)指令作结束,STEP7-Micio/WIN编程软件为每个子程序自动加入无条件返回(RET)指令。有条件子程序返回(CRET)指令,在控制条件有效时,终止子程序(n)。子程序执行完毕,控制程序回到主程序中子程序调用(CALL)指令的下一条指令。,主程序可以用子程序调用(CALL)指令来调用一个子程序。子程序调用(CALL)指令把程序控制权交给子程序(n)。子程序结束后,必须返回主程序。,子程序被调用时,系统会保存当前的逻辑堆栈。保存后再置栈顶值为1,堆栈的其他值为零,把控制权交给被调用的子程序。子程序执行完毕,通过返回指令自动恢复逻辑堆栈原调用点的值,把控制权
8、交还给调用程序。,因为累加器可在调用程序和被调用程序之间自由传递数据,所以累加器的值在子程序调用开始时不需要另外保存,在子程序调用结束时也不用恢复。,说明:,在中断程序、子程序中也可调用子程序;主程序中可以嵌套调用子程序,嵌套深度为8层。中断程序中,不能嵌套调用子程序。,五、带参数子程序的调用,1、子程序参数,由不超过23个字符的字母和数字组成,但第一个字符必须是字母。,2、变量名,在子程序带参数调用时可以使用4种变量类型。,3、变量类型,IN类型(传入子程序)IN/OUT类型(传入传出子程序)OUT类型(传出子程序)TEMP类型(暂时型),子程序在带参数调用时,最多可以带16个参数,每个参数
9、包含变量名、变量类型和数据类型。这些参数在子程序的局部变量表中进行定义。,4、使用局部变量表,当给子程序传递数据时,这些参数被存放在子程序的局部变量存储器中,当调用子程序时,输入参数被拷贝到子程序的局部变量存储器中,当子程序完成时,从局部变量存储器拷贝输出参数到指定的输出参数地址。,局部变量表使用局部变量存储器L,CPU在执行子程序时,自动分配给每个子程序64个局部变量存储器单元,在进行子程序参数调用时,将调用参数按照变量类型IN,IN/OUT,0UT和TEMP的顺序依次存入局部变量表中。,5、将参数值指定给子程序中的局部内存时应遵守下列规则:,字节、字和双字数值被指定给局部内存,位于字节边界
10、(LBx、LWx或LDx)位置。在带参数的“调用子程序”指令中,参数必须与子程序局部变量表中定义的变量完全匹配。参数顺序必须以输入参数开始,其次是输入输出参数,然后是输出参数。,一至八个连续位参数值被指定给从Lx.0开始持续至Lx.7的单字节。,参数值指定给局部内存的顺序由CALL指定,参数从L0.0开始。,例:带参数的子程序调用如下所示。,注释:Micro/WIN保留L内存的最上方的4个字节(LB60-LB63),用于调用参数数据。,/ L内存被用于保存布尔输入参数状态,/ 此类参数在LAD和FBD中被显示为使能位输入。/ 从而允许本网络在LAD、FBD和STL编辑器中显示。,名为“模拟量计
11、算”的子程序如下图所示,在该子程序的局部变量表中,定义了名为“转换值”、“系数1”和“系数”的输入(IN)变量,名为“模拟值”的输出(OUT)变量,和名为“暂存”的临时(TEMP)变量。局部变量表最左边的一列是每个参数在局部存储器(L)中的地址。 #表示局部变量,软件自动添加。,如果用语句表编程,子程序调用指令的格式为: CALL 子程序号,参数1,参数2,参数n, n=116。上梯形图对应的语句表程序为:LD I0.1CALL 模拟量计算,AIW2,VW20,+2356,VD40,六、子程序中定时器的使用,调用子程序时,子程序中的定时器正常计时;停止调用子程序时,线圈在子程序内的位元件的ON
12、/OFF状态保持不变。如果在停止调用时子程序中的定时器正在定时,100ms定时器将停止定时,当前值保持不变,重新调用时继续定时;但1ms和10ms定时器将继续定时,定时时间到时,它们的定时器位变为1状态,且可以在子程序之外起作用。,七、子程序应用举例,例1:用两个子程序分别控制两台电动机的启停,主程序中调用子程序实现控制。,OB1,SBR0,SBR1,方案一:无参数传递,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.0
13、LD I1.1= L63.7LD I1.2= L63.6LD L60.0CALL SBR_0:SBR0, L63.7, L63.6, Q1.0,SBR0,方案二:带参数传递,LD #启动:L0.0O #电机:L0.2AN #停止:L0.1= #电机:L0.2,例2:设计一记录设备运行时间的子程序,符号名为“运行时间”。设备运行时I0.0为ON,用I0.0的常开触点调用子程序。,OB1,SBR0,第五节 中断程序及应用,一、中断程序简介,中断程序可以为PLC内部或外部的特殊事件提供快速反应,在PLC控制系统中,对于不定期产生的继续处理事件,常通过采用中断处理技术来完成。,中断程序不是由程序调用,
14、而是在中断事件发生时由系统调用。,当CPU响应中断请求后,会暂时停止当前正在执行的程序,进行现场保护,然后转到相应的中断服务程序中去处理。,一旦中断程序处理结束,立即恢复现场,将保存起来的现场数据和状态重新装入,返回到源程序继续执行。,在S7-200中,中断服务程序的调用和处理由中断指令来完成。一般中断程序都较为短小和简明扼要,这样可以加快中断程序执行的速度,使其他程序不会受到长时间的延误。,二、中断源及中断事件,1、中断源及种类,中断源,即中断事件发出中断请求的来源。S7-200PLC具有最多可达34个中断源,每个中断源都分配一个编号用以识别,称为中断事件号。这些中断源大致分为三大类:通信中
15、断、输入输出中断和时基中断。,S7-200中,过程中断分为通信中断和输入输出中断。通信中断包括通信口0和通信口1产生的中断;输入输出中断包括外部输入中断、高速计数器中断和高速脉冲串输出中断。,1)通信中断:是指S7-200的串行通信口可以通过梯形图或语句表编程的方法来设置波特率、奇偶校验和通信协议等参数,对通信口的这种操作方式,又称为自由口通信。利用接收和发送中断可简化程序对通信的控制。,2)外部输入中断:来自过程中断的信息可通过I0.0,I0.1,I0.2,I0.3的上升沿或下降沿输入到PLC中。,3)高速计数器中断:应用高速计数器场合,当其当前值等于设定值时,或当计数方向发生改变时,或当其
16、外部复位时,都可能使其向CPU提出中断请求。,S7-200中,时基中断分为定时中断和定时器中断。,4)高速脉冲串输出中断:当PLC完成输出给定数量的高速脉冲串时,可引起中断。,1)定时中断:定时中断响应周期性的事件,周期时间以1ms为计量单位,最小周期为5ms,最大周期为255ms。,定时中断有两种类型:定时中断0和定时中断1。对于定时中断0,把周期时间写入特殊继电器SMB34;对于定时中断1,把周期时间写入特殊继电器SMB35。利用定时中断可以设定采样周期,实现对模拟量的数据采样。,2)定时器中断:定时器中断是利用指定的定时器设定的时间产生中断。在S7-200中,指定的定时器为1ms的通电延
17、时定时器T32和断电延时定时器T96。,S7-200的CPU中可响应最多34个中断事件,见下表。,2、中断优先级 中断优先级由高到低依次是:通信中断、输入输出中断、时基中断。每种中断中的不同中断事件又有不同的优先权。 主机中的所有中断事件及优先级参照上表所示。,在PLC中,CPU一般在指定的优先级内按照先来先服务的原则响应中断事件的中断请求,在任何时刻,CPU只执行一个中断程序。当CPU按照中断优先级响应并执行一个中断程序时,就不会响应其他中断事件的中断请求(尽管此时可能会有更高级别的中断事件发出中断请求),直到将当前的中断程序执行结束。在CPU执行中断程序期间,对新出现的中断事件仍然按照中断
18、性质和优先级的顺序分别进行排队,形成中断队列。CPU22x系列的中断队列的长度如下表所示。如果超过规定的中断队列长度,则产生溢出,使特殊继电器置位。,表中断队列的长度及溢出位,表中断数量及事件,三、中断程序的相关指令,中断允许(ENI)指令,全局地开放所有被连接的中断事件,允许CPU接收所有中断事件。,1、中断允许指令ENI和中断禁止指令DISI,中断禁止(DISI)指令,全局地关闭所有被连接的中断事件,禁止CPU接收各个中断事件的中断请求。,执行DISI指令后,出现的中断事件就进入中断队伍排队等候,直到ENI指令重新允许中断。,CPU进入RUN模式时,系统自动禁止了中断。在RUN模式执行EN
19、I指令后,开放所有中断。,中断允许指令ENI、中断禁止指令DISI以线圈的形式编程,无操作数。,2、中断连接指令(ATCH),中断连接(ATCH)指令,用来建立某个中断事件(EVNT)和某个中断程序(INT)之间的联系。并允许这个中断事件。,在调用一个中断程序前,必须用中断连接指令,建立某中断事件与中断程序的连接,当把某个中断事件和中断程序建立连接后,该中断事件发生时会自动 执行中断。多个中断事件可调用同一个中断程序,但一个中断事件不能同时与多个中断程序建立连接,否则,在中断允许且某个中断事件发生时,系统默认执行与该事件建立连接的最后一个中断程序。,3、中断分离指令(DTCH),中断分离(DT
20、CH)指令,用来解除某个中断事件(EVNT)和某个中断程序之间的联系,并禁止该中断事件。指令操作数EVNT的数据类型均为BYTE。,可以用DTCH指令截断中断事件和中断程序之间的联系,以单独禁止某中断事件。DTCH指令使中断回到不激活或无效状态。,4、中断返回指令(RETI)、(CRETI),中断返回指令的功能是,当中断结束时,通过中断返回指令退出中断服务程序,返回到主程序。RETI是无条件返回指令,CRETI是有条件返回指令。,指令使用举例:程序实现的功能是调用I0.1输入点的上升沿中断,若发现I/O错误,则禁止本中断,用外部条件可以禁止全局中断。,四、中断应用举例,例1:利用定时中断指令实
21、现对模拟量的等间隔采样,OB1:LD SM0.1CALL SBR_0:SBR0SBR0:LD SM0.0MOVB 100, SMB34ATCH INT_0:INT0, 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 /使Q
22、0.0立即置位/中断程序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(INT_0),每隔250ms中断一次LD SM0.0 /常ONINCB VB10 /中断次数计数器加1LDB= 8,VB10 /比较,如果中断8次(2s)MOVB 0
23、,VB10 /中断次数计数器清零INCB QB0 /每2s将QB0加1,例4:出现事故时,I0.0的上升沿产生中断,使输出Q1.0立即置位,同时将事故发生的日期和时间保存在VB10VB17中。,/主程序OB1LD SM0.1 /第一次扫描ATCH 0,0 /指定在I0.0上升沿 /执行中断程序0ENI /开中断/中断程序INT0LD SM0.0SI Q1.0,1 /使Q1.0立即置位TODR VB10 /读实时时钟,例5:使用定时中断的彩灯控制程序,控制8个彩灯循环左移。,定时中断0的中断号为10,SMB34中的定时时间为1255ms。彩灯移位的延时时间一般大于255ms,将中断的时间间隔设为
24、250ms,用VB0做中断次数计数器,在中断服务程序中将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, VB0,例6:使用T32中断的彩灯控制程序,控制8个彩灯循环左移。,1ms定时器
25、T32和T96的定时时间到时可以产生中断,中断号分别为21和22,最长定时时间为32.767s。对于分辨率为1ms和10ms的定时器,不能使用定时器本身触点作为自复位控制,应使用下面主程序方法。,主程序OB1LD SM0.1CALL SBR_0:SBR0LDN M0.0TON T32, +500LD T32= M0.0,子程序SBR0LD SM0.0MOVB 7, QB0ATCH INT_0:INT0, 21ENI中断程序INT0LD SM0.0RLB QB0, 1,总 结,(1)中断程序构成 中断程序必须由三部分构成:中断程序标号、中断程序指令和无条件返回指令。,(2)编程要求用中断程序的标
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第六章S7 200PLC功能指令二课件 第六 S7 200 PLC 功能 指令 课件
链接地址:https://www.31ppt.com/p-1816460.html