第7章功能指令及其应用功能指令的基本规则7.1步进顺控的编程方法7.2实训课题9功能指令的应用FNC00~FNC09[程序流程]FNC110~FNC119[浮点运算1]FNC10~FNC19[传送与比较]FNC120~FNC129[浮点运算2]FNC20~FNC29[算术与逻辑运算]FNC130~FNC139[浮点运算3]FNC30~FNC39[循环与移位]FNC140~FNC149[数据处理2]FNC40~FNC49[数据处理]FNC150~FNC159[定位]FNC50~FNC59[高速处理]FNC160~FNC169[时钟运算]FNC60~FNC69[方便指令]FNC170~FNC179[格雷码变换]FNC70~FNC79[外部设备I/O]FNC220~FNC249[触点比较指令]FNC80~FNC89[外部设备SER]表7-1功能指令分类表7.1功能指令的基本规则7.1.1功能指令的表示形式其表现的形式如下:[S﹒]叫做源操作数,其内容不随指令执行而变化,在可利用变址修改软元件的情况下,用加“﹒”符号的[S﹒]表示,源的数量多时,用[S1﹒][S2﹒]等表示。[D﹒]叫做目标操作数,其内容随指令执行而改变,如果需要变址操作时,用加“﹒”的符号[D﹒]表示,目标的数量多时,用[D1﹒][D2﹒]等表示。[n﹒]叫做其他操作数,既不作源操作数,又不作目标操作数,常用来表示常数或者作为源操作数或目标操作数的补充说明。可用十进制的K、十六进制的H和数据寄存器D来表示。在需要表示多个这类操作数时,可用[n1]、[n2]等表示,若具有变址功能,则用加“﹒”的符号[n﹒]表示。此外其他操作数还可用[m]来表示。7.1.2数据长度和指令类型1.数据长度功能指令可处理l6位数据和32位数据,例如:2.指令类型FX系列PLC的功能指令有连续执行型和脉冲执行型两种形式。连续执行型的如:上图程序是连续执行方式的例子,当X1为ON时,上述指令在每个扫描周期都被重复执行一次。脉冲执行型的如:7.1.3操作数操作数按功能分有源操作数、目标操作数和其他操作数;按组成形式分有位元件、字元件和常数。1.位元件和字元件2.位元件的组合3.变址寄存器7.2功能指令介绍7.2.1程序流程指令程序流程指令是与程序流程控制相关的指令,程序流程指令如表7-2所示。FNCNO.指令记号指令名称FNCNO.指令记号指令名称00CJ条件跳转05DI禁止中断01CALL子程序调用06FEND主程序结束02SRET子程序返回07WDT警戒时钟03RET中断返回08FOR循环范围开始04EI允许中断09NEXT循环范围结束表7-2程序流程指令这里仅介绍常用的CJ、CALL、SRET、FEND指令。1.跳转指令CJFNC00CJ(P)(16)适合软元件占用步数字元件无3步位元件无2.子程序调用指令CALL和子程序返回指令SRETFNC01CALL(P)(16)FNC02SRET适合软元件占用步数字元件无CALL:3步SRET:1步位元件无3.主程序结束FENDFNC06FEND适合软元件占用步数字元件无1步位元件无7.2.2传送与比较指令传送与比较指令如表7-3所示。这里仅介绍CMP、ZCP、MOV3条常用指令。1.比较指令CMPFNCNO.指令记号指令名称FNCNO.指令记号指令名称10CMP比较指令15BMOV成批传送11ZCP区间比较16FMOV多点传送12MOV传送17XCH数据交换13SMOV位移动18BCDBCD传送14CML取反传送19BINBIN传送表7-3传送比较指令2.区间比较指令ZCPZCP指令是将一个数据与两个源数据进行比较的指令。源数据[S1.]的值不能大于[S2.]的值,若[S1.]大于[S2.]的值,则执行ZCP指令时,将[S2.]看作等于[S1.]。3.传送指令MOVFNC10CMP(P)(16/32)适合软元件占用步数字元件16位:7步32位:13步位元件K、HKnXKnYKnMKnSTCDV、ZS1﹒S2﹒XYMSD﹒FNC11ZCP(P)(16/32)适合软元件占用步数字元件16位:9步32位:17步位元件K、HKnXKnYKnMKnSTCDV、ZS1﹒S2﹒S﹒XYMSD﹒FNC12MOV(P)(16/32)适合软元件占用步数字元件16位:5步32位:9步位元件S﹒K、HKnXKnYKnMKnSTCDV、ZD﹒7.2.3算术与逻辑运算指令算术与逻辑运算指令包括算术运算和逻辑运算,共有10条指令,如表7-4所示。FNCNO.指令记号指令名称FNCNO.指令记号指令名称20ADDBIN加法25DECBIN减121SUBBIN减法26WAND逻辑与22MULBIN乘法27WOR逻辑或23DIVBIN除法28WXOR逻辑异或24INCBIN加129NEG求补码表7-4算术与逻辑运算指令这里介绍ADD、SUB、MUL、DIV、INC、DEC、WAND、WOR、WXOR9条指令。1.BIN加法运算指令ADDFNC20ADD(P)(16/32)适合软元件占用步数字元件16位:7步32位:13步位元件S1.S2.K、HKnXKnYKnMKnSTCDV、ZD.ADD指令的使用说明如下:2.BIN减法运算指令SUBFNC21SUB(P)(16/32)适合软元件占用步数字元件16位:7步32位:13步位元件S1.S2.K、HKnXKnYKnMKnSTCDV、ZD.SUB指令的使用说明如下:3.BIN乘法运算指令MULFNC22MUL(P)(16/32)适合软元件占用步数字元件16位:7步32位:13步位元件S1﹒S2﹒K、HKnXKnYKnMKnSTCDV、ZD﹒限16位可用MUL指令16位运算的使用说明如下:参与运算的两个源指定的内容的乘积,以32位数据的形式存入指定的目标,其中低16位存放在指定的目标元件中,高16位存放在指定目标的下一个元件中,结果的最高位为符号位。32位运算的使用说明如下:4.BIN除法运算指令DIVFNC23DIV(P)(16/32)适合软元件占用步数字元件16位:7步32位:13步位元件S1﹒S2﹒K、HKnXKnYKnMKnSTCDV、ZD﹒限16位可用16位运算的使用说明如下:[S1﹒]指定元件的内容是被除数,[S2﹒]指定元件的内容是除数,[D﹒]所指定的元件存入运算结果的商,[D﹒]的后一元件存入余数。32位运算的使用说明如下:5.BIN加1运算指令INC和BIN减1运算指令DECFNC24INCFNC25DEC(P)(16/32)适合软元件占用步数字元件16位:3步32位:5步位元件K、HKnXKnYKnMKnSTCDV、ZD﹒INC指令使用说明如下:X0每ON一次,[D.]所指定元件的内容就加1,如果是连续执行的指令,则每个扫描周期都将执行加1运算,所以使用时应当注意。DEC指令的使用说明如下:X0每ON一次,[D.]所指定元件的内容就减1,如果是连续执行的指令,则每个扫描周期都将执行减1运算。应用举例,如图7-12所示。X20为ON时清除Z0的值,X21每ON一次依次将C0~C9的当前值转化为BCD码向K4Y0输出,当Z0的值为10时,M1动作,自动复位Z0,可再次将C0~C9的当前值以BCD码输出。6.逻辑字与指令WAND、逻辑字或指令WOR、逻辑字异或指令WXORFNC26WANDFNC27WORFNC28WXOR(P)(16/32)适合软元件占用步数字元件16位:7步32位:13步位元件S1﹒S2﹒K、HKnXKnYKnMKnSTCDV、ZD﹒逻辑与指令的使用说明如下:逻辑或指令的使用说明如下:逻辑异或指令的使用说明如下:7.2.4循环与移位指令循环与移位指令是使字数据、位组合的字数据向指定方向循环、移位的指令,如表7-5所示。FNCNO.指令记号指令名称FNCNO.指令记号指令名称30ROR右循环移位35SFTL位左移31ROL左循环移位36WSFR字右移32RCR带进位右循环移位37WSFL字左移33RCL带进位左循环移位38SFWR移位写入34SFTR位右移39SFRD移位读出表7-5循环与移位指令这里仅介绍ROR、ROL、RCR、RCL指令。1.右循环移位指令ROR和左循环移位指令ROLFNC30RORFNC31ROL(P)(16/32)适合软元件占用步数字元件16位:7步32位:13步位元件K、HKnXKnYKnMKnSTCDV、ZnD.2.带进位的右循环RCR和带进位的左循环RCLFNC32RCRFNC33RCL(P)(16/32)适合软元件占用步数字元件16位:7步32位:13步位元件K、HKnXKnYKnMKnSTCDV、ZnD.7.2.5数据处理指令数据处理指令是可以进行复杂的数据处理和实现特殊用途的指令,如表7-6所示。FNCNO.指令记号指令名称FNCNO.指令记号指令名称40ZRST区间复位43SUM求ON位数41DECO译码44BONON位判断42ENCO编码45MEAN平均值表7-6数据处理指令FNCNO.指令记号指令名称FNCNO.指令记号指令名称46ANS信号报警器置位48SORBIN数据开方运算47ANR信号报警器复位49FLTBIN整数变换2进制浮点数续表这里仅介绍ZRST、DECO、ENCO、SUM指令。1.区间复位指令ZRST2.解(译)码指令DECO3.编码指令ENCO4.ON位数计算指令SUMFNC40ZRST(P)(16)适合软元件占用步数字元件5步位元件K、HKnXKnYKnMKnSTCDV、ZD1.D2.XYMSD1.D2.FNC41DECO(P)(16)适合软元件占用步数字元件7步位元件S.K、HKnXKnYKnMKnSTCDV、ZD.S.XYMSD.FNC42ENCO(P)(16)适合软元件占用步数字元件7步位元件K、HKnXKnYKnMKnSTCDV、ZnD﹒S﹒S.XYMSFNC43SUM(P)(16/32)适合软元件占用步数字元件16位:5步32位:9步S﹒K、HKnXKnYKnMKnSTCDV、ZD﹒7.2.6高速处理指令高速处理指令能充分利用可编程控制器的高速处理能力进行中断处理,达到利用最新的输入输出信息进行控制,高速处理指令如表7-7所示。FNCNO.指令记号指令名称FNCNO.指令记号指令名称50REF输入输出刷新55HSZ区间比较(高速计数器)51REFF滤波调整56SPD脉冲密度52MTR矩阵输入57PLSY脉冲输出53HSCS比较置位(高速计数器)58PWM脉宽调制54HSCR比较复位(高速计数器)59PLSR可调速脉冲输出表7-7高速处理指令在高速处理指令中仅介绍HSCS和HSCR指令。1.比较置位指令(高速计数器)HSCSFNC53HSCS(P)(32)适合软元件占用步数字元件13步位元件S2.K、HKnXKnYKnMKnSTCDV、ZS1﹒XYMSD.HSCS指令是对高速计数器当前值进行比较,并通过中断方式进行处理的指令,指令形式如下:当前值与设定值相等时Y000立即输出2.比较复位指令(高速计数器)HSCRFNC54HSCR(32)适合软元件占用步数字元件13步位元件S2.K、HKnXKnYKnMKnSTCDV、ZS1﹒XYMSD.HSCR指令的形式如下:7.2.7方便指令方便指令是利用最简单的指令完成较为复杂的控制的指令,如表7-8所示。FNCNO.指令记号指令名称FNCNO.指令记号指令名称60IST置初始状态65STMR特殊定时器61SER数据查找66ALT交替输出62ABSD凸轮控制(绝对方式)67RAMP斜坡信号63INCD凸轮控制(增量方式)68ROTC旋转工作台控制64TIMR示教定时器69SORT数据排序表7-8方便指令7.2.8外部设备I/O指令FNCNO.指令记号指令名称FNCNO.指令记号指令名称70TKY数字键输入75ARWS方向开关71HKY十六键输入76ASCASC码转换72DSW数字开关77PRASC码打印73SEGD七段译码78FROMBFM读出74SEGL七段码分时显示79TOBF