您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 第07章中断及高速处理指令.
第7章中断及高速处理指令7.1中断程序与中断指令所谓中断,是当控制系统执行正常程序时,系统中出现了某些急需处理的异常情况或特殊请求,这时系统暂时中断现行程序,转去对随机发生的更紧迫事件进行处理(执行中断服务程序),当该事件处理完毕后,系统自动回到原来被中断的程序继续执行。7.1.1中断程序•中断程序必须由三部分构成:中断程序标号(即中断事件的编号)、中断程序指令和无条件返回指令。•在中断程序中不能使用DISI、ENI、HDEF、LSCR和END指令。•在主程序和中断程序之间正确共享数据的编程技巧有以下3条:•(1)STL程序共享单个变量•(2)LAD程序共享单个变量•(3)STL或LAD程序共享多个变量7.1.2中断指令各种中断指令的LAD指令格式如图7-1所示。LAD指令名称及STL指令格式如表7-1所示,指令的有效操作数见表7-2。ENINTENOATCHEVNT图7-1中断指令的LAD指令格式ENEVNTENODTCHENEVNTENOCLR_EVNTENIDISIRETI表7-1中断指令的LAD名称及STL指令格式LADSTL描述RETICRETI从中断程序有条件返回ENIENI允许中断DISIDISI禁止中断ATCHATCHINT,EVNT连接中断事件和中断程序DTCHDTCHEVNT断开中断事件和中断程序的连接CLR_EVNTCEVNTEVNT消除中断事件表7-2中断指令的有效操作数输入/输出数据类型操作数范围INBYTE常数(0~27)EVNTBYTE常数CPU221和CPU222:0~12,19~23和27~33CPU224:0~23和27~33CPU224XP和CPU226:0~331.全局性的中断允许指令与中断禁止指令•中断允许指令(ENI,EnableInterrupt)全局性地允许所有被连接的中断事件。•禁止中断指令(DISI,DisableInterrupt)全局性地禁止处理所有中断事件,允许中断排队等候,但是不允许执行中断程序,直到用全局中断允许指令ENI重新允许中断。•进入RUN模式时自动禁止中断。•中断程序有条件返回指令(CRETI,conditionalReturnfromInterrupt)在控制它的逻辑条件满足时从中断程序返回。2.中断连接指令与中断分离指令•中断连接指令(ATCH,AttachInterrupt)用来建立中断事件EVNT(由中断事件号指定)和处理此事件的中断程序INT(由中断程序号指定)之间的联系,并使能该中断事件。•中断分离指令(DTCH,DetachInterrupt)用来断开中断事件(EVNT)与中断程序(INT)之间的联系,并禁止该中断事件。•消除中断事件指令(CEVNT,ClearEvent)从中断队列中清除所有EVNT类型的中断事件。7.1.3中断源•1.中断源及种类中断源是中断事件向PLC发出中断请求的来源。S7-200CPU最多可以有34个中断源,这些中断源大致分为三大类:通信口中断、输入/输出(I/O)中断和时基中断。(1)通信口中断(2)I/O中断I/O中断包括上升沿中断或下降沿中断、高速计数器(HSC)中断和脉冲串输出(PTO)中断。CPU可用输入点I0.0~I0.3的上升沿或下降沿产生中断。【例7-1】在I0.0的上升沿通过中断使Q0.0立即置位。在I0.1的下降沿通过中断使Q0.0立即复位。程序设计如图7-2所示。图7-2I/O中断应用OB1主程序网络1LDSM0.1//首次扫描时为1ATCHINT_0,0//定义I0.0的上升沿中断程序为INT_0ATCHINT_1,3//连接INT_1到I0.1的下降沿中断(事件3)ENI//允许全局中断网络2LDSM5.0//I/O错误标志位DTCH0//禁止I0.0的上升沿中断网络3//当M5.0接通时,禁止所有中端LDM5.0DISI中断程序0(INT_0)网络1LDSM0.0//总为ONSIQ0.0,1//使Q0.0立即置位中断程序1(INT_1)网络1LDSM0.0RIQ0.0,1//使Q0.0立即复位SM0.1OB1主程序网络1SM0.0中断程序0(INT_0)网络1INT_00ENINTENOATCHEVNTINT_13ENINTENOATCHEVNTENIQ0.0SI1SM0.0中断程序1(INT_1)网络1Q0.0RI1ENEVNTENODTCH网络2SM5.00网络3M5.0DISI(3)时基中断•时基中断(TimedInterrupt)包括定时中断和定时器T32/T96中断。可用定时中断来执行一个周期性的操作,以1ms为增量单位,周期的时间可取lms~255ms。对定时中断0,必须把周期时间写入SMB34;对定时中断1,必须把周期时间写入SMB35。•定时中断一旦被允许,中断就会周期性地不断产生,每当定时时间到时,就会执行被连接的中断程序。如果退出RUN状态或定时中断被分离,定时中断被禁止。如果执行了全局中断禁止指令,定时中断事件仍会连续出现,每个定时中断事件都会进入中断队列,直到中断队列满。•【例7-2】定时中断的定时时间最长为255ms,用定时中断1实现周期为2s的高精度定时。•为了实现周期为2s的高精度周期性操作的定时,将定时中断的定时时间间隔设为250ms,在定时中断1的中断程序中,将VB0加1,然后用比较触点指令“LD=”判断VB0是否等于8。若相等(中断了8次,对应的时间间隔为2s),在中断程序中执行每2s一次的操作,例如采集模拟量输入的数值和使QB0加1,程序设计如图7-3所示。•对于定时间隔不同的任务,可以计算出它们的定时时间的最大公约数,以此作为定时中断的预置时间。在中断程序中对中断事件进行计数,根据计数值来处理不同的任务。ENINENOMOV_BOUT0VB10图7-3定时中断采集模拟量OB1主程序网络1LDSM0.1//首次扫描时为1MOVB0,VB10//中断次数计数器清0MOVB250,SMB34//设定时中断0的时间间隔为250msATCHINT_0,10//连接INT_0到定时中断0(事件号10)ENI//允许全局中断中断程序0(INT_0),每隔250ms中断一次网络1LDSM0.0//该位总为ONINCBVB10//中断次数计数器加1网络2LDB=8,VB10//如果中断了8次(2s)MOVB0,VB10//中断次数计数器清0MOVWAIW0,VW20//读AIW0的值INCBQB0//每2s将QB0加1SM0.1OB1主程序网络1SM0.0中断程序0(INT_0)网络1INT_010ENINTENOATCHEVNTENI网络2ENINENOMOV_BOUT250SMB34ENINENOINC_BOUTVB10VB10==B8VB10ENINENOMOV_BOUT0VB10ENINENOMOV_WOUTAIW0VW20ENINENOINC_BOUTQB0QB02.中断优先级给中断源指定处理的次序就是给中断源确定中断优先级。中断按以下固定的优先级顺序执行:通信(最高优先级)、I/O中断和定时中断(最低优先级)。在上述3个优先级范围内,CPU按照先来先服务的原则处理中断,任何时刻只能执行一个用户中断程序。3个中断队列及其能保存的最大中断个数如表7-4所示。如果发生中断过于频繁,使中断产生的速率比可处理的速率快,或中断被DISI指令禁止,中断队列溢出状态位被置1,如表7-5所示。只应在中断程序中使用这些位,因为当队列变空或返回主程序时,这些位会被复位。队列CPU221、CPU222、CPU224CPU224XP、CPU226通信中断队列4I/O中断队列16定时中断队列8表7-4各中断队列的最大中断个数描述(0=不溢出,1=溢出)SM位通信中断队列溢出SM4.0I/O中断队列溢出SM4.1定时中断队列溢出SM4.2表7-5中断队列溢出标志位3.中断控制•经过中断判优后,将优先级最高的中断请求送给CPU,CPU响应中断后自动保存逻辑堆栈、累加器和某些特殊标志寄存器位,即保护现场。中断处理完成后,又自动恢复这些单元保存起来的数据,即恢复现场。7.2高速处理指令•高速处理指令有高速计数指令和高速脉冲输出指令两类。•7.2.1高速计数操作指令•高速计数器HSC(HighSpeedCounter)用来累计比PLC扫描频率高得多的脉冲输入(30kHz),利用产生的中断事件完成预定的操作。•PLC的普通计数器的计数过程与扫描工作方式有关。1.编码器•编码器每圈发出一定数量的计数时钟脉冲和一个复位脉冲,作为高速计数器的输入。高速计数器有一组预置值,开始运行时装入第一个预置值,当前计数值小于当前预置值时,设置的输出有效。当前计数值等于预置值或有外部复位信号时,产生中断。发生当前计数值等于预置值的中断时,装载入新的预置值,并设置下一阶段的输出。有复位中断事件发生时,设置第一个预置值和第一个输出状态,循环又重新开始。•用高速计数器可实现高速运动的精确控制。编码器分为以下2种类型:(1)增量式编码器根据输出信号的个数,有3种增量式编码器:1)单通道增量式编码器2)双通道增量式编码器3)三通道增量式编码器A相B相b)A、B相型编码器反转图7-4编码器的输出波形c)三通道增量式编码器A相B相Z相A相B相a)A、B相型编码器正转90℃(2)绝对式编码器•N位绝对式编码器有N个码道,最外层的码道对应编码的最低位。每一码道有一个光电耦合器,用来读取该码道的0、1数据。绝对式编码器输出的N位二进制数反映了运动物体所处的绝对位置,根据位置的变化情况,可以判别出旋转的方向。2.高速计数器的工作模式与外部输入信号(1)高速计数器的工作模式高速计数器的工作模式分为下面的4大类:1)无外部方向输入信号的单相加/减计数器(即带有内部方向控制的单相计数器)(模式0~2)2)有外部方向输入信号的单相加/减计数器(模式3~5)3)有加计数时钟脉冲和减计数时钟脉冲输入的双相计数器(模式6~8)4)A/B相正交计数器(模式9~11)(2)高速计数器的外部输入信号各计数器有专用的时钟脉冲、方向控制、复位及启动输入端子,有的计数器只有部分输入端子。各高速计数器的外部输入信号如表7-6和表7-7所示。只有CPU224、CPU226和CPU226XM有HSC1和HSC2。表7-7HSC1和HSC2的外部输入信号HSC1HSC2模式I0.6I0.7I1.0I1.1I1.2I1.3I1.4I1.50时钟时钟1时钟复位时钟复位2时钟复位启动时钟复位启动3时钟方向时钟方向4时钟方向复位时钟方向复位5时钟方向复位启动时钟方向复位启动6加时钟减时钟加时钟减时钟7加时钟减时钟复位加时钟减时钟复位8加时钟减时钟复位启动加时钟减时钟复位启动9A相时钟B相时钟A相时钟B相时钟10A相时钟B相时钟复位A相时钟B相时钟复位11A相时钟B相时钟复位启动A相时钟B相时钟复位启动(3)高速计数器的中断事件类型•高速计数器的中断事件大致可分为三种方式(1)所有的计数器模式都会在当前值等于预置值时产生中断;(2)使用外部复位端的计数模式支持外部复位中断;(3)除去模式0、1和2之外,所有计数器模式都支持计数方向改变中断(参见图7-7)。每种中断条件都可以分别使能或者禁止。•当使用外部复位中断时,不要写入初始值,或者是在该中断服务程序中先禁止再允许高速计数器工作,否则会产生一个致命错误。3.高速计数器指令高速计数器指令有两条:高速计数器定义指令(HDEF)和高速计数器指令(HSC)。其LAD及STL指令格式如图7-7所示,指令的有效操作数见表7-8。(1)高速计数器定义指令(HDEF):为指定的高速计数器(HSC)设置一种工作模式,即用来建立高速计数器与工作模式之间的联系,模式的选择决定了高速计数器的时钟方向、启动和复位功能。(2)高速计数器指令(HSC):根据高速计数器特殊存储器位的状态,并按照HDEF指令指定的工作模式,设置高速计数器并控制其工作。4.高速计数器相关的特殊存储器(1)高速计数器的状态字节每个高速计数器都有一个状态字节,给出了
本文标题:第07章中断及高速处理指令.
链接地址:https://www.777doc.com/doc-2152791 .html