第6章特殊功能指令6.1立即类指令6.2中断指令6.3高速计数器与高速脉冲输出6.4PID控制6.5时钟指令6.1立即类指令立即读指令用于输入I接点,立即读指令读取实际输入点的状态时,并不更新该输入点对应的输入映像寄存器的值。如:当实际输入点(位)是1时,其对应的立即触点立即接通;当实际输入点(位)是0时,其对应的立即触点立即断开。立即输出指令用于输出Q线圈,执行指令时,立即将新值写入实际输出点和对应的输出映像寄存器。立即类指令与非立即类指令不同,非立即指令仅将新值读或写入输入/输出映像寄存器。立即读\立即输出表6-1立即类指令的格式及说明6.2中断指令1.中断源的类型中断源即发出中断请求的事件,又叫中断事件。为了便于识别,系统给每个中断源都分配一个编号,称为中断事件号。S7-200系列可编程控制器最多有34个中断源,分为三大类:通信中断、输入/输出中断和时基中断。6.2.1中断源(1)通信中断在自由口通信模式下,用户可通过编程来设置波特率、奇偶校验和通信协议等参数。用户通过编程控制通讯端口的事件为通信中断。(2)I/O中断I/O中断包括外部输入上升/下降沿中断、高速计数器中断和高速脉冲输出中断。S7-200用输入(I0.0、I0.1、I0.2或I0.3)上升/下降沿产生中断。这些输入点用于捕获在发生时必须立即处理的事件。高速计数器中断指对高速计数器运行时产生的事件实时响应,包括当前值等于预设值时产生的中断,计数方向的改变时产生的中断或计数器外部复位产生的中断。脉冲输出中断是指预定数目脉冲输出完成而产生的中断。(3)时基中断定时中断用于支持一个周期性的活动。周期时间从1毫秒至255毫秒,时基是1毫秒。使用定时中断0,必须在SMB34中写入周期时间;使用定时中断1,必须在SMB35中写入周期时间。定时中断可以用来对模拟量输入进行采样或定期执行PID回路。定时器T32/T96中断指允许对定时间间隔产生中断。这类中断只能用时基为1ms的定时器T32/T96构成。当中断被启用后,当前值等于预置值时,在S7-200执行的正常1毫秒定时器更新的过程中,执行连接的中断程序。2.中断优先级和排对等候优先级是指多个中断事件同时发出中断请求时,CPU对中断事件响应的优先次序。S7-200规定的中断优先由高到低依次是:通信中断、I/O中断和定时中断。每类中断中不同的中断事件又有不同的优先权,如表6-2所示。一个程序中总共可有128个中断。S7-200在中断各自的优先级组内按照先来先服务的原则为中断提供服务。在任何时刻,只能执行一个中断程序。一旦一个中断程序开始执行,则一直执行至完成。不能被另一个中断程序打断,即使是更高优先级的中断程序。中断程序执行中,新的中断请求按优先级排队等候。中断队列能保存的中断个数有限,若超出,则会产生溢出。中断队列的最多中断个数和溢出标志位如表6-3所示6.2.2中断指令中断指令有4条,包括开、关中断指令,中断连接、分离指令。指令格式如下表所示。LADSTLENIDISIATCHINT,EVNTDTCHEVNT操作数及数据类型无无INT:常量0-127EVNT:常量,CPU224:0-23;27-33INT/EVNT数据类型:字节EVNT:常量,CPU224:0-23;27-33数据类型:字节1.开、关中断指令开中断(ENI)指令全局性允许所有中断事件。关中断(DISI)指令全局性禁止所有中断事件,中断事件的每次出现均被排队等候,直至使用全局开中断指令重新启用中断。PLC转换到RUN(运行)模式时,中断开始时被禁用,可以通过执行开中断指令,允许所有中断事件。执行关中断指令会禁止处理中断,但是现用中断事件将继续排队等候。2.中断连接、分离指令中断连接指令(ATCH)指令将中断事件(EVNT)与中断程序号码(INT)相连接,并启用中断事件。分离中断(DTCH)指令取消某中断事件(EVNT)与所有中断程序之间的连接,并禁用该中断事件。注意:一个中断事件只能连接一个中断程序,但多个中断事件可以调用一个中断程序。1.中断程序的概念中断程序是为处理中断事件而事先编好的程序。中断程序不是由程序调用,而是在中断事件发生时由操作系统调用。在中断程序中不能改写其他程序使用的存储器,最好使用局部变量。中断程序应实现特定的任务,应“越短越好”,中断程序由中断程序号开始,以无条件返回指令(CRETI)结束。在中断程序中禁止使用DISI、ENI、HDEF、LSCR和END指令6.2.3中断程序2.建立中断程序的方法方法一:从“编辑”菜单→选择插入(Insert)→中断(Interrupt)。方法二:从指令树,用鼠标右键单击“程序块”图标并从弹出菜单→选择插入(Insert)→中断(Interrupt)。方法三:从“程序编辑器”窗口,从弹出菜单用鼠标右键单击插入(Insert)→中断(Interrupt)。程序编辑器从先前的POU显示更改为新中断程序,在程序编辑器的底部会出现一个新标记,代表新的中断程序。6.2.4程序举例【例6-1】编写由I0.1的上升沿产生的中断事件的初始化程序。分析:查表6-2可知,I0.1上升沿产生的中断事件号为2。所以在主程序中用ATCH指令将事件号2和中断程序0连接起来,并全局开中断。程序如下图所示LDSM0.1//首次扫描时,ATCHINT_02//将INT_0和EVNT2连接ENI//并全局启用中断LDSM5.0//如果检测到I/O错误,DTCH2//禁用用于I0.1的上升沿中断(本网络为选项)LDM5.0//当M5.0=1时DISI//禁用所有的中断主程序【例6-2】编程完成采样工作,要求每10ms采样一次。分析:完成每10ms采样一次,需用定时中断,查表6-2可知,定时中断0的中断事件号为10。因此在主程序中将采样周期(10ms)即定时中断的时间间隔写入定时中断0的特殊存储器SMB34,并将中断事件10和INT-0连接,全局开中断。在中断程序0中,将模拟量输入信号读入,程序如下图所示。LDI0.0MOVB10,SMB34//将采样周期设为100毫秒ATCHINT_0,10//将事件10连接INT_0ENI//全局开中断主程序中断程序LDSM0.0MOVWAIW0,VW100//读入模拟量AIW0【例6-3】利用定时中断功能编制一个程序,实现如下功能:当I0.0由OFF→ON,Q0.0亮1s,灭1s,如此循环反复直至I0.0由ON→OFF,Q0.0变为OFF。LDI0.0EUATCHINT_0,21ENILDNM0.0AI0.0TONT32,+1000LDT32=M0.0LDI0.0EDDTCH21DISI主程序INT-0LDNQ0.0=Q0.01.实训目的(1)熟悉中断指令的使用方法。(2)掌握定时中断设计程序的方法。6.2.5中断程序编程实训2.实训内容(1)利用T32定时中断编写程序,要求产生占空比为50%,周期为4s的的方波信号。(2)用定时中断实现喷泉的模拟控制,控制要求。3.参考程序产生占空比为50%,周期为4s的的方波信号,主程序和中断程序如下:主程序INT-04.输入并调试程序用状态图监视程序的运行,并记录观察到的现象。6.3高速计数器与高速脉冲输出6.3高速计数器与高速脉冲输出前面讲的计数器指令的计数速度受扫描周期的影响,对比CPU扫描频率高的脉冲输入,就不能满足控制要求了。为此,SIMATICS7-200系列PLC设计了高速计数功能(HSC),其计数自动进行不受扫描周期的影响,最高计数频率取决于CPU的类型,CPU22x系列最高计数频率为30KHz,用于捕捉比CPU扫描速更快的事件,并产生中断,执行中断程序,完成预定的操作。高速计数器最多可设置12种不同的操作模式。用高速计数器可实现高速运动的精确控制。SIMATICS7-200CPU22x系列PLC还设有高速脉冲输出,输出频率可达20KHz,用于PTO(输出一个频率可调,占空比为50%的脉冲)和PWM(输出占空比可调的脉冲),高速脉冲输出的功能可用于对电动机进行速度控制及位置控制和控制变频器使电机调速6.3.1占用输入/输出端子1.高速计数器占用输入端子CPU224有六个高速计数器,其占用的输入端子如表6-5所示。高速计数器使用的输入端子HSC0I0.0,I0.1,I0.2HSC1I0.6,I0.7,I1.0,I1.1HSC2I1.2,I1.3,I1.4,I1.5HSC3I0.1HSC4I0.3,I0.4,I0.5HSC5I0.46.3.1占用输入/输出端子1.高速计数器占用输入端子各高速计数器不同的输入端有专用的功能,如:时钟脉冲端、方向控制端、复位端、起动端。注意:同一个输入端不能用于两种不同的功能。但是高速计数器当前模式未使用的输入端均可用于其他用途,如作为中断输入端或作为数字量输入端。例如,如果在模式2中使用高速计数器HSC0,模式2使用I0.0和I0.2,则I0.1可用于边缘中断或用于HSC3。2.高速脉冲输出占用的输出端子S7-200有PTO、PWM两台高速脉冲发生器。PTO脉冲串功能可输出指定个数、指定周期的方波脉冲(占空比50%);PWM功能可输出脉宽变化的脉冲信号,用户可以指定脉冲的周期和脉冲的宽度。若一台发生器指定给数字输出点Q0.0,另一台发生器则指定给数字输出点Q0.1。当PTO、PWM发生器控制输出时,将禁止输出点Q0.0、Q0.1的正常使用;当不使用PTO、PWM高速脉冲发生器时,输出点Q0.0、Q0.1恢复正常的使用,即由输出映像寄存器决定其输出状态。6.3.2高速计数器的工作模式1.高速计数器的计数方式(1)单路脉冲输入的内部方向控制加/减计数。即只有一个脉冲输入端,通过高速计数器的控制字节的第3位来控制作加计数或者减计数。该位=1,加计数;该位=0,减计数。如图6-6所示内部方向控制的单路加/减计数。(2)单路脉冲输入的外部方向控制加/减计数。即有一个脉冲输入端,有一个方向控制端,方向输入信号等于1时,加计数;方向输入信号等于0时,减计数。如图6-7所示外部方向控制的单路加/减计数.(1)内部方向控制的单路加/减计数(2)外部方向控制的单路加/减计数(3)两路脉冲输入的单相加/减计数。即有两个脉冲输入端,一个是加计数脉冲,一个是减计数脉冲,计数值为两个输入端脉冲的代数和。即有两个脉冲输入端,输入的两路脉冲A相、B相,相位互差90°(正交),A相超前B相90°时,加计数;A相滞后B相90°时,减计数。在这种计数方式下,可选择1x模式(单倍频,一个时钟脉冲计一个数)和4x模式(四倍频,一个时钟脉冲计四个数)。(4)两路脉冲输入的双相正交计数。2.高速计数器的工作模式高速计数器有12种工作模式,模式0~模式2采用单路脉冲输入的内部方向控制加/减计数;模式3~模式5采用单路脉冲输入的外部方向控制加/减计数;模式6~模式8采用两路脉冲输入的加/减计数;模式9~模式11采用两路脉冲输入的双相正交计数。S7-200CPU224有HSC0-HSC5六个高速计数器,每个高速计数器有多种不同的工作模式。HSC0选用某个高速计数器在某种工作方式下工作后,高速计数器所使用的输入不是任意选择的,必须按系统指定的输入点输入信号。如HSC16.3.3高速计数器的控制字和状态字高速计数器的工作模式和输入端子的关系及说明6.3.3高速计数器的控制字和状态字1.控制字节定义了计数器和工作模式之后,还要设置高速计数器的有关控制字节。每个高速计数器均有一个控制字节,它决定了计数器的计数允许或禁用,方向控制(仅限模式0、1和2)或对所有其他模式的初始化计数方向,装入当前值和预置值。控制字节每个控制位的说明如下表所示。HSC0HSC1HSC2HSC3HSC4HSC5说明SM37.0SM47.0SM57.0SM147.0复位有效电平控制:0=复位信号高电平有效;1=低电平有效SM47.1SM57.1起动有效电平控制:0=起动信号高电平有效;1=低电平有效SM37.2.SM47.2