您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 指令-程序控制+中断+高速计数
S7200功能指令程序控制指令与使用程序控制指令•条件结束•条件结束指令(END)根据前面的逻辑关系终止当前扫描周期。可以在主程序中使用条件结束指令,但不能在子程序或中断服务程序中使用该命令。•停止•停止指令(STOP)导致CPU从RUN到STOP模式从而可以立即终止程序的执行。•如果STOP指令在中断程序中执行,那么该中断立即终止,并且忽略所有挂起的中断,继续扫描程序的剩余部分。完成当前周期的剩余动作,包括主用户程序的执行,并在当前扫描的最后,完成从RUN到STOP模式的转变。看门狗复位看门狗复位指令(WDR)允许S7-200CPU的系统看门狗定时器被重新触发,这样可以在不引起看门狗错误的情况下,增加此扫描所允许的时间。使用WDR指令时要小心,因为如果您用循环指令去阻止扫描完成或过度的延迟扫描完成的时间,那么在终止本次扫描之前,下列操作过程将被禁止:-通讯(自由端口方式除外)-I/O更新(立即I/O除外)-强制更新-SM位更新(SM0,SM5~SM29不能被更新)-运行时间诊断-由于扫描时间超过25秒,10ms和100ms定时器将不会正确累计时间。-在中断程序中的STOP指令-带数字量输出的扩展模块也包含一个看门狗定时器,如果模块没有被S7-200写,则此看门狗定时器将关断输出。在扩展的扫描时间内,对每个带数字量输出的扩展模块进行立即写操作,以保持正确的输出。For-Next循环指令•FOR和NEXT指令可以描述需重复进行一定次数的循环体。每条FOR指令必须对应一条NEXT指令。For-Next循环嵌套(一个For-Next循环在另一个For-Next循环之内)深度可达8层。•FOR-NEXT指令执行FOR指令和NEXT指令之间的指令。必须指定计数值或者当前循环次数INDX、初始值(INIT)和终止值(FINAL)。•NEXT指令标志着FOR循环的结束。•如果允许FOR/NEXT循环,除非在循环内部修改了终值,循环体就一直循环执行直到循环结束。当FOR/NEXT循环执行的过程中可以修改这些值。当循环再次允许时,它把初始值拷贝到INDX中(当前循环次数)。•当下一次允许时,FOR/NEXT指令复位它自己。例如,给定初值(INIT)为1,终值(FINAL)为10,那么随着当前计数值(INDX)从1增加到10,FOR与NEXT之间的指令被执行10次。•如果初值大于终值,那么循环体不被执行。每执行一次循环体,当前计数值增加1,并且将其结果同终值作比较,如果大于终值,那么终止循环。•如果程序进入FOR--NEXT循环时,栈顶值为1,则当程序退出FOR-NEXT循环时,栈顶值也将为1。跳转指令•跳转到标号指令(JMP)执行程序内标号N指定的程序分支。•标号指令标记跳转目的地的位置N。•您可以在主程序、子程序或者中断服务程序中,使用跳转指令。跳转和与之相应的标号指令必须位于同一段程序代码(无论是主程序、子程序还是中断服务程序)。•不能从主程序跳到子程序或中断程序,同样不能从子程序或中断程序跳出。•可以在SCR程序段中使用跳转指令,但相应的标号指令必须也在同一个SCR段中。nLBLn(JMP)JMPnLBLnS7200功能指令中断指令的使用高速计数器指令与使用S7-200中断系统•中断连接中断分离•中断连接指令(ATCH)把一个中断事件(EVNT)和一个中断程序(INT)联系起来并允许这个中断事件•中断分离指令(DTCH)截断一个中断事件(EVNT)和所有的中断程序的联系并禁止了该中断事件中断允许中断禁止•中断允许指令(ENI)全局地允许所有被连接的中断事件•中断禁止指令(DISI)全局地禁止处理所有中断事件对中断连接和中断分离指令的理解•在激活一个中断程序前,必须在中断事件和该事件发生时希望执行的那段程序间建立一种联系,中断连接指令(ATCH)指定某中断事件(由中断事件号指定)所要调用的程序段(由中断程序号指定)。多个中断事件可调用同一个中断程序,但一个中断事件不能同时指定调用多个中断程序。在中断允许时,某个中断事件发生,只有为该事件指定的最后一个中断程序被执行,当为某个中断事件指定其所对应的中断程序时,该中断事件会自动被允许,如果用全局中断禁止指令(DISI),禁止所有中断,则每个出现的中断事件就进入中断队列,直到用全局中断允许指令(ENI)重新允许中断。•当把中断事件和中断程序连接时,自动允许中断,如果采用禁止全局中断指令不响应所有中断,每个中断事件进行排队,直到采用允许全局中断指令重新允许中断。可以用中断分离指令(DTCH)截断中断事件和中断程序之间的联系,以单独禁止中断事件,中断分离指令(DTCH)使中断回到不激活或无效状态。S7-200支持的中断•通讯口中断•I/O中断•时基中断通讯口中断•PLC的串行通讯口可由LAD或STL程序来控制,通讯口的这种操作模式称为自由端口模式。在自由端口模式下用户可用程序定义波特率、每个字符位数、奇偶校验和通讯协议,利用接收和发送中断可简化程序对通讯的控制,请参看发送/接收指令以了解更多的信息。I/O中断•I/O中断包含了上升沿或下降沿中断、高速计数器中断和脉冲串输出(PTO)中断。–S7-200CPU可用输入I0.0至I0.3的上升沿或下降沿产生中断,这些输入点捕获的上升沿或下降沿事件可被用来指示当某个事件发生时必须引起注意的错误条件。–高速计数器中断允许响应诸如当前值等于预置值、相应于轴转动方向变化的计数方向改变和计数器外部复位等事件而产生中断,每种高速计数器可对高速事件实时响应,而PLC扫描速率对这些高速事件是不能控制的。–脉冲串输出中断给出了已完成指定脉冲数输出的指示,脉冲串输出的一个典型应用是步进电机,可以通过将一个中断程序连接到相应的I/O事件上来允许上述的每一个中断。时基中断•时基中断包括定时中断和定时器T32/T96中断,CPU可以支持定时中断,可以用定时中断指定一个周期性的活动周期,以1ms为增量单位周期时间可从5ms到255ms。•对定时中断0把周期时间写入SMB34,对定时中断1把周期时间写入SMB35,每当定时器溢出时,定时中断事件把控制权交给相应的中断程序,通常可用定时中断以固定的时间间隔去控制模拟量输入的采样,或者执行一个PID回路。•当把某个中断程序连接到一个定时中断事件上,如果该定时中断被允许,那就开始计时,在连接期间系统捕捉周期时间值,因而后来的变化不会影响周期,为改变周期时间首先必须修改周期时间值,然后重新把中断程序连接到定时中断事件上。当重新连接时,定时中断功能清除前一次连接时的任何累计值,并用新值重新开始计时。例:用定时中断读取模拟量例子:利用I/O中断测量带式输送机的转速在带式输送机的驱动滚筒和改向滚筒上各安装一个磁铁,分别用接近开关来测量滚筒的转速。假设:驱动滚筒直径800mm,改向滚筒直径500mm输送机带速2.0m/s。则驱动滚筒每转时间约为1256ms(*5=8*)改向滚筒每转时间约为785ms。I0.0I0.1I0.3启动按钮I0.0驱动滚筒PNP型接近开关I0.4停止按钮I0.1改向滚筒PNP型接近开关M0.0M0.0I0.4I0.3Network1I0.4Network2Network3ENTONPTT32+30000M0.0I0.0Network4PSBR_0ENPDTCHENENOEVNTENTONPTT96+30000M0.0I0.1DTCHENENOEVNT02LDI0.3OM0.0ANI0.4=M0.0EUCALLSBR_0LDI0.4EUDTCH0DTCH2LDM0.0ANI0.0TONT32,30000LDM0.0ANI0.1TONT96,30000LDM0.0TONT40,400LDT40+I20,VW102MOVWVW102,VW104-IVW100,VW104AWVW104,200=Q1.0LDSM0.0ATCHINT_0,0ATCHINT_1,2ENI子程序中断子程序0LDSM0.0MOVWT32,VW100*I+5,VW100LDSM0.0MOVWT96,VW102*I+8,VW102中断子程序1高速计数器指令高速计数器定义HEDF•定义高速计数器指令为指定的高速计数器分配一种工作模式高速计数器指令(HSC)•执行时根据HSC特殊存储器位的状态设置和控制高速计数器的工作模式参数N指定高速计数器号高速计数器指令•高速计数器累计CPU扫描速率不能控制的高速事件,可以配置最多12种不同的操作模式,高速计数器的最高计数频率有赖于CPU的型号有关。•每个计数器对它所支持的时钟方向、控制复位和启动都有专用的输入,对于两相计数器,两个时钟可以同时以最大速率工作对正交模式,可以选择以单倍(1X)或4倍(4X)最大计数速率工作。HSC1和HSC2互相完全独立,并且不影响其它的高速功能所有高速计数器,可同时以最高速率工作而互不干扰。使用高速计数器•一般来说,高速计数器被用作驱动鼓形计时器设备,该设备有一个安装了增量轴式编码器的轴,以恒定的速度转动轴式编码器每圈提供一个确定的计数值和一个复位脉冲,来自轴式编码器的时钟和复位脉冲做为高速计数器的输入。•高速计数器装入一组预置值中的第一个值,当前计数值小于当前预置值时希望的输出有效,计数器设置成在当前值等于预置值和有复位时产生中断,随着每次当前计数值等于预置值的中断事件的出现,一个新的预置值被装入并重新设置下一个输出状态,当出现复位中断事件时,设置第一个预置值和第一个输出状态,这个循环又重新开始。•由于中断事件产生的速率远低于高速计数器的计数速率,用高速计数器可实现精确控制而与PLC整个扫描周期的关系不大,采用中断的方法允许在简单的状态控制中用独立的中断程序装入一个新的预置值,这样使得程序简单直接并容易读懂,当然也可以在一个中断程序中处理所有的中断事件。高速计数器输入线的连接高速计数器的时钟方向、控制复位和启动所使用的输入如表如表所示高速计数器和边沿中断的输入点分配存在一些重叠,同一个输入不能用于两个不同的功能,但是不使用高速计数的输入端可以作它用。例如如果HSC0工作于模式2它使用I0.0和I0.2,于是I0.1可以用于HSC3的边沿中断。如果HSC0的模式不使用输入I0.1那么该输入端可以用作HSC3或边沿中断,同样地如果在选择的HSC0模式中不使用I0.2,该输入端可以作边沿中断如果在选择的HSC4模式中不使用I0.4,该输入端可以用为HSC5所用。注意HSC0的所有模式都使用I0.0,HSC4的所有模式都使用I0.3,所以当使用这些计数器时这些点不能作它用。HSC0操作模式HSC1操作模式HSC2操作模式HSC3操作模式HSC4操作模式HSC5操作模式模式0,1或2内部方向控制模式时序图模式3,4或5外部方向控制模式时序图模式6,7或8增/减双脉冲模式时序图模式9,10或11正交1X模式时序图模式9,10或11正交4X模式时序图访问高速计数器(HC)设定当前值和预置值•只有定义了计数器和计数器模式,才能对计数器的动态参数进行编程,每个高速计数器都有一个控制字节,包括下列几项:允许或禁止计数,计数方向控制(只能是模式0,1,2),或对所有其它模式的初始化,计数方向要装入的计数器,当前值和要装入的预置值,执行HSC指令时要检验控制字节和有关的当前值及预置值HSC控制字节HSC状态字节•每个高速计数器都有一个状态字节,其中某些位指出了当前计数方向,当前值是否等于预置值,当前值是否大于预置值。HSC使用举例子程序SBR_0中断子程序程序演示•使用HSC向导完成HSC指令设置HSC编程步骤•定义计数器和计数模式.•设定控制字节.•设当前值(初始值).•设预设值(目标值).•将中断子程序与中断事件连接,并开中断•激活高速计数器用S7-200的高速计数器HSC累计来自模拟量/频率转换器(A/F)的脉冲来模拟电压值•本例说明了如何利用CPU224的高速计数器HSC及频率转换器来计算模拟电压。首先频率转换器将输入电压(0-10V)转换为矩形脉冲信号(0-2000Hz),再将此信号送入C
本文标题:指令-程序控制+中断+高速计数
链接地址:https://www.777doc.com/doc-6149338 .html