图3-31 监控定时器指令的使用
使用WDT指令时应注意:
1)如果在后续的FOR-NEXT循环中,执行时间可能超过监控定时器的定时时间,可将WDT插入循环程序中。
2)当与条件跳转指令CJ对应的指针标号在CJ指令之前时(即程序往回跳)就有可能连续反复跳步使它们之间的程序反复执行,使执行时间超过监控时间,可在CJ指令与对应标号之间插入WDT指令。
6.循环指令
循环指令共有两条:循环区起点指令FOR,编号为FNC08,占3个程序步;循环结束指令NEXT,编号为FNC09,占用1个程序步,无操作数。
在程序运行时,位于FOR~NEXT间的程序反复执行n次(由操作数决定)后再继续执行后续程序。循环的次数n=1~32767。如果N=-32767~0之间,则当作n=1处理。
如图3-32所示为一个二重嵌套循环,外层执行5次。如果D0Z中的数为6,则外层A每执行一次则内层B将执行6次。
图3-32 循环指令的使用
使用循环指令时应注意:
1) FOR和NEXT必须成对使用; 2)FX2N系列PLC可循环嵌套5层;
3)在循环中可利用CJ指令在循环没结束时跳出循环体;
4)FOR应放在NEXT之前,NEXT应在FEND和END之前,否则均会出错。 (二)传送与比较类指令(FNC10~FNC19) 1.比较指令
比较指令包括CMP(比较)和ZCP(区间比较)二条。
(1)比较指令CMP (D)CMP(P)指令的编号为FNC10,是将源操作数[S1.]和源操作数[S2.]的数据进行比较,比较结果用目标元件[D.]的状态来表示。如图3-33所示,当X1为接通时,把常数100与C20的当前值进行比较,比较的结果送入M0~M2中。X1为OFF时不执行,M0~M2的状态也保持不变。
图3-33 比较指令的使用
(2)区间比较指令ZCP (D)ZCP(P)指令的编号为FNC11,指令执行时源操作数[S.]与[S1.]和[S2.]的内容进行比较,并比较结果送到目标操作数[D.]中。如图3-34所示,当X0为ON时,把C30当前值与K100和K120相比较,将结果送M3、M4、M5中。X0为OFF,则ZCP不执行,M3、M4、M5不变。
图3-34 区间比较指令的使用
使用比较指令CMP/ZCP时应注意:
1)[S1.]、[S2.]可取任意数据格式,目标操作数[D.]可取Y、M和S。 2)使用ZCP时,[S2.]的数值不能小于[S1.] 3) 所有的源数据都被看成二进制值处理; 2.传送类指令
(1)传送指令MOV (D)MOV(P)指令的编号为FNC12,该指令的功能是将源数据传送到指定的目标。如图3-35所示,当X0为ON时,则将[S.]中的数据K100传送到目标操作元件[D.]即D10中。在指令执行时,常数K100会自动转换成二进制数。当X0为OFF时,则指令不执行,数据保持不变。
图3-35 传送指令的使用
使用应用MOV指令时应注意:
1)源操作数可取所有数据类型,标操作数可以是KnY、KnM、KnS、T、C、D、V、Z。 2)16位运算时占5个程序步,32位运算时则占9个程序步。
(2)移位传送指令SMOV SMOV(P)指令的编号为FNC13。该指令的功能是将源数据(二进制)自动转换成4位BCD码,再进行移位传送,传送后的目标操作数元件的BCD码自动转换成二进制数。如图3-36所示,当X1为ON时,将D1中右起第4位(m1=4)开始的2位(m2=2) BCD码移到目标操作数D2的右起第3位(n=3)和第2位。然后D2中的BCD码会自动转换为二进制数,而D2中的第1位和第4位BCD码不变。
图3-36 移位传送指令的使用
使用移位传送指令时应该注意:
1)源操作数可取所有数据类型,目标操作数可为KnY、KnM、KnS、T、C、D、V、Z。
2)SMOV指令只有16位运算,占11个程序步。
(3)取反传送指令CML (D)CML(P)指令的编号为FNC14。它是将源操作数元件的数据逐位取反并传送到指定目标。如图3-37所示,当X0为ON时,执行CML,将D0的低4位取反向后传送到Y3~Y0中。
图3-37 取反传送指令的使用
使用取反传送指令CML时应注意:
1)源操作数可取所有数据类型,目标操作数可为KnY、KnM、KnS、T、C、D、V、Z.,若源数据为常数K,则该数据会自动转换为二进制数。
2)16位运算占5个程序步,32位运算占9个程序步。
(4)块传送指令BMOV BMOV(P)指令的ALCE编号为FNC15,是将源操作数指定元件开始的n个数据组成数据块传送到指定的目标。如图3-38所示,传送顺序既可从高元件号开始,也可从低元件号开始,传送顺序自动决定。若用到需要指定位数的位元件,则源操作数和目标操作数的指定位数应相同。
图3-38 块传送指令的使用
使用块传送指令时应注意:
1)源操作数可取KnX、 KnY、KnM、KnS、T、C、D和文件寄存器,目标操作数可取. KnT、KnM、KnS、T、C和D;
2)只有16位操作,占7个程序步;
3)如果元件号超出允许范围,数据则仅传送到允许范围的元件。
(5)多点传送指令FMOV (D)FMOV(P)指令的编号为FNC16。它的功能是将源操作数中的数据传送到指定目标开始的n个元件中,传送后n个元件中的数据完全相同。如图3-39所示,当X0为ON时,把K0传送到D0~D9中。
图3-39 多点传送指令应用
使用多点传送指令FMOV时应注意:
1)源操作数可取所有的数据类型,目标操作数可取KnX、KnM、KnS、T、C、和D,n小等于512;
2)16位操作占7的程序步,32位操作则占13个程序步; 3)如果元件号超出允许范围,数据仅送到允许范围的元件中。 3.数据交换指令
数据交换指令(D)XCH(P)的编号为FNC17,它是将数据在指定的目标元件之间交换。如图3-40所示,当X0为ON时,将D1和D19中的数据相互交换。
图3-40 数据交换指令的使用
使用数据交换指令应该注意:
1)操作数的元件可取KnY、KnM、KnS、T、C、D、V和Z.。
2)交换指令一般采用脉冲执行方式,否则在每一次扫描周期都要交换一次。 3)16位运算时占5个程序步,32位运算时占9个程序步。 4.数据变换指令
(1)BCD变换指令BCD (D)BCD(P)指令的ALCE编号为FNC18。它是将源元件中的二进制数转换成BCD码送到目标元件中,如图3-41所示。
如果指令进行16位操作时,执行结果超出0~9999范围将会出错;当指令进行32位操作时,执行结果超过0~99999999范围也将出错。PLC中内部的运算为二进制运算,可用BCD指令将二进制数变换为BCD码输出到七段显示器。
(2)BIN变换指令BIN (D)BIN(P)指令的编号为FNC19。它是将源元件中的BCD数据转换成二进制数据送到目标元件中,如图3-41所示。常数K不能作为本指令的操作元件,因为在任何处理之前它们都会被转换成二进制数。
图3-41 数据变换指令的使用
使用BCD/BIN指令时应注意:
1)源操作数可取KnK、KnY、KnM、KnS、T、C、D、V和Z,目标操作数可取KnY、KnM、KnS、T、C、D、V和Z;
2)16位运算占5个程序步,32位运算占9个程序步。 (三)算术和逻辑运算类指令(FNC20~FNC29)
1.算术运算指令
(1)加法指令ADD (D)ADD(P)指令的编号为FNC20。它是将指定的源元件中的二进制数相加结果送到指定的目标元件中去。如图3-42所示,当X0为ON时,执行(D10)+(D12)
→(D14)。
图3-42 加法指令的使用
(2)减法指令SUB (D)SUB(P)指令的编号为FNC21。它是将[S1.]指定元件中的内容以二进制形式减去[S2.]指定元件的内容,其结果存入由[D.]指定的元件中。如图3-43所示,当X0为ON时,执行(D10)—(D12)→(D14)。
图3-43 减法指令的使用
使用加法和减法指令时应该注意:
1) 操作数可取所有数据类型,目标操作数可取KnY、KnM、KnS、T、C、D、V和Z.。 2) 16位运算占7个程序步,32位运算占13个程序步。 3)数据为有符号二进制数,最高位为符号位(0为正,1为负)。
4)加法指令有三个标志:零标志(M8020)、借位标志(M8021)和进位标志(M8022)。当运算结果超过32767(16位运算)或2147483647(32位运算)则进位标志置1;当运算结果小于-32767(16位运算)或-2147483647(32位运算),借位标志就会置1。
(3)乘法指令MUL (D) MUL (P)指令的编号为FNC22。数据均为有符号数。如图3-44所示,当X0为ON时,将二进制16位数[S1.]、[S2.]相乘,结果送[D.]中。D为32位,即(D0)×(D2)→(D5,D4)(16位乘法);当X1为ON时,(D1,D0)×(D3,D2)→(D7,D6,D5,D4)(32位乘法)。
图3-44 乘法指令的使用
(4)除法指令DIV (D) DIV (P)指令的编号为为FNC23。其功能是将[S1.]指定为被除数,[S2.]指定为除数,将除得的结果送到[D.]指定的目标元件中,余数送到[D.]的下一个元件中。如图3-45所示,当X0为ON时(D0)÷(D2)→(D4)商,(D5)余数(16位除法);当X1为ON时(D1,D0)÷(D3,D2)→(D5,D4)商,(D7,D6)余数(32位除法)。
图3-45 除法指令的使用
使用乘法和除法指令时应注意: