1、2022-12-71第第5章章 三菱三菱FX2N系列系列 PLC的功能指令的功能指令 本章导读本章导读 本章主要介绍了FX2N的功能指令及其编程方法,功能指令编号为FNC00FNC246,将常用功能指令归类讲述,从5.6节起只作简讲,未介绍的可查阅附录表B.2。将以表格形式归纳功能指令格式、类型及使用要素。选择合适的功能指令,将使编程更加方便和快捷。要求掌握各类功能指令及其编程方法,掌握GPPW内装的的模拟仿真、时序图等功能,来帮助学习功能指令。2022-12-725.1 功能指令的基本规则功能指令的基本规则1 FX2N系列PLC的功能指令一览表见附录表B.2。一条基本逻辑指令只完成一个特定的
2、操作,而一条功能指令却能完成一系列的操作,相当于执行了一个子程序,所以功能指令功能更强大,编程更精练,它能用于运动控制、模拟量控制等场合。基本指令和其梯形图符号之间是互相对应的。而功能指令采用梯形图和助记符相结合的形式,意在表达本指令要做什么。有些功能指令在整个程序中只能使用一次,介绍到此类指令时会特别强调。5.1.1 功能指令的表示功能指令的表示1功能指令的梯形图表示功能指令的梯形图表示用功能框表示功能指令,即在功能框中用通用的助记2022-12-735.1.1 功能指令的表示功能指令的表示 2符形式来表示,如图5.1(a)所示,该指令的含义如图5.1(b)所示。图5.1(a)中X000常开
3、接点是功能指令的执行条件,其后的方框即为功能指令。由图可见,功能指令同一般的汇编指令相似,也是由操作码和操作数两大部分组成。(1)操作码部分功能框第一段为操作码部分,表达了该指令做什么。2022-12-745.1.1 功能指令的表示功能指令的表示 3一般功能指令都是以指定的功能号来表示,如FNC45。但是,为了便于记忆,每个功指令都有一个助记符,对应FNC45的助记符是MEAN,表示“求平均值”。这样就能见名知义,比较直观。在编程器或FXGP软件中输入功能指令时,输入的是功能号FNC45,显示的却是助记符MEAN。不过,在FXGP软件中也可直接输入助记符MEAN。注意注意:本书在介绍各功能指令
4、时,将以图5.1(a)的形式同时给出功能号和对应的助记符,但并不意味着在FXGP软件中输入功能指令时要两者一起送,而是按上述介绍,只要送入其中一个就行了。(2)操作数部分 2022-12-755.1.1 功能指令的表示功能指令的表示 4功能框的第一段之后都为操作数部分,表达了参加指令操作的操作数在那里。操作数部分部分组成:源操作数(源)目标操作数(目)数据个数源操作数(源)目标操作数(目)数据个数源操作数:D0、D1和D2,数据个数K3指示源有3个;目操作数:D10。当X000接通时,MEAN指令的含义如图5.1(b)所示,即要取出D0D2的连续3个数据寄存器中的内容作算术平均后送入D10寄存
5、器中。当X000断开时,此指令不执行。操作数排列次序:源在前,目在后,数据个数在最后源在前,目在后,数据个数在最后有些功能指令还要求多个操作数,也有的功能指令不需要操作数。2022-12-765.1.1 5.1.1 功能指令的表示功能指令的表示 5 52功能指令的要素描述功能指令的要素描述功能指令的要素描述将按表图的格式给出。如对图5.1(a)这条MEAN指令的要素描述如表5.1所示。表中使用符号的说明:求平均值指令:指令的名称 FNC45:指令的功能号2022-12-775.1.1 功能指令的表示功能指令的表示 6 MEAN指令的助记符(P)指令的执行形式,(P)表示可使用脉冲执行方式,在执
6、行条件满足时仅执行一个扫描周期;缺省的为连续执行型。(D)指令的数据长度可为32位,缺省为16位。S源操作数,简称源,指令执行后不改变其内容的操作数。当源不止一个时,用S1、S2等来表示。有“”表示能用变址方式,缺省为无“”,表示不能使用变址方式。D目标操作数,简称目,指令执行后将改变其内容的操作数。当目不止一个时,用D1、D2等来表示。有“”表示能使用变址方式,缺省为无“”,表2022-12-78示不能使用变址方式。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 功能指令的表示功能指令的表示 72022-12-795.1.2 功能指令的数据长度功能指令的数据长度 2为符号位,第014位为数值位。图5.2所示为16位数据寄存器D0图示。(2)双字元件 可以使用两个字元件组成双字元件,以组成32位数据操作数。双字元件是由相邻的寄存器组成,在图5.3中由D11和D10组成。低16位数据存放
8、在低位元件D10中,2022-12-7105.1.2 功能指令的数据长度功能指令的数据长度 3高16位数据存放在高位元件D10中,存放原则是:低对低对低,高对高低,高对高。双字元件中第31位为符号位,第030位为数值位。注意注意:在指令中使用双字元件时,一般只用其低位地址表示这个元件,但高位元件也将同时被指令使用。建议用偶数作为双字元件的地址,此点会用图5.6来说明。功能指令中的操作数是指操作数本身或操作数的地址。功能指令能够处理16位或32位的数据。2功能指令中的功能指令中的16位数据位数据因为几乎所有寄存器的二进制位数都是16位,所以功能指令中16位的数据都是以缺省形式给出。如图5.4 所
9、示即为一条16位MOV指令:2022-12-7115.1.2 功能指令的数据长度功能指令的数据长度 4MOV指令的含义是,当X000接通时,将十进制数100传送到16位的数据寄存器D10中去。当X000断开时,该指令被跳过不执行,源和目的内容都不变。3功能指令中的功能指令中的32位数据位数据功能指令也能处理32位数据,这时需要在指令前缀符号(D),如图5.5 所示即为一条32位MOV指令:2022-12-7125.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位数据首地址用偶地址。2022-12-7135.1.2 功能指令的数据长度功能指令的数据长度 6注意注意:32位计数器C200C255不能作为16位指令操作数4功能指令中的位元件功能指令中的位元件位元件:只有ON或OFF两种状态,用一个二进制位就能表达的元件。如X、Y、M、S等。功能指令中也能使用由
11、只含一个bit的位元件,以及位元件组合。位元件组合成位组合元件的方法:将多个位元件按四位一组的原则来组合,也就是说用4位BCD码来表示1位十进制数,这样就能在程序中使用十进制数据了。组合方法的助记符是:Kn最低位位元件号最低位位元件号 如KnX、KnY、KnM即是位元件组合,其中“K”表示后面跟的是十进制数,“n”表示四位一组的组数,2022-12-7145.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位这两种格式,因此当用2022-12-7155.1.2 功能指令的数据长度功能指令的数据长度 8K1K3组成字时,其高位不足16位部分均作0处理。如执行图5.7所示指令时,源数据只有12位,而目标寄存器D20是16位的,传送结果D20的高4位自动添0,如图5.8所示。这时最高位的符号位必然是0,也就是说,只能是正数(符号位的判别是:正0负1)。202
13、2-12-7165.1.2 功能指令的数据长度功能指令的数据长度 9 由位元件组成组合位元件时,最低位元件号可以任意给定。如X000、X001和Y005均可。但习惯上采用以0结尾的位元件,如X000、X010和Y020等。5.1.3 功能指令的执行方式功能指令的执行方式 功能指令的两种执行方式:连续执行和脉冲执行方式。1功能指令的连续执行方式功能指令的连续执行方式缺省为连续执行方式,如图5.9。PLC是以循环扫描方式工作的,如果执行条件X000接通,指令在每个扫描周期中都要被重复执行一次,这种情况对大多数指令都是允许的。22022-12-7175.1.3 功能指令的执行方式功能指令的执行方式
14、22功能指令的脉冲执行方式功能指令的脉冲执行方式对于某些功能指令,如XCH、INC和DEC等,用连续执行方式在实用中可能会带来问题。如图5.10所示是一条INC指令,是对目标元件(D10、D11)进行加1操作的。假设该指令以连续方式工作的话,那么只要X000是接通的,则每个扫描周期都会对目标元件加1,而这在许多实际的控制中是不允许的。为了解决这类问题,设置了指令的脉冲执行方式,并在指令助记符的后面后缀符号“P”来表示此方式,如图5.10所示。2022-12-7185.1.3 功能指令的执行方式功能指令的执行方式 3注意注意:在图5.10中INC后加“(P)”,仅表示指令还有脉冲执行方式;在IN
15、C前加“(D)”,也仅表示指令还有32位操作方式。但在FXGP中输入时应该这么送:DINCPD10,即加在前后缀的括号不必送的。对于在本书中,以这种方式表达的所有其它功能指令都要这样来理解。在脉冲执行方式下,指令INC只在条件X000从断开变为接通时才执行一次对目标元件的加1操作。即每当X000来了一个上升沿,才会执行加1;而在其它情况下,即使X000始终是接通的,都不会执行加1指令。在不需要每个扫描周期都执行指令时,可以采用脉冲执行方式的指令,这样还能缩短程序的执行时间。2022-12-7195.1.4 变址操作变址操作 1FX2N的16个变址寄存器V和Z都是16位的(FX0N和FX0S只有
16、两个变址寄存器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。2022-12-720例例5.1
17、如图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中去。2022-12-7215.2 程序流向控制指令程序流向控制指令 1FX2N系列
18、PLC的功能指令中程序流向控制指令共有10条,功能号是FNC00FNC09,程序流向控制指令汇总如附录表B.2所示。通常情况下,PLC的控制程序是顺序逐条执行的,但是在许多场合下却要求按照控制要求改变程序的流向。这些场合有:条件跳转、转子与返回、中断调用与返回、循环、警戒时钟与主程序结束。5.2.1 条件跳转指令条件跳转指令1指令用法说明指令用法说明条件跳转指令为CJ或CJ(P)后跟标号,其用法是当跳转条件成立时跳过一段指令,跳转至指令中所标明的标号处继续执行,若条件不成立则继续顺序执行。这样可以减少扫描时间并使“双线圈操作”成为可能。352022-12-7225.2 程序流向控制指令程序流向
19、控制指令 2条件跳转指令的助记符、功能号、操作数和程序步等指令概要如表5.2所示。由表5.2可见,能够充当目标操作数的只有标号P0P127。例例5.2梯形图如图5.12所示,阅读此程序,试分析:(1)程序的可能流向;(2)程序中的“双线圈操作”是否可能。解:解:(1)分析图5.12所示程序的流向如下。若M0接通,则CJP0的跳转条件成立,程序将跳转到标号为P0处。因为M0常闭是断开的,所以 CJ P1的跳转条件不成立,2022-12-7235.2 程序流向控制指令程序流向控制指令 3程序顺序执行。按照M3的状态对Y000进行处理。若M0断开,则CJP0的跳转条件不成立,程序会按照指令的顺序执行
20、下去。执行到P0标号处时,由于M0常闭是接通的,则CJP1的跳转条件成立,因此程序就会跳转到P1标号处。(2)Y000为双线圈输出。程序在执行过程中,M0常开和M0常闭是一对约束。使线圈Y000驱动逻辑任何时候只有一个会发生,所以在图5.12所示梯形图中Y000为双线圈输出是可以的。2跳转程序中软元件状态与标号跳转程序中软元件状态与标号(1)被跳过程序段中软元件的状态 被跳过的程序段中的各种继电器和状态器、定时器等将保持跳转发生前的状态不变。正在工作的定时器正在工作的定时器T192T199高高速计数器速计数器C235C255不管有无跳转仍将不管有无跳转仍将2022-12-7245.2 程序流向
21、控制指令程序流向控制指令 4连续工作,输出接点也能动作。掉电保持计数器、定时器,其当前值被锁定。程序继续执行时,它们将继续工作。复位优先,即使复位指令在被跳过程序段中,条件满足,复位也将执行。(2)标号不能重复使用,但能多次引用。同一标号不能重复使用,但可多次被引用,即可从不同的地方跳转到同一标号处,如图5.13(a)。标号也可以出现在跳转指令之前,如图5.13(b)。2022-12-725当M0接通时,程序也允许向回跳转。但是如果M0接通时间超过100ms,会引起警戒时钟出错,但不会影响程序的执行。标号共有128个,其中P63相当于END,不能作为真正的标号使用。这样,当要跳过最后一段程序结
22、束时,就可以在此段程序前设置一条CJ P63指令。也可以理解为CJ P63就是跳转到程序的最开始处。而且标号P63不必出现在程序中。3无条件跳转与条件跳转的脉冲执行方式无条件跳转与条件跳转的脉冲执行方式(1)构造无条件跳转指令可用条件跳转指令来构造无条件跳转指令,使用某个始终成立的条件使条件跳转变成无条件跳转。常用的是5.2 程序流向控制指令程序流向控制指令 52022-12-7265.2 程序流向控制指令程序流向控制指令 6M8000,因为只要PLC处于RUN状态,则M8000总是接通的,无条件跳转梯形图如图5.14(a),条件跳转指令CJ P0的驱动条件始终成立,因此就可以将这条指令看成是
23、无条件跳转。(2)条件跳转指令的脉冲执行方式条件跳转指令脉冲执行方式如图5.14(b)。2022-12-7275.2 程序流向控制指令程序流向控制指令 74跳转与主控区之间的相关问题跳转与主控区之间的相关问题 如果跳转的区域包括整个主控区(MCMCR),则将不受任何限制,可以随意跳转而不必考虑主控区问题。如果跳转从主控区外跳到主控区内时,这时主控指令的目标接点,应被当作接通来处理。比如说被跳过的主控指令为MC N0 M10,则M10仍被看作是接通的。如果跳转发生在主控区内,当主控接点为断开时,跳转指令因没有执行到而不能跳转。如果跳转从主控区内跳到主控区外时,当主控接点断开时,由于没有执行到跳转
24、指令,因此不能跳转。当主控接点接通时,可以跳转,这时MCR指令被忽略。如果跳转从一个主控区内跳到另一个主控区内,而且2022-12-7285.2 程序流向控制指令程序流向控制指令 8源主控接点是接通的,则跳转可以进行,不管目标主控接点原状态如何,均被看做接通,MCR N0被忽略。5.2.2 转子与返回指令转子与返回指令子程序也是为一些特定的控制目的编制的相对独立的模块,供主程序调用。为了区别于主程序,将主程序排在前边,子程序排在后边,并以主程序结束指令FEND(FNC06)给以分隔。1指令用法说明指令用法说明(1)子程序调用指令:CALL或CALL(P)标号,标号是被调用子程序的入口地址,以P
25、0P127(不包括P63)来表示。子程序返回用SRET指令。2022-12-7295.2.2 转子与返回指令转子与返回指令 2转子与返回指令的指令概要如表5.4所示。子程序调用和返回的梯形图如图5.15(a)。当M0接通时,调用子程序P0,程序将跳转到P0标号所指向的那条程序,同时将调用指令下一条指令的地址作为断点保存。此后从P0开始逐条顺序执行子程序,直至遇到SRET指令时,程2022-12-7305.2.2 转子与返回指令转子与返回指令 3序将返回到主程序的断点处,继续顺序执行主程序,即执行指令LD M1,OUTY000。(2)子程序的位置与标号使用子程序P0安排在主程序结束指令FEND之
26、后,标号P0和子程序返回指令SRET间的程序构成了P0子程序的内容2022-12-7315.2.2 转子与返回指令转子与返回指令 4主程序带有多个子程序时,子程序要依次放在主程序结束指令FEND之后,并以不同的标号相区别。FX1N、FX2N和和FX2NC子程序标号范围为P0P127(FX1S为为P0P63),),这些标号与条件转移中的标号相同,在条件转移中已使用了的标号,子程序不能再用。同一标号只能用一次,不同的CALL指令可多次调用同一标号。(3)CALL指令的脉冲执行方式脉冲执行方式如图5.15(b),只有在M0上升沿时,程序才会转子。CJ是跳转,CALL也是一种跳转,不过CJ跳转是“有去
27、无回有去无回”,而CALL的跳转则是“有去有回有去有回”的,子程序结束后将会回到主程序的断点处继续执行原来的程序。为了两者区别,把后者称谓“调用”,更适当。2022-12-7325.2.2 转子与返回指令转子与返回指令 52子程序的嵌套子程序的嵌套子程序嵌套示意如图5.16(a),梯形图如图5.16(b)子程序嵌套:主程序调用子程序1,在执行子程序1时,子程序1又调用另一个子程序2,称为子程序嵌套。2022-12-7335.2.2 转子与返回指令转子与返回指令 6子程序嵌套总数可有5级。注意注意:在子程序和中断子程序中使用的定时器范围为:T192T199和T246T249。在此之外的定时器,虽
28、然在子程序中或许也能使用,但不能保证其运行的正确性,所以请别使用在此之外的定时器。5.2.3 中断与返回指令中断与返回指令中断是CPU与外设“打交道”(数据传送)的一种方式,慢速的外设远远跟不上高速CPU的节拍,要“拖累”CPU。为此可采用数据传送的中断方式,使CPU与外设并行工作的,平时CPU在执行主程序,当外设需要数据传送服务时,才去向CPU发出中断请求。在允许中断的情况下,CPU可以响应外设的中断请求,从主程序中被拉出来,去执行一段中断服务子程序,比如给了外设一批数据2022-12-7345.2.3 中断与返回指令中断与返回指令 2后,就不再管外设,返回主程序。以后都是这样,每当外设需要
29、数据传送服务时,又会向CPU发中断请求。可见CPU只有在执行中断服务子程序短暂的时间里才同外设打交道,所以CPU的工作效率就大大提高了。1指令用法说明指令用法说明有关中断指令概要如表5.5所示。(1)中断返回指令:FNC 03 IRET2022-12-7355.2.3 中断与返回指令中断与返回指令 3(2)开中断指令(中断允许):FNC 04 EI(3)关中断指令(中断禁止):FNC 05 DI2.3.4节已经介绍了FX2N系列PLC有3类中断:外部中断内中断(即内部定时器中断)高速计数器外部计数中断FX2N系列PLC可以多达15个中断源,15个中断源可以同时向CPU发中断请求信号,这时CPU
30、要通过中断判优,来决定响应那一个中断。15个中断源的优先级由中断号决定,中断号小者其优先级为高。另外,外中断的优先级整体上高于内中断的优先级。这样,在主程序的执行过程中,就可根据不同中断服务子程序中PLC所要完成工作的优先级高低决定能否响应中断。对可以响应中2022-12-7365.2.3 中断与返回指令中断与返回指令 4断的程序段用中断允许指令EI来开中断,对不允许中断的程序段用中断指令DI来关中断。程序中允许中断响应的区间应该由EI指令开始,DI指令结束,如图5.17所示。在此区间之外时,即使有中断请求,CPU也不会立即响应。通常情况下,在执行某个中断服务程序时,将禁止其它中断。中断返回指
31、令必须用IRET,不能用子程序返回指令SRET。IRET指令除了能从中断服务程序返回以外,还要通知CPU本次中断已经结束。2022-12-7375.2.3 中断与返回指令中断与返回指令 5中断与子程序区别中断与子程序区别:子程序调用是事先在程序中用CALL给定的,但中断调用要求响应时间小于机器的扫描周期,所以就不能事先在程序中给定,而是由外设(中断源)随机地通过硬件向CPU发中断请求,才把CPU拉到中断服务子程序中去的。整个中断是一个软硬件结合的过程。2中断指针中断指针为区别内外中断及标明中断子程序的入口,规定了中断标号。中断标号是I开头的,又称为I指针。子程序的标号是P开头的,又称为P指针。
32、I指针分为3种。(1)外中断指针外中断指针的格式如图5.19(a),I00150,共6点。外中断是外部信号引起的,对应的外部输入口为X0002022-12-7385.2.3 中断与返回指令中断与返回指令 6X005。指针格式中的最后一位是选择是上升沿请求中断,还是下降沿请求中断。(2)内中断指针内中断指针的格式如图5.19(b)所示,I6I8,共3点。内中断为内部定时时间到信号中断,由指定编号为68的专用定时器控制。设定时间在1099ms间选取,每隔设定时间就会中断一次。2022-12-7395.2.3 中断与返回指令中断与返回指令 7(3)高速外部计数中断指针高速计数器中断指针的格式如图5.
33、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,直至遇IRET指令时返回主程序。(2)I699表示内部定时时间到中断,每隔99
34、ms就执行I699开始2022-12-7405.2.3 中断与返回指令中断与返回指令 8的中断服务程序一次,直至遇IRET指令时返回主程序。(3)I020表示高速计数器C236计数到中断,从X1输入计数脉冲,每当C236当前值为10时,产生中断,执行标号为I020开始的中断服务程序一次,D1就被加1,直至遇IRET指令时返回主程序。2022-12-7415.2.3 中断与返回指令中断与返回指令 93中断请求信号的宽度与中断屏蔽寄存器中断请求信号的宽度与中断屏蔽寄存器(1)中断请求信号宽度中断请求信号宽度,即中断请求信号的持续时间必须大于200s,宽度不足的请求信号可能得不到正确响应。(2)中断
35、屏蔽寄存器M8050M8058这10个特殊功能辅助继电器是同中断有关的,其功能如表5.5和表5.6所示。可用程序设置其为ON或OFF,当其为ON时,即使已经用EI指令开中断了,也会屏蔽相关的中断,不妨将M8050M8059称之为中断屏蔽寄存器。DI则是中断屏蔽总开关。2022-12-7425.2.3 中断与返回指令中断与返回指令 102022-12-7435.2.4 主程序结束指令主程序结束指令 1主程序结束指令:FNC 06FEND有关主程序结束指令的概要如表5.7。FEND指令表示主程序结束,此后CPU将进行输入/输出处理、警戒时钟刷新,完成后回到第0步。子程序和中断服务程序都必须写在FE
36、ND后,没有它们时也可以没有FEND指令。但是程序的最后必须用END指令结尾。所以,子程序及中断服务程序必须写在FEND指令与END指令之间。2022-12-7445.2.4 主程序结束指令主程序结束指令 2若FEND指令在CALL或CALL(P)指令执行之后,SRET指令执行之前出现,或将FEND指令置于FOR-NEXT循环之中,则被认为出错。一个完整的PLC程序可以没有子程序,也可以没有中断服务程序,但必定要有主程序。5.2.5 警戒时钟指令警戒时钟指令警戒时钟刷新指令:FNC 07 WDT(P)警戒时钟刷新指令概要如表5.8所示。2022-12-7455.2.5 警戒时钟指令警戒时钟指令
37、 1WDT指令用于1.3.2介绍过的警戒定时器刷新,CPU从第0步扫描到END或FEND指令时,将使警戒定时器复位。如果扫描时间,因干扰超过了D8000 中设定的警戒定时器定时时间,警戒定时器不再被复位,用户程序将会停止执行,PLC面板上的CPU-E出错指示灯将会点亮。为此,可将WDT指令插到合适的程序步中来刷新警戒定时器,以使顺序程序得以继续执行到END。这样就可以将一个运行时间大于警戒定时器定时值的程序用WDT指令分成几部分,使每部分的执行时间都小于警戒定时器定时值。存储在D8000中的警戒定时器定时时间由PLC的监控程序写入,同时也允许用户改写其内容。若希望扫描周期2022-12-746
38、5.2.5 警戒时钟指令警戒时钟指令 2时间改写为160ms,可以用功能指令MOV来改写D8000的内容,如图5.20所示。此外,WDT指令还可用于:(1)当程序用CJ指令向后跳转时,即对应的P标号步序小于CJ指令的步序,为防止出错,应在P标号之后插入WDT指令,如图5.21。(2)可将WDT指令置于FOR-NEXT循环之中,以防止死循环或循环时间超时而停止运行。2022-12-7475.2.6 循环指令循环指令 11指令用法说明指令用法说明(1)循环体起点指令:FNC 08 FOR(16)(2)循环体终点指令:FNC 09 NEXT循环指令概要如表5.9所示。能够充当源操作数的为如表中S所指
39、定的范围内的所有软元件。循环指令可反复执行某段程序,只要将这一段程序放在2022-12-7485.2.6 循环指令循环指令 2FORNEXT间,待执行完指定的循环次数后,才执行NEXT下一条指令。在梯形图中判断FOR/NEXT指令配对的原则是:与NEXT指令之前相距最近的FOR指令是一对循环指令,FOR/NEXT对是唯一的。FOR指令和NEXT指令间包含的程序,称为循环体,循环体内的程序就是要反复循环执行的操作。如果在循环体内又包含了另外一个完整的循环,则称为循环的嵌套嵌套。图5.22中循环C的循环体中包含了循环B的全部,循环B的循环体中包含了循环A的全部,这是三重循环的嵌套,循环指令最多允许
40、5层嵌套。嵌套循环程序的执行总是由内向外,逐层循环的。2022-12-7495.2.6 循环指令循环指令 3循环次数由FOR后的数值指定,表5.9 中S 区间内的元件都可以。循环次数范围为132767,如循环次数1时,被当作1处理,FOR-NEXT循环一次。注意:应避免下述会出错情况。NEXT指令出现在FOR指令之前。FOR和NEXT指令必须成对使用,缺一不可。NEXT指令出现在FEND或END指令之后。2022-12-7505.2.6 循环指令循环指令 4注意:应避免下述会出错情况。NEXT指令出现在FOR指令之前。FOR和NEXT指令必须成对使用,缺一不可。NEXT指令出现在FEND或EN
41、D指令之后。2022-12-751在FX2N系列PLC中设置了8条数据传送指令,2条数据比较指令,其功能号是FNC10FNC19。传送指令:MOV(传送)SMOV(BCD码移位传送)CML(取反传送)BMOV(数据块传送)FMOV(多点传送)XCH(数据交换)BCD(二进制数转换成BCD码并传送)BIN(BCD码转换为二进制数并传送)比较指令:CMP(比较)ZCP(区间比较)5.3 数据传送指令数据传送指令 2022-12-7525.3.1 比较指令比较指令 1比较指令:FNC10CMPS1 S2 D 其中S1、S2为两个比较的源操作数,D为比较结果标志软元件,指令中给出的是标志软元件的首地址
42、。比较指令的概要如表5.10所示。比较指令CMP可对两个数进行代数减法操作,将源操作数S1和S2的数据进2022-12-7535.3.1 比较指令比较指令 2行比较,结果送到目标操作数D中,再将比较结果写入指定的相邻三个标志软元件中。指令中所有源数据均作为二进制数处理。图5.23所示为比较指令CMP的梯形图,对应的指令为:CMPKl00D10M0。在图5.23中,如X010接通,则将执行比较操作,即将100减去D10中的内容,再将比较结果写入相邻三个标志软元件M0M2中。标志位操作规则是:2022-12-7545.3.1 比较指令比较指令 3若K100(D10),则M0被置1;若K100(D1
43、0),则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复位指令。2022-12-755区间比较指令:FNC11 ZCP S1 S2 S3 DS1和S2为区间起点和终点,S3为另一比较软元件,D为标志软元
44、件(首地址)。ZCP指令可将某个指定的源数据S3与一个区间的数据进行代数比较,S1和S2分别为区间的下限和上限,比较结果送到目标操作数D中,D由3个连续的标志位软元件组成。5.3.2 区间比较指令区间比较指令 12022-12-756图5.24 所示为区间比较指令示例梯形图,对应指令为:ZCP Kl00 K200 C0M0。如果X010接通,则将执行区间比较操作,即将C0的内容与区间的上下限去比较,比较结果写入相邻三个标志位软元件M0M2中。标志位操作规则是:若K100C0,则M0被置1;若K100C0K200,则M1被置1;若K200C0,则M2被置1。5.3.2 区间比较指令区间比较指令
45、22022-12-757ZCP指令的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 区间比较指令区间比较指令 32022-12-7585.3.3 传送指令传送指令 2图5.25为MOV的示例梯形图,对应的指令为:MOV D
46、10 D20。如X010接通,将D10的内容传送到D20中去,传送结果2022-12-759D10内容保持不变,D20中内容被D10内容转化为二进制后取代。MOV指令的32位脉冲方式:(D)MOV(P)SD。5.3.4 移位传送指令移位传送指令移位传送指令:FNC13SMOVSm1 m2 D n S为源数据,m1为被传送的起始位,m2为传送位数5.3.3 传送指令传送指令 32022-12-760,D为目软元件,n为传送的目起始位。功能:将S第m1位开始的m2个数移位到D的第n位开始的m2个位置去,ml、m2和n取值均为:14。分开的BCD码重新分配组合,一般用于多位BCD拨盘开关的数据输入。
47、图5.26为SMOV的示例梯形图,对应指令为:SMOV D10 K4K2D20K3移位传送示意图如图5.27。设D10=BCD码4321,D20=BCD码9008。如X010接通,执行移位传送指令。5.3.4 移位传送指令移位传送指令 22022-12-761将D10中的二进制数转换成BCD码4321;然后将第4位(m1=K4)开始的共2位(m2=K2)BCD码4和3,分别移到D20的第3位(n=K3)和第2位的BCD码位置上去,所以移位传送后D20=9438。移位传送指令只能对16位数据进行操作,所以BCD码值超过9999时将会出错。SMOV指令脉冲方式:SMOV(P)S m1 m2 D n
48、。5.3.4 移位传送指令移位传送指令 32022-12-762取反传送指令:FNC14CMLSD S为源数据,D为目软元件。功能:将S按二进制的位取反后送到目D中。取反传送指令概要如表5.14。图5.28为取反传送指令CML示例梯形图,对应指令为:CML D10 K1Y001。5.3.5 取反传送指令取反传送指令 12022-12-7635.3.5 取反传送指令取反传送指令 2在图5.28中,如X010接通,则将执行取反传送指令。首先将D10中的各个位取反。然后根据K1Y001指定,将D10的低4位送到Y004、Y003、Y002、Y001四位目元件中去,因此Y005以上的输出继电器不会有任
49、何变化。如果被取反的软元件是K或H型的都将被变换成二进制数后,再取反传送。CML指令32位脉冲格式:(D)CML(P)SD。2022-12-764块传送指令:FNC15BMOVSD nS为源软元件,D为目标软元件,n为数据块个数。功能:将源中的n个数据组成的数据块传送到指定的目中去。如果元件号超出允许元件号的范围,数据仅传送到允许范围内。块传送指令概要如表5.15。5.3.6 块传送指令块传送指令 12022-12-765图5.29(a)为块传送指令示例梯形图,对应指令为:BMOV D0 D10K3。在图5.29(a)中,如X010接通,执行块传送指令。K3指定数据块个数为3,将D0D2内容传
50、送到D10D12,如图5.29(b)。当源、目类型相同时,传送顺序自动决定。如源、目类型不同,只要位数相同就可正确传送。如源、目软元件号超出允许范围,则只对符合规定的数据传送。BMOV指令没有32位操作方式,但有脉冲方式:BMOV(P)SDn。5.3.6 块传送指令块传送指令 22022-12-766多点传送指令:FNC16FMOVSD nS为源软元件,D为目软元件,n为目软元件个数。功能:将一个源中的数据传送到指定的n个目中去。指令中给出的是目的首地址。常用于对某一段数据寄存器清零或置相同的初始值。多点传送指令概要如表5.16。5.3.7 多点传送指令多点传送指令 12022-12-767图
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。