1、单击此处编辑母版标题样式,#,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第,5,章,FX,系列,PLC,的功能指令,5.1,功能指令的基本格式,5.2,程序流向控制指令,5.3,传送和比较指令,5.4,四则运算和逻辑运算指令,5.5,循环移位与移位指令,5.6,数据处理指令,5.7,高速处理指令,5.8,外部,I/O,设备指令,5.9,外部设备(,SER,)指令,5.10,外部,FX,2,设备指令,本章要点,1,要求掌握各类功能指令及运用功能指令编程的方法。,2,要求能够针对具体的控制对象运用功能指令编程。,本章难点,1,移位循环类指令的应用。,2,数据处理类指令的应用。,3,
2、高速处理类指令的理解及应用。,4,外部设备通信处理类指令的理解。,PLC,的发展和需求,?,一般来说功能指令可以分为以下几类:,(,1,)程序流向控制 (,2,)传送与比较 (,3,)算术与逻辑运算,(,4,)移位与循环移位 (,5,)数据处理 (,6,)高速处理,(,7,)便利指令 (,8,)外部输入输出处理 (,9,)外部设备通讯,FX2,系列,PLC,的功能指令特点,?,5.1,功能指令的基本格式,一、功能指令的基本格式及使用要素,和基本指令不同,功能指令不含表达梯形图符号间相互关系的成分。而是直接表达本指令要做什么。,功能指令的执行条件,功能框,表示指令的名称、相关数据或数据的存储地址
3、当,X0,接通时,,D10,和,D11,中的数据进行交换。,加法指令格式及要素,指令名称,助记符,指令代码,操作数范围,程序步,S1,(,),S2,(,),D,(,),加法,ADD,ADD,(,P,),FNC20,(,16/32,),K,、,H,、,KnX,、,KnY,、,KnM,、,KnS,、,T,、,C,、,D,、,V,、,Z,KnX,、,KnY,、,KnM,、,Kn,、,ST,、,C,、,D,、,V,、,Z,ADD,、,ADDP,7,步,;DADD,、,DADDP13,步,加法指令的基本格式及其梯形图,功能指令的使用要素,二、,FX2,系列,PLC,数据类软元件,1,变址寄存器(,V,
4、Z,各一点),16,位寄存器,它通用数据寄存器一样,是进行数值数据读、写 操作。进行,32,位数据运算时,将两者结合使用,指定,Z,为低位,组合成为(,V,,,Z,)。如果直接向,V,写入较大的数据,易出现运算误差。,功能指令编号,助记符,数据长度:(,D,),32,位,无(,D,),16,位,执行形式,有(,P,)的为脉冲执行型。,源操作数,目标操作数,变址功能:操作数加,“,”,(,2,)助记符,(,3,)数据长度,(,4,)执行形式,(,5,)操作数,(,6,)变址功能,(,1,)功能指令编号,(,7,)程序步数,变址寄存器(,V,,,Z,各一点)的使用,:,如:当,V=8,,,Z=
5、14,时,,D,(,5+8,),=D,(,l3,),D,(,10+14,),=D,(,24,),则(,D13,)(,D24,),当,V=9,,,D,(,5+9,),=D,(,14,),,则(,D14,)(,D24,),但是变址寄存器不能修改,V,与,Z,本身或位数指定用的,Kn,参数。,例如,K4M0Z,有效,而,K0ZM0,无效。,2,指针(,P/I,),指针用作跳转、中断等程序的人口地址,与跳转、子程序和中断程序等指令一起应用。地址号采用十进制数分配。,按用途可分为指针,P,和指针,I,两类:,指针,P,和指针,I,(,1,)指针,P,:其地址号,P0P63,,共,64,点。,P63,即相
6、当于,END,指令。指针,P,用于子程序调用指令,其地址号,P0,P62,共,63,点。,在编程时,指针编号不能重复使用。,(,b,)子程序调用,(,2,)指针,I,输入中断用,I00,I50,,共,6,点;定时器中断用,16,18,,共,3,点,I,定时器中断,I,0,输入中断,输入号位,05,,每个输入只能用一次,0,:下降沿中断,1,:上升沿中断次,定时器中断号,68,099ms,I00l,为输入,X0,从,OFFON,变化时,执行由该指针作为标号后面的中断程序,并在执行,IRET,指令时返回。,例如,,I610,为每隔,10ms,就执行标号为,I610,后面的中断程序一次,在,IRET
7、指令执行时返回。,(,3,)数据类软元件的结构形式,基本形式:基本结构为,16,位存储单元。最高位(第,16,位)为符号位,双字元件:为了完成,32,位数据的存储,可以使用二个字元件组成,“,双字元件,”,,其中低位元件存储,32,位数据的低位部分,高位元件存储,32,位数据的高位部分。最高位(第,32,位)为符号位。在指令中使用双字元件时,一般只用其低位地址表示这个元件,其高位同时被指令使用。,位组合元件,:4,位,BCD,码表示一位十进制数据,由此产生了位组合元件,表达为,KnX,、,KnY,、,KnM,、,KnS,等形式,式中,Kn,指有,n,组这样的数据。,5.2,程序流向控制指令,
8、FX,2,系列可编程控制器有,10,条程序流向控制类指令,CJ,(条件跳转),CALL,(子程序调用),SRET,(子程序返回),IRET,(中断返回),EI,、,DI,(中断允许与中断禁止),FEND,(主程序结束),WDT,(监控定时器刷新),FOR,、,NEXT,(循环开始和循环结束),5.2.1 CJ,条件跳转指令要素,指令名称,助记符,指令代码位数,操作数,程序步,条件跳转,CJ,CJ,(,P,),FNC00,(,16,),P0P63,P63,即,END,CJ,和,CJ,(,P,),3,步,标号,P 1,步,元件,跳转前触点状态,跳转后触点状态,跳转后线圈状态,Y,、,M,、,S,X
9、1,、,X2,、,X3 OFF,X1,、,X2,、,X3 ON,Y1,、,M1,、,S1 OFF,X1,、,X2,、,X3 ON,X1,、,X2,、,X3 OFF,Y1,、,M1,、,S1 ON,10ms,,,100ms,定时器,X4 OFF,X4 ON,定时器不动作,X4 ON,X4 OFF,定时器停止,,X0 OFF,后继续计时,跳转程序中元器件在跳转执行中的工作状态,X0=OFF,时,,Y1,由,X1,驱动。,X0=ON,时,,Y1,由,X12,驱动。同一线圈一个在跳转程序之内,一个在跳转程序之外是不允许。,可以看出:,(,1,)处于被跳转程序段中的继电器、辅助继电器、状态继电器由于该程
10、序段不再执行,即使梯形图中涉及的工作条件发生变化,它们的工作状态将保持跳转发生前的状态不变。,被跳过程序段中的继电器及计数器器,无论其是否具有掉电保持功能,由于相关程序停止执行,它们的现实值寄存器被锁定,跳转发生后其计数、计时值保持不变,在跳转终止,程序继续执行时,计时计数器将继续计时。另外,计时、计数器的复位指令具有优先权,即使复位指令位于被跳过的程序段中,执行条件满足时,复位工作也将执行。,元件,跳转前触点状态,跳转后触点状态,跳转后线圈状态,Y,、,M,、,S,X1,、,X2,、,X3 OFF,X1,、,X2,、,X3 ON,Y1,、,M1,、,S1 OFF,X1,、,X2,、,X3 O
11、N,X1,、,X2,、,X3 OFF,Y1,、,M1,、,S1 ON,10ms,,,100ms,定时器,X4 OFF,X4 ON,定时器不动作,X4 ON,X4 OFF,定时器停止,,X0 OFF,后继续计时,计数器,X7 OFF,,,X10 OFF,X10 ON,计数器不动作,X7 OFF,,,X10 ON,X10 OFF,计数器停止,,X0 OFF,后继续计数,功能,指令,X11 OFF,X11 ON,除,FNC52FNC59,之外的其他功能指令不执行,X11 ON,X11 OFF,1ms,定时器,X5 OFF,,,X6 OFF,X6 ON,定时器不动作,X5 OFF,,,X6 ON,X6
12、 OFF,定时器停止,,X0 OFF,后继续计时,(,2,)在程序中两条跳转指令使用相同的指针号时,:,如果,X20,为,ON,,第一条跳转指令生效,从这一步跳到标号,P9,。如果,X20,为,OFF,,而,X21,为,ON,,则第二条跳转指令生效,一个标号只能出现一次,如出现多于一次,则会出错。,(,3,)标号一般设在相关的跳转指令之后,也可以出现在跳转指令之前,但要注意从程序执行顺序来看,如果由于标号在前造成该程序的执行时间超过了警戒时钟设定值,则程序就会出错。,(,4,)使用,CJ,(,P,)指令时,跳转只执行一个扫描周期,用辅助继电器,M8000,作为跳转指令的工作条件,跳转就成为无条
13、件跳转。,(,5,)跳转可用来执行程序初始化工作。,在程序中,使用,“,CJ,”,指令仅在执行条件由,OFF,变,ON,后执行一个扫描周期。用这种方法,,“,CJ P,”,和标号,P,之间设置输出的程序执行完后,在以后的扫描周期中就被跳过。,(,6,)跳转与主控区的关系。,对跳过整个主控区(,MC,MCR,)的跳转不受限制。,从主控区外跳到主控区内时,跳转独立于主控操作,,CJ P*,执行时,不论主控触点工作条件状态如何,均作,ON,处理。,在主控区内跳转时,如主控触点工作条件状态为,OFF,,跳转不可能执行。,从主控区内跳到主控区外时,主控触点工作条件状态为,OFF,时,跳转不可能执行。主控
14、触点工作条件状态为,ON,时,跳转条件满足可以跳转,这时,MCR,被忽略,但不会出错。,从一个主控区内跳到另一个主控区内时,当第一个主控触点工作条件状态为,ON,时,可以跳转。执行跳转时不论第二个主控触点工作条件状态的实际状态如何,均看做,ON,。,MCR N0,被忽略。,(,7,)在编写跳转程序的指令表时,标号需占一行,5.2.2,子程序调用与返回指令,指令名称,助记符,指令代码位数,操作数,程序步,D,(,),子程序调用,CALL,CALL,(,P,),FNC01,(,16,),P0P62,嵌套,5,级,3,步,标号,P 1,步,子程序返回,SRET,FNC02,无,1,步,当,X0,为,
15、ON,时,,CALL,指令使程序跳到标号,P10,处,子程序,P10,安排在主程序结束指令,FEND,之后,标号,P10,和子程序返回指令,SRET,间的程序构成了,P10,子程序的内容。,标号范围从,P0P62,,但同一标号不能出现多于,1,次。,CJ,指令中用过的标号不能重复再用。但不同的,CALL,指令可调用同一标号的子程序。,注意:,(,1,)在子程序中可再,CALL,子程序,形成子程序嵌套,总数可有,5,级嵌套。,5.2.3,中断指令,指令名称,助记符,指令代码位数,操作数,程序步,D,(,),中断返回指令,IRET,FNC03,无,1,步,允许中断指令,EI,FNC04,无,1,步
16、禁止中断指令,DI,FNC05,无,1,步,中断是计算机所特有的一种工作方式,执行中断子程序。和子程序一样,中断子程序也是为某些特定的控制功能而设定的。,和普通子程序的不同点是,:,中断源,:,引起中断的信号,外部中断和定时器中断。,FX2,系列可编程序控制器有,响应时间小于机器的扫描周期,外部中断信号,从输入端子送入,可用于机外突发随机事件引起的中断,定时中断,是机内中断,使用定时器引出,多用于周期性工作场合,中断的控制是脱离于程序的扫描执行机制的,多个突发事件出现时处理也必须有个秩序(,FX2,系列,PLC,一共可安排,9,个中断,其优先权依中断号的大小决定,号数小的中断优先权高,外部中
17、断号整体上高于定时器中断),中断优先权:,指令,EI,与,DI,之间的程序段为允许中断区间。当程序处理到允许中断区间时,当,X10 ON,态,则转而处理相应的中断子程序,每个子程序处理到,IRET,指令时返回原断点。,E1,D1,当相应的特殊辅助继电器置,1,时,中断子程序不能执行。例如,当,M805,置,1,时,相应的中断子程序,I*,不执行。在一个中断程序执行中断时,其它中断禁止。但是,在中断程序中编入,EI,和,DI,指令可实现,2,级中断嵌套。在子程序或中断子程序中可用定时器为,T192T199,和,T246T249,。,从图中可以看出:中断程序作为一种子程序安排在主程序结束指令之后。
18、主程序带有多个中断子程序时,中断标号和距其最近的一处中断返回指令构成一个中断子程序。,注意:,(,1,)一个中断指针(,I*,)占一步,最多可设置,9,个中断点。,(,3,)其中,2,个中断点可产生多层中断。,(,4,)中断信号的脉宽必须超过,200s,。,(,5,)多个中断信号顺序产生时,最先产生的中断信号有优先权。若,2,个或,2,个以上的中断信号同时产生时,中断指针号较低的有优先权。,(,6,)如果中断信号产生于禁止中断区间(,DI,到,EI,范围),这中断信号被存贮,并在,EI,指令之后被执行(除非相应的,M805,为,ON,)。,5.2.4,主程序结束指令,指令名称,助记符,指令代码
19、位数,操作数,程序步,D,(,),主程序结束,FEND,FNC06,无,1,步,FEND,指令表示主程序结束。执行到,FEND,指令时机器进行输出处理,输入处理,警戒时钏刷新,完成以后返回到第,0,步。,子程序、中断服务子程序应写在,FEND,之后,。,CALL,,,CALL,(,P,)指令的子程序必须以,SRET,指令作结束,中断子程序必须以,IRET,指令作结束。,若,FEND,指令在,CALL,或,CALL,(,P,)指令执行之后,,SRET,指令执行之前出现,则被认为是错误的。另一个类似的错误是使,FEND,指令处于,FOR,NEXT,循环之中。,子程序及中断程序必须写在,FEND,指
20、令与,END,指令之间。,5.2.5,警戒时钟指令,指令名称,助记符,指令代码位数,操作数,程序步,D,(,),警戒时钟,WDT,FNC07,无,1,步,WDT,指令刷新顺序程序的警戒时钟。如果扫描周期时间超过,100ms,,,PC,将停止运行。在这种情况下,应将,WDT,指令插到合适的程序步中刷新警戒时钟,以使顺序程序得以继续执行直到,END,。,如果希望每次扫描周期时间超过,100ms,,可用,MOV,指令(,FNC12,)改写特殊数据寄存器,D8000,的值。,WDT,指令还可用于下列目的:当与,CJ,指令对应的标号的步序低于,CJ,指令步序号时,在标号后编入,WDT,指令。可编入,FO
21、R,NEXT,循环之中。,5.2.6,循环指令,指令名称,助记符,指令代码位数,操作数,程序步,S,(,),循环开始指令,FOR,FNC08,(,16,),K,、,H,、,KnX,、,KnY,、,KnM,、,KnS,、,T,、,C,、,D,、,V,、,Z,3,步(嵌套,5,层),循环结束指令,NEXT,FNC09,无,1,步,循环指令用于某种操作需反复进行的场合。二条指令总是成对出现,相距最近的,FOR,指令和,NEXT,指令是一对,循环指令最多允许,5,级嵌套。循环次数范围:,132767,。,注意:,下述情况下会出错:,NEXT,指令在,FOR,指令之前。,只有,FOR,而没有,NEXT,
22、指令与之对应。,NEXT,指令编在,FEND,或,END,指令之后。,程序流向控制指令与程序结构:,程序的结构:,是由一条条的指令组成的,来表达一定功能的指令块而组织起来。,程序结构至少在以下几个方面具有重要的意义,方便于程序的编写。编程序和写文章类似,合适的文章结构有利于作者思想的表达,选取了合适的文章结构后写作会得心应手。好的程序结构也有利于体现控制要求,能给程序设计带来方便。,有利于读者阅读程序。好的程序结构体现了程序编者清晰的思路,读者在阅读时容易理解,易于和作者产生共鸣。读程序的人往往是做维修或调试的人,这对程序的正常运行有利。,好的程序结构有利于程序的运行。可以减少程序的冲突,使程
23、序的可靠性增加。,好的程序结构有利于减少程序的实际运行时间,使,PLC,的运行更加有效。,常见的程序结构类型有以下几种,1,简单结构,2,有跳转及循环的简单结构。,3,组织模块式结构,5.3,传送和比较指令,FX,2,系列中有八条数据传送指令,能实现单一数据或批数据的传送、数制的变换或数据移位。它有二条数据比较指令,可实现数据的单一比较及区间比较。,比较指令,区间比较指令,传送指令,移位传送指令,取反传送指令,块传送指令,多点传送指令,数据交换指令,求,BCD,码指令,求,BIN,码指令,5.3.1,比较指令,指令,名称,助记符,指令代,码位数,操作数,程序步,S1,(,),S2,(,),D,
24、比 较,CMP,CMP,(,P,),FNC10,16/32,K,、,H,KnX,、,KnY,、,KnM,、,KnS,T,、,C,、,D,、,V,、,Z,Y,、,M,、,S,CMP,、,CMPP,7,步,DCMP,、,DCMPP,13,步,指令,CMP,是将源操作数,S1,和,S2,的数据进行比较,结果送到目标操作数,D,中,在这里源数据作代数比较,且所有源数据均作为二进制数值处理。,程序中,M0,,,M1,,,M2,根据比较的结果动作。,K100C20,的当前值时,,M0,接通。,K100=C20,的当前值时,,M1,接通。,K100C30,的当前值时,ON,。,M4,在,K100C3
25、0,的当前值,K120,时,ON,。,M5,在,K120C30,的当前值时,ON,。,区间比较指令应用,5.3.3,传送指令,传送指令,MOV,是将源操作数内的数据传送到指定的目标操作数内,即,S D,指令名称,助记符,指令代码位数,操作数,程序步,S,(,),D,(,),传送,MOV,MOV,(,P,),FNC12,(,16/32,),K,、,H,、,KnX,、,KnY,、,KnM,、,KnS,、,T,、,C,、,D,、,V,、,Z,KnY,、,KnM,、,KnS,、,T,、,C,、,D,、,V,、,Z,MOV,、,MOVP,5,步,DMOV,、,DMOVP,9,步,当,X0=ON,时,源操
26、作数,S,中的常数,K100,传送到目标操作元件,D10,中。当传送指令执行时,常数,K100,自动转换成二进制数,指令的应用:,定时器、计数器当前值的读出。,定时器、计数器设定值的间接设定,5.3.4,移位传送指令,指令名称,助记符,指令代码位数,操作数,程序步,S,(,),D,(,),m1,、,m2,、,n,移位传送,SMOV,SMOV,(,P,),FNC13,16,K,、,H,、,KnX,、,KnY,、,KnM,、,KnS,、,T,、,C,、,D,、,V,、,Z,KnY,、,KnM,、,KnS,、,T,、,C,、,D,、,V,、,Z,K,、,H,SMOV,SMOVP 11,步,移位传送指
27、令的功能是将,S.,第,m1,位开始的,m2,个数移位到,D,的第,n,个位置,,m1,、,m2,、,n=14,。,将源数据二进制被转换成,BCD,码(对的关系),第一步:,二进制被转换成,BCD,码,第二步:,将,BCD,码移位传送,源数据,BCD,码右起第,4,位(,m1=4,)开始的,2,位(,m2=2,)移到目标的第,3,位(,n=3,)和第,2,位。,第三步:,将目标中的,BCD,码自动转换为二进制码,移位传送指令工作过程,5.3.5,取反传送指令,指令,名称,助记符,指令代码位数,操作数,程序步,S,(,),D,(,),取反,传送,CML,CML,(,P,),FNC14,(,16/
28、32,),K,、,H,、,KnX,、,KnY,、,KnM,、,KnS,、,T,、,C,、,D,、,V,、,Z,KnY,、,KnM,、,KnS,、,T,、,C,、,D,、,V,、,Z,CML,、,CMLP,5,步,DCML,、,CMLP,9,步,在源元件中的数据逐位取反(,10,,,01,)并传送到指定目标。若源中数据为常数,K,,该数据会自动转为二进制数。,5.3.6,块传送指令,指令,名称,助记符,指令代,码位数,操作数,程序步,S,(,),D,(,),块传,送,BMOV,BMOV,(,P,),FNC15,(,16,),KnX,、,KnY,、,KnM,、,KnS,、,T,、,C,、,D,Kn
29、Y,、,KnM,、,KnS,、,T,、,C,、,D,BMOV,、,BMOVP,7,步,注意:,(,1,)如果源元件与目标元件的类型相同,传送顺序可从同元件号开始,也可以从低元件号开始。,(,2,)传送顺序是自动决定的,以防止源数据被这条指令传送的其它数据冲掉。,(,3,)如果用到需要指定位数的,bit,元件,则源和目标的指定位数必须相同,(,4,)利用,BMOV,指令可以读出文件寄存器(,D1000D2999,)中的数据。,5.3.7,多点传送指令,指令名称,助记符,指令代码位数,操作数,程序步,S,(,),D,(,),n,多点传送,FMOV,FMOV,(,P,),FNC16,(,16,),K
30、H,、,KnX,、,KnY,、,KnM,、,KnS,、,T,、,C,、,D,、,V,、,Z,KnY,、,KnM,、,KnS,、,T,、,C,、,D,K,、,H,512,FMOV,、,FMOVP,7,步,DFMOV,、,DFMOVP,13,步,源元件中的数据传送到指定目标开始的,n,个元件中。这,n,个元件中的数据完全相同。,如果元件号超出允许元件号范围,数据仅送到允许范围的元件中,.,多点传送指令应用,5.3.8,数据交换指令,指令,名称,助记符,指令代码位数,操作数,程序步,D1,(,),D2,(,),数据,交换,XCH,XVH,(,P,),FNC17,(,16/32,),KnY,、,
31、KnM,、,KnS,、,T,、,C,、,D,、,V,、,Z,KnY,、,KnM,、,KnS,、,T,、,C,、,D,、,V,、,Z,XCH,、,XCHP,5,步,DXCH,、,DXCHP,9,步,数据在指定的目标元件之间交换。数据在每个扫描周期交换,1,次,当特殊继电器,M8160,接通,目标元件为同一地址号时,,16,位数据进行高,8,位与低,8,位地交换。,D10 D10,5.3.9,求,BCD,码指令,指令,名称,助记符,指令代码位数,操作数,程序步,S,(,),D,(,),BCD,码,变换,BCD,BCD,(,P,),FNC18,16/32,KnX,、,KnY,、,KnM,、,KnS,
32、T,、,C,、,D,、,V,、,Z,KnY,、,KnM,、,KnS,、,T,、,C,、,D,、,V,、,Z,BCD,、,BCDP,5,步,DBCD,、,DBCDP,9,步,将二进制码转换成,BCD,码送到目标元件中。,注意:,指令功能如果,BCD/BCD,(,P,)指令执行的变换结果超出,09999,的范围就会出错。如果(,D,),BCD/,(,D,),BCD,(,P,)指令的变换结果超出,099999999,的范围就会出错。,BCD,码变换指令可用于,PLC,内的二进制数变换成,BCD,码输出以驱动,7,段显示,5.3.10,求,BIN,码指令,指令,名称,助记符,指令代码位数,操作数,
33、程序步,S,(,),D,(,),BIN,变换,BIN,BIN,(,P,),FNC19,16/32,KnX,、,KnY,、,KnM,、,KnS,、,T,、,C,、,D,、,V,、,Z,KnY,、,KnM,、,KnS,、,T,、,C,、,D,、,V,、,Z,BIN,、,BINP,5,步,DBIN,、,DBINP,9,步,将源元件中的,BCD,数据转换成二进制数据送到目标元件中。,BIN,指令用于将从,BCD,数字开关串的设定值输入,PC,中。如果源元件中的数据不是,BCD,码的,就会出错,,M8067 ON,。但在这种情况下,M8086,(操作错误锁存)不为,ON,。,常数,K,不能作为本指令的操
34、作元件,:,因为在任何处理之前它会被转换成二进制数,5.4,四则运算和逻辑运算指令,5.4.1,加法指令:,将指定的源元件中的二进制数相加,结果送到指定的目标元件中去,指令,名称,助记符,指令代码位数,操作数,程序步,S1,(,),S2,(,),D,(,),加法,ADD,ADD,(,P,),FNC20,16/32,K,、,H,、,KnX,、,KnY,、,KnM,、,KnS,T,、,C,、,D,、,V,、,Z,KnX,、,KnY,、,KnM,、,KnS,T,、,C,、,D,、,V,、,Z,ADD,、,ADDP,7,步,DADD,、,DADDP,13,步,每个数据的最高,bit,作为符号位(,0,
35、为正,,1,为负),ADD,加法指令有,3,个常用标志,M8020,为零标志,M8021,为借位标志,M8022,为进位标志,加法指令,ADD,应用,当,X,从,OFF,变为,ON,时,,D0,的数据加,1,。,这与,INC,(,p,)指令的执行结果相似。其不同之处在于用,ADD,指令时,零,借位,进位标志将按前述方法置位。,源和目标可以用相同的元件号,若源和目标元件号相同而且采用连续执行的,ADD/,(,D,),ADD,指令时,加法的结果在每个扫描周期都会改变。,5.4.2,减法指令,指令,名称,助记符,指令代码位数,操作数,程序步,S1,(,),S2,(,),D,(,),减法,SUB,SU
36、B,(,P,),FNC21,16/32,K,、,H,、,KnX,、,KnY,、,KnM,、,KnS,T,、,C,、,D,、,V,、,Z,KnY,、,KnM,、,KnS,T,、,C,、,D,、,V,、,Z,SUB,、,SUBP,7,步,DSUB,、,DSUBP,13,步,SUB,减法指令是将,S1,指定的元件中的数减去,S2.,指定的元件中的数,结果送到,D.,指定的目标中,运算是二进制代数法。,各种标志的动作、,32,位运算中软元件的指定方法、连续执行型和脉冲执行型的差异等均与加法指令相同,5.4.3,乘法指令,乘法指令是将指定的源元件中的二进制数相乘,结果送到指定的目标元件中去。它分,16,
37、位和,32,位两种情况 ,指令,名称,助记符,指令代码位数,操作数,程序步,S1,(,),S2,(,),D,(,),乘法,MUL,MUL,(,P,),FNC22,16/32,K,、,H,、,KnX,、,KnY,、,KnM,、,KnS,T,、,C,、,D,、,V,、,Z,KnY,、,KnM,、,KnS,T,、,C,、,D,MUL,、,MULP,7,步,DMUL,、,DMULP,13,步,(,1,),16bit,运算,两源的乘积以,32bit,形式送到指定目标,低,16bit,在指定目标元件,高,16bit,在下一个元件。,(,2,),32 bit,运算,当为,32,位运算,执行条件,X0,由,O
38、FFON,时,,D1,,,D0*D3,,,D2 D7,,,D6,,,D5,,,D4,。源操作数是,32,位,目标操作数是,64,位。当,D1,,,D0=238,,,D3,,,D2=89,时,,D7,,,D6,,,D5,,,D4=4982,。,最高位为符号位,,0,为正,,1,为负。,在,32,位运算中,如用,bit,元件作目标,则乘积只能得到低,32bit,。高,32bit,丢失。在这种情况下应先将数据移入字元件再进行运算。,若,D0=8,,,D2=9,则(,D5,,,D4,),=72,最高,bit,是符号,bit,(,0,为正,,1,为负)。,5.4.4,除法指令,指令,名称,助记符,指令代
39、码位数,操作数,程序步,S1,(,),S2,(,),D,(,),除法,DIV,DIV,(,P,),FNC23,(,16/32,),K,、,H,、,KnX,、,KnY,、,KnM,、,KnS,T,、,C,、,D,、,V,、,Z,KnY,、,KnM,、,KnS,T,、,C,、,D,MUL,、,MULP,7,步,DMUL,、,DMULP,13,步,除法指令是将指定的源元件中的二进制数相除,,S1,为被除数,,S2,为除数,商送到指定的目标元件,D,中去,余数送到,D,的下一个目标元件。,它分,16,位和,32,位两种情况。,16,位运算时,:,执行条件,X0,由,OFFON,时,,D0D2 D4,。
40、当,D0=19,,,D2=3,时,,D4=6,,,D5=1,。,V,和,Z,不能用于,D,中。,32,位运算时,:,执行条件,X0,由,OFFON,时,,D1,、,D0D3,、,D2,)。商在,D5,、,D4,,余数在,D7,、,D6,中。,V,和,Z,不能用于,D,中。,除数为,0,时,有运算错误,不执行指令。若,D,指定位元件,得不到余数。,商和余数的最高位是符号位。被除数或余数中有一个为负数时,商为负数。被除数为负数时,余数为负数。,5.4.5,加,1,指令,指令名称,助记符,指令代码位数,操作数,程序步,D,(,),加,1,INC,INC,(,P,),FNC24,(,16/32,),K
41、nY,、,KnM,、,KnS,T,、,C,、,D,、,V,、,Z,INC,、,INCP,3,步,DINC,、,DINCP,5,步,当,X0,由,OFFON,变化时,由,D,指定的元件,D10,中的二进制数自动加,1,。,若用连续指令时,每个扫描周期加,1,。,注意:,16,位运算时,,+32767,再加,1,就变为,32768,,但标志不置位。,32,位运算时,,+2147483647,再加,1,就变为,-2147483647,,标志不置位。,5.4.6,减,1,指令,指令名称,助记符,指令代码位数,操作数,程序步,D,(,),减,1,DEC,DEC,(,P,),FNC25,16/32,KnY
42、KnM,、,KnS,T,、,C,、,D,、,V,、,Z,DEC,、,DECP,3,步,DDEC,、,DDECP,5,步,当,X1,由,OFFON,变化时,由,D,指定的元件,D10,中的二进制数自动减,1,。,若用连续指令时,每个扫描周期减,1,。,在,16,位运算时,,-32768,再减,1,就变为,+32767,,但标志不置位。同样,在,32,位运算时,,-2147483648,再减,1,就变为,+2147483647,,标志也不置位。,5.4.7,与指令,指令,名称,助记符,指令代码位数,操作数,程序步,S1,(,),S2,(,),D,(,),逻辑,字与,WAND,WAND,(,P
43、FNC26,16/32,K,、,H,、,KnX,、,KnY,、,KnM,、,KnS,T,、,C,、,D,、,V,、,Z,KnY,、,KnM,、,KnS,T,、,C,、,D,、,V,、,Z,WAND,、,WANDP,7,步,DWAND,、,DWANDP,13,步,当,X0,为,ON,时,,S1,指定的,D10,和,S2,指定的,D12,内数据按各位对应,进行逻辑字与运算,结果存于由,D,指定的元件,D14,中。,逻辑与以,bit,为单位作,“,与,”,运算。,5.4.8,或指令,指令名称,助记符,指令代码位数,操作数,程序步,S1,(,),S2,(,),D,(,),逻辑字或,WOR,WOR
44、P,),FNC27,16/32,K,、,H,、,KnX,、,KnY,、,KnM,、,KnS,T,、,C,、,D,、,V,、,Z,KnY,、,KnM,、,KnS,T,、,C,、,D,、,V,、,Z,WOR,、,WORP,7,步,DWOR,、,DWORP,13,步,逻辑或以,bit,为单位作,“,或,”,运算。当,X0,为,ON,时,,S1,指定的,D10,和,S2,指定的,D12,内数据按各位对应,进行逻辑字或运算,结果存于由,D,指定的元件,D14,中。,5.4.9,异或指令,指令,名称,助记符,指令代码位数,操作数,程序步,S1,(,),S2,(,),D,(,),逻辑,字,异或,WXO
45、R,WXOR,(,P,),FNC26,16/32,K,、,H,、,KnX,、,KnY,、,KnM,、,KnS,T,、,C,、,D,、,V,、,Z,KnY,、,KnM,、,KnS,T,、,C,、,D,、,V,、,Z,WXOR,、,WXORP,7,步,DWXOR,、,DWXORP,13,步,逻辑异或以,bit,为单位作,“,异或,”,运算。当,X0,为,ON,时,,S1,指定的,D10,和,S2,指定的,D12,内数据按各位对应,进行逻辑字异或运算,结果存于由,D,指定的元件,D14,中。,5.4.10,求补指令,指令,名称,助记符,指令代,码位数,操作数,程序步,D,(,),求补,NEG,NEG
46、P,),FNC29,(,16/32,),KnY,、,KnM,、,KnS,T,、,C,、,D,、,V,、,Z,NEG,、,NEGP,3,步,DNEG,、,DNEGP,5,步,将,D.,指定的元件中的数的每一位取反然后该数再加,1,,结果存于同一元件。,5.5,循环移位与移位指令,FX2,系列可编程控制器移位控制指令有移位、循环移位、字移位及先进先出,FIFO,指令等,5.5.1,循环右移指令,循环右移指令可以使,16,、,32,位数据向右循环移位“,n”,位。,指令,名称,助记符,指令代,码位数,操作数范围,程序步,D,(,),n,循环,右移,ROR,ROR,(,P,),FNC30,16/
47、32,KnY,、,KnM,、,KnS,、,T,、,C,、,D,、,V,、,Z,K,、,H,移位量,n16,(,16,位),n32,(,32,位),ROR,、,RORP,5,步,DROR,、,DRORP,9,步,当,X0,由,OFFON,时,,D,内各位数据向右移,n,位,最后一次从最低位移出的状态也存于进位标志,M8022,中。,注意:,用连续指令执行时,循环移位操作每个周期执行一次。,在指定位软元件的场合下,只有,K4,(,16,位指令)或,K8,(,32,位指令)有效。,上面解释,16,位指令的,ROR,的执行情况也适用于,32,位的指令。,5.5.2,循环左移指令,指令,名称,助记符,指
48、令代码位数,操作数范围,程序步,D,(,),n,循环,左移,ROL,ROL,(,P,),FNC31,16/32,KnY,、,KnM,、,KnS,、,T,、,C,、,D,、,V,、,Z,K,、,H,移位量,n16,(,16,位),n32,(,32,位),ROL,、,ROLP,5,步,DROL,、,DROLP,9,步,1.,循环左移指令可以使,16,位数据、,32,位数据向左循环移位,“,n,”,位。,2.,用连续指令执行时,循环移位操作每个周期执行一次。,3.,在指定位软元件的场合下,只有,K4,(,16,位指令)或,K8,(,32,位指令)有效。,4.,上面解释,16,位指令的,ROL,的执行
49、情况也适用于,32,位的指令。,注意:,当,X0,由,OFFON,时,,D,内各位数据向左移,n,位,最后一次从最低位移出的状态也存于进位标志,M8022,中。,5.5.3,带进位循环右移指令,指令,名称,助记符,指令代码位数,操作数范围,程序步,D,(,),n,带进位,循环右,移,RCR,RCR,(,P,),FNC32,16/32,KnY,、,KnM,、,KnS,、,T,、,C,、,D,、,V,、,Z,K,、,H,移位量,n16,(,16,位),n32,(,32,位),RCR,、,RCRP,5,步,DRCR,、,DRCRP,9,步,带进位循环右移指令使,16,位、,32,位数据连同进位一起向
50、右循环移位,“,n,”,位。,如果,M8022,在执行循环指令前,ON,,则循环中的进位标志被送到目标。,当,X0,由,OFFON,时,,D,内各位数据向右移,n,位,最后一次从最低位移出的状态也存于进位标志,M8022,中。,说明:,1.,用连续指令执行时,带进位循环移位操作每个周期执行一次。,2.,在指定位软元件的场合下,只有,K4,(,16,位指令)或,K8,(,32,位指令)有效。,3.,上面解释,16,位指令的,RCR,的执行情况也适用于,32,位的指令。,5.5.4,带进位循环左移指令,指令,名称,助记符,指令代码位数,操作数范围,程序步,D,(,),n,带进位,循环左移,RCL,






