Date:2020/4/26Page:1第六章功能指令第一节功能指令的基本知识第二节程序流向控制(FNC00~FNC09)第三节传送和比较指令(FNC10~FNC19)第四节算术和逻辑运算指令(FNC20~FNC29)第五节循环移位指令(FNC30~FNC39)第六节数据处理指令(FNC40~FNC49)第七节高速处理指令(FNC50~FNC59)Date:2020/4/26Page:2第一节功能指令的基本知识一、基本格式功能指令的表示格式与基本指令不同,功能指令用编号FNC00-FNC294表示,并给出对应的助记符。多数功能指令有1-4个操作数,但是部分功能指令没有操作数。Date:2020/4/26Page:3第一节功能指令的基本知识一、基本格式梯形图格式X0FNC45MEAND0D10K3[D][S][n])10(3)2()1()0(DDDD指令表格式步序操作码操作数0LDX01MEAND0D10K38。。。。Date:2020/4/26Page:4一、基本格式操作码与操作数操作码(指令助记符):表示指令的功能操作数:指明参与操作的对象源操作数S:执行指令后数据不变的操作数,两个或两个以上时为S1、S2。目标操作数D:执行指令后收据被刷新的操作数,两个或两个以上时为D1、D2。其它操作数m、n:补充注释的常数,用K(十进制)和H(十六进制)表示,两个或两个以上时为m1、m2、n1、n2。Date:2020/4/26Page:5软元件位软元件:只处理开关(ON/OFF)信息的元件,如X、Y、M、S字软元件:处理数据的元件,如T、C、D。位软元件的组合位软元件组合表示数据:4个位元件一组,代表4位BCD码,也表示1位十进制数;用KnMm表示,K为十进制,n为十进制位数,也是位元件的组数,M为位元件,m为位元件的首地址,一般用0结尾的元件。例:K2M0,K1X10二、软元件Date:2020/4/26Page:6数据长度16位:参与运算的数据默认为16位二进制数据32位:32位数据时在操作码前面加D(Double三、数据长度及执行方式X0MOVD0D1X1DMOVD2D4(D0)→(D1)(D3D2)→(D5D4)Date:2020/4/26Page:7执行方式连续执行方式:每个扫描周期都重复执行一次脉冲执行方式:只在信号OFF→ON时执行一次,在指令后加P(Pulse)。X0MOVD0D1X1MOVPD2D4三、数据长度及执行方式Date:2020/4/26Page:8变址:改变操作数的地址变址寄存器的作用:存放改变地址的数据实际地址=当前地址+变址数据32位运算时V和Z组合使用,V为高16位,Z为低16位。X0MOVK8V0X1MOVK4Z0MOVD0V0D10Z0X2V0=(8)Z0=(4)(D8)→(D14)四、变址寄存器V、ZDate:2020/4/26Page:9五、常用特殊辅助继电器功能指令执行结果的标志M8020:零标志M8021:借位标志M8022:进位标志M8029:执行完毕标志M8064:参数出错标志M8065:语法出错标志M8066:电路出错标志M8067:运算出错标志Date:2020/4/26Page:10第二节程序流向控制一、条件跳转指令FNC00CJ二、子程序指令FNC01CALLFNC02SRET三、中断指令FNC03IRETFNC04EIFNC05DI四、主程序结束指令FNC06FEND五、警戒时钟定时器指令FNC07WDT六、循环指令FNC08FORFNC09NEXTDate:2020/4/26Page:11一、条件跳转指令FNC00CJ操作数:指针P0~P127梯形图X10X11…Y1X12P0…CJP0CJP0指令表步序操作码操作数0LDX101CJP0。。。10LDX1111CJP0。。。。20P021LDX1222OUTY1Date:2020/4/26Page:12说明CJ指令跳过部分程序,可以缩短程序的运算周期。如果积算型定时器和计数器的RST指令在跳转程序之外,即使跳转程序生效,RST指令仍然有效。该指令可以连续和脉冲执行方式。一个程序中一个标号只能出现一次。被跳过去的程序中各元件的状态为Y、M、S保持跳转前状态不变。普通计数器停止计数并保持当前值,高速计数器C235~C255继续计数。未工作的定时器不动作,已动作的定时器保持当前值。T192~T199跳转时仍然计时。一、条件跳转指令FNC00CJ【例题】某台设备具有手动/自动两种操作方式。SB3是操作方式选择开关,当SB3处于断开状态时,选择手动操作方式;当SB3处于接通状态时,选择自动操作方式,不同操作方式进程如下:手动操作方式进程:按启动按钮SB2,电动机运转;按停止按钮SB1,电动机停机。自动操作方式进程:按启动按钮SB2,电动机连续运转1min后,自动停机。按停止按钮SB1,电动机立即停机。【解】根据控制要求,设计程序梯形图如图所示。Date:2020/4/26Page:15二、子程序指令子程序调用FNC01CALL操作数:指针P0~P127子程序返回FNC02SRET无操作数说明子程序应该在主程序结束之后编程。CJ指令的指针与CALL的指针不能重复。子程序允许嵌套,嵌套级别最多为5级。子程序只能用T192~T199和T246~T249作定时器。Date:2020/4/26Page:16梯形图X1FENDSRETP8CALLP8Y1X12Y21X11Y30………主程序子程序二、子程序指令子程序调用举例程序功能是:X1、X2、X3分别接通时,将相应的数据传送到D0、D10,然后调用子程序;在子程序中,将D0、D10存储的数据相加,运算结果存储在D20,用D20存储数据控制输出字元件K1Y0。Date:2020/4/26Page:18三、中断指令中断返回FNC03IRET开中断FNC04EI关中断FNC05DI均无操作数梯形图开中断范围X0I100X10FENDIRETEIDIIRETI101中断子程序2中断子程序1Date:2020/4/26Page:19说明FX2N系列PLC具有6个(X0-X5)对应的中断输入点,中断指针为I0△,为0-5。△=0,下降沿中断,△=1,上升沿中断。3点定时器中断,中断指针为I6△△--I8△△,低两位是以ms为单位的定时时间。特殊辅助继电器M805为ON时,禁止执行相应的中断6点计数中断,中断指针为I0△0,△=0-6。三、中断指令Date:2020/4/26Page:20说明中断程序允许嵌套,嵌套级别为2级。中断指针共有15个:输入中断6个,定时器中断3个,计数器中断6个。中断程序用T192~T199和T246~T249作定时器。如果中断信号发生在禁止区,则信号被存储,在EI指令后执行。中断的优先级别多个中断信号不同时产生时,按先后顺序中断。多个中断信号同时产生时,按指针大小中断。三、中断指令Date:2020/4/26Page:21无操作数梯形图X1FENDSRETP8CALLP8Y1X12Y21X11Y30………主程序子程序四、主程序结束指令FNC06FENDDate:2020/4/26Page:22说明与END指令的功能一样,表示主程序结束。中断服务子程序和子程序应该写在FEND之后,并且用IRET和SRET返回。如果多次使用FEND指令,在最后的FEND和END之间编写子程序或中断子程序四、主程序结束指令FNC06FENDDate:2020/4/26Page:23无操作数警戒定时器是一个专用定时器,其设定值存放在特殊的数据寄存器D8000中,并以ms为计时单位。当PLC一上电,则对警戒定时器进行初始化,将K200(设定值为200ms)装入D8000中,每个扫描周期结束时,马上刷新警戒定时器的当前值,使PLC能正常运行。当扫描周期大于200ms时,即超过了警戒定时器的设定值,警戒定时器的逻辑线圈被接通,CPU立即停止执行用户程序,同时切断全部输出,并且报警显示。五、警戒定时器指令FNC07WDTDate:2020/4/26Page:24如果正常的扫描周期超过警戒时钟的设定值,可以在适当程序步中加入WDT指令,适时刷新警戒时钟,使程序能顺利执行。也可以通过MOV指令修改警戒定时器的设定值(D8000的值)。可以计算出程序扫描周期的最大值作为警戒时钟的设定值。WDT指令可用在FOR-NEXT之间。五、警戒定时器指令FNC07WDTDate:2020/4/26Page:25循环开始FNC08FOR操作数[S]:K,H、KnX、KnY、KnM、KnS、T、C、D、V,Z循环结束FNC09NEXT无操作数说明n为循环次数,其范围为1~32767有效。如果指定为-32768~0,则作n=1处理。循环指令最多可以嵌套5级。程序中FOR-NEXT是成对出现的,FOR在前,NEXT在后不可倒置,否则出错。编程时NEXT应该在FEND或END之前,否则出错。六、循环指令Date:2020/4/26Page:26循环指令FOR、NEXT举例【例题】求0+1+2+3+…+100的和,并将和存入D0。【解】用循环指令编写的程序如图所示,D1作为循环增量。【例题】求0+1+2+3+…+100的和,并将和存入D0。应用循环嵌套求和的程序循环指令的脉冲执行方式在本例中,每按下一次按钮接通X0时,执行一次循环指令,数据寄存器D0中存储的数据就增加10。Date:2020/4/26Page:30第三节传送和比较指令一、比较指令FNC10CMP二、区间比较指令FNC11ZCP三、传送指令FNC12MOV四、移位传送指令FNC13SMOV五、取反传送指令FNC14CML六、块传送指令FNC15BMOV七、多点传送指令FNC16FMOV八、数据交换指令FNC17XCH九、变换指令FNC18BCDFNC19BINDate:2020/4/26Page:31操作数[S1]、[S1]:K,H、KnX、KnY、KnM、KnS、T、C、D、V,Z[D]:Y、M、S梯形图[S1]K100C10的当前值时,M0=ONK100=C10的当前值时,M1=ONK100C10的当前值时,M2=ONM0M1M2X0[S2][D]CMPK100C10M0一、比较指令FNC10CMPDate:2020/4/26Page:32说明该指令是将源操作数[S1]和[S2]的中数据进行比较,结果送目标操作数[D]中去。[D]由3个元件组成,指令中[D]给出首地址,其它两个为后面的相邻元件。当X0由ON→OFF时,不执行CMP指令,M0~M2保持断开前的状态,用复位指令RST才能清除比较结果。CMP是进行二进制代数比较。可以32位二进制数比较和脉冲执行方式。如果指令中指定的操作数不全、元件超出范围、软元件地址不对时,程序出错。一、比较指令FNC10CMP工件规格光电信号输入控制字光电转换数据X3X2X1X0小0001K1中0011K3大0111K7【例题】如图所示的传送带输送大、中、小三种规格的工件,用连接X0、X1、X2端子的光电传感器判别工件规格,然后启动分别连接Y0、Y1、Y2端子的相应操作机构;连接X3的光电传感器用于复位操作机构。用比较指令CMP编写工件规格判别程序。图传送带工作台工件规格与光电信号转换关系传送带工件规格判别程序Date:2020/4/26Page:35操作数[S1]、[S1]:K,H、KnX、KnY、KnM、KnS、T、C、D、V,Z[D]:Y、M、S梯形图K100≤C10的当前值120时,M1=ON[S1]K100C10的当前值时,M0=ONK120C10的当前值时,M2=ONM0M1M2X0[S2][D]ZCPK100K120C10M0[S]二、区间比较指令FNC11ZCPDate:2