《三菱FX2N系列PLC的功能指令》由会员分享,可在线阅读,更多相关《三菱FX2N系列PLC的功能指令(103页珍藏版)》请在金锄头文库上搜索。
1、第第5章章 三菱三菱FX2N系列系列 PLC的功能指令的功能指令 本章导读本章导读本章主要介绍了FX2N的功能指令及其编程方法,功能指令编号为FNC00FNC246,将常用功能指令归类讲述,从5.6节起只作简讲,未介绍的可查阅附录表B.2。将以表格形式归纳功能指令格式、类型及使用要素。选择合适的功能指令,将使编程更加方便和快捷。要求掌握各类功能指令及其编程方法,掌握GPPW内装的的模拟仿真、时序图等功能,来帮助学习功能指令。7/22/202415.1 功能指令的基本功能指令的基本规则1 FX2N系列PLC的功能指令一览表见附录表B.2。一条基本逻辑指令只完成一个特定的操作,而一条功能指令却能完
2、成一系列的操作,相当于执行了一个子程序,所以功能指令功能更强大,编程更精练,它能用于运动控制、模拟量控制等场合。基本指令和其梯形图符号之间是互相对应的。而功能指令采用梯形图和助记符相结合的形式,意在表达本指令要做什么。有些功能指令在整个程序中只能使用一次,介绍到此类指令时会特别强调。5.1.1 功能指令的表示功能指令的表示1功能指令的梯形图表示功能指令的梯形图表示用功能框表示功能指令,即在功能框中用通用的助记7/22/202425.1.1 功能指令的表示功能指令的表示 2符形式来表示,如图5.1(a)所示,该指令的含义如图5.1(b)所示。图5.1(a)中X000常开接点是功能指令的执行条件,
3、其后的方框即为功能指令。由图可见,功能指令同一般的汇编指令相似,也是由操作码和操作数两大部分组成。 (1)操作码部分功能框第一段为操作码部分,表达了该指令做什么。7/22/202435.1.1 功能指令的表示功能指令的表示 3一般功能指令都是以指定的功能号来表示,如FNC45。但是,为了便于记忆,每个功指令都有一个助记符,对应FNC45的助记符是MEAN,表示“求平均值”。这样就能见名知义,比较直观。在编程器或FXGP软件中输入功能指令时,输入的是功能号FNC45,显示的却是助记符MEAN。不过,在FXGP软件中也可直接输入助记符MEAN。注意注意:本书在介绍各功能指令时,将以图5.1(a)的
4、形式同时给出功能号和对应的助记符,但并不意味着在FXGP软件中输入功能指令时要两者一起送,而是按上述介绍,只要送入其中一个就行了。 (2)操作数部分 7/22/202445.1.1 功能指令的表示功能指令的表示 4功能框的第一段之后都为操作数部分,表达了参加指令操作的操作数在那里。操作数部分部分组成:源操作数(源)目标操作数(目)数据个数源操作数(源)目标操作数(目)数据个数源操作数:D0、D1和D2,数据个数K3指示源有3个;目操作数:D10。当X000接通时,MEAN指令的含义如图5.1(b)所示,即要取出D0D2的连续3个数据寄存器中的内容作算术平均后送入D10寄存器中。当X000断开时
5、,此指令不执行。操作数排列次序:源在前,目在后,数据个数在最后源在前,目在后,数据个数在最后有些功能指令还要求多个操作数,也有的功能指令不需要操作数。7/22/202455.1.1 5.1.1 功能指令的表示功能指令的表示 5 52功能指令的要素描述功能指令的要素描述功能指令的要素描述将按表图的格式给出。如对图5.1(a)这条MEAN指令的要素描述如表5.1所示。表中使用符号的说明: 求平均值指令:指令的名称 FNC45:指令的功能号7/22/202465.1.1 功能指令的表示功能指令的表示 6 MEAN指令的助记符(P)指令的执行形式,(P)表示可使用脉冲执行方式,在执行条件满足时仅执行一
6、个扫描周期;缺省的为连续执行型。(D)指令的数据长度可为32位,缺省为16位。 S源操作数,简称源,指令执行后不改变其内容的操作数。当源不止一个时,用S1、S2等来表示。有“”表示能用变址方式,缺省为无“ ”,表示不能使用变址方式。 D目标操作数,简称目,指令执行后将改变其内容的操作数。当目不止一个时,用D1、D2等来表示。有“ ”表示能使用变址方式,缺省为无“”,表7/22/20247示不能使用变址方式。 m、n其它操作数,常用来表示常数或对源和目作出补充说明。表示常数时,K后跟的为十进制数,H后跟的为十六进制数。 程序步指令执行所需的步数。一般来说,功能指令的功能号和助记符占一步,每个操作
7、数占24步(16位操作数是2步,32位操作数是4步)。因此,一般16位指令为7步,32位指令为13步。5.1.2 功能指令的数据长度功能指令的数据长度 11字元件与双字元件字元件与双字元件(1)字元件1个字元件是由16位的存储单元构成,最高位(第15位)5.1.1 功能指令的表示功能指令的表示 77/22/202485.1.2 功能指令的数据长度功能指令的数据长度 2为符号位,第014位为数值位。图5.2所示为16位数据寄存器D0图示。(2)双字元件 可以使用两个字元件组成双字元件,以组成32位数据操作数。双字元件是由相邻的寄存器组成,在图5.3中由D11和D10组成。低16位数据存放在低位元
8、件D10中, 7/22/202495.1.2 功能指令的数据长度功能指令的数据长度 3高16位数据存放在高位元件D10中,存放原则是:低对低对低,高对高低,高对高。双字元件中第31位为符号位,第030位为数值位。注意注意:在指令中使用双字元件时,一般只用其低位地址表示这个元件,但高位元件也将同时被指令使用。建议用偶数作为双字元件的地址,此点会用图5.6来说明。功能指令中的操作数是指操作数本身或操作数的地址。功能指令能够处理16位或32位的数据。 2功能指令中的功能指令中的16位数据位数据因为几乎所有寄存器的二进制位数都是16位,所以功能指令中16位的数据都是以缺省形式给出。如图5.4 所示即为
9、一条16位MOV指令: 7/22/2024105.1.2 功能指令的数据长度功能指令的数据长度 4MOV指令的含义是,当X000接通时,将十进制数100传送到16位的数据寄存器D10中去。当X000断开时,该指令被跳过不执行,源和目的内容都不变。3功能指令中的功能指令中的32位数据位数据功能指令也能处理32位数据,这时需要在指令前缀符号(D),如图5.5 所示即为一条32位MOV指令:7/22/2024115.1.2 功能指令的数据长度功能指令的数据长度 5凡是能前缀显式符号(D)的功能指令,就能处理32位数据。32位数据是由两个相邻寄存器构成的,但在指令中写出的是低位地址,源和目都是这样表达
10、的。所以对图5.5所示32位MOV指令含义应该这样来理解:当X000接通时,将由D11和D10组成的32位源数据传送到由D13和D12组成的目标地址中去。要避免出现类似图5.6所示指令的错误:源由D11和D10组成,而目由D12和D11组成,这里D11是源、目重复使用,就会引起出错。所以建议32位数据首地址用偶地址。 7/22/2024125.1.2 功能指令的数据长度功能指令的数据长度 6注意注意:32位计数器C200C255不能作为16位指令操作数4功能指令中的位元件功能指令中的位元件位元件:只有ON或OFF两种状态,用一个二进制位就能表达的元件。如X、Y、M、S等。功能指令中也能使用由只
11、含一个bit的位元件,以及位元件组合。位元件组合成位组合元件的方法:将多个位元件按四位一组的原则来组合,也就是说用4位BCD码来表示1位十进制数,这样就能在程序中使用十进制数据了。组合方法的助记符是:Kn最低位位元件号最低位位元件号 如KnX、KnY、KnM即是位元件组合,其中“K”表示后面跟的是十进制数,“n”表示四位一组的组数,7/22/2024135.1.2 功能指令的数据长度功能指令的数据长度 716位数据:K1K4,32位数据:K1K8。数据中的最高位是符号位。如:K2M0:由M0M3和M4M7两组位元件组成一个8位数据,其中M7是最高位,M0是最低位。K4M10:由M10M25四组
12、位元件组成一个16位数据,其中M25是最高位,M10是最低位。注意注意: 当一个16位数据传送到目元件K1M0K3M0时,由于目标元件不到16位,所以将只传送16位数据中的低位数据,高位数据将不传送。32位数据传送也一样。 由于数据只能是16位或32位这两种格式,因此当用7/22/2024145.1.2 功能指令的数据长度功能指令的数据长度 8K1K3组成字时,其高位不足16位部分均作0处理。如执行图5.7所示指令时,源数据只有12位,而目标寄存器D20是16位的,传送结果D20的高4位自动添0,如图5.8所示。这时最高位的符号位必然是0,也就是说,只能是正数(符号位的判别是:正0负1)。 7
13、/22/2024155.1.2 功能指令的数据长度功能指令的数据长度 9 由位元件组成组合位元件时,最低位元件号可以任意给定。如X000、X001和Y005均可。但习惯上采用以0结尾的位元件,如X000、X010和Y020等。5.1.3 功能指令的执行方式功能指令的执行方式 功能指令的两种执行方式:连续执行和脉冲执行方式。1功能指令的连续执行方式功能指令的连续执行方式缺省为连续执行方式,如图5.9。PLC是以循环扫描方式工作的,如果执行条件X000接通,指令在每个扫描周期中都要被重复执行一次,这种情况对大多数指令都是允许的。 27/22/2024165.1.3 功能指令的执行方式功能指令的执行
14、方式 22功能指令的脉冲执行方式功能指令的脉冲执行方式对于某些功能指令,如XCH、INC和DEC等,用连续执行方式在实用中可能会带来问题。如图5.10所示是一条INC指令,是对目标元件(D10、D11)进行加1操作的。假设该指令以连续方式工作的话,那么只要X000是接通的,则每个扫描周期都会对目标元件加1,而这在许多实际的控制中是不允许的。为了解决这类问题,设置了指令的脉冲执行方式,并在指令助记符的后面后缀符号“P”来表示此方式,如图5.10所示。 7/22/2024175.1.3 功能指令的执行方式功能指令的执行方式 3注注意意:在图5.10中INC后加“(P)”,仅表示指令还有脉冲执行方式
15、;在INC前加“(D)”,也仅表示指令还有32位操作方式。但在FXGP中输入时应该这么送:DINCPD10,即加在前后缀的括号不必送的 。对于在本书中,以这种方式表达的所有其它功能指令都要这样来理解。在脉冲执行方式下,指令INC只在条件X000从断开变为接通时才执行一次对目标元件的加1操作。即每当X000来了一个上升沿,才会执行加1;而在其它情况下,即使X000始终是接通的,都不会执行加1指令。在不需要每个扫描周期都执行指令时,可以采用脉冲执行方式的指令,这样还能缩短程序的执行时间。 7/22/2024185.1.4 变址操作变址操作 1FX2N的16个变址寄存器V和Z都是16位的(FX0N和
16、FX0S只有两个变址寄存器V和Z),即V0V7、Z0Z7。除了能作为通用数据寄存器之外,主要用于运算操作数地址的修改,在传送、比较等指令中用来改变操作对象的元件地址,循环程序中也常使用变址寄存器。变址方法是将V、Z放在各种寄存器的后面,充当操作数地址的偏移量。操作数的实际地址就是寄存器的当前值和V或Z内容的相加后的和。当源或目的寄存器用S或D表示时,就能进行作变址操作。当进行32位数据操作时,V、Z自动组对成32位(V,Z)来使用,这时Z为低16位,而V充当高16位。可以用变址寄存器进行变址的软元件是X、Y、M、S、P、T、C、D、K、H、KnX、KnY、KnM、KnS。7/22/202419
17、例例5.1 如图5.11所示的梯形图中,求执行加法操作后源和目操作数的实际地址。 解解:第一行指令执行10V,第二行指令执行20Z,所以变址寄存器的值为,V10,Z20。第三行指令执行(D5V)(D15Z)(D40Z), S1为D5V:D(5+10)D15源操作数1的实际地址 S2为D15Z: D(15+20)D35源操作数2的实际地址 D为D40Z:D(40+20)D60 目操作数的实际地5.1.4 变址操作变址操作 2所以,第三行指令实际执行(D15)(D35)(D60),即D15的内容和D35的内容相加,结果送入D60中去。 7/22/2024205.2 程序流向控制指令程序流向控制指令
18、 1FX2N系列PLC的功能指令中程序流向控制指令共有10条,功能号是FNC00FNC09,程序流向控制指令汇总如附录表B.2所示。通常情况下,PLC的控制程序是顺序逐条执行的,但是在许多场合下却要求按照控制要求改变程序的流向。这些场合有:条件跳转、转子与返回、中断调用与返回、循环、警戒时钟与主程序结束。5.2.1 条件跳转指令条件跳转指令1指令用法说明指令用法说明条件跳转指令为CJ或CJ(P)后跟标号,其用法是当跳转条件成立时跳过一段指令,跳转至指令中所标明的标号处继续执行,若条件不成立则继续顺序执行。这样可以减少扫描时间并使“双线圈操作”成为可能。357/22/2024215.2 程序流向
19、控制指令程序流向控制指令 2条件跳转指令的助记符、功能号、操作数和程序步等指令概要如表5.2所示。由表5.2可见,能够充当目标操作数的只有标号P0P127。例例5.2梯形图如图5.12所示,阅读此程序,试分析:(1)程序的可能流向;(2)程序中的“双线圈操作”是否可能。解:解:(1)分析图5.12所示程序的流向如下。若M0接通,则CJP0的跳转条件成立,程序将跳转到标号为P0处。因为M0常闭是断开的,所以 CJ P1的跳转条件不成立,7/22/2024225.2 程序流向控制指令程序流向控制指令 3程序顺序执行。按照M3的状态对Y000进行处理。若M0断开,则CJP0的跳转条件不成立,程序会按
20、照指令的顺序执行下去。执行到P0标号处时,由于M0常闭是接通的,则CJP1的跳转条件成立,因此程序就会跳转到P1标号处。(2)Y000为双线圈输出。程序在执行过程中,M0常开和M0常闭是一对约束。使线圈Y000驱动逻辑任何时候只有一个会发生,所以在图5.12所示梯形图中Y000为双线圈输出是可以的。2跳转程序中软元件状态与标号跳转程序中软元件状态与标号(1)被跳过程序段中软元件的状态 被跳过的程序段中的各种继电器和状态器、定时器等将保持跳转发生前的状态不变。正正在在工工作作的的定定时时器器T192T199高高速计数器速计数器C235C255不管有无跳转仍将不管有无跳转仍将7/22/202423
21、5.2 程序流向控制指令程序流向控制指令 4连续工作,输出接点也能动作。掉电保持计数器、定时器,其当前值被锁定。程序继续执行时,它们将继续工作。复位优先,即使复位指令在被跳过程序段中,条件满足,复位也将执行。 (2)标号不能重复使用,但能多次引用。同一标号不能重复使用,但可多次被引用,即可从不同的地方跳转到同一标号处,如图5.13(a)。标号也可以出现在跳转指令之前,如图5.13(b)。7/22/202424当M0接通时,程序也允许向回跳转。但是如果M0接通时间超过100ms,会引起警戒时钟出错,但不会影响程序的执行。标号共有128个,其中P63相当于END,不能作为真正的标号使用。这样,当要
22、跳过最后一段程序结束时,就可以在此段程序前设置一条CJ P63指令。也可以理解为CJ P63就是跳转到程序的最开始处。而且标号P63不必出现在程序中。 3无条件跳转与条件跳转的脉冲执行方式无条件跳转与条件跳转的脉冲执行方式(1)构造无条件跳转指令可用条件跳转指令来构造无条件跳转指令,使用某个始终成立的条件使条件跳转变成无条件跳转。常用的是5.2 程序流向控制指令程序流向控制指令 57/22/2024255.2 程序流向控制指令程序流向控制指令 6M8000,因为只要PLC处于RUN状态,则M8000总是接通的,无条件跳转梯形图如图5.14(a),条件跳转指令CJ P0的驱动条件始终成立,因此就
23、可以将这条指令看成是无条件跳转。 (2)条件跳转指令的脉冲执行方式条件跳转指令脉冲执行方式如图5.14(b)。7/22/2024265.2 程序流向控制指令程序流向控制指令 74跳转与主控区之间的相关问题跳转与主控区之间的相关问题 如果跳转的区域包括整个主控区(MCMCR),则将不受任何限制,可以随意跳转而不必考虑主控区问题。如果跳转从主控区外跳到主控区内时,这时主控指令的目标接点,应被当作接通来处理。比如说被跳过的主控指令为MC N0 M10,则M10仍被看作是接通的。如果跳转发生在主控区内,当主控接点为断开时,跳转指令因没有执行到而不能跳转。如果跳转从主控区内跳到主控区外时,当主控接点断开
24、时,由于没有执行到跳转指令,因此不能跳转。当主控接点接通时,可以跳转,这时MCR指令被忽略。如果跳转从一个主控区内跳到另一个主控区内,而且7/22/2024275.2 程序流向控制指令程序流向控制指令 8源主控接点是接通的,则跳转可以进行,不管目标主控接点原状态如何,均被看做接通,MCR N0被忽略。5.2.2 转子与返回指令转子与返回指令子程序也是为一些特定的控制目的编制的相对独立的模块,供主程序调用。为了区别于主程序,将主程序排在前 边 , 子 程 序 排 在 后 边 , 并 以 主 程 序 结 束 指 令FEND(FNC06)给以分隔。1指令用法说明指令用法说明(1)子程序调用指令:CA
25、LL或CALL(P) 标号,标号是被调用子程序的入口地址,以P0P127(不包括P63 )来表示。子程序返回用SRET指令。7/22/2024285.2.2 转子与返回指令转子与返回指令 2转子与返回指令的指令概要如表5.4所示。子程序调用和返回的梯形图如图5.15(a)。当M0接通时,调用子程序P0,程序将跳转到P0标号所指向的那条程序,同时将调用指令下一条指令的地址作为断点保存。此后从P0开始逐条顺序执行子程序,直至遇到SRET指令时,程7/22/2024295.2.2 转子与返回指令转子与返回指令 3序将返回到主程序的断点处,继续顺序执行主程序,即执行指令LD M1,OUTY000。(2
26、)子程序的位置与标号使用子程序P0安排在主程序结束指令FEND之后,标号P0和子程序返回指令SRET间的程序构成了P0子程序的内容7/22/2024305.2.2 转子与返回指令转子与返回指令 4主程序带有多个子程序时,子程序要依次放在主程序结束指令FEND之后,并以不同的标号相区别。FX1N、FX2N和和FX2NC子程序标号范围为P0P127(FX1S为P0P63),这些标号与条件转移中的标号相同,在条件转移中已使用了的标号,子程序不能再用。同一标号只能用一次,不同的CALL指令可多次调用同一标号。 (3)CALL指令的脉冲执行方式脉冲执行方式如图5.15(b),只有在M0上升沿时,程序才会
27、转子。CJ是跳转,CALL也是一种跳转,不过CJ跳转是“有有去去无无回回”,而CALL的跳转则是“有有去去有有回回”的,子程序结束后将会回到主程序的断点处继续执行原来的程序。为了两者区别,把后者称谓“调用”,更适当。 7/22/2024315.2.2 转子与返回指令转子与返回指令 52子程序的嵌套子程序的嵌套子程序嵌套示意如图5.16(a),梯形图如图5.16(b)子程序嵌套:主程序调用子程序1,在执行子程序1时,子程序1又调用另一个子程序2,称为子程序嵌套。7/22/2024325.2.2 转子与返回指令转子与返回指令 6子程序嵌套总数可有5级。注注意意:在子程序和中断子程序中使用的定时器范
28、围为:T192T199和T246T249。在此之外的定时器,虽然在子程序中或许也能使用,但不能保证其运行的正确性,所以请别使用在此之外的定时器。5.2.3 中断与返回指令中断与返回指令中断是CPU与外设“打交道”(数据传送)的一种方式,慢速的外设远远跟不上高速CPU的节拍,要“拖累”CPU。为此可采用数据传送的中断方式,使CPU与外设并行工作的,平时CPU在执行主程序,当外设需要数据传送服务时,才去向CPU发出中断请求。在允许中断的情况下,CPU可以响应外设的中断请求,从主程序中被拉出来,去执行一段中断服务子程序,比如给了外设一批数据7/22/2024335.2.3 中断与返回指令中断与返回指
29、令 2后,就不再管外设,返回主程序。以后都是这样,每当外设需要数据传送服务时,又会向CPU发中断请求。可见CPU只有在执行中断服务子程序短暂的时间里才同外设打交道,所以CPU的工作效率就大大提高了。1指令用法说明指令用法说明有关中断指令概要如表5.5所示。(1)中断返回指令: FNC 03 IRET7/22/2024345.2.3 中断与返回指令中断与返回指令 3(2)开中断指令(中断允许):FNC 04 EI(3)关中断指令(中断禁止):FNC 05 DI2.3.4节已经介绍了FX2N系列PLC有3类中断:外部中断内中断(即内部定时器中断)高速计数器外部计数中断FX2N系列PLC可以多达15
30、个中断源,15个中断源可以同时向CPU发中断请求信号,这时CPU要通过中断判优,来决定响应那一个中断。15个中断源的优先级由中断号决定,中断号小者其优先级为高。另外,外中断的优先级整体上高于内中断的优先级。这样,在主程序的执行过程中,就可根据不同中断服务子程序中PLC所要完成工作的优先级高低决定能否响应中断。对可以响应中7/22/2024355.2.3 中断与返回指令中断与返回指令 4断的程序段用中断允许指令EI来开中断,对不允许中断的程序段用中断指令DI来关中断。程序中允许中断响应的区间应该由EI指令开始,DI指令结束,如图5.17所示。在此区间之外时,即使有中断请求,CPU也不会立即响应。
31、通常情况下,在执行某个中断服务程序时,将禁止其它中断。中断返回指令必须用IRET,不能用子程序返回指令SRET。IRET指令除了能从中断服务程序返回以外,还要通知CPU本次中断已经结束。7/22/2024365.2.3 中断与返回指令中断与返回指令 5中中断断与与子子程程序序区区别别:子程序调用是事先在程序中用CALL给定的,但中断调用要求响应时间小于机器的扫描周期,所以就不能事先在程序中给定,而是由外设(中断源)随机地通过硬件向CPU发中断请求,才把CPU拉到中断服务子程序中去的。整个中断是一个软硬件结合的过程。2中断指针中断指针为区别内外中断及标明中断子程序的入口,规定了中断标号。中断标号
32、是I开头的,又称为I指针。子程序的标号是P开头的,又称为P指针。I指针分为3种。(1)外中断指针外中断指针的格式如图5.19(a),I00150,共6点。外中断是外部信号引起的,对应的外部输入口为X0007/22/2024375.2.3 中断与返回指令中断与返回指令 6X005。指针格式中的最后一位是选择是上升沿请求中断,还是下降沿请求中断。(2)内中断指针内中断指针的格式如图5.19(b)所示,I6I8,共3点。内中断为内部定时时间到信号中断,由指定编号为68的专用定时器控制。设定时间在1099ms间选取,每隔设定时间就会中断一次。7/22/2024385.2.3 中断与返回指令中断与返回指
33、令 7(3)高速外部计数中断指针高速计数器中断指针的格式如图5.19(c)所示,共6点: I010I060。这6个中断指针分别表示由高速计数器(C235C255)的当前值实现的中断。例例5.3 中断指令的梯形图如图5.17和图5.18所示,试解答:(1)指出I001中断的含义,并分析此中断的过程;(2)指出I699中断的含义,并分析此中断的过程;(3)指出I020中断的含义,并分析此中断的过程。解解:(1)I001表示X000为中断请求信号,且上升沿有效。因此在允许中断区间,如果输入X000从OFFON变化时(上升沿),则程序从主程序转移到标号为I001处,开始执行中断服务程序1,直至遇IRE
34、T指令时返回主程序。(2)I699表示内部定时时间到中断,每隔99ms就执行I699开始7/22/2024395.2.3 中断与返回指令中断与返回指令 8的中断服务程序一次,直至遇IRET指令时返回主程序。(3)I020表示高速计数器C236计数到中断,从X1输入计数脉冲,每当C236当前值为10时,产生中断,执行标号为I020开始的中断服务程序一次,D1就被加1,直至遇IRET指令时返回主程序。 7/22/2024405.2.3 中断与返回指令中断与返回指令 93中断请求信号的宽度与中断屏蔽寄存器中断请求信号的宽度与中断屏蔽寄存器 (1)中断请求信号宽度中断请求信号宽度,即中断请求信号的持续
35、时间必须大于200s,宽度不足的请求信号可能得不到正确响应。(2)中断屏蔽寄存器M8050M8058这10个特殊功能辅助继电器是同中断有关的,其功能如表5.5和表5.6所示。可用程序设置其为ON或OFF,当其为ON时,即使已经用EI指令开中断了,也会屏蔽相关的中断,不妨将M8050M8059称之为中断屏蔽寄存器。DI则是中断屏蔽总开关。7/22/2024415.2.3 中断与返回指令中断与返回指令 107/22/2024425.2.4 主程序结束指令主程序结束指令 1主程序结束指令: FNC 06FEND有关主程序结束指令的概要如表5.7。FEND指令表示主程序结束,此后CPU将进行输入/输出
36、处理、警戒时钟刷新,完成后回到第0步。子程序和中断服务程序都必须写在FEND后,没有它们时也可以没有FEND指令。但是程序的最后必须用END指令结尾。所以,子程序及中断服务程序必须写在FEND指令与END指令之间。 7/22/2024435.2.4 主程序结束指令主程序结束指令 2若FEND指令在CALL或CALL(P)指令执行之后,SRET指令执行之前出现,或将FEND指令置于FOR-NEXT循环之中,则被认为出错。一个完整的PLC程序可以没有子程序,也可以没有中断服务程序,但必定要有主程序。 5.2.5 警戒时钟指令警戒时钟指令警戒时钟刷新指令: FNC 07 WDT(P)警戒时钟刷新指令
37、概要如表5.8所示。 7/22/2024445.2.5 警戒时钟指令警戒时钟指令 1WDT指令用于1.3.2介绍过的警戒定时器刷新,CPU从第0步扫描到END或FEND指令时,将使警戒定时器复位。如果扫描时间,因干扰超过了D8000 中设定的警戒定时器定时时间,警戒定时器不再被复位,用户程序将会停止执行,PLC面板上的CPU-E出错指示灯将会点亮。为此,可将WDT指令插到合适的程序步中来刷新警戒定时器,以使顺序程序得以继续执行到END。这样就可以将一个运行时间大于警戒定时器定时值的程序用WDT指令分成几部分,使每部分的执行时间都小于警戒定时器定时值。存储在D8000中的警戒定时器定时时间由PL
38、C的监控程序写入,同时也允许用户改写其内容。若希望扫描周期7/22/2024455.2.5 警戒时钟指令警戒时钟指令 2时间改写为160ms,可以用功能指令MOV来改写D8000的内容,如图5.20所示。此外,WDT指令还可用于:(1)当程序用CJ指令向后跳转时,即对应的P标号步序小于CJ指令的步序,为防止出错,应在P标号之后插入WDT指令,如图5.21。(2)可将WDT指令置于FOR-NEXT循环之中,以防止死循环或循环时间超时而停止运行。 7/22/2024465.2.6 循环指令循环指令 11指令用法说明指令用法说明(1)循环体起点指令: FNC 08 FOR(16)(2)循环体终点指令
39、:FNC 09 NEXT循环指令概要如表5.9所示。能够充当源操作数的为如表中S所指定的范围内的所有软元件。循环指令可反复执行某段程序,只要将这一段程序放在7/22/2024475.2.6 循环指令循环指令 2FORNEXT间,待执行完指定的循环次数后,才执行NEXT下一条指令。 在梯形图中判断FOR/NEXT指令配对的原则是:与NEXT指令之前相距最近的FOR指令是一对循环指令,FOR/NEXT对是唯一的。FOR指令和NEXT指令间包含的程序,称为循环体,循环体内的程序就是要反复循环执行的操作。如果在循环体内又包含了另外一个完整的循环,则称为循环的嵌嵌套套。图5.22中循环C的循环体中包含了
40、循环B的全部,循环B的循环体中包含了循环A的全部,这是三重循环的嵌套,循环指令最多允许5层嵌套。嵌套循环程序的执行总是由内向外,逐层循环的。7/22/2024485.2.6 循环指令循环指令 3循环次数由FOR后的数值指定,表5.9 中S 区间内的元件都可以。循环次数范围为132767,如循环次数1时,被当作1处理,FOR-NEXT循环一次。注意:应避免下述会出错情况。 NEXT指令出现在FOR指令之前。 FOR和NEXT指令必须成对使用,缺一不可。 NEXT指令出现在FEND或END指令之后。7/22/2024495.2.6 循环指令循环指令 4注意:应避免下述会出错情况。 NEXT指令出现
41、在FOR指令之前。 FOR和NEXT指令必须成对使用,缺一不可。 NEXT指令出现在FEND或END指令之后。 7/22/202450在FX2N系列PLC中设置了8条数据传送指令,2条数据比较指令,其功能号是FNC10FNC19。传送指令:MOV(传送)SMOV(BCD码移位传送)CML (取反传送)BMOV(数据块传送)FMOV(多点传送)XCH(数据交换)BCD(二进制数转换成BCD码并传送)BIN(BCD码转换为二进制数并传送)比较指令:CMP(比较)ZCP(区间比较)5.3 数据传送指令数据传送指令 7/22/2024515.3.1 比较指令比较指令 1比较指令:FNC10CMPS1
42、S2 D 其中S1、 S2为两个比较的源操作数,D为比较结果标志软元件,指令中给出的是标志软元件的首地址。比较指令的概要如表5.10所示。比较指令CMP可对两个数进行代数减法操作,将源操作数S1和S2的数据进7/22/2024525.3.1 比较指令比较指令 2行比较,结果送到目标操作数D中,再将比较结果写入指定的相邻三个标志软元件中。指令中所有源数据均作为二进制数处理。图5.23所示为比较指令CMP的梯形图,对应的指令为:CMPKl00D10M0。在图5.23中,如X010接通,则将执行比较操作,即将100减去D10中的内容,再将比较结果写入相邻三个标志软元件M0M2中。标志位操作规则是:
43、7/22/2024535.3.1 比较指令比较指令 3若K100(D10),则M0被置1; 若K100(D10),则M1被置1; 若K100(D10),则M2被置1。可见CMP指令执行后,标志位中必有一个被置1,而其余二个均为0。CMP指令在作32位操作时,使用前缀(D):(D)CMPS1S2 D。CMP指令也可有脉冲操作方式,使用后缀(P):(D)CMP(P) S1S2 D,只有在驱动条件由OFFON时进行一次比较。注意:指令中的三个操作数必须按表5.10所示编写,如果缺操作数,或操作元件超出此表中指定范围等都要引起出错。清除比较结果,可用RST或ZRST复位指令。 7/22/202454区
44、间比较指令:FNC11 ZCP S1 S2 S3 DS1和S2为区间起点和终点,S3为另一比较软元件,D为标志软元件(首地址)。ZCP指令可将某个指定的源数据S3与一个区间的数据进行代数比较, S1和S2分别为区间的下限和上限,比较结果送到目标操作数D中,D由3个连续的标志位软元件组成。5.3.2 区间比较指令区间比较指令 17/22/202455图5.24 所示为区间比较指令示例梯形图,对应指令为:ZCP Kl00 K200 C0M0。如果X010接通,则将执行区间比较操作,即将C0的内容与区间的上下限去比较,比较结果写入相邻三个标志位软元件M0M2中。标志位操作规则是:若K100C0,则M
45、0被置1;若K100C0K200,则M1被置1;若K200C0,则M2被置1。 5.3.2 区间比较指令区间比较指令 27/22/202456ZCP指令的32位方式:(D)ZCPS1S2 S3 D。ZCP指令的脉冲方式:(D)ZCP(P)S1 S2 S3 D有关ZCP指令操作数等注意事项同CMP指令。5.3.3 传送指令传送指令数据传送指令: FNC12MOVSDS为源数据,D为目软元件。功能:将源数据传送到目软元件中去。数据传送指令概要如表5.12。能充当源操作数的为如表中S所指定的范围内的所有软元件;能够充当目操作数的软元件要除去常数K、H和输入继电器位组合。5.3.2 区间比较指令区间比
46、较指令 37/22/2024575.3.3 传送指令传送指令 2图5.25为MOV的示例梯形图,对应的指令为:MOV D10 D20。如X010接通,将D10的内容传送到D20中去,传送结果7/22/202458D10内容保持不变,D20中内容被D10内容转化为二进制后取代。MOV指令的32位脉冲方式:(D)MOV(P) SD。5.3.4 移位传送指令移位传送指令移位传送指令:FNC13SMOVSm1 m2 D n S为源数据,m1为被传送的起始位,m2为传送位数5.3.3 传送指令传送指令 37/22/202459,D为目软元件,n为传送的目起始位。功能:将S第m1位开始的m2个数移位到D的
47、第n位开始的m2个位置去,ml、m2和n取值均为:14。分开的BCD码重新分配组合,一般用于多位BCD拨盘开关的数据输入。 图5.26为SMOV的示例梯形图,对应指令为:SMOV D10 K4K2D20K3移 位 传 送 示 意 图 如 图 5.27。 设 D10=BCD码 4321,D20=BCD码9008。如X010接通,执行移位传送指令。5.3.4 移位传送指令移位传送指令 27/22/202460将D10中的二进制数转换成BCD码4321;然后将第4位(m1=K4)开始的共2位(m2=K2)BCD码4和3,分别移到D20的第3位(n=K3)和第2位的BCD码位置上去,所以移位传送后D2
48、0=9438。移位传送指令只能对16位数据进行操作,所以BCD码值超过9999时将会出错。 SMOV指令脉冲方式:SMOV(P)S m1 m2 D n。5.3.4 移位传送指令移位传送指令 37/22/202461取反传送指令: FNC14CMLSD S为源数据,D为目软元件。 功能:将S按二进制的位取反后送到目D中。取反传送指令概要如表5.14。图5.28为取反传送指令CML示例梯形图,对应指令为:CML D10 K1Y001。5.3.5 取反传送指令取反传送指令 17/22/2024625.3.5 取反传送指令取反传送指令 2在图5.28中,如X010接通,则将执行取反传送指令。首先将D1
49、0中的各个位取反。然后根据K1Y001指定,将D10的低4位送到Y004、Y003、Y002、Y001四位目元件中去,因此Y005以上的输出继电器不会有任何变化。如果被取反的软元件是K或H型的都将被变换成二进制数后,再取反传送。CML指令32位脉冲格式:(D)CML(P)SD。7/22/202463块传送指令:FNC15BMOVSD nS为源软元件,D为目标软元件,n为数据块个数。功能:将源中的n个数据组成的数据块传送到指定的目中去。如果元件号超出允许元件号的范围,数据仅传送到允许范围内。块传送指令概要如表5.15。 5.3.6 块传送指令块传送指令 17/22/202464图5.29(a)为
50、块传送指令示例梯形图,对应指令为:BMOV D0 D10K3。在图5.29(a)中,如X010接通,执行块传送指令。K3指定数据块个数为3,将D0D2内容传送到D10D12,如图5.29(b)。当源、目类型相同时,传送顺序自动决定。如源、目类型不同,只要位数相同就可正确传送。如源、目软元件号超出允许范围,则只对符合规定的数据传送。 BMOV指令没有32位操作方式,但有脉冲方式:BMOV(P)SDn。5.3.6 块传送指令块传送指令 27/22/202465多点传送指令: FNC16FMOVSD nS为源软元件,D为目软元件,n为目软元件个数。功能:将一个源中的数据传送到指定的n个目中去。指令中
51、给出的是目的首地址。常用于对某一段数据寄存器清零或置相同的初始值。多点传送指令概要如表5.16。 5.3.7 多点传送指令多点传送指令 17/22/202466图5.30(a)为多点传送指令示例梯形图,对应指令:FMOV D0 D10K3。在图5.30(a)中,如X010接通,按K3指定目元件个数为3,则将D0中的内容传送到D10D12中去,如图5.30(b)。传送后D0中的内容不变,而D10D12内容被D0内容取代。如果目软元件号超出允许范围,则只对符合规定的数据进行传送。 FMOV指令没有32位操作方式,但有脉冲方式:FMOV(P)SDn5.3.7 多点传送指令多点传送指令 27/22/2
52、02467数据交换指令: FNC17XCHD1D2D1,D2为两个目软元件。功能:将两个指定的目软元件的内容交换。 数据交换指令概要如表5.17。图5.31为数据交换指令示例梯形图,对应指令为:XCH D10 D205.3.8 数据交换指令数据交换指令 17/22/202468在图5.31中,如X010接通,则将执行数据交换指令。将D10的内容传送到D20中去,而D20中的内容则传送到D10中去,两个软元件的内容互换。注意:按图5.31中的梯形图,数据在每个扫描周期都要交换1次,而经过两次交换后D10和D20的内容将复原。解决的办法是使用XCH指令的脉冲方式,只有在驱动条件由OFFON时进行一
53、次交换操作。XCH指令的32位脉冲方式为:(D)XCH(P)D1D2。 5.3.8 数据交换指令数据交换指令 27/22/202469BCD码变换指令:FNC18 BCDSDS为被转换的软元件,D为目标软元件。功能:将指定软元件的内容转换成BCD码并送到指定的目软元件中去。再译成7段码,就能输出驱动LED。BCD码变换指令概要如表5.18。图5.32为BCD码变换指令的示例梯形图,对应指令为:BCD D10 K2Y000。5.3.9 BCD变换指令变换指令 17/22/202470在图5.32中,如X010接通,则将执行BCD码变换指令,即将D10中的二进制数转换成BCD码,然后将低八位内容送
54、到Y007Y000中去。指令执行过程的示意如图5.33所示。注意,如果超出了BCD码变换指令能够转换5.3.9 BCD变换指令变换指令 27/22/202471的最大数据范围就会出错,16位操作时为09999;32位操作时为099999999。BCD码变换指令的32位脉冲操作格式为:(D)BCD(P)SD。5.3.10 BIN变换指令变换指令 BIN变换指令:FNC19 BINSDS为被转换的软元件,D为目软元件。BIN变换指令概要如表5.19。5.3.9 BCD变换指令变换指令 37/22/202472功能:将指定软元件中的BCD码转换成二进制数并送到指定的目软元件中去。此指令作用正好与BC
55、D变换指令相反,用于将软元件中的BCD码转换成二进制数 图5.34为BIN变换指令的示例梯形图,对应指令为:BIN K2X000D10。这条指令可将BCD拨盘的设定值通过X007X000输入到PLC中去。如X010接通,则将执行BIN变换指令,把从X007X000上输入的两位BCD码,变换成二进制数,传送到D10的低八位中。指令执行过程如图5.35,设输入的BCD码63,如直接输入,是二进制01100011(十进制99),就会出错。5.3.10 BIN变换指令变换指令 27/22/202473如用BIN变换指令输入,将会先把BCD码63转化成二进制00111111,就不会出错了。注意:如S中内
56、容不是BCD码就会出错,也不能是常数K,因为在操作前,程序自动将其变换成二进制数。BIN变换指令32位脉冲方式:(D)BIN(P)SD 5.3.10 BIN变换指令变换指令 37/22/20247410条算逻运算指令的功能号是FNC20FNC29。5.4.1 BIN加法指令加法指令二进制加法指令:FNC20ADDS1 S2 D S1、 S2为加数源元件,D为和的目元件。功能:将指定的两个源中有符数,进行二进制加法,然后将和送入指定的目中。 二进制加法指令概要如表5.20。 5.4 算术和逻辑运算指令算术和逻辑运算指令 17/22/202475加法指令影响三个标志位:若相加和0,零标志位M802
57、0=1;若发生进位,则进位标志位M8022=1;若发生借位,则借位标志M8021=1。若浮点数标志位M8023置1,则可进行浮点加法运算。图5.36为加法指令ADD的示例梯形图,对应的指令为:ADDKl0D10D20。在图5.36中,如X010接通,执行加法运算,即将10与D10中的内容相加,结果送入D20中,并根据运算的结果使相应的标志位置1。ADD指令32位方式:(D)ADDD10D20 D30。指令中给出的源、目是其首地址,如对加数1来说,低5.4.1 BIN加法指令加法指令 27/22/20247616位在D10中,高16位在相邻下一数据寄存器D11中,两者组成一个32位的加数1。同理
58、,D21和D20组成了另一个加数2;D31和D30组成和数。为避免重复使用某软元件,建议用偶数元件号。源、目可用相同的元件号,如:ADD Dl0 D20 D10。ADD指令脉冲方式:ADD(P) Dl0 D20 D10。5.4.2 BIN减法指令减法指令 二进制减法指令:FNC21SUBS1 S2 D S1、S2为被减数和减数源元件,D为差目元件。功能:将指定两个源软元件中有符数,进行二进制代数减法,相减结果差送入指定的目元件中。 二进制减法指令概要如表5.21。5.4.1 BIN加法指令加法指令 37/22/202477SUB指令进行的是二进制有符数减法代数运算,减法指令影响标志位:相减结果
59、为0,零标志位M8020=1;相减发生借位,借位标志M8021=1;若相减发生进位,进位标志M8022=1。若将浮点数标志位M8023置1,则可以进行浮点数减法运算。 5.4.2 BIN减法指令减法指令 27/22/202478图5.37为减法指令SUB的示例梯形图,对应的指令为:SUBKl0D10D20。在图5.37中,如X010接通,执行减法运算,将10与D10中的内容相减,结果送入D20中,并根据运算的结果使相应的标志位置1。 SUB指令的32位脉冲操作格式为:(D)SUB(P)SD,这时,指令中给出的是源、目软元件的首地址。 5.4.3 BIN乘法指令乘法指令二进制乘法指令:FNC22
60、 MUL S1 S2 D S1、 S2为被乘数和乘数的源元件,D为乘积的目元件的首地址。5.4.2 BIN减法指令减法指令 37/22/202479功能:将指定的两个源软元件中的数,进行二进制有符数乘法,然后将相乘的积送入指定的目标元件中。二进制乘法指令概要如表5.22。图5.38为乘法指令示例梯形图,对应的指令为:MULD10D20D30。5.4.3 BIN乘法指令乘法指令 27/22/202480在图5.38中,如X010接通,执行有符数乘法运算,将D10与D20中的两内容相乘,积送入D31和D30中两个目单元中去。MUL指令进行的是有符数乘法,被乘数和乘数最高位是符号位,分为16位和32
61、位操作两种情况:(1)16位乘法运算源都是16位的,但积却是32位的。积将按照“高对高,低对低”的原则存放到目中,即积的低16位存放到指令中给出的低地址目元件中,高16位存放到高一号地址的目元件中。如果积用位元件(Y、M、S)组合来存放,则目元件要用K8来给定,小于K8将得不到32位的积,如用K4则只能得到低16位。5.4.3 BIN乘法指令乘法指令 37/22/20248116位乘法允许使用脉冲执行方式:MUL(P)S1 S2 D。 (2)32位乘法运算32位的脉冲方式的MUL指令:(D)MUL(P)D10D20D30。指令中的源都是32位的,被乘数的32位在D11和D10中,乘数的32位在
62、D21和D20中;但是积却是64位的,并将存放到D33、D32、D31和D30中。如果积用位元件(Y、M、S)组合来存放,即使用K8来指定,也只能得到积的低32位,积的高32位将丢失。解决的办法是先用字元件存放积,然后再传送到位元件组合。若将浮点数标志位M8023置1,可进行浮点数乘法运算 5.4.3 BIN乘法指令乘法指令 47/22/202482二进制除法指令:FNC23DIVS1 S2 D S1、S2为存放被除数和除数源元件,D为商和余数的目元件首地址。功能:将指定两个源元件中的数,进行二进制有符数除法,将相除的商和余数送入从首地址开始的相应的目标元件中。 二进制除法指令概要如表5.23
63、 。5.4.4 BIN除法指令除法指令 17/22/202483图5.39为除法指令DIV示例梯形图,对应的指令为DIVD10D20D30。在图5.39中,如X010接通,执行除法运算,将D10与D20中的两内容相除,商送入D30中,而余数放入D31中。 DIV指令分为16位和32位操作两种情况。(1)16位除法运算16位除法运算的源、目都是16位的,虽然商是不会超过16位。如商用位元件组合来存放,能得到相应指定的位数的商,如用K4M0指定能得到16位,但这时余数将丢失。解决的办法是先用字元件存放商和余数,然后再传送到位元件组合去。5.4.4 BIN除法指令除法指令 27/22/2024841
64、6位除法脉冲方式:DIV(P)S1 S2 D。(2)32位除法运算32位脉冲方式DIV指令:(D)DIV(P)D10 D20 D30。指令中的源、目都为32位,给出的都只是它们的首地址。被除数的32位在D11和D10中,除数的32位在D21和D20中;商的32位在D31和D30中,余数的32位在D33和D32中。都是按照“高对高,低对低”的原则存放的。如果商用位元件组合来存放,能得到相应指定位数的商,如用K8M0指定能得到32位,但余数将丢失。解决的办法是先用字元件存放商和余数,然后再传送到位元件组合去。除法运算中除数不能为0,否则要出错。若将浮点数标志位M8023置1,则可进行浮点数除法运算
65、。5.4.4 BIN除法指令除法指令 37/22/202485二进制加1指令: FNC24INC D D是要加1的目元件。功能:将指定的目软元件的内容增加1。二进制加1指令概要如表5.24 。图5.40为加1指令INC的示例梯形图,对应的指令为:INC(P)D10。5.4.5 BIN加加1指令指令 17/22/202486INC指令常使用的是脉冲操作方式。在图5.40中,如X010由OFFON时,则将执行一次加1运算,即将老的D10内容加1后作为新的D10内容。INC指令不影响标志位。比如,用INC指令进行16位操作时,当正数32767再加1时,将会变为-32768;这种情况下进位或借位标志都
66、不受影响。INC指令最常用于循环次数、变址操作等情况。5.4.5 BIN加加1指令指令 27/22/202487二进制减1指令: FNC26DEC D D是要减1的目元件。功能:将指定的目元件的内容增减1。 二进制减1指令概要如表5.25 。图5.41为减1指令DEC的示例梯形图,对应的指令为:DEC(P) D10。5.4.6 BIN减减1指令指令 17/22/202488DEC指令经常使用的是脉冲操作方式。在图5.41中,如X010由OFFON时,则将执行一次减1运算,即将老的D10内容减1后作为新的D10内容。DEC指令不影响标志位。比如,用DEC指令进行16位操作时,当负数32768再减
67、1时,将会变为32767;这种情况下进位或借位标志都不受影响。DEC指令也常用于循环次数、变址操作等情况。5.4.5 BIN加加1指令指令 27/22/202489逻辑“与”指令:FNC26 WAND S1 S2 D S1、S2为两个相“与”的源元件,D为放相“与”结果的目元件。功能:将指定两源元件中数,进行二进制按位“与”,然后将相“与”结果送入指定的目软元件中。 逻辑“与”指令概要如表5.26 。图5.42为逻辑“与”指令示例梯形图,对应的指令为:WAND D10 D20 D30。5.4.7 逻辑逻辑“与与”指令指令 17/22/202490WAND前面的“W”表示16位字操作,以与“与”
68、基本指令中的数据宽度仅一位的AND指令相区别。如X010接通,则将执行逻辑“与”运算,即将D10“与”D20中的内容,进行二进制按位“与”,相“与D1012,D2010,则送入D30的相“与”结果为8,相“与”的示意如图5.43所示。“与”运算的规则是:“全1出1,有0出0”。在D10与D20相“与”运算中,只有第3位满足“全1出1”,在第2至第0位相“与”中,至少有一位是0,所以相“与”结果都是“有0出0”。5.4.7 逻辑逻辑“与与”指令指令 27/22/202491逻辑“与”指令的32位脉冲操作格式为:(D)AND(P)S1 S2 D。指令中给出的S1、S2和D分别为源和目软元件的首地址
69、。 5.4.7 逻辑逻辑“与与”指令指令 37/22/202492逻辑“或”指令:FNC27WORS1 S2 D S1、S2为两个相“或”的源元件,D为放相“或”结果的目元件。功能:将指定的两个源元件中的数,进行二进制按位“或”,然后将相“或”结果送入指定的目标元件中。 逻辑“或”指令概要如表5.27。5.4.8 逻辑逻辑“或或”指令指令 17/22/202493图5.44为逻辑“或”指令示例梯形图,对应的指令为:WOR D10 D20 D30。 WOR前面的“W”表示16位字操作,以与“或”基本指令中的数据宽度仅一位的OR指令相区别。如X010接通,则将执行逻辑“或”运算,即将D10“或”D
70、20中的内容,进行二进制按位“或”,相“或”结果将送入D30中。假设D10中的数据为12,D20中的数据为10,则送入D30的相“或”结果为14,相“或”的示意如图5.45所示。或运算的规则是:“全0出0,有1出1”。在D10或D20相“或”运算中,只有第0位满足“全0出0”,在5.4.7 逻辑逻辑“或或”指令指令 27/22/202494第3至第1位相“或”中,至少有一位是1,所以相“或”结果都是“有1出1”。逻辑“或”指令的32位脉冲操作格式为:(D)OR(P)S1 S2 D。指令中给出的S1、S2和D分别为源和目软元件的首地址。5.4.7 逻辑逻辑“或或”指令指令 37/22/20249
71、5逻辑“异或”指令: FNC28 WXOR S1 S2 D S1、S2为两个相”异或”的源元件,D为放相“异或”结果的目标元件。功能:将指定的两个源软元件中的数,进行二进制按位“异或”,然后将相“异或”结果送入指定的目元件中。逻辑“异或”指令概要如表5.28。5.4.9 逻辑逻辑“异或异或”指令指令 17/22/202496图5.46为逻辑“异或”指令示例梯形图,对应的指令为:WXOR D10 D20 D30。 WOR D10 D20 D30。 WXOR前面的“W”表示16位操作。在图5.46中,如果X010接通,则将执行逻辑“异或”运算,即将D10“异或”D20中的内容,进行二进制按位“异或
72、”,相“异或”结果将送入D30中。设D1012,D2010,则送入D30相“异或”结果为6,相“异或”的示意如图5.47所示。“异或”运算可以理解为不考虑进位的按位加,其规则是:“相同出0,相异出1”。在D10与D20相“异或”运算中,第3和第0位满足“相同出0”,第2和第1位满足“相异出1”。 5.4.9 逻辑逻辑“异或异或”指令指令 27/22/202497逻辑“异或”指令的32位脉冲操作格式为:(D)XOR(P)S1 S2 D。同样,指令中给出的S1、S2和D分别为源和目元件的首地址。5.4.9 逻辑逻辑“异或异或”指令指令 37/22/202498求补指令:FNC29NEGD。 D为存
73、放求补结果的目元件。功能:将将指定的目元件D中的数,进行二进制求补运算,然后将求补结果再送入目元件中。 求补指令概要如表5.29。5.4.10 求补指令求补指令 17/22/202499图5.48为求补指令NEG的示例梯形图,对应的指令为:NEG D10如果X010接通,执行求补运算,即将D10中的二进制数,进行“连同符号位求反加1”,再将求补结果送入D10中求补示意如图5.49。设D10H000C,求补就要对它进行“连同符号位求反加1”,最高位的符号位也得参加“求反加1”,求补结果为HFFF4再存入D10中。5.4.10 求补指令求补指令 27/22/2024100求补同求补码是不同的,求补
74、码的规则是:“符号位不变,数值位求反加1”,对H000C求补码的结果将是H7FF4,两者的结果不一样。求补指令是绝对值不变的变号运算,求补前的H000C的真值是十进制12,而求补后的HFFF4的真值是十进制12。求补指令的32位脉冲操作格式为:(D)NEG(P) D,D为目软元件的首地址。求补指令一般使用其脉冲执行方式,否则每个扫描周期都将执行一次求补操作。注注意意:5.55.8中中的的功功能能指指令令,不不再再做做课课件件,需需要要时时请请查阅教材相关章节。查阅教材相关章节。5.4.10 求补指令求补指令 37/22/2024101本章介绍FX2N的功能指令, 功能指令使控制变得更加灵活、方
75、便, 使其功能变得更强大。 FX2N的功能指令可以归纳为:程序流向控制数据比较与传送算术与逻辑运算循环移位与移位数据处理高速处理方便类外部I/OFX系列外围设备外部F2设备浮点数定位时钟运算和接点比较等几大类。在第7章与第8章的案例中也会用到定位、浮点数运算和接点比较功能指令。要本章小结本章小结7/22/2024102注意功能指令的使用条件和源、目操作数的选用范围和选用方法,要注意有些功能指令在整个程序中只能使用一次。目前主流的Windows平台下的三菱GPPW和FXGP编程软件,是学习和使用三菱PLC是离不开的得力助手,对学习功能指令也是一个很好的“老师”。当遇到对指令的疑惑时,如程序步、源、目操作数的范围、有否脉冲执行方式以及有否32位操作数方式等等,可以用它们来进行上机验证。在学习功能指令组成的梯形图时,要充分利用GX Simulator对其进行模拟仿真,以加深对梯形图的理解。本章小结本章小结7/22/2024103