您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 可编程控制器原理20080320170225746
第6章FX系PLC的应用指令本章要点应用指令的表示方法常用指令的格式及用法(如程序流控制指令、比较指令数据传送指令、循环与移位指令、时钟运算指令等)难点跳步指令中断指针与中断指令课时安排:8课时6.1应用指令的表示方法与数据结构6.1.1应用指令的表示方法如图所示为一个计算平均值指令,它有三个操作数,[S]表示源操作数,[D]表示目标操作数,图中源操作数为D0、D1、D2,目标操作数为D4Z0(Z0为变址寄存器),K3表示有3个数,当X0接通时,执行的操作为[(D0)+(D1)+(D2)]÷3→(D4Z0),如果Z0的内容为20,则运算结果送入D24中。6.1.1应用指令的表示方法有的功能指令没有操作数,而大多数功能指令有1至4个操作数。如果使用变址功能,则可表示为[S·]和[D·]。当源或目标不止一个时,用[S1·]、[S2·]、[D1·]、[D2·]表示。用n和m表示其它操作数,它们常用来表示常数K和H,或作为源和目标操作数的补充说明,当这样的操作数多时可用n1、n2和m1、m2等来表示。功能指令的指令段通常占1个程序步,16位操作数占2步,32位操作数占4步。6.1.2FX系列PLC功能指令的执行方式与数据长度1.连续执行与脉冲执行功能指令有连续执行和脉冲执行两种类型。如图1所示,指令助记符MOV后面有“P”表示脉冲执行,即该指令仅在X1接通(由OFF到ON)时执行(将D10中的数据送到D12中)一次;如果没有“P”则表示连续执行,即该在X1接通(ON)的每一个扫描周期指令都要被执行。2.数据长度功能指令可处理16位数据或32位数据。处理32位数据的指令是在助记符前加“D”标志,无此标志即为处理16位数据的指令。注意32位计数器(C200~C255)的一个软元件为32位,不可作为处理16位数据指令的操作数使用。在使用32位数据时建议使用首编号为偶数的操作数,不容易出错。6.1.2功能指令的执行方式与数据长度例如图所示,指令助记符MOV后面有“P”表示脉冲执行,MOV前有”D”即表示为32位数据,该指令即指:仅在X1接通(由OFF到ON)时,将D11D10中的32位数据送到D13D12中.6.1.3三菱FX系列PLC功能指令的数据格式1.位元件与字元件象X、Y、M、S等只处理ON/OFF信息的软元件称为位元件;而象T、C、D等处理数值的软元件则称为字元件,一个字元件由16位二进制数组成。位元件可以通过组合使用,4个位元件为一个单元,通用表示方法是由Kn加起始的软元件号组成,n为单元数。例如K2M0表示M0~M7组成两个位元件组(K2表示2个单元),它是一个8位数据,M0为最低位。如果将16位数据传送到不足16位的位元件组合(n4)时,只传送低位数据,多出的高位数据不传送,32位数据传送也一样。在作16位数操作时,参与操作的位元件不足16位时,高位的不足部分均作0处理,这意味着只能处理正数(符号位为0),在作32位数处理时也一样。被组合的元件首位元件可以任意选择,但为避免混乱,建议采用编号以0结尾的元件,如S10,X0,X20等。6.1.3三菱FX系列PLC功能指令的数据格式2.数据格式在FX系列PLC内部,数据是以二进制(BIN)补码的形式存储,所有的四则运算都使用二进制数。二进制补码的最高位为符号位,正数的符号位为0,负数的符号位为1。FX系列PLC可实现二进制码与BCD码的相互转换。为更精确地进行运算,可采用浮点数运算。在FX系列PLC中提供了二进制浮点运算和十进制浮点运算,设有将二进制浮点数与十进制浮点数相互转换的指令。二进制浮点数采用编号连续的一对数据寄存器表示,例D11和D10组成的32位寄存器中,D10的16位加上D11的低7位共23位为浮点数的尾数,而D11中除最高位的前8位是阶位,最高位是尾数的符号位(0为正,1是负)。10进制的浮点数也用一对数据寄存器表示,编号小数据寄存器为尾数段,编号大的为指数段,例如使用数据寄存器(D1,D0)时,表示数为10进制浮点数=〔尾数D0〕×10〔指数D1〕其中:D0,D1的最高位是正负符号位。6.2.程序流控制指令6.2.1程序流控制指令CJ条件跳转指令CJ条件跳转指令CJ(P)的编号为FNC00,操作数为指针标号P0~P127,其中P63为END所在步序,不需标记。指针标号允许用变址寄存器修改。CJ和CJP都占3个程序步,指针标号占1步。6.2程序流控制指令CJ如图所示,当X20接通时,则由CJP9指令跳到标号为P9的指令处开始执行,跳过了程序的一部分,减少了扫描周期。如果X20断开,跳转不会执行,则程序按原顺序执行。6.2程序流控制指令CJ使用跳转指令时应注意:1)CJP指令表示为脉冲执行方式;2)在一个程序中一个标号只能出现一次,否则将出错;3)在跳转执行期间,即使被跳过程序的驱动条件改变,但其线圈(或结果)仍保持跳转前的状态,因为跳转期间根本没有执行这段程序。4)如果在跳转开始时定时器和计数器已在工作,则在跳转执行期间它们将停止工作,到跳转条件不满足后又继续工作。但对于正在工作的定时器T192~T199和高速计数器C235~C255不管有无跳转仍连续工作。5)若积算定时器和计数器的复位(RST)指令在跳转区外,即使它们的线圈被跳转,但对它们的复位仍然有效。6.2.2子程序调用与子程序返回指令子程序调用指令CALL的编号为FNC01。操作数为P0~P127,此指令占用3个程序步。子程序返回指令SRET的编号为FNC02。无操作数,占用1个程序步。6.2.2子程序调用与子程序返回指令如图所示,如果X0接通,则转到标号P10处去执行子程序。当执行SRET指令时,返回到CALL指令的下一步执行。6.2.2子程序调用与子程序返回指令使用子程序调用与返回指令时应注意:1)转移标号不能重复,也不可与跳转指令的标号重复;2)子程序可以嵌套调用,最多可5级嵌套。6.2.3与中断有关的指令与中断有关的三条功能指令是:中断返回指令IRET,编号为FNCO3;中断允许指令EI,编号为FNCO4;中断禁止DI,编号为FNC05。它们均无操作数,占用1个程序步。PLC通常处于禁止中断状态,由EI和DI指令组成允许中断范围。在执行到该区间,如有中断源产生中断,CPU将暂停主程序执行转而执行中断服务程序。当遇到IRET时返回断点继续执行主程序。6.2.3与中断有关的指令如图所示,允许中断范围中若中断源X0有一个下降沿,则转入I000为标号的中断服务程序,但X0可否引起中断还受M8050控制,当X20有效时则M8050控制X0无法中断。6.2.3与中断有关的指令使用中断相关指令时应注意:1)中断的优先级排队如下,如果多个中断依次发生,则以发生先后为序,即发生越早级别越高,如果多个中断源同时发出信号,则中断指针号越小优先级越高;2)当M8050~M8058为ON时,禁止执行相应I0□□~I8□□的中断,M8059为ON时则禁止所有计数器中断;3)无需中断禁止时,可只用EI指令,不必用DI指令;4)执行一个中断服务程序时,如果在中断服务程序中有EI和DI,可实现二级中断嵌套,否则禁止其它中断。6.2.4主程序结束指令FEDND主程序结束指令FEND的编号为FNC06,无操作数,占用1个程序步。FEND表示主程序结束,当执行到FEND时,PLC进行输入/输出处理,监视定时器刷新,完成后返回启始步。使用FEND指令时应注意:1)子程序和中断服务程序应放在FEND之后;2)子程序和中断服务程序必须写在FEND和END之间,否则出错。6.2.5监视定时器指令WDT监视定时器指令WDT(P)编号为FNC07,没有操作数,占有1个程序步。WDT指令的功能是对PLC的监视定时器进行刷新。FX系列PLC的监视定时器缺省值为200ms(可用D8000来设定),正常情况下PLC扫描周期小于此定时时间。如果由于有外界干扰或程序本身的原因使扫描周期大于监视定时器的设定值,使PLC的CPU出错灯亮并停止工作,可通过在适当位置加WDT指令复位监视定时器,以使程序能继续执行到END。6.2.5监视定时器指令WDT如图所示,利用一个WDT指令将一个240ms的程序一分为二,使它们都小于200ms,则不再会出现报警停机。6.2.5监视定时器指令WDT使用WDT指令时应注意:1)如果在后续的FOR-NEXT循环中,执行时间可能超过监控定时器的定时时间,可将WDT插入循环程序中。2)当与条件跳转指令CJ对应的指针标号在CJ指令之前时(即程序往回跳)就有可能连续反复跳步使它们之间的程序反复执行,使执行时间超过监控时间,可在CJ指令与对应标号之间插入WDT指令。6.2.6循环指令FORNEXT循环指令共有两条:循环区起点指令FOR,编号为FNC08,占3个程序步;循环结束指令NEXT,编号为FNC09,占用1个程序步,无操作数。在程序运行时,位于FOR~NEXT间的程序反复执行n次(由操作数决定)后再继续执行后续程序。循环的次数n=1~32767。如果N=-32767~0之间,则当作n=1处理。6.2.6循环指令FORNEXT如图所示为一个二重嵌套循环,外层执行次.如果D0Z中的数为6则外层A每执行一次则内层B将执行6次。6.2.6循环指令FORNEXT使用循环指令时应注意:1)FOR和NEXT必须成对使用;2)FX2N系列PLC可循环嵌套5层;3)在循环中可利用CJ指令在循环没结束时跳出循环体;4)FOR应放在NEXT之前,NEXT应在FEND和END之前,否则均会出错。6.3时钟运算指令共有七条时钟运算类指令,指令的编号分布在FNC160~FNC169之间。时钟运算类指令是对时钟数据进行运算和比较,对PLC内置实时时钟进行时间校准和时钟数据格式化操作。(1)时钟数据比较指令TCMP(FNC160)TCMP(P)它的功能是用来比较指定时刻与时钟数据的大小。如图3-86所示,将源操作数[S1.]、[S2.]、[S3.]中的时间与[S.]起始的3点时间数据比较,根据它们的比较结果决定目标操作数[D.]中起始的3点单元中取ON或OFF的状态。该指令只有16位运算,占11个程序步。它的源操作数可取T、C和D,目标操作数可以是Y、M和S。6.3时钟运算指令(1)时钟数据比较指令的使用(2)时钟数据加法运算指令TADD(FNC162)TADD(P)指令的功能是将两个源操作数的内容相加结果送入目标操作数。源操作数和目标操作数均可取T,C和D。TADD为16位运算,占7个程序步。如图3-87所示,将[S1.]指定的D10~D12和D20~D22中所放的时、分、秒相加,把结果送入[D.]指定的D30~D32中。当运算结果超过24小时时,进位标志位变为ON,将进行加法运算的结果减去24小时后作为结果进行保存。(2)时钟数据加法运算指令TADD(3)时钟数据读取指令TRD(FNC166)TRD(P)指令为16位运算,占7个程序步。[D.]可取T,C和D。它的功能是读出内置的实时时钟的数据放入由[D.]开始的7个字内。如图3-87所示,当X1为ON时,将实时时钟(它们以年、月、日、时、分、秒、星期的顺序存放在特殊辅助寄存器D8013~8019之中)传送到D10~D16之中。(3)时钟数据读取指令TRD6.4格雷码转换及模拟量模块专用指令(1)格雷码转换和逆转换指令这类指令有2条:GRY(FNC170)和GBIN(FNC171),常用于处理光电码盘编码盘的数据。(D)GRN(P)指令的功能是将二进制数转换为格雷码,(D)GBIN(P)指令则是GRY的逆变换。如图3-89所示,GRY指令是将源操作数[S.]中的二进制数变成格雷码放入目标操作数[D.]中,而GBIN指令与其相反。它们的源操作数可取任意数据格式,目标操作数为KnY、KnM、KnS、T、C、D、V和Z。、16位操作时占5个程序步,32位操作时占9个程序步。(1)格雷码转换和逆转换指令的使用(2)模拟量模块读写指令的使用这类指令有2条:RD3A(FNC176)
本文标题:可编程控制器原理20080320170225746
链接地址:https://www.777doc.com/doc-2573086 .html