第八章功能指令及应用讲师:丁卡尼电邮:birrhof@qq.com由NordriDesign提供学完本章之后,你应该能够:1.熟悉FX2N系列PLC功能指令的表示形式及含义;2.了解功能指令的分类,熟悉各种应用指令操作数的用法;3.掌握常用功能指令的功能、用法和应用;教学目标主要内容(第六章PLC梯形图程序设计方法)8.1应用指令的表示形式及含义8.2应用指令的分类与操作数说明8.3程序流向控制指令8.4比较与传送指令8.5运算指令8.6循环移位与移位指令8.7程序设计举例引言可编程控制器的基本指令是基于继电器、定时器、计数器类软元件,主要用于逻辑处理的指令。作为工业控制计算机,PLC仅有基本指令是远远不够的。PLC制造商逐步在PLC中引入功能指令(FunctionalInstruction),或称为应用程序(AppliedInstruction),这使得可编程控制器成了真正意义上的计算机。近年来,功能指令又向综合性方向迈进了一大步。8.1应用指令的表示形式及含义图8.1所示是应用指令的梯形图形式。FX2N系列PLC在梯形图中使用功能框表示功能指令,分别含有应用指令的名称(助记符)和操作数。图8.1应用指令的梯形图形式8.1应用指令的表示形式及含义FX2N系列可编程控制器的功能指令是采用计算机通用的助记符形式来表示的。一般用指令的英文名称或缩写作为助记符,如指令助记符MEAN用来表示取平均值的指令。这种表达方式的优点是直观,稍具计算机程序知识的人马上可以悟出指令的功能。8.1应用指令的表示形式及含义操作数分为源(Source)操作数、目标(Destination)操作数及其他操作数源操作数是指令执行后不改变其内容的操作数,用[S]表示目标操作数是指令执行后将改变其内容的操作数,用[D]表示其他操作数用m或n表示,它们常用来表示常数,或作为源操作数和目标操作数的补充说明。表示常数时,K为十进制,H为十六进制。如果可以使用变址功能,则表示为[S·]和[D·]如果源或目标不止一个,可表示为[S1·],[S2·],[D1·],[D2·]等8.1应用指令的表示形式及含义功能指令依处理数据的长度分为16位指令和32位指令。其中32位指令用(D)表示,无(D)符号的为16位指令。功能指令有脉冲执行型和连续执行型。指令中标有(P)的为脉冲执行型。8.1应用指令的表示形式及含义功能指令的功能号和指令助记符占一个程序步,每个操作数占2个或4个程序步(16位操作数是2个程序步,32位操作数是4个程序步),图8.1中同时给出了功能指令MEAN的指令语句表和步序号。在使用简易编程器的场合,输入功能指令时,应先按 FNC键,再输入功能指令的编号,如MEAN的编号为FNC45。使用 HELP键的帮助功能,可以显示出功能指令助记符和编号的一览表。8.2应用指令的分类与操作数说明FX2NPLC应用指令有14类,下仅列出其中9类:•程序流程指令•传送与比较指令•四则运算指令•循环移位指令•数据处理指令•高速处理指令•便利指令•外部设备(I/O)指令•外部设备(SER)指令8.2应用指令的分类与操作数说明下面重点介绍应用指令处理数据和运算过程中均要用到的数据寄存器、变址寄存器、中断指针和特殊辅助继电器。1.数据寄存器与位组合数据(1)数据寄存器(D)特殊寄存器用于存储数值数据,其值可通过应用指令、数据存取单元及编程装置进行读出或写入。每个数据寄存器都是16位,最高位为符号位,0:正数,1:负数,如图8.2所示。图8.216位数据寄存器图8.332位数据寄存器8.2应用指令的分类与操作数说明两个相邻的数据寄存器(如D10、D11),可组成32位数据寄存器,亦是最高位为符号位,如图8.3所示。数据寄存器分为一般型、停电保持型和特殊型。数据寄存器(D)D0~D199200点为一般型D200~D511312点为停电保持型D8000~D8255256点为特殊型表8.1数据寄存器编号注:一般型一旦写入数据,只要不再写入其他数据,其内容不会变化,但PLC停止运行或停电时,所有数据将清零。但在M8033被驱动时例外,即数据可以保持8.2应用指令的分类与操作数说明(2)位组合数据用位元件表示,4位一组,表示1个十进制数字,其形式为KnP,K表示十进制常数,n为组数,P为元件(通常为X、Y、M、S)。例如:K1X0、K2Y0、K3Y08.2应用指令的分类与操作数说明2、变址寄存器(V、Z)(1)变址寄存器的形式变址寄存器也是可进行读写的寄存器,字长为16位,共有16个,分别为V0~V7和Z0~Z7。变址寄存器也可以组成32位数据寄存器,组合状态如图8.4。图8.4组合成32位变址寄存器图8.5变址寄存器使用示例8.2应用指令的分类与操作数说明(2)变址寄存器有关参数的修改①数据寄存器编号的修改a.16位指令操作数的修改b.32位指令操作数的修改②常数K的修改③输入/输出继电器编号的修改④定时器当前值得修改图8.6变址寄存器参数修改示例之一8.2应用指令的分类与操作数说明8.7变址寄存器参数修改示例之二8.2应用指令的分类与操作数说明3、指针(P/I)指针用作跳转、中断等程序的入口地址,与跳转、子程序、中断程序等指令一起应用。其地址号用十进制数分配。按用途可分为分支指针(P)和中断指针(I)。指针类型PI分支用P0~P62共63点插入输入用I00□(X0),I10□(X1)…I50□(X5)共6点结束跳转用P63,1点插入计数用I6□□-I8□□,共3点计数中断用I010~I060共6点8.2应用指令的分类与操作数说明(1)分支指针P分支指针P用于条件跳转指令、子程序调用指令,地址号P0~P63(FX2n)63点,而P63则相当于END指令,表示跳转结束注意:编程时指针号不能重复使用(2)中断指针I中断指针I有以下三种类型,与应用指令FNC03(IRET)中断返回、FNC04(EI)允许中断、FNC05(DI)禁止中断一起组合使用①输入中断I②定时器中断8.3程序流向控制指令程序跳转及中断指令共有10条,这10条程序流程指令含义见下表表8.2程序流程指令及含义8.3程序流向控制指令8.3.1条件跳转指令[CJ(FNC00)]1.指令使用图8.8所示为条件跳转指令在梯形图中的具体应用格式。(1)在图8.8中,若X0=1,程序跳转到标号P8,处;X0=0,则顺序执行程序,这是有条件转移。若执行条件为M8000,则称为无条件跳转,因为M8000触点在PLC通电运行叫就自动接通(2)一个标号只能使用一次,但两条跳转指令可以使用同一标号。编程时,标号占一行。(3)图8.9所示为带有P63标号的跳转指令图8.8条件跳转指令的应用格式8.3程序流向控制指令图8.9条件跳转指令的编程8.3程序流向控制指令2.应用举例工业控制中经常用到手动和自动控制电路,两种电路程序要切换。图8.10所示即为采用CJ完成手动和自动控制切换程序,X0为切换方式开关,X1为手动计数脉冲,M8013为秒脉冲,X10为清零开关。图8.10利用CJ指令完成自动/手动方式切换程序8.3程序流向控制指令8.3.2子程序调用指令[CALL-SRET(FNC01、FNC02)]1.指令使用(1)图8.11所示为CALL指令在程序中的基本格式。指针号在程序中只能用一次。(2)CALL指令一般安排在主程序中,主程序的结束有FEND指令。子程序开始端有PXX指针号,最后又SRET返回主程序。(3)图8.11中X0为调用子程序条件。当X0为ON时,调用P10~SRET子程序并执行。当X0为OFF时,不调用子程序,主程序按顺序运行。图8.11子程序调用指令的基本使用格式8.3程序流向控制指令(4)子程序调用指令可以嵌套,最多为5级。图8.12所示是一嵌套例子。图8.12子程序的嵌套示例8.3程序流向控制指令2.应用举例采用子程序调用指令,可以优化程序结构,提高编程效果。图8.13子程序调用应用示例8.3程序流向控制指令8.3.3中断指令[IRET、EI、DI(FNC03、FNC04、FNC05)]1.中断指令的使用说明(1)IRET:中断子程序返回主程序;EI:允许中断;DI:禁止中断。图8.14所示为中断指令使用说明。EI~DI为允许中断区间,当中断条件出现在主程序此区间内则转向执行有中断标号的子程序。图8.14中断指令的使用8.3程序流向控制指令(2)中断子程序开始有中断标号,由IRET返回。中断子程序一般出现在主程序后面。中断标号必须对应允许中断的条件。(3)中断子程序可嵌套最多二级,多个中断信号同时出现,中断标号低的有优先权。(4)对中断标号为I00□~I50□的输入中断,对应M8050~M8055为1时中断被禁止。对中断标号为I6□□~I8□□的定时器中断,对应M8056~M8058为1时中断被禁止。(5)在特殊场合主程序设计中采用中断指令,可以有目的预先应付突发事件。中断指令也适合于一些必须定时监控诊断的主程序中。8.3程序流向控制指令2.应用举例(1)外部输入中断子程序图8.15外部输入中断子程序8.3程序流向控制指令(2)定时中断子程序图8.16定时器子程序示例8.3程序流向控制指令8.3.4主程序结束指令[FEND(FNC06)]FEND指令表示主程序结束。程序执行到FEND时,进行输入、输出处理,监视定时器和计数器刷新,全部完成以后返回到程序的00步。使用该指令时应注意,子程序和中断子程序必须写在主程序结束指令FEND和END指令之间。在有跳转(CJ)指令的程序中,用FEND作为主程序和跳转程序的结束。在调用子程序(CALL)中,子程序、中断子程序应写在FEND之后且用SRET和IRET返回指令。当主程序中有多个FEND指令,CALL或中断子程序必须写在最后一个FEND及END之间。结束指令的使用如图8.17所示8.3程序流向控制指令8.3.5监视定时指令(WDT(FNC07))在程序的执行过程中,如果扫描的时间(从第00步到END或FEND语句)超过200ms(FN2PLC监视定时器100ms,FX2N为200ms),则PLC将停止运行。在这种情况下使用WDT指令可以刷新监视定时器,使程序执行到END或FEND。WDT为连续型执行指令,WDT(P)为脉冲型指令。两种工作状态的梯形图、工作波形图如图8.17所示。图8.17WDT两种工作状态8.3程序流向控制指令要改变监视定时器时间,可通过改变D8000的数值进行。利用监视定时指令WDT可以将超过200ms的程序(假设240ms)一分为二。图8.18修改监视定时值图8.19监视定时指令WDT的应用8.3程序流向控制指令8.3.6循环指令[FOR、NEXT(FNC08、FNC09)]FOR、NEXT为循环开始和循环结束指令。循环指令的使用如图8.20,在程序运行时,位于FOR-NEXT间的程序可循环执行几次后,再执行NEXT指令后的程序。循环次数n由FOR后跟操作数指定,循环次数值范围为1~32767。FOR、NEXT指令可嵌套使用,最多允许5级嵌套。FOR、NEXT必须成对使用,否则出错NEXT指令不允许写在END、FEND指令的后面8.3程序流向控制指令图8.20FOR、NEXT指令的使用图8.21FOR、NEXT应用示例8.4比较与传送指令8.4.1比较指令[CMP、ZCP(FNC10、FNC11)]1.指令说明CMP为比较指令,ZCP为区间比较指令。要清楚比较结果,用复位指令。(1)比较指令CMP比较指令CMP的使用及复位如图。比较指令是将源操作数[S1]、[S2]中的数据进行比较,比较结果影响目标操作数[D]的状态。当X0=OFF时,CMP指令不执行。M0、M1、M2(2)区间比较指令ZCP区间比较指令ZCP的使用如图。该指令是将一个数[S]与两个源操作数[S1]、[S2]进行代数比较,比较结果影响目标操作数[D]的状态。2.应用实例图所示为CMP的应用示例8.4比较与传送指令8.4.1传送