《第6章FX系列PLC的应用指令》由会员分享,可在线阅读,更多相关《第6章FX系列PLC的应用指令(131页珍藏版)》请在金锄头文库上搜索。
1、第第6章章 FX系列系列PLC的应用指令的应用指令6-1 应用指令的表示方法与数据结构应用指令的表示方法与数据结构6.1.1 应用指令的表示方法应用指令的表示方法大多数应用指令有大多数应用指令有l到到4个操作数,有的应用指令没有操作数。个操作数,有的应用指令没有操作数。BMOV(Block Move)用来表示数据块传送指令。用来表示数据块传送指令。S表示源表示源(source)操作数,操作数,D表示目标表示目标(Destination)操作数。源操操作数。源操作数或目标操作数为多个时,表示为作数或目标操作数为多个时,表示为S1、S2、D1、D2等。等。n或或m表示其他操作数,常用来表示常数,或
2、源操作表示其他操作数,常用来表示常数,或源操作数和目标操作数的补充说明。需注释的项目较多时,用数和目标操作数的补充说明。需注释的项目较多时,用m1、n2等方式。等方式。如果可使用变址功能,用如果可使用变址功能,用S和和D表示。表示。上图含义:上图含义:(D0)+(D1)+(D2)3(D4Z0)6.1.1 应用指令的表示方法应用指令的表示方法应用指令的助记符占一个程序步,每一个应用指令的助记符占一个程序步,每一个16位操作数和位操作数和32位位操作数分别占操作数分别占2个和个和4个程序步。个程序步。BMOV指令编号为指令编号为15,在用编程器输入应用指令,在用编程器输入应用指令BMOV时,时,先
3、按先按(FNC)键,再输入键,再输入15,编程器将显示出指令的助记符:,编程器将显示出指令的助记符:BMOV。两个操作数之间要用。两个操作数之间要用(SP)(space,空格,空格)键来分隔开。键来分隔开。 在图在图6-1中,当中,当X0的常开触点接通时,将的常开触点接通时,将3个个(n=3)数据寄存器数据寄存器D10D12中的数据传送到中的数据传送到D20D22中去。中去。6.1.2 32位指令与脉冲执行指令位指令与脉冲执行指令1 32位指令位指令 MOV之前的之前的“D”表示处理表示处理32位位(bit)双字数据,相邻的两个数双字数据,相邻的两个数据寄存器组成数据寄存器对。据寄存器组成数据
4、寄存器对。处理处理32位数据时,为了避免出现错误,使用首地址为偶数的操作位数据时,为了避免出现错误,使用首地址为偶数的操作数,指令前面没有数,指令前面没有“D”时表示处理时表示处理16位数据。位数据。32位计数器(位计数器(C200C255)的一个软元件为)的一个软元件为32位,不可作为处位,不可作为处理理16位数据指令的操作数使用。位数据指令的操作数使用。2 脉冲执行指令脉冲执行指令MOV后面的后面的“P”表示脉冲表示脉冲(Pulse)执行,仅在执行,仅在X1由由OFF变为变为ON状态时执行一次。状态时执行一次。INC(加加1)、DEC(减减1)和和XCH(数据交换数据交换)等等指令一般应使
5、用脉冲执行方式。使用脉冲方式可以减少执行指令指令一般应使用脉冲执行方式。使用脉冲方式可以减少执行指令的时间。的时间。使用上升沿检测触点时,可以不用使用脉冲执行方式。使用上升沿检测触点时,可以不用使用脉冲执行方式。符号符号“P”和和“D”可以同时使用,例如可以同时使用,例如DP。编程手册中,符号编程手册中,符号“ ”表示重复执行的指令,在每一扫描周期表示重复执行的指令,在每一扫描周期改变目标操作数的值。符号改变目标操作数的值。符号“”表示不能使用变址寻址的操表示不能使用变址寻址的操作数。作数。6.1.3 数据格式数据格式1 位元件与位元件的组合位元件与位元件的组合位位(bit)元件用来表示开关量
6、的状态,例如常开触点的通、断,元件用来表示开关量的状态,例如常开触点的通、断,线圈的通电和断电,这两种状态分别用二进制数线圈的通电和断电,这两种状态分别用二进制数1和和0来表示,或来表示,或称为该编程元件处于称为该编程元件处于ON或或OFF状态。状态。X、Y、M和和S为位元件。为位元件。FX系列系列PLC用用KnP的形式表示连续的位元件组,每组由的形式表示连续的位元件组,每组由4个连续个连续的位元件组成,的位元件组成,P为位元件的首地址,为位元件的首地址,n为组数为组数(n=l8)。例如。例如K2M0表示由表示由M0M7组成的两个位元件组,组成的两个位元件组,M0为数据的最低为数据的最低位位(
7、首位首位)。16位操作数时位操作数时n=14,n4时高位为时高位为0;32位操作数位操作数时时n=1-8,n8时高位为时高位为0。使用成组的位元件时,使用成组的位元件时,X和和Y的首地址的最低位为的首地址的最低位为0,例如,例如X0、X10、Y20等。对于等。对于M和和S,首地址可以采用能被,首地址可以采用能被8整除的数,也整除的数,也可以用最低位为可以用最低位为0的地址作首地址,例如的地址作首地址,例如M32、S50等。等。应用指令中的操作数的形式有以下几种情形:应用指令中的操作数的形式有以下几种情形:K(十进制常数十进制常数),H(十六进制常数十六进制常数),KnX、KnY、KnM、KnS
8、、T、C、D、V和和Z。6.1.3 数据格式数据格式2 字元件字元件一个字由一个字由16个二进制位组成,字元件用来处理数据,例如定个二进制位组成,字元件用来处理数据,例如定时器和计数器的设定值寄存器、当前值寄存器和数据寄存器时器和计数器的设定值寄存器、当前值寄存器和数据寄存器D都是字元件,位元件都是字元件,位元件X、Y、M、S等也可以组成字元件来进等也可以组成字元件来进行数据处理。行数据处理。 (1)二进制补码二进制补码FX系列系列PLC内部,数据以二进制内部,数据以二进制(BIN)补码的形式存储,四则补码的形式存储,四则运算和加运算和加1、减、减1运算都使用二进制数。二进制补码的最高位运算都
9、使用二进制数。二进制补码的最高位(第第15位位)为符号位,正数的符号位为为符号位,正数的符号位为0,负数的符号位为,负数的符号位为1,最低位为第最低位为第0位。第位。第n位二进制数为位二进制数为1时,对应的十进制数为时,对应的十进制数为2n。最大的最大的16位正数为位正数为0111 1111 1111 1111,对应的十进制数为,对应的十进制数为32 767。以。以16位二进制数位二进制数0000 0100 1000 0110为例,对应的十进为例,对应的十进制数为:制数为:6.1.3 数据格式数据格式2 字元件字元件更精确运算采用浮点数运算。更精确运算采用浮点数运算。FX系列系列PLC提供了二
10、进制提供了二进制浮点运算和十进制浮点运算浮点运算和十进制浮点运算 。将负数的各位逐位求反后加将负数的各位逐位求反后加1,得到其绝对值。以,得到其绝对值。以1111 1011 011l 1010为例,将它逐位取反后得为例,将它逐位取反后得0000 0100 1000 0101,加,加1后得后得0000 0100 1000 0110,对应的十进制数为,对应的十进制数为1 158,所以,所以1111 1011 0111 1010对应的十进制数为对应的十进制数为-1158。(2)十六进制数十六进制数十六进制数使用十六进制数使用16个数字符号:个数字符号:09和和AF,采用逢,采用逢16进进1的运算规则
11、。的运算规则。4位二进制数可以转换为位二进制数可以转换为1位十六进制数,例如二进制数位十六进制数,例如二进制数1010 1110 011l 0101可以转换为十六进制数可以转换为十六进制数AE75。6.1.3 数据格式数据格式(3)BCD码码 BCD(Binary Coded Decimal)码是按二进制编码的码是按二进制编码的十进制数。每位十进制数用十进制数。每位十进制数用4位二进制数来表示,位二进制数来表示,09对应的二进制数为对应的二进制数为00001001,各位十进制数,各位十进制数之间采用逢十进之间采用逢十进1的运算规则。以的运算规则。以BCD码码1001 0110 01ll 010
12、1为例,对应的十进制数为为例,对应的十进制数为9 675,最高的,最高的4位二进制数位二进制数1001实际上表示实际上表示9 000。16位位BCD码对码对应应4位十进制数,允许的最大数字为位十进制数,允许的最大数字为9 999,最小的,最小的数字为数字为0000。从。从PLC外部的数字拨码开关输入的数外部的数字拨码开关输入的数据是据是BCD码,码,PLC送给外部的送给外部的7段显示器的数据一段显示器的数据一般也是般也是BCD码。码。6.1.3 数据格式数据格式3 科学计数法与浮点数科学计数法与浮点数 科学计数法和浮点数可以用来表示整数或小数,包括很大的数科学计数法和浮点数可以用来表示整数或小
13、数,包括很大的数和很小的数。和很小的数。(1)科学记数法科学记数法数字占用相邻的两个数据寄存器字数字占用相邻的两个数据寄存器字(例如例如D0和和D1),D0中是尾中是尾数,数,D1中是指数,数据格式为尾数中是指数,数据格式为尾数10指数,其尾数是指数,其尾数是4位位BCD整数,范围为整数,范围为0、10009999和和-9999-1000,指数的范,指数的范围为围为-4l+35。小数。小数24.567用科学计数法表示为用科学计数法表示为2 45610-2。科学计数法格式不能直接用于运算,可以用于监视接口中数据科学计数法格式不能直接用于运算,可以用于监视接口中数据的显示。在的显示。在PLC内部,
14、尾数和指数都按内部,尾数和指数都按2的补码处理,它们的的补码处理,它们的最高位为符号位。最高位为符号位。使用应用指令使用应用指令EBCD和和EBIN可以实现科学计数法格式与浮点可以实现科学计数法格式与浮点数格式之间的相互转换。数格式之间的相互转换。6.1.3 数据格式数据格式(2)浮点数格式浮点数格式浮点数由相邻的两个数据寄存器字浮点数由相邻的两个数据寄存器字(例如例如D11和和D10)组成,组成,D10中的数是低中的数是低16位。在位。在32位中,尾数占低位中,尾数占低23位位(b0b22位,最低位为位,最低位为b0位位),指数占,指数占8位位(b23b30位位),最高位,最高位(b31位位
15、)为符号位。为符号位。因为尾数为因为尾数为23位,与科学计数法相比,浮点数的精度位,与科学计数法相比,浮点数的精度有很大的提高,其尾数相当于有很大的提高,其尾数相当于6位十进制数。浮点数位十进制数。浮点数的表示范围为的表示范围为1.17510-383.4031038。使用应用指令使用应用指令FLT和和INI、可以实现整数与浮点数之、可以实现整数与浮点数之间的相互转换。间的相互转换。 4 变址寄存器变址寄存器 FX1S和和FX1N有两个变址寄存器有两个变址寄存器V和和Z,FX2N和和FX2NC有有16个变个变址寄存器址寄存器V0V7和和Z0Z7。在传送、比较指令中,变址寄存。在传送、比较指令中,
16、变址寄存器器V、Z用来修改操作对象的元件号,在循环程序中常使用变用来修改操作对象的元件号,在循环程序中常使用变址寄存器。址寄存器。对于对于32位指令,位指令,V为高为高16位,位,Z为低为低16位。位。32位指令中位指令中V、Z自自动组对使用。这时变址指令只需指定动组对使用。这时变址指令只需指定Z,Z就能代表就能代表V和和Z的组的组合。合。图图6-2中的各触点接通时,常数中的各触点接通时,常数10送到送到V0,常数,常数20送到送到Z1,ADD(加法加法)指令完成运算指令完成运算(D5V0)+ (D15Z1)(D40Z1),即,即(D15)+(D35)(D60)。6.1.3 数据格式数据格式6
17、-2 程序流控制指令程序流控制指令程序流向控制类指令(程序流向控制类指令(程序流向控制类指令(程序流向控制类指令(FNC00FNC00FNC09FNC09)6-2 程序流控制指令程序流控制指令 1 条件跳转指令条件跳转指令指针指针P(Point)用于分支和跳步程序。在梯形图中,指针放在左侧母用于分支和跳步程序。在梯形图中,指针放在左侧母线的左边。线的左边。FX1S有有64点指针点指针(P0P63),FX1N、FX2N和和FX2NC有有128点指针点指针(P0P127)。条件跳转指令条件跳转指令CJ(Conditional Jump,FNC 00)用于跳过顺序程序中的某一部分,用于跳过顺序程序中
18、的某一部分,以控制程序的流程。当图以控制程序的流程。当图6-3中的中的X0为为ON时,时,程序跳到指针程序跳到指针P8处,如果处,如果X0为为OFF,不执行,不执行跳转,程序按原顺序执行。跳转时,不执行跳转,程序按原顺序执行。跳转时,不执行被跳过的那部分指令。用编程器输入程序时,被跳过的那部分指令。用编程器输入程序时,图图6-3中的指针中的指针P8应放在指令应放在指令“LD X14”之前。之前。多条跳转指令可以使用相同的指针,使用跳转多条跳转指令可以使用相同的指针,使用跳转指令可以缩短扫描周期。指令可以缩短扫描周期。指针可以出现在相应跳转指令之前,但是指针可以出现在相应跳转指令之前,但是如果反
19、复跳转的时间超过监控定时器的设如果反复跳转的时间超过监控定时器的设定时间,会引起监控定时器出错。定时间,会引起监控定时器出错。1 条件跳转指令条件跳转指令条件跳转指令条件跳转指令CJ(P),编号,编号FNC00;操作数为指针标号操作数为指针标号P0P127;其中其中P63为为 END所在步序,不需标记;所在步序,不需标记;指针标号允许用变址寄存器修改;指针标号允许用变址寄存器修改;CJ和和CJP都占都占3个程序步,指针标号占个程序步,指针标号占1步步 ;CJP指令表示为脉冲执行方式;指令表示为脉冲执行方式;在一个程序中一个标号只能出现一次,否则将出错;在一个程序中一个标号只能出现一次,否则将出
20、错;即使被跳过程序的驱动条件改变,但其线圈(或结果)仍保即使被跳过程序的驱动条件改变,但其线圈(或结果)仍保持跳转前的状态。持跳转前的状态。在跳转执行期间定时器和计数器将停止工作,到跳转条件不在跳转执行期间定时器和计数器将停止工作,到跳转条件不满足后又继续工作。但对于正在工作的定时器满足后又继续工作。但对于正在工作的定时器T192T199和高和高速计数器速计数器C235C255不管有无跳转仍连续工作。不管有无跳转仍连续工作。若积算定时器和计数器的复位(若积算定时器和计数器的复位(RST)指令在跳转区外,即)指令在跳转区外,即使它们的线圈被跳转,但对它们的复位仍然有效。使它们的线圈被跳转,但对它
21、们的复位仍然有效。例例6-1D11D19中的数中的数V1V2V3V9,它们将数据区划分,它们将数据区划分为为10个区间,个区间,D0中的变量中的变量VV9时的区间号为时的区间号为10,V8VV9时的区问号为时的区问号为9,VV1时的区间号为时的区间号为1,试求,试求V所在的所在的区间的区间号。区间的区间号。满足要求的指令表程序:满足要求的指令表程序:0LDM80001MOVK10Z/常数10送Z6P17LD D0D9Z /如果D0D9Z,比较触点接通,否则触点断开12 DECZ/Z1Z15 CJP1/返回标号P1处继续比较18 END程序中的程序中的“LDD0 D9Z”是比较触点指令,第一次比
22、较时是比较触点指令,第一次比较时Z=10,D9Z相当于相当于D19,如果,如果D0中的变量中的变量V小于小于D19中的中的V9,比较触点接通,比较触点接通,Z减减1后返回指针后返回指针P1处,第二次比较处,第二次比较时时Z=9,D9Z相当于相当于D18,如果,如果D0中的变量中的变量V大于大于D18中的中的V8,比较触点断开,不执行下面的两条指令,不返回,比较触点断开,不执行下面的两条指令,不返回P1处,将会执行处,将会执行CJ指令下面的一条指令。此时指令下面的一条指令。此时Z=9,表示,表示V在第在第9区。区。例例6-1的梯形图的梯形图6.2.2 子程序调用与子程序返回指令子程序调用与子程序
23、返回指令子程序调用指令子程序调用指令CALL,编号,编号FNC01,操作数为,操作数为P0P127,占占3个程序步;子程序返回指令个程序步;子程序返回指令SRET,编号,编号FNC02,无操作,无操作数,占数,占1个程序步个程序步 。注意:注意:1)转移标号不能重复,也不可转移标号不能重复,也不可 与跳转指令的标号重复;与跳转指令的标号重复;2)子程序可以嵌套调用,最多可子程序可以嵌套调用,最多可5级嵌套。级嵌套。6.2.3与中断有关的指令与中断有关的指令 FX系列系列PLC的中断事件包括的中断事件包括输入中断输入中断、定时中断定时中断和和高速计数高速计数器中断器中断,发生中断事件时,发生中断
24、事件时,CPU停止执行当前的工作,立即停止执行当前的工作,立即执行预先写好的相应的中断程序,执行完后返回被中断的地执行预先写好的相应的中断程序,执行完后返回被中断的地方,继续执行正常的任务。这一过程不受方,继续执行正常的任务。这一过程不受PLC扫描工作方式扫描工作方式的影响,因此使的影响,因此使PLC能迅速响应中断事件。能迅速响应中断事件。 1 用于中断的指针用于中断的指针用于中断的指针用来指明某一中断源的中断程序的入口,执用于中断的指针用来指明某一中断源的中断程序的入口,执行到行到IRET(中断返回中断返回)指令时返回中断事件出现时正在执行的指令时返回中断事件出现时正在执行的程序。中断指针应
25、在程序。中断指针应在FEND指令之后使用。指令之后使用。输入中断用来接收特定的输入地址号的输入信号,图输入中断用来接收特定的输入地址号的输入信号,图6-5中的中的输人中断指针为输人中断指针为I0,最高位与,最高位与X0X5的元件号相对应。的元件号相对应。FX1S的输入号为的输入号为03(从从X0x3输入输入),其余单元的输入号为,其余单元的输入号为05(从从X0X5输入输入)。最低位为。最低位为0时表示下降沿中断,反之为时表示下降沿中断,反之为上升沿中断。例如中断指针上升沿中断。例如中断指针I001之后的中断程序在输入信号之后的中断程序在输入信号X0的上升沿时执行。的上升沿时执行。同一个输入中
26、断源只能使用上升沿中断或下降沿中断,例如同一个输入中断源只能使用上升沿中断或下降沿中断,例如不能同时使用中断指针不能同时使用中断指针I000和和I001。用于中断的输入点不能与。用于中断的输入点不能与已经用于高速计数器的输入点相冲突。已经用于高速计数器的输入点相冲突。FX2N和和FX2NC系列有系列有3点定时器中断,中断指针为点定时器中断,中断指针为I6I8,低两位是以,低两位是以ms为单位的定时时间为单位的定时时间(199ms)。定时器中断使。定时器中断使PLC以指定的周期定时执行中断子程序,循环处理某些任务,以指定的周期定时执行中断子程序,循环处理某些任务,处理时间不受处理时间不受PLC扫
27、描周期的影响。扫描周期的影响。M8056M5058为为ON时,时,将分别禁止定时中断将分别禁止定时中断02。FX2N和和FX2NC系列有系列有6点计数器中断,中断指针为点计数器中断,中断指针为I00(=16)。计数器中断与。计数器中断与HSCS(高速计数器比较置位高速计数器比较置位)指令配合使用,指令配合使用,根据高速计数器的计数当前值与计数设定值的关系来确定是根据高速计数器的计数当前值与计数设定值的关系来确定是否执行相应的中断服务程序。否执行相应的中断服务程序。6.2.3与中断有关的指令与中断有关的指令中断返回指令中断返回指令IRET ,编号,编号FNCO3,中断允许指令,中断允许指令EI,
28、编号,编号FNCO4,中断禁止,中断禁止DI ,编号,编号FNC05,它们均无操作数,各占,它们均无操作数,各占1个程序步个程序步 ;注意:注意:如果多个中断依次发生,则以发生先后为序,如果多个中断依次发生,则以发生先后为序,如果多个中断源同时发出信号,则中断指针如果多个中断源同时发出信号,则中断指针号越小优先级越高;号越小优先级越高;当当M8050M8058为为ON时,禁止执行相应时,禁止执行相应I0I8的中断,的中断,M8059为为ON时则时则禁止所有计数器中断;禁止所有计数器中断;无需中断禁止时,可只用无需中断禁止时,可只用EI指令,不必用指令,不必用DI指令指令 ;执行一个中断服务程序
29、时,若在中断服务程执行一个中断服务程序时,若在中断服务程序中有序中有EI和和DI,可实现二级中断嵌套,否则,可实现二级中断嵌套,否则禁止其它中断。禁止其它中断。例例6-2在在X0的上升沿通过中断使的上升沿通过中断使Y0立即变为立即变为ON,在,在X1的下降沿通的下降沿通过中断使过中断使Y0立即变为立即变为OFF。试设计满足此要求的程序。试设计满足此要求的程序。0EI/允许中断1LDX0主程序2OUTY13FEND/主程序结束 4I001/在X0上升沿执行一次下面的中断子程序5LDM8000X0上升沿中断子程序6SETY07REFY0K8/Y0Y7被立即刷新12IRET/中断程序结束13I100
30、/X1下降沿执行一次下面的中断子程序14LDM8000X1下降沿中断子程序15RSTY016REFY0K8/Y0Y7被立即刷新21IRET/中断程序结束22END例例6-2 的梯形图的梯形图 例例6-3从从X0的上升沿开始,用定时器中断使的上升沿开始,用定时器中断使D0的值每隔的值每隔10 ms加加1,在,在100s内由内由0线性地增大到线性地增大到10000,大于,大于100s时时D0的值保持不变。在主程序中,用的值保持不变。在主程序中,用X0的的上升沿将禁止定时器中断上升沿将禁止定时器中断0工作的工作的M8056复位,开始执行定时器中断复位,开始执行定时器中断0的中的中断程序。因为中断标号
31、断程序。因为中断标号I610的低两位为的低两位为10,它每隔,它每隔10ms产生一次中断,在产生一次中断,在中断程序中将中断程序中将D0加加1,D0的当前值等于的当前值等于10000时,将时,将M8056置位,定时器中置位,定时器中断断0的中断被禁止。试设计满足此要求的程序。的中断被禁止。试设计满足此要求的程序。0EI/允许中断1LDPX0/在X0的上升沿3ANIM8002/禁止X0在第一个扫描周期自动出现的上升沿起作用4RSTM8056/允许定时器中断0工作6FEND/主程序结束7I610/对下面定时器中断0的子程序每隔10ms执行一次8LDM8000/在PLC运行期间,每隔10ms定时器中
32、断0的子程序9INCD0/D0加112LD=K10000D0/当100s时17SETM8056/禁止定时器中断0工作19SETY0/置位100s延时标志20IRET/中断程序结束21END0EI/允许中断1LDPX0/在X0的上升沿3ANIM8002/禁止X0在第一个扫描周期自动出现的上升沿起作用4RSTM8056/允许定时器中断0工作6FEND/主程序结束7I610/对下面定时器中断0的子程序每隔10ms执行一次8LDM8000/在PLC运行期间,每隔10ms定时器中断0的子程序9INCD0/D0加112LD=K10000D0/当100s时17SETM8056/禁止定时器中断0工作19SET
33、Y0/置位100s延时标志20IRET/中断程序结束21END例例6-4 定时器中断的定时时间最长为定时器中断的定时时间最长为99 ms,为了用定时中断,为了用定时中断1实现周期为实现周期为10s的高的高精度周期性操作的定时,可以将定时器中断的定时时间间隔设为精度周期性操作的定时,可以将定时器中断的定时时间间隔设为50ms,在,在定时器中断定时器中断1的中断程序中,将的中断程序中,将D0加加1,然后用比较触点指令,然后用比较触点指令“LD=”判断判断D0是否等于是否等于200。若相等。若相等(中断了中断了200次,对应的时间间隔为次,对应的时间间隔为10s),在中断程,在中断程序中执行每序中执
34、行每10s一次的操作一次的操作(改变改变Y0的的ON/OFF状态状态)。 0EI/允许中断1LDM8002/PLC上电首次扫描时主程序2RSTD0/将中断次数计数器清05LDX06OUTY17FEND/主程序结束8I750/对下面定时中断1的子程序每隔50ms执行一次9LDM8000/在PLC运行期间定时中断1的子程序10INCD0/中断次数计数器加113LD=K200D0/当中断子程序执行了20次(10s)时18RSTD0/复位中断次数计数器21ALTY0/每10s改变一次Y0的状态24IRET/返回主程序25END0EI/允许中断1LDM8002/PLC上电首次扫描时主程序2RSTD0/将
35、中断次数计数器清05LDX06OUTY17FEND/主程序结束8I750/对下面定时中断1的子程序每隔50ms执行一次9LDM8000/在PLC运行期间定时中断1的子程序10INCD0/中断次数计数器加113LD=K200D0/当中断子程序执行了20次(10s)时18RSTD0/复位中断次数计数器21ALTY0/每10s改变一次Y0的状态24IRET/返回主程序25END例例6-5用输入中断和分辨率为用输入中断和分辨率为1ms的定时器的定时器T246测量测量X0的上升沿和的上升沿和X2的上升沿之的上升沿之间的时间。使用间的时间。使用FX1S时,可以用时,可以用T63进行测量。进行测量。在在X0
36、的上升沿执行从指针的上升沿执行从指针1001开始的中断程序,在开始的中断程序,在X2的上升沿执行从指针的上升沿执行从指针I201开始的中断程序。在开始的中断程序。在X0的中断程序中起动的中断程序中起动T246开始定时。退出开始定时。退出X0的中的中断程序后,断程序后,T246继续定时。为了使继续定时。为了使T246停止定时,需要在停止定时,需要在X2的中断程序的中断程序中断开中断开T2A6的线圈。同样地,离开的线圈。同样地,离开X2的中断程序后,在该程序中用的中断程序后,在该程序中用RST指令对指令对T246的复位也有保持功能,需要在的复位也有保持功能,需要在X0的中断程序中用的中断程序中用M
37、8000的常闭的常闭触点触点(一直断开一直断开)来解除对。来解除对。T246的复位作用。的复位作用。因为机械触点的抖动,在触点闭合时可能出现多个上升沿和下降沿,在输因为机械触点的抖动,在触点闭合时可能出现多个上升沿和下降沿,在输入中断程序中增加一条对数据寄存器入中断程序中增加一条对数据寄存器D的加的加1指令指令(例如例如“INC D10”)就可以就可以看到外接触点闭合一次,看到外接触点闭合一次,D10不止加一次不止加一次1。在。在X2闭合时的第一个上升沿读闭合时的第一个上升沿读出出T246的当前值的当前值(以以ms为单位的时间为单位的时间),然后将,然后将T246复位,其当前值变为复位,其当前
38、值变为0。如果因触点的抖动出现了第二个上升沿,因为此时如果因触点的抖动出现了第二个上升沿,因为此时T246的当前值为的当前值为0,比,比较触点较触点(LD)断开,不会执行断开,不会执行MOV指令。如果将比较触点改为指令。如果将比较触点改为M8000的常的常开触点,在第二个上升沿执行中断程序后开触点,在第二个上升沿执行中断程序后D0中的测量值将变为中的测量值将变为0。X0和和X2产生的中断的时间间隔应小于产生的中断的时间间隔应小于32 767l ms=32.767s,T246的设定值取最大的设定值取最大值,以保证在测量过程中它的定时时间大于被测的时间间隔。值,以保证在测量过程中它的定时时间大于被
39、测的时间间隔。 0EI1LDX1主程序主程序2OUTY13FEND4I001/在在X0上升沿上升沿执行一次下述中断子程序行一次下述中断子程序5LDIM8000解除解除对T246的复位的复位X0的中断子程序的中断子程序6RSTT2468LD M80009RSTY0/复位复位测量量结束束标志志10RSTD0/清除清除测量量结束束标志志13OUTT246K32767/启启动1ms定定时器器T24616INCD1019IRET20I201/在在X2上升沿上升沿执行一次下述中断子程序行一次下述中断子程序21LDK0T246/如果如果T246的当前的当前值不不为0X2的中断子程序的中断子程序26MOVT2
40、46D0/将将T246的当前的当前值送入送入D031SETY0/将将测量量结束束标志志Y0置位置位32LDIY0使使T246停止定停止定时33OUTT246K136LDM8000使使T246复位复位37RSTT24639IRET40END 例例6-5 的梯形图的梯形图 例例6-6用输入中断程序和用输入中断程序和0.1ms环形高速计数器环形高速计数器M8099测量接在测量接在X0和和X2端子上的同一输入信号的脉冲宽度。端子上的同一输入信号的脉冲宽度。从同一输入端子输入的外部信号只能使用上升沿中断或下降从同一输入端子输入的外部信号只能使用上升沿中断或下降沿中断,因此需要将被测信号同时接入沿中断,因
41、此需要将被测信号同时接入X0和和X2,分别使用它,分别使用它们的上升沿中断和下降沿中断。们的上升沿中断和下降沿中断。D8099是一个环形计数器,内部计数脉冲的频率为是一个环形计数器,内部计数脉冲的频率为10 kHZ。它的计数当前值从它的计数当前值从0增大到最大值增大到最大值32 767后再计一个脉冲,当后再计一个脉冲,当前值变为前值变为0,又开始下一轮计数。,又开始下一轮计数。M8099为为ON时允许时允许D8099计计数,数,M8099为为OFF禁止禁止D8099计数。在输入信号上升沿中断程计数。在输入信号上升沿中断程序中起动序中起动D8099开始计数,在输入信号的下降沿的中断程序读开始计数
42、,在输入信号的下降沿的中断程序读出以出以0.1ms为单位的为单位的D8099的计数值。输入脉冲的宽度应小于的计数值。输入脉冲的宽度应小于32 7670.1ms=3.2 767s,脉冲的边沿不能有抖动。,脉冲的边沿不能有抖动。 0EI1LDX1主程序主程序2OUTY13LDM80004RSTD8099/对D8099清清07FEND8I001/在在X0的上升沿的上升沿执行下面的中断子程序行下面的中断子程序9LDM8000X0的中断的中断子程序子程序10OUTM8099/允允许10kHZ计数器数器D8099计数数12RSTY0/复位复位测量量结束束标志志13IRET14I200/在在X2的下降沿的下
43、降沿执行下面的中断子程序行下面的中断子程序15LDM8000X2的中断的中断子程序子程序16MOVD8099D0/将将测量量值存入存入D021SETY0/置位置位测量量结束束标志志22IRET23END例例6-6 的指令表程序的指令表程序 例例6-6 的梯形图的梯形图6.2.4 主程序结束指令主程序结束指令主程序结束指令主程序结束指令主程序结束指令主程序结束指令FENDFEND 编号为编号为FNC06;无操作数,占用无操作数,占用1个程序步;个程序步;FEND表示主程序结束,当执行到表示主程序结束,当执行到FEND时,时,PLC进进行输入行输入/输出处理,监视定时器刷新,完成后返回输出处理,监
44、视定时器刷新,完成后返回启始步。启始步。注意:注意:子程序和中断服务程序应放在子程序和中断服务程序应放在FEND之后;之后;子程序和中断服务程序必须写在子程序和中断服务程序必须写在FEND和和END之间,之间,否则出错。否则出错。6.2.5 监控定时器指令监控定时器指令监监视视定定时时器器指指令令 WDT(P),编编号号为为FNC07,没没有有操操作作数数,占占1个程序步。个程序步。WDT指指令令是是对对PLC的的监监视视定定时时器器进进行行刷刷新新,FX系系列列PLC的的监监视定时器缺省值为视定时器缺省值为200ms(可用(可用D8000来设定)来设定)1)如如果果在在后后续续的的FOR-N
45、EXT循循环环中中,执执行行时时间间可可能能超超过过监监控控定时器的定时时间,可将定时器的定时时间,可将WDT插入循环程序中。插入循环程序中。当当与与条条件件跳跳转转指指令令CJ对对应应的的指指针针标标号号在在CJ指指令令之之前前时时(即即程程序序往往回回跳跳)就就有有可可能能连连续续反反复复跳跳步步使使它它们们之之间间的的程程序序反反复复执执行行,使使执执行行时时间间超超过过监监控控时时间间,可可在在CJ指指令令与与对对应应标标号号之之间间插入插入WDT指令。指令。6.2.6 循环指令循环指令循环区起点指令循环区起点指令FOR,编号,编号FNC08,占,占3个程序步,无操作数,个程序步,无操
46、作数,循环结束指令循环结束指令NEXT,编号,编号FNC09,占,占1个程序步,无操作数;个程序步,无操作数;运行时,位于运行时,位于FORNEXT间的程序,反复执行间的程序,反复执行n次后再继续执次后再继续执行后续程序。循环的次数行后续程序。循环的次数n=132767,如果,如果N=-327670之间,之间,则当作则当作n=1处理。处理。注意:注意:FOR放在放在NEXT之前,之前,NEXT在在FEND和和END之前,否则出错;之前,否则出错;在循环中可利用在循环中可利用CJ指令在循环没结束时跳出循环体;指令在循环没结束时跳出循环体;FX2N系列系列PLC可循环嵌套可循环嵌套5层;层;FOR
47、和和NEXT必须成对使用。必须成对使用。例例6-7在在X1的上升沿,将的上升沿,将50、55、60、90分别送分别送D10D18。0LD X1/在在X1的上升沿的上升沿2RSTZ/对变址寄存器址寄存器Z清清05MOVK50D10/将常数将常数50送入送入D1010FORK8/对下面的程序循下面的程序循环执行行8次次13LDX0/当当X01时14ADDD10ZK5D11Z/ D10Z+ K5D11Z21INCZ/地址指地址指针Z+124NEXT/循循环区区终点点25END6-3 比较传送与数据变换指令比较传送与数据变换指令 传送与比较类指令(传送与比较类指令(FNC10FNC19)6.3.1 比
48、较指令比较指令 比较指令包括比较指令包括CMF(比较比较)和和ZCP(区间比较区间比较),比较结果用目,比较结果用目标元件的状态来表示。待比较的源操作数标元件的状态来表示。待比较的源操作数S1、S2和和S3(CMP只有两个源操作数只有两个源操作数)可以取任意的数据格式,目标操可以取任意的数据格式,目标操作数作数D可以取可以取Y、M和和S,占用连续的,占用连续的3个元件。个元件。比较指令比较指令CMP、(D)CMP(P),指令编号为,指令编号为FNC10,将源操作数,将源操作数S1.和源操作数和源操作数S2.的数据进行比较,比较结果用目标元件的数据进行比较,比较结果用目标元件D.的状态来表示。的
49、状态来表示。6.3.1 比较指令比较指令2 区间比较区间比较(FNC 11) 区间比较指令区间比较指令区间比较指令区间比较指令ZCP (D)ZCP(P)ZCP (D)ZCP(P),编号编号FNC11。指令执行时源。指令执行时源操作数操作数S.与与S1.和和S2.的内容进行比较,并比较结果送的内容进行比较,并比较结果送到目标操作数到目标操作数D.中。中。使用比较指令使用比较指令CMP/ZCP时应时应注意注意:S1.、S2.可取任意数据格式,目标操作数可取任意数据格式,目标操作数D.可取可取Y、M和和S。所有的源数据都被看成二进制值处理;。所有的源数据都被看成二进制值处理;使用使用ZCP时,时,S
50、2.的数值不能小于的数值不能小于S1.6.3.1 比较指令比较指令3 触点型比较指令触点型比较指令(FUN 224246):相当于一个触点:相当于一个触点执行时比较源操作数执行时比较源操作数S1和和S2,满足比较条件则触点闭合,满足比较条件则触点闭合,源操作数可以取所有的数据类型。源操作数可以取所有的数据类型。以以LD开始的触点型比较指令接在左侧母线上,以开始的触点型比较指令接在左侧母线上,以AND开始的开始的触点型比较指令相当于串联触点,以触点型比较指令相当于串联触点,以OR开始的触点型比较指开始的触点型比较指令相当于并联触点。令相当于并联触点。触点型比较指令触点型比较指令触点型比较指令的助
51、记符是由文字符触点型比较指令的助记符是由文字符(如如LD、AND、OR)和数和数学关系符学关系符(如、如、)两部分组成的,但在梯形图中,触点两部分组成的,但在梯形图中,触点型比较指令助记符的文字符部分并不会出现,而只会出现数学型比较指令助记符的文字符部分并不会出现,而只会出现数学关系符,因此,图关系符,因此,图6-11和图和图6-12所示梯形图中的触点型比较指所示梯形图中的触点型比较指令的助记符令的助记符(如如“LD=、AND、OR”等等),实际上是不会,实际上是不会完整地出现的,用完整地出现的,用PLC编程软件编制出来的这两个梯形图的真编程软件编制出来的这两个梯形图的真实的情形如下图所示。实
52、的情形如下图所示。触点型比较指令触点型比较指令 功能号功能号助助记符符命令名称命令名称功能号功能号助助记符符命令名称命令名称224LD=(S1)=(S2)时运算开始的触点接通运算开始的触点接通236AND(S1)(S2)时串串联触点接触点接通通225LD(S1)(S2)时运算开始的触点接通运算开始的触点接通237AND(S1)(S2)时串串联触点接触点接通通226LD(S1)(S2)时运算开始的触点接通运算开始的触点接通238AND(S1)(S2)时串串联触点接触点接通通228LD(S1)(S2)时运算开始的触点接通运算开始的触点接通240OR(S1)(S2)时并并联触点触点接通接通229LD
53、(S1)(S2)时运算开始的触点接通运算开始的触点接通241OR(S1)(S2)时并并联触点触点接通接通230LD(S1)(S2)时运算开始的触点接通运算开始的触点接通242OR(S1)(S2)时并并联触点触点接通接通232AND(S1)(S2)时串串联触点接通触点接通244OR(S1)(S2)时并并联触点接触点接通通233AND(S1)(S2)时串串联触点接通触点接通245OR(S1)(S2)时并并联触点接触点接通通234AND(S1)(S2)时串串联触点接通触点接通246OR(S1)(S2)时并并联触点接触点接通通6.3.2 传送指令传送指令传送指令包括传送指令包括MOV(传送传送)、SM
54、OV(BCD码移位传送码移位传送)、CML(取反传送取反传送)、BMOV(数据块传送数据块传送)和和FMOV(多点传送多点传送)以及以及XCH(数据交换数据交换)指令。指令。MOV和和CML指令的源操作数可以取所有的数据类型,指令的源操作数可以取所有的数据类型,SMOV指令可以取除指令可以取除K、H以外的其他类型的操作数。它们的目标操以外的其他类型的操作数。它们的目标操作数可以取作数可以取KnY、KnM、KnS、T、C、D、V和和Z。1 传送指令传送指令(FNC 12):MOV(Move)将源数据传送到指定目标。将源数据传送到指定目标。 例例6-8 传送指令应用举例传送指令应用举例 0LDPX
55、1/在在X1的上升沿的上升沿2MOVT0D0/将将T0的当前的当前值存入存入D07MOVK100D1/将常数将常数100存入存入D112LDX3/当当X31时13OUTT0D1/T0开始定开始定时(T0的的设定定值存放在存放在D1中)中)16LDX4/当当X41时17MOVK1X10K1Y0/ 用用X10X13依次控制依次控制Y0Y322LDX5/当当X51时23DMOVC235D10/将将32位位计数器的当前数器的当前值存入存入D10和和D11中中32END6.3.2 传送指令传送指令2 移位传送移位传送(FNC 13) 移位传送指令移位传送指令SMOV(Shift Move)将将4位十进制
56、位十进制(Decimal)源数据源数据(S)中指定位数的数据传送到中指定位数的数据传送到4位十进制目标操作数位十进制目标操作数(D)中指定的中指定的位置。指令中的常数位置。指令中的常数m1、m2和和n的取值范围为的取值范围为14,分别对应,分别对应个位千位。个位千位。十进制数在存储器中以二进制数的形式存放,原数据和目标数十进制数在存储器中以二进制数的形式存放,原数据和目标数据的范围均为据的范围均为09 999。特殊辅助继电器特殊辅助继电器M8168为为ON时,时,SMOV指令运行在指令运行在BCD方式,方式,源数据和目标数据均为源数据和目标数据均为BCD码。码。 例例6-9接在接在X0X3的拨
57、码开关输入的的拨码开关输入的BCD码为个位,接在码为个位,接在X10X17的两个拨码开关输入的的两个拨码开关输入的BCD码为十位和百位,将它们结合为码为十位和百位,将它们结合为3位位BCD码,结果放在码,结果放在D1中。中。 下面的程序用下面的程序用SMOV指令将指令将D2中的十位、百位中的十位、百位BCD码放在码放在D1中中BCD码的第码的第2位和第位和第3位,或二进制数的第位,或二进制数的第411位。假设位。假设D2读入的为读入的为17H,D1读入的为读入的为3H,组合以后的,组合以后的3位位BCD码为码为173H。0LDM80001OUTM8168/BCD方式方式3MOVK2X010D2
58、/读十位和百位上的十位和百位上的BCD码8MOVK1X000D1/读各位上的各位上的BCD码13SMOVD2K2K2D1K3/生成生成3个个BCD码24END6.3.2 传送指令传送指令3 取反传送指令取反传送指令(FNC 14) :CML(Complement)将将源源元元件件中中的的数数据据逐逐位位取取反反(10,01),并并传传送送到到指指定定目目标标。若若源源数数据据为为常常数数K,该该数数据据会会自自动动转转换换为为二二进进制制数数,CML用用于于反反逻逻辑辑输输出出时时非非常常方方便便。图图6-13所所示示的的CML指指令令将将D0的的低低4位位取反后传送到取反后传送到Y3Y0中。
59、中。6.3.2 传送指令传送指令4 块传送指令块传送指令(FNC 15): BMOV (Block Move)将将源源操操作作数数指指定定的的元元件件开开始始的的n个个数数据据组组成成的的数数据据块块传传送送到到指指定定的的目目标标,n可可以以取取K、H和和D。如如果果元元件件号号超超出出允允许许的的范范围围,数数据据仅仅传传送送到到允允许许的的范范围围。源源操操作作数数可可以以取取KnX、KnY、KnM、KnS、T、C、D、V、Z和和文文件件寄寄存存器器,目目标标操操作作数数可可以以取取KnY、KnM、KnS、T、C、D、V、Z和文件寄存器。和文件寄存器。传传送送顺顺序序是是自自动动决决定定
60、的的,以以防防止止源源数数据据块块与与目目标标数数据据块块重重叠叠时时源源数数据据在在传传送送过过程程中中被被改改写写。如如果果源源元元件件与与目目标标元元件件的的类类型型相相同同,传传送送顺顺序序如如图图6-14所所示示。如如果果M8024为为ON,传传送送的的方方向向相相反反(目标数据块中的数据传送到源数据块目标数据块中的数据传送到源数据块)。6.3.2 传送指令传送指令5 多点传送指令多点传送指令(FNC 16): FMOV(Fill Move)将将单单个个元元件件中中的的数数据据传传送送到到指指定定目目标标地地址址开开始始的的n个个元元件件中中,传传送送后后n个个元元件件中中的的数数据
61、据完完全全相相同同。如如果果元元件件号号超超出出允允许许的的范范围围,数数据据仅仅仅仅送送到到允允许许的的范范围围中中。多多点点传传送送指指令令的的源源操操作作数数可可以以取取所所有有的的数数据据类类型型,目目标标操操作作数数可可以以取取KnY、KnM、KnS、T、C、D、V和和Z,n为常数,为常数,n512。图图6-15中中的的X2为为ON时时将将常常数数0送送到到D5D14这这10个个(n=10)数数据据寄存器中。寄存器中。6.3.2 传送指令传送指令6 数据交换指令数据交换指令(FNC 17): XCH(Exchange)数据在指定的目标元件数据在指定的目标元件D1和和D2之间交换,交换
62、指令一般采之间交换,交换指令一般采用脉冲执行方式用脉冲执行方式(指令助记符后面加指令助记符后面加P),否则每一个扫描周期都,否则每一个扫描周期都要交换一次。要交换一次。M8160为为ON且且D1和和D2是同一元件时,将交换是同一元件时,将交换目标元件的高、低字节。两个目标操作数可以取目标元件的高、低字节。两个目标操作数可以取KnY、KnM、KnS、T、C、D、V和和Z。执行数据交换指令时。执行数据交换指令时。6.3.3 数据变换指令数据变换指令数数据据变变换换指指令令包包括括BCD(二二进进制制数数转转换换成成BCD码码并并传传送送)和和BIN(BCD码码转转换换为为二二进进制制数数并并传传送
63、送)指指令令。它它们们的的源源操操作作数数可可以以取取KnX、KnY、KnM、KnS、T、C、D、V和和Z,目目标标操操作作数可以取数可以取KnY、KnM、KnS、T、C、D、V和和Z。1 BCD变换指令变换指令(FNC 18) : (Binary Code to Decimal)将源元件中的二进制数转换为将源元件中的二进制数转换为BCD码并送到目标元件中。如果码并送到目标元件中。如果执行的结果超出执行的结果超出09 999的范围,或双字的执行结果超出的范围,或双字的执行结果超出099 999 999的范围,将会出错。的范围,将会出错。PLC内部的算术运算用二进制数进内部的算术运算用二进制数进
64、行,可以用行,可以用BCD指令将二进制数变换为指令将二进制数变换为BCD数后输出到数后输出到7段显段显示器。示器。M8032为为ON时,双字将被转换为科学计数法格式。时,双字将被转换为科学计数法格式。例例6-10用一组用一组7段显示器和段显示器和“翻页翻页”的方式显示计数器的方式显示计数器COC9的当的当前值。每按一次前值。每按一次X11外接的按钮,变址寄存器外接的按钮,变址寄存器Z的值被加的值被加1,显,显示下一个计数器的值。示下一个计数器的值。Z的值为的值为10时,用比较触点指令将时,用比较触点指令将Z复复位为位为0,重新显示,重新显示C0的值。的值。BCD指令将指令将Z指定的计数器的当前
65、指定的计数器的当前值转换为值转换为BCD码后,送给码后,送给Y0Y17控制的控制的4位位7段显示器。段显示器。0LDX10/当X10=11OR=K10Z/或Z10时6MOVPK0Z/对变址寄存器Z清011LDPX11/在X11的上升沿13BCDC0ZK4Y0/将Z指定的计数器的当前值转换为BCD码,并经K4Y0送显示器18INCZ/变址寄存器Z+1Z21END6.3.3 数据变换指令数据变换指令2 BIN变换指令变换指令(FNC 19)BIN变换指令变换指令(Binary)将源元件中的将源元件中的BCD码转换为二进制数后码转换为二进制数后送到目标元件中。送到目标元件中。BCD数字拨码开关的十个
66、位置对应于十进制数数字拨码开关的十个位置对应于十进制数09,通过内部,通过内部的编码,拨码开关的输出为当前位置对应的十进制数转换后的的编码,拨码开关的输出为当前位置对应的十进制数转换后的4位二进制数。可以用位二进制数。可以用BIN指令将拨码开关提供的指令将拨码开关提供的BCD设定值设定值转换为二进制数后输入到转换为二进制数后输入到PLC。如果源元件中的数据不是如果源元件中的数据不是BCD数,将会出错。数,将会出错。M8032为为ON时,时,将科学计数法格式的数转换为浮点数。将科学计数法格式的数转换为浮点数。6-4 算术运算与字逻辑运算指令算术运算与字逻辑运算指令 算术与逻辑运算类指令算术与逻辑
67、运算类指令算术与逻辑运算类指令算术与逻辑运算类指令(FNC20(FNC2029)29)6-4 算术运算与字逻辑运算指令算术运算与字逻辑运算指令算术运算包括算术运算包括ADD、SUB、MUL、DIV(二进制加、减、乘、除二进制加、减、乘、除)指令,指令,源操作数可以取所有的数据类型,目标操作数可以取源操作数可以取所有的数据类型,目标操作数可以取KnY、KnM、KnS、T、C、D、V和和Z,32位乘除指令中位乘除指令中V和和Z不能用作目标操作数。不能用作目标操作数。数据的最高位为符号位数据的最高位为符号位(0为正,为正,1为负为负),所有的运算均为代数运算。,所有的运算均为代数运算。32位运算中被
68、指定的字编程元件为低位字,下一个字编程元件为高位位运算中被指定的字编程元件为低位字,下一个字编程元件为高位字。为避免错误,建议指定操作元件时采用偶数元件号。如果目标元字。为避免错误,建议指定操作元件时采用偶数元件号。如果目标元件与源元件相同,为避免每个扫描周期都执行一次指令,采用脉冲执件与源元件相同,为避免每个扫描周期都执行一次指令,采用脉冲执行方式。行方式。如果运算结果为如果运算结果为0,零标志,零标志M8020置置1;16位运算结果超过位运算结果超过32 767或或32位运算结果超过位运算结果超过2 147 483 647,进位标志,进位标志M8022置置1;16位运算结果小位运算结果小于
69、于-32 768或或32位运算结果小于位运算结果小于-2147483 648,借位标志,借位标志M8021置置1。 如果目标操作数如果目标操作数(例如例如KnM)的位数小于运算结果,将只保存运算结的位数小于运算结果,将只保存运算结果的低位。例如运算结果为二进制数果的低位。例如运算结果为二进制数11001(十进制数十进制数25),指定的目标,指定的目标操作数为操作数为K1Y4(由由Y4Y7组成的组成的4位二进制数位二进制数),实际上只能保存低,实际上只能保存低位的二进制数位的二进制数1001(十进制数十进制数9)。令令M8023为为0N,可以用算术运算指令作,可以用算术运算指令作32位浮点数运算
70、。位浮点数运算。6.4.1 算术运算指令算术运算指令1 加法指令加法指令(FNC 20):ADD(Addition),将源元件中的二进制数相,将源元件中的二进制数相加,结果送到指定的目标元件。加,结果送到指定的目标元件。2 减法指令减法指令(FNC 21) :SUB(Subtraction),将,将S1指定的元件中的指定的元件中的数减去数减去S2指定的元件中的数,结果送到指定的元件中的数,结果送到D指定的目标元件。指定的目标元件。3 乘法指令乘法指令(FNC 22):16位乘法指令位乘法指令MUL(Multiplication)将源元件将源元件中的二进制数相乘,结果中的二进制数相乘,结果(32
71、位位)送到指定的目标元件。位乘法送到指定的目标元件。位乘法的结果为的结果为64位,只能用两个双字分别监视运算结果的高位,只能用两个双字分别监视运算结果的高32位和位和低低32位。目标位元件位。目标位元件(例如例如KnM)的位数如果小于运算结果的位的位数如果小于运算结果的位数,只能保存结果的低位。数,只能保存结果的低位。4 除法指令除法指令(FNC 23):DIV (Division),用,用S1除以除以S2,商送到,商送到D 的首元件,余数送到的首元件,余数送到D的下一个元件的下一个元件 。若除数只有一个。若除数只有一个字字(假设放在假设放在D8中中),32位除法运算之前应先将除数的高位字位除
72、法运算之前应先将除数的高位字D9清零。若除数为清零。若除数为0则出错,不执行该指令。若位元件被指定为则出错,不执行该指令。若位元件被指定为目标元件,不能获得余数,商和余数的最高位为符号位。目标元件,不能获得余数,商和余数的最高位为符号位。6.4.1 算术运算指令算术运算指令例例6-11输入变量输入变量x与输出变量与输出变量y之间的函数关系是非线性的。经实测之间的函数关系是非线性的。经实测得到得到x0、x1、x2、x9对应的对应的y0、y1、y2、y9的值。用的值。用折线近似曲线的方法求任意的折线近似曲线的方法求任意的x对应的,对应的,y的值的值(见图见图6-18)。用。用变址寄存器变址寄存器z
73、的值来表示的值来表示x所在的区段,在图所在的区段,在图6-18中,中,x0和和x1之之间的区段中,间的区段中,z=0;x1和和x2之间的区段中,之间的区段中,z=1;x对应的对应的y的的值用下式近似计算:值用下式近似计算:式中和是测量值所在区段的低端分界点的式中和是测量值所在区段的低端分界点的 值。输入值值。输入值x在在D0中,输出值中,输出值y在在D1中。中。 设设x0、x1、x2、x9在在D10D19中,中, y0、y1、y2、y9在在D20D29中。中。 下面是满足上述要求的指令表程序:下面是满足上述要求的指令表程序:0 LDM80001 SUBD0D10ZD2 /求求x-xi8 SUB
74、D21ZD20ZD3 /求求yi+1-yi15 SUBD11ZD10ZD4 /求求xi+1-xi22 MUL D2D3D6 /将将x-xi乘以乘以yi+1-yi,积送送D6、D729 MOVK0D5/对D4、D5组成的双字的高成的双字的高16位字清位字清034DDIVP D6D4D6 /(D7、D6)(D5、D4),商,商(D7、D6),余数,余数(D9、D8)47ADDD6D20ZD1 /D6+D20Z(即商即商+yi),和,和D1(本例中,商的本例中,商的高高16位位D7=0)54 END6.4.2 二进制数加二进制数加1减减l指令指令加加1指令指令INC(Increment,FNC 24
75、)和减和减1指令指令DEC(Decrement,FNC 25)的操作数均可以取的操作数均可以取KnY、KnM、KnS、T、C、D、V和和Z。它们不影响零标志、借位标志和进位标志。它们不影响零标志、借位标志和进位标志。图图6-19中的中的X4每次由每次由0FF变为变为0N时,由时,由D指定的元件中的数增指定的元件中的数增加加1。如果不用脉冲指令,每一个扫描周期都要加。如果不用脉冲指令,每一个扫描周期都要加1。在。在16位运位运算中,算中,32 767再加再加1就变成就变成-32 768。32位运算时,位运算时,+2 147 483 647再加再加1,就会变为,就会变为-2 147 483 648
76、。减。减l指令也采用类似的处理指令也采用类似的处理方法。方法。6.4.2 二进制数加二进制数加1减减l指令指令加加1指令指令INC(Increment,FNC 24)和减和减1指令指令DEC(Decrement,FNC 25)的操作数均可以取的操作数均可以取KnY、KnM、KnS、T、C、D、V和和Z。它们不影响零标志、借位标志和进位标志。它们不影响零标志、借位标志和进位标志。图图6-19中的中的X4每次由每次由0FF变为变为0N时,由时,由D指定的元件中的数增指定的元件中的数增加加1。如果不用脉冲指令,每一个扫描周期都要加。如果不用脉冲指令,每一个扫描周期都要加1。在。在16位运位运算中,算
77、中,32 767再加再加1就变成就变成-32 768。32位运算时,位运算时,+2 147 483 647再加再加1,就会变为,就会变为-2 147 483 648。减。减l指令也采用类似的处理指令也采用类似的处理方法。方法。6.4.3 字逻辑运算指令字逻辑运算指令字逻辑运算指令包括字逻辑运算指令包括WAND(字逻辑与,字逻辑与,FNC 26)、WOR(字逻字逻辑或,辑或,FNC 27)、WXOR(字逻辑异或,字逻辑异或,Exclusive Or,FNC 28)和和NEG(求补,求补,Negation,FNC 29)指令,它们的指令,它们的S1和和S2均均可以取所有的数据类型,目标操作数可以取
78、可以取所有的数据类型,目标操作数可以取KnY、KnM、KnS、T、C、D、V和和Z。这些指令以位这些指令以位(bit)为单位作相应的运算,为单位作相应的运算,XOR指令与求反指令指令与求反指令(CML)组合使用可以实现组合使用可以实现“异或非异或非”运算运算(见图见图6-20)。 “与与”运算时如果两个操作数的同一运算时如果两个操作数的同一 位均为位均为1,运算结果的对应位为,运算结果的对应位为1,否,否 则为则为0(见表见表6-3)。“或或”运算时如果两个运算时如果两个 操作数的同一位均为操作数的同一位均为0,运算结果的对,运算结果的对 应位为应位为0,否则为,否则为1。“异或异或”运算时如
79、运算时如 果两个操作数的同一位不同,运算结果两个操作数的同一位不同,运算结 果的对应位为果的对应位为1,否则为,否则为0。FX系列系列PLC的负数用的负数用2的补码的形式来表示,最高位为符号位,正数的补码的形式来表示,最高位为符号位,正数时该位为时该位为0,负数时该位为,负数时该位为1,将负数求补后得到它的绝对值。,将负数求补后得到它的绝对值。求补指令只有目标操作数。它将求补指令只有目标操作数。它将D指定的数的每一位取反后再加指定的数的每一位取反后再加1,结果存于同一元件,求补指令实际上是绝对值不变的变号操作。结果存于同一元件,求补指令实际上是绝对值不变的变号操作。源操作数源操作数S10101
80、 1001 0011 1011源操作数源操作数S21111 0110 1011 0101“与与”的的结果果0101 0000 0011 0001“或或”的的结果果1111 1111 1011 1111“异或异或”的的结果果1010 1111 1000 1110表表6-3 数字数字逻辑运算的运算的结果果例例6-12的梯形的梯形图 例例6-12D10中的数如果是负数,求它的绝对值。中的数如果是负数,求它的绝对值。 0LDPX1/在在X1的上升沿的上升沿2BOND10M0K15/当当D10的符号位(第的符号位(第15位)位)为1时,将,将M0置置为ON9LDPM0/在在M0的上升沿的上升沿11NEG
81、D10/对D10求求补,以得到,以得到D10的的绝对值14END6-5 循环移位与移位指令循环移位与移位指令 6.5.1 循环移位指令循环移位指令1 右、左循环移位指令右、左循环移位指令ROR(Rotation Right,FNC 30)和和ROL(Rotation Left,FNC 31)分别为右、左循环移位指令。它们只有目标操作数,可以取分别为右、左循环移位指令。它们只有目标操作数,可以取KnY、KnM、KnS、T、C、D、V和和Z。执行这两条指令时,各位的数据向右执行这两条指令时,各位的数据向右(或向左或向左)循环移动循环移动n位位(n为为常数常数),16位指令和位指令和32位指令中位指
82、令中n应分别小于应分别小于16和和32,每次移出来,每次移出来的那一位同时存入进位标志的那一位同时存入进位标志M8022中中(见图见图6-21和图和图6-22)。若在。若在目标元件中指定位元件组的组数,只有目标元件中指定位元件组的组数,只有K4(16位指令位指令)和和K8(32位位指令指令)有效,例如有效,例如K4Y10和和K8M0。0LDM8002/PLC首次首次扫描描时1MOVH50FK4Y0/设置彩灯的初始置彩灯的初始值6LDIT07OUTT0K10/产生周期生周期为1s的移位脉冲的移位脉冲10LDT0/当移位脉冲当移位脉冲产生生11ANDX20/且且X20为ON时12ROLK4Y0K1
83、/彩灯的彩灯的ON/OFF状状态依次左移依次左移1位位17LDT0/当移位脉冲当移位脉冲产生生18ANIX20/且且X20为OFF时19RORK4Y0K1/彩灯的彩灯的ON/OFF状状态依次右移依次右移1位位24END例例6-13 设设计计循循环环移移位位的的16位位彩彩灯灯控控制制程程序序,移移位位的的时时间间间间隔隔为为1s,开开机机之之前前设设置置彩彩灯灯的的初初值值,X20为为OFF时时循循环环右右移移1位位,为为ON时循环左移时循环左移1位。位。T0用来产生周期为用来产生周期为ls的移位脉冲序列。的移位脉冲序列。例例6-13 的梯形图的梯形图例例6-13 的的指令表程序指令表程序 6
84、.5.1 循环移位指令循环移位指令2 带进位的循环移位指令带进位的循环移位指令RCR(Rotation Right with Carry,FNC 32)和和RCL(Rotation Left with Carry,FNC 33)分别为带进位的右、左循环移位指令指令分别为带进位的右、左循环移位指令指令代码。它们的目标操作数、程序步数和代码。它们的目标操作数、程序步数和n的取值范围与循环移位的取值范围与循环移位指令相同。指令相同。执行这两条指令时,各位的数据与进位位执行这两条指令时,各位的数据与进位位M8022一起一起(16位指令位指令时一共时一共17位位)向右向右 (或向左或向左)循环移动循环移
85、动n位位(见图见图6-23和图和图6-24)。在。在循环中移出的位送人进位标志,后者又被送回到目标操作数的另循环中移出的位送人进位标志,后者又被送回到目标操作数的另一端。若在目标元件中指定位元件组的组数,只有一端。若在目标元件中指定位元件组的组数,只有K4(16位指令位指令)和和K8(32位指令位指令)有效。有效。6.5.2 移位指令移位指令1 位右移和位左移指令位右移和位左移指令位右移位右移SFTR(Shift Right,FNC 34)与位左移与位左移SFTL(Shift Left,FNC 35)指令使位元件中的状态成组地向右或向左移动,由指令使位元件中的状态成组地向右或向左移动,由n1指
86、定位元件组的长度,指定位元件组的长度,n2指定移动的位数,常数指定移动的位数,常数n2n11024。源操作数可以取源操作数可以取X、Y、M和和S,目标操作数可以取,目标操作数可以取Y、M和和S,只有,只有16位运算。位运算。6.5.2 移位指令移位指令2 字右移和字左移指令字右移和字左移指令字右移字右移WSFR(Word Sift Right,FNC 36)、字左移、字左移WSFL(Word Shift Left,FNC 37)的源操作数可以取的源操作数可以取KnX、KnY、KnM、KnS、T、C和和D,目标操作数可以取,目标操作数可以取KnY、KnM、KnS、T、C和和D。字移动指令只有。字
87、移动指令只有16位运算。指令以位运算。指令以字为单位,将字为单位,将n1个字右移或左移个字右移或左移n2个字个字(n2n1512)。6.5.2 移位指令移位指令3 移位寄存器写入与读出指令移位寄存器写入与读出指令移位寄存器又称为移位寄存器又称为FIFO(First in First out,先入先出,先入先出)堆栈,堆栈的堆栈,堆栈的长度范围为长度范围为2512个字。个字。移位寄存器写入指令移位寄存器写入指令SFWR(Shift Register Write)的源操作数可以取的源操作数可以取所有的数据类型,目标操作数可以取所有的数据类型,目标操作数可以取KnY、KnM、KnS、T、C和和D,只
88、有,只有16位运算,位运算,2n512。当指针为。当指针为n-1(n为堆栈的长度为堆栈的长度)时,不再时,不再执行处理,进位标志执行处理,进位标志M8022置置1。移位寄存器读出指令移位寄存器读出指令SFRD(Shift Register Read)的源操作数可以取的源操作数可以取KnY、KnM、KnS、T、C和和D,目标操作数可以取,目标操作数可以取KnY、KnM、KnS、T、C、D、V和和Z,只有,只有16位运算,位运算,2n512。当指针为。当指针为0时,时,FIFO堆栈被读空,不再执行处理,零标志堆栈被读空,不再执行处理,零标志M8020为为ON。例例6-14 用移位寄存器写入、读出指
89、令实现先入库的产品先出库。用移位寄存器写入、读出指令实现先入库的产品先出库。0LDPX20/在入在入库按按钮X20的上升沿的上升沿2MOVK4X0D256/来自来自X0X17的的产品品编号送号送D2567SFWRD256D257K100/将将D256作作为指指针,D258D356存放存放99件件产品的品的编号号14LDP X21/在出在出库按按钮X21的上升沿的上升沿16SFRDD257D357K100/先先进入的入的产品的品的编号送号送D35723LDM800024MOVD357K4Y0/取出的取出的产品的品的4位位BCD码编号送号送Y0Y17显示示29END6-6 数据处理指令数据处理指令
90、 6.6.1 区间复位指令区间复位指令区间复位指令区间复位指令ZRST(Zone Reset,FNC 40)将将D1D2指指定的元件号范围内的同类元件成批复位,目标操作数可以取定的元件号范围内的同类元件成批复位,目标操作数可以取T、C和和D(字元件字元件),或,或Y、M和和S(位元件位元件)。D1和和D2指定指定的应为同一类元件,的应为同一类元件,D1的元件号应小于的元件号应小于D2的元件号。如的元件号。如果果D1的元件号大于的元件号大于D2的元件号,则只有的元件号,则只有D1指定的元件指定的元件被复位。单个位元件和字元件可以用被复位。单个位元件和字元件可以用RST指令复位。指令复位。虽然虽然
91、ZRST指令是指令是16位处理指令,位处理指令,D1和和D2也可以指定也可以指定32位计数器。位计数器。指令指令6.6.2 解码与编码指令解码与编码指令1 解码指令解码指令(FNC 41)解码解码(译码译码)指令指令DECO(Decode)的位源操作数可以取的位源操作数可以取X、T、M和和S,位目标操作数可以取,位目标操作数可以取Y、M和和S。字源操作数可以取。字源操作数可以取K、H、T、C、D、V和和Z,字目标操作数可以取,字目标操作数可以取T、C和和D,n=18,只有,只有16位运算,但位运算,但D1和和D2也可以指定也可以指定32位计数器。位计数器。若若D指定的目标元件是字元件指定的目标
92、元件是字元件T、C、D,应使,应使n4,目标元件的,目标元件的每一位都受控,若每一位都受控,若D指定的目标元件是位元件指定的目标元件是位元件Y、M、S,应使,应使n8。n=0时,不作处理。时,不作处理。利用解码指令,可以用数据寄存器中的数值来控制指定位元件的利用解码指令,可以用数据寄存器中的数值来控制指定位元件的ON/OFF。指令指令6.6.2 解码与编码指令解码与编码指令2 编码指令编码指令(FNC 42)编码指令编码指令ENCO(Encode)只有只有16位运算。当位运算。当S指定的源操作数是指定的源操作数是字元件字元件T、C、D、V和和Z时,应使时,应使n4,当,当S指定的源操作数是指定
93、的源操作数是位元件位元件X、Y、M和和S时,应使时,应使n=l8,目标元件可以取,目标元件可以取T、C、D、V和和Z。若指定源操作数中为。若指定源操作数中为1的位不只一个,只有最高位的的位不只一个,只有最高位的1有有效。若指定源操作数中所有的位均为效。若指定源操作数中所有的位均为0,则出错。,则出错。 图图6-33中的中的n=3,编码指令将源元件,编码指令将源元件M7M0中为中为“1”的的M3的的位数位数3编码为二进制数编码为二进制数011,并送到目标元件,并送到目标元件D10的低的低3位。位。解码编码指令在解码编码指令在n=0时不作处理。当执行条件时不作处理。当执行条件OFF时,指令不时,指
94、令不执行,编码输出保持不变。执行,编码输出保持不变。6.6.3 求置求置ON位总数与位总数与ON位判别指令位判别指令位元件的值为位元件的值为1时称为时称为ON,求置,求置ON位总数指令位总数指令SUM(FNC 43)统统计源操作数中为计源操作数中为ON的位的个数,并将它送人目标操作数。源操的位的个数,并将它送人目标操作数。源操作数可以取所有的数据类型,目标操作数可以取作数可以取所有的数据类型,目标操作数可以取KnY、KnM、KnS、T、C、D、V和和Z。ON位判别指令位判别指令BON(Bit ON Check)的功能指令编号为的功能指令编号为FNC 44。它的源操作数可以取所有的数据类型,目标
95、操作数可以取它的源操作数可以取所有的数据类型,目标操作数可以取Y、M和和S。16位运算时位运算时n=015,32位运算时位运算时n=031。该指令用来检。该指令用来检测指定元件中的指定位是否为测指定元件中的指定位是否为ON。若为。若为ON,则位目标操作数变,则位目标操作数变为为ON,目标元件是源操作数中指定位的状态的镜像。,目标元件是源操作数中指定位的状态的镜像。 6.6.4 报警器置位复位指令报警器置位复位指令使用指令使用指令ANS(信号报警器置位信号报警器置位)和和ANR(信号报警器复位信号报警器复位)时,状时,状态标志态标志S900S999用作外部故障诊断的输出,称为信号报警器。用作外部
96、故障诊断的输出,称为信号报警器。1 报警器置位指令报警器置位指令(FNC 46)报警器置位指令报警器置位指令ANS(Annunciator Set)的源操作数为的源操作数为T0T199,目标操作数为目标操作数为S900S999,n=132 767(定时器以定时器以100 ms为单位为单位的设定值的设定值)。信号报警器用来表示错误条件或故障条件。信号报警器用来表示错误条件或故障条件。 6.6.4 报警器置位复位指令报警器置位复位指令2 报警器复位指令报警器复位指令(FNC 47)报警器复位指令报警器复位指令ANR(Annunciator Reset)无操作数,图无操作数,图6-35中用中用故障复
97、位按钮故障复位按钮X5和和ANR指令将用于故障诊断的状态继电器复位,指令将用于故障诊断的状态继电器复位,每按一次复位按钮,按元件号递增的顺序将一个故障报警器状态每按一次复位按钮,按元件号递增的顺序将一个故障报警器状态复位。复位。 发生某一故障时,对应的报警器状态为发生某一故障时,对应的报警器状态为ON,如果同时发生多个,如果同时发生多个故障,故障,D8049中是中是S900S999中地址最低的被置位的报警器的元中地址最低的被置位的报警器的元件号。将它复位后,件号。将它复位后,D8049中是下一个地址最低的被置位的报警中是下一个地址最低的被置位的报警器的元件号。器的元件号。6.6.5 其他指令其
98、他指令1 平均值指令平均值指令MEAN (FNC 45) :用来求:用来求n个源操作数的代数和被个源操作数的代数和被n除的商,余数略去。若指定的源操作数的区域超出允许的范围,除的商,余数略去。若指定的源操作数的区域超出允许的范围,n的值会自动缩小,只求允许范围内元件的平均值。若的值会自动缩小,只求允许范围内元件的平均值。若n的值超的值超出范围出范围164,则出错。源操作数可以取,则出错。源操作数可以取KnX、KnY、KnM、KnS、T、C和和D,目标操作数可以取,目标操作数可以取KnY、KnM、KnS、T、C、D、V和和Z,n=l64。2 二进制平方根指令二进制平方根指令SQR(Square
99、Root)(FNC 48):源操作数:源操作数S应应大于零,可以取大于零,可以取K、H、D,目标操作数为,目标操作数为D。计算结果舍去小。计算结果舍去小数,只取整数。数,只取整数。M8023为为ON时,将对时,将对32位浮点数开方,结果为位浮点数开方,结果为浮点数。源操作数为整数时,将自动转换为浮点数。如果源操浮点数。源操作数为整数时,将自动转换为浮点数。如果源操作数为负数,运算错误标志作数为负数,运算错误标志M8067将会将会ON。6.6.5 其他指令其他指令3 浮点数转换指令浮点数转换指令FLT(Floating Point)(FNC 49):源操作数和目标:源操作数和目标操作数均为操作数
100、均为D。图。图6-36中的中的X3为为ON,且:,且:M8023(浮点数标志浮点数标志)为为OFF时,该指令将存放在源操作数时,该指令将存放在源操作数D10中的数据转换为浮点中的数据转换为浮点数,并将结果存放在目标寄存器数,并将结果存放在目标寄存器D13和和D12中。中。M8023为为ON时,时,将把浮点数转换为整数。用于存放浮点数的目标操作数应为双将把浮点数转换为整数。用于存放浮点数的目标操作数应为双整数,源操作数可以是整数或双整数。整数,源操作数可以是整数或双整数。4 高低字节交换指令高低字节交换指令SWAP(FNC 147):源操作数可以取:源操作数可以取KnY、。、。KnM、KnS、T
101、、C、D、V和和Z。一个。一个16位的字由两个位的字由两个8位的字位的字节组成。节组成。16位运算时,该指令交换源操作数的高字节和低字节。位运算时,该指令交换源操作数的高字节和低字节。32位运算时,如指定的源操作数为位运算时,如指定的源操作数为D20,先交换,先交换D20的高字节和的高字节和低字节,再交换低字节,再交换D21的高字节和低字节。的高字节和低字节。6-7 高速处理指令 6.7.1 与输入输出有关的指令与输入输出有关的指令1 输入输出刷新指令输入输出刷新指令REF(Refresh)(FNC 50):目标操作数:目标操作数D用来用来指定目标元件的首位,应取最低位为指定目标元件的首位,应
102、取最低位为0的的X和和Y元件,如元件,如X0、X10、Y20等,等,n应为应为8的整倍数。的整倍数。FX系列系列PLC使用使用I/O批处理的方法,即输入信号是在程序处理批处理的方法,即输入信号是在程序处理之前成批读人到输入映像寄存器的,而输出数据是在执行之前成批读人到输入映像寄存器的,而输出数据是在执行END指令之后由输出映像寄存器通过输出锁存器送到输出端指令之后由输出映像寄存器通过输出锁存器送到输出端子的。子的。REF指令用于在某段程序处理时读人最新信息,或者将指令用于在某段程序处理时读人最新信息,或者将操作结果立即输出。操作结果立即输出。6.7.1 与输入输出有关的指令与输入输出有关的指令
103、2 刷新和滤波时间常数调整指令刷新和滤波时间常数调整指令REFF(Refresh and Filter Adiust)(FNC 51):用来刷新:用来刷新FX1S和和FX1N系列的系列的X0X7,或,或FX2N的的X0X17,并,并指定它们的输入滤波时间常数指定它们的输入滤波时间常数n(n=060 ms)。为防止输入噪声的影响,输人端有为防止输入噪声的影响,输人端有RC滤波器,滤波时间常数约为滤波器,滤波时间常数约为10ms,无触点的电子固态开关没有抖动噪声,可以高速输入。对于,无触点的电子固态开关没有抖动噪声,可以高速输入。对于这一类输入信号,这一类输入信号,PLC输入端的输入端的RC滤波器
104、影响了高速输入的速度。滤波器影响了高速输入的速度。FX系列系列PLC的的X0X17输入端采用数字滤波器,滤波时间可以用输入端采用数字滤波器,滤波时间可以用REFF指令加以调整,调节范围为指令加以调整,调节范围为060 ms,这些输入端也有,这些输入端也有RC滤滤波器,其滤波时间常数不小于波器,其滤波时间常数不小于50 ms。使用高速计数输入指令、速度。使用高速计数输入指令、速度检测指令检测指令SPD,或者输入中断指令时,输入滤波器的滤波时间自动,或者输入中断指令时,输入滤波器的滤波时间自动设置为设置为50s。 6.7.1 与输入输出有关的指令与输入输出有关的指令3 矩阵输入指令矩阵输入指令MT
105、R(Matrix)(FNC 52):用连续的:用连续的8点输入与点输入与n点输出,点输出,组成组成n行行8列的输入矩阵来输入信号。矩阵输入占用由列的输入矩阵来输入信号。矩阵输入占用由S指定的输入指定的输入号开始的号开始的8个输入点,并占用由个输入点,并占用由D1指定的输出号开始的指定的输出号开始的n个晶体管输个晶体管输出点。图出点。图6-38中的中的3个输出点个输出点(Y4Y6)反复顺序接通。反复顺序接通。Y4为为ON时读人时读人第一行输入的状态,存于第一行输入的状态,存于M30M37;Y5为为ON时读人第二行的输入时读人第二行的输入状态,存于状态,存于M40M47,余类推,如此反复执行。对于
106、每一个输出,余类推,如此反复执行。对于每一个输出,其其I/O指令采用中断方式,立即执行,间隔时间为指令采用中断方式,立即执行,间隔时间为20 ms,允许输入滤,允许输入滤波器的延迟时间为波器的延迟时间为10 ms。6.7.1.3 矩阵输入指令矩阵输入指令MTR(Matrix)(FNC 52)利用利用MTR指令,只用指令,只用8个输入点和个输入点和8个输出点,就可以输入个输出点,就可以输入64个输入个输入点的状态。但是读一次点的状态。但是读一次64个输入点所需的时间为个输入点所需的时间为20 ms8=160 ms,所以不适合于需要快速响应的系统。如果用所以不适合于需要快速响应的系统。如果用X0X
107、17作输入点,每作输入点,每行的读入时间可以缩短到约行的读入时间可以缩短到约10ms,64点的输入时间可以减到约点的输入时间可以减到约80 ms。在梯形图中,在梯形图中,X0和和Y4的常开触点的串联电路,对应于输入接线图中的常开触点的串联电路,对应于输入接线图中与与X0和和Y4端子相连的触点提供的开关量输入信号。端子相连的触点提供的开关量输入信号。6.7.2 高速计数器指令高速计数器指令高速计数器高速计数器(C235C255)用中断的方式对外部输入的高速脉冲计数,用中断的方式对外部输入的高速脉冲计数,高速计数器比较置位指令高速计数器比较置位指令HSCS和高速计数器比较复位指令和高速计数器比较复
108、位指令HSCR只只有有32位运算。源操作数位运算。源操作数S1可以取所有的数据类型,可以取所有的数据类型,S2为为C235C255,目标操作数可以取,目标操作数可以取Y、M和和S。建议用一直为。建议用一直为ON的的M8000的的常开触点来驱动高速计数器指令。常开触点来驱动高速计数器指令。1 高速计数器比较置位指令高速计数器比较置位指令HSCS(set by High Speed Counter)(FNC 53):高速计数器的当前值达到预置值时,:高速计数器的当前值达到预置值时,D指定的输出用中断方式立指定的输出用中断方式立即动作,不受扫描时间的影响,即动作,不受扫描时间的影响,D可以指定为可以
109、指定为I00(=16)。 如如果当前值是被强制为预置值,目标操作数不会果当前值是被强制为预置值,目标操作数不会ON。6.7.2 高速计数器指令高速计数器指令2 高速计数器比较复位指令高速计数器比较复位指令HSCR(Reset by High Speed Counter)(FNC 54):如果当前值是被强制为预置值的,目标操:如果当前值是被强制为预置值的,目标操作数不会作数不会OFF。3 高速计数器区间比较指令高速计数器区间比较指令HSZ(Zone compare for High Speed Counter)(FNC 55):32位运算,工作模式有标准模式、多段比位运算,工作模式有标准模式、多
110、段比较模式和频率控制模式。较模式和频率控制模式。 源操作数源操作数S1和和S2可以取所有的可以取所有的数据类型,数据类型, S=C235C255。目标操作数。目标操作数D可以取可以取Y、M、S,为三个连续的元件。,为三个连续的元件。6.7.3速度检测与脉冲输出指令速度检测与脉冲输出指令 1 速度检测指令速度检测指令SPD(Speed Detect)(FNC 56):源操作数:源操作数S1为为X0X5,S2可以取所有的数据类型,用来指定计数时间可以取所有的数据类型,用来指定计数时间(以以ms为单位为单位),D用用来指定计数结果的存放处,占用来指定计数结果的存放处,占用3个元件,可以取个元件,可以
111、取T、C、D、V和和Z。SPD指令用来检测给定时间内从编码器输入的脉冲个数,并计算出速度。指令用来检测给定时间内从编码器输入的脉冲个数,并计算出速度。 图图6-42中用中用D1对对X0输入的脉冲个数计数,输入的脉冲个数计数,100 ms后计数结果送到后计数结果送到D0,D1中的当前值复位,重新开始对脉冲计数。计数结束后中的当前值复位,重新开始对脉冲计数。计数结束后D2用来测量剩余用来测量剩余时间。转速时间。转速n计算公式:计算公式: 式中,式中,n为转速,为转速,(D0)为为D0中的数,中的数,t为为S2 指定的计数时间指定的计数时间(ms),N为每转的脉冲数。为每转的脉冲数。SPD指令中用到
112、的输入不能用于其他高速指令中用到的输入不能用于其他高速 处理。处理。6.7.3速度检测与脉冲输出指令速度检测与脉冲输出指令 2 脉冲输出指令脉冲输出指令PLSY(Pulse Output)(FNC 57):源操作数:源操作数S1、S2可可以取所有的数据类型,以取所有的数据类型,D为为Y0和和Y1,该指令只能使用一次。,该指令只能使用一次。PLSY指令用于产生指定数量和频率的脉冲。指令用于产生指定数量和频率的脉冲。S1指定脉冲频率指定脉冲频率(220 000Hz),S2指定脉冲个数,指定脉冲个数,16位指令的脉冲数范围为位指令的脉冲数范围为132 767,32位指令的脉冲数范围为位指令的脉冲数范
113、围为12 147 483 647。若指定脉冲数为。若指定脉冲数为0,则,则持续产生脉冲。持续产生脉冲。D用来指定脉冲输出元件用来指定脉冲输出元件(只能用晶体管输出型只能用晶体管输出型PLC的的Y0或或Y1)。脉冲的占空比为。脉冲的占空比为50,以中断方式输出。指定脉冲数输,以中断方式输出。指定脉冲数输出完后,指令执行完成标志出完后,指令执行完成标志M8029置置1。图。图6-43中中X10由由ON变为变为OFF时,时,M8029复位,脉冲输出停止。复位,脉冲输出停止。X10再次变为再次变为ON时,重新开始输出时,重新开始输出脉冲。在发出脉冲串期间脉冲。在发出脉冲串期间X10若变为若变为OFF,
114、Y0也变为也变为OFF。6.7.3速度检测与脉冲输出指令速度检测与脉冲输出指令 2 脉冲输出指令脉冲输出指令PLSY(Pulse Output)(FNC 57):源操作数:源操作数S1、S2可可以取所有的数据类型,以取所有的数据类型,D为为Y0和和Y1,该指令只能使用一次。,该指令只能使用一次。PLSY指令用于产生指定数量和频率的脉冲。指令用于产生指定数量和频率的脉冲。S1指定脉冲频率指定脉冲频率(220 000Hz),S2指定脉冲个数,指定脉冲个数,16位指令的脉冲数范围为位指令的脉冲数范围为132 767,32位指令的脉冲数范围为位指令的脉冲数范围为12 147 483 647。若指定脉冲
115、数为。若指定脉冲数为0,则,则持续产生脉冲。持续产生脉冲。D用来指定脉冲输出元件用来指定脉冲输出元件(只能用晶体管输出型只能用晶体管输出型PLC的的Y0或或Y1)。脉冲的占空比为。脉冲的占空比为50,以中断方式输出。指定脉冲数输,以中断方式输出。指定脉冲数输出完后,指令执行完成标志出完后,指令执行完成标志M8029置置1。图。图6-43中中X10由由ON变为变为OFF时,时,M8029复位,脉冲输出停止。复位,脉冲输出停止。X10再次变为再次变为ON时,重新开始输出时,重新开始输出脉冲。在发出脉冲串期间脉冲。在发出脉冲串期间X10若变为若变为OFF,Y0也变为也变为OFF。6.7.3.2脉冲输
116、出指令脉冲输出指令PLSY(Pulse Output)FX1S和和FX1N的输出频率可达的输出频率可达100kHz,FX2N和和FX2NC为为20kHz。Y0或或Yl输出的脉冲个数可以分别通过输出的脉冲个数可以分别通过D8140、D8141或或D8142、D8143监视,脉冲输出的总数可以用监视,脉冲输出的总数可以用D8136和和D8137监视。监视。S1和和S2中的数据在指令执行过程中可以改变,但中的数据在指令执行过程中可以改变,但S2中数中数据的修改在指令执行完之前不起作用。据的修改在指令执行完之前不起作用。 6.7.3速度检测与脉冲输出指令速度检测与脉冲输出指令 3 脉宽调制指令脉宽调制
117、指令PWM(Pulse Width Modulation)(FNC 58):源操作数和目:源操作数和目标操作数的类型与标操作数的类型与PLSY指令相同,只能用于晶体管输出型指令相同,只能用于晶体管输出型PLC的的Y0或或Y1,该指令只能使用一次。,该指令只能使用一次。PWM指令用于产生指定脉冲宽度和周期的脉冲串。指令用于产生指定脉冲宽度和周期的脉冲串。S1用来指定脉用来指定脉冲宽度冲宽度(t=132 767 ms),S2用来指定脉冲周期用来指定脉冲周期(T=132 767 ms),S1应小于应小于S2,D用来指定输出脉冲的元件号用来指定输出脉冲的元件号(_Y0或或Y1),输出的,输出的ON/O
118、FF状态用中断方式控制。状态用中断方式控制。图图6-43中中D10的值从的值从O50变化时,变化时,Y0输出的脉冲的占空比从输出的脉冲的占空比从01变变化。化。X11变为变为OFF时,时,Y1也也OFF。6.7.3速度检测与脉冲输出指令速度检测与脉冲输出指令 4 带加减速功能的脉冲输出指令带加减速功能的脉冲输出指令PLSR(Pulse R)(FNC 59):源操作:源操作数和目标操作数的类型与数和目标操作数的类型与PLSY指令相同,只能用于晶体管输出指令相同,只能用于晶体管输出型型PLC的的Y0或或Y1,该指令只能使用一次。,该指令只能使用一次。S1用来指定最高频率用来指定最高频率(1020
119、000 Hz),应为,应为10的整倍数。的整倍数。S2用来指定总的输出脉冲,用来指定总的输出脉冲,16位指令的脉冲数范围为位指令的脉冲数范围为11032 767,32位指令的脉冲数范围为位指令的脉冲数范围为1102 147 483 647。设定值不到。设定值不到110时,脉冲不能正常输出。时,脉冲不能正常输出。S3用来设定加减速时间用来设定加减速时间(O5 000ms),其值应大于,其值应大于PLC扫描周期最大值扫描周期最大值(D8012)的的10倍,且应倍,且应满足:满足: 加减速的变速次数固定为加减速的变速次数固定为10次。次。D用来指定脉冲输出的元件号用来指定脉冲输出的元件号(Y0或或Y
120、1),图,图6-44中的中的X10为为OFF时,输出中断,又变为时,输出中断,又变为ON时,从初始值开始输出。输出频时,从初始值开始输出。输出频率范围为率范围为220 000Hz,最高速度、加减速时的变速速度超过此,最高速度、加减速时的变速速度超过此范围时,将自动调到允许值内。范围时,将自动调到允许值内。6.7.3速度检测与脉冲输出指令速度检测与脉冲输出指令 6-8 方便指令方便指令 6-8 方便指令方便指令 6.8.1 状态初始化指令状态初始化指令IST(Initial State,FNC 60):与:与STL(步进梯步进梯形形)指令一起使用,用于自动设置多种工作方式的系统的顺序控指令一起使
121、用,用于自动设置多种工作方式的系统的顺序控制编程,制编程,5-4节给出了使用节给出了使用IST指令的例子。指令的例子。6.8.2 数据搜索指令数据搜索指令SER(Data Search,FNC 61):用于在数据表中:用于在数据表中查找指定的数据,源操作数查找指定的数据,源操作数S1指定表的首地址,可以取指定表的首地址,可以取KnX、KnY、KnM、KnS、T、C和和D,S2指定检索值,可以取所有指定检索值,可以取所有的数据格式,目标操作数的数据格式,目标操作数D用来存放搜索结果,可以取用来存放搜索结果,可以取KnY、KnM、KnS、T、C和和D。 n用来指定表的长度,即搜索的项目用来指定表的
122、长度,即搜索的项目数,数,16位指令位指令n=256,32位指令位指令n=128。序序 号号012345678元件号元件号D130D131D132D133D134D135D136D137D138数数 据据100111100981236610095210搜索搜索结果果符合符合符合符合最小最小符合符合最大最大元元 件件 号号搜搜 索索 内内 容容序序 号号D35符合符合值个数个数3D36第一个符合第一个符合值在表中的序号在表中的序号0D37最后一个符合最后一个符合值在表中的序号在表中的序号6D38表中最小的数的序号表中最小的数的序号5D39表中最大的数的序号表中最大的数的序号8表表6-4 被搜索的
123、数据被搜索的数据表表6-5 搜索结果搜索结果6.8.3 凸轮顺控指令凸轮顺控指令1 绝对值式凸轮顺控指令绝对值式凸轮顺控指令ABSD(Absolute Drum)(FNC 62):装在机:装在机械转轴上的编码器给械转轴上的编码器给PLC的计数器提供角度位置脉冲,的计数器提供角度位置脉冲,ABSD指指令可以产生一组对应于计数值变化的输出波形,用来控制最多令可以产生一组对应于计数值变化的输出波形,用来控制最多64个输出变量个输出变量(Y、M和和S)的的ON/OFF,输出点的个数由,输出点的个数由n指定。指定。源操作数源操作数S1取取KnX、KnY、KnM、KnS、T、C和和D,S2为为C,目标操作
124、数可以取,目标操作数可以取Y、M和和S,1n64。在图在图6-46的程序中,有的程序中,有4个输出点个输出点(n=4)用用M0M3来控制。对应来控制。对应于旋转台旋转一周期间,于旋转台旋转一周期间,M0M3的的ON/OFF状态变化是受凸轮状态变化是受凸轮通过通过X1提供的角度位置脉冲提供的角度位置脉冲(1o/脉冲脉冲)控制的。从控制的。从D300开始的开始的8个个(2n=8)数据寄存器用来存放数据寄存器用来存放M0M3的开通点的开通点(由由OFF-ON)和和关断点关断点(由由ONOFF)的位置值。可以用的位置值。可以用MOV指令将开通点数指令将开通点数据存入据存入D300M307中的奇数单元,
125、关断点数据存入偶数单元。中的奇数单元,关断点数据存入偶数单元。例如例如M0的开通点和关断点分别受的开通点和关断点分别受D300和和D301的控制,的控制,M1的开的开通点和关断点分别受通点和关断点分别受D302和和D303的控制,等等。若的控制,等等。若X0为为OFF,各输出点的状态不变。本指令只能使用一次。各输出点的状态不变。本指令只能使用一次。6.8.3 凸轮顺控指令凸轮顺控指令在图在图6-46的程序中,有的程序中,有4个输出点个输出点(n=4)用用M0M3来控制。对应来控制。对应于旋转台旋转一周期间,于旋转台旋转一周期间,M0M3的的ON/OFF状态变化是受凸轮状态变化是受凸轮通过通过X
126、1提供的角度位置脉冲提供的角度位置脉冲(1o/脉冲脉冲)控制的。从控制的。从D300开始的开始的8个个(2n=8)数据寄存器用来存放数据寄存器用来存放M0M3的开通点的开通点(由由OFF-ON)和和关断点关断点(由由ONOFF)的位置值。可以用的位置值。可以用MOV指令将开通点数指令将开通点数据存入据存入D300M307中的奇数单元,关断点数据存入偶数单元。中的奇数单元,关断点数据存入偶数单元。例如例如M0的开通点和关断点分别受的开通点和关断点分别受D300和和D301的控制,的控制,M1的开的开通点和关断点分别受通点和关断点分别受D302和和D303的控制,等等。若的控制,等等。若X0为为O
127、FF,各输出点的状态不变。本指令只能使用一次。各输出点的状态不变。本指令只能使用一次。6.8.3 凸轮顺控指令凸轮顺控指令2 增量式凸轮顺控指令增量式凸轮顺控指令INCD(Increment Drum)(FNC 63):根据计数根据计数器对位置脉冲的计数值,实现对最多器对位置脉冲的计数值,实现对最多64个输出变量个输出变量(Y、M和和S)的循环顺序控制,使它们依次为的循环顺序控制,使它们依次为ON,并且同时只有一个输出变,并且同时只有一个输出变量为量为ON。源操作数和目标操作数与。源操作数和目标操作数与ABSD指令的相同,只有指令的相同,只有16位运算,位运算,1n64,该指令只能用一次。,该
128、指令只能用一次。INCD指令用来产生一组对应于计数值变化的输出波形。在图指令用来产生一组对应于计数值变化的输出波形。在图6-47的程序中,有的程序中,有4个输出点个输出点(n=4)用用M0M3来控制,它们的来控制,它们的ON/OFF状态受凸轮提供的脉冲个数控制。从状态受凸轮提供的脉冲个数控制。从D300开始的开始的4个个(n=4)数据寄存器用来存放使数据寄存器用来存放使M0M3处于处于0N状态的脉冲个数,状态的脉冲个数,可以用可以用MOV指令将它写入指令将它写入D300D303,图,图6-47中中D300D303的值分别为的值分别为20、30、10和和40。 C0的当前值依次达到的当前值依次达
129、到D300D303中的设定值后自动复位,然中的设定值后自动复位,然后又重新开始计数,段计数器后又重新开始计数,段计数器C1用来计复位的次数,用来计复位的次数,M0M3按按C1的值依次动作。由的值依次动作。由n指定的最后一段完成后,标志指定的最后一段完成后,标志M8029置置1,以后又重复上述过程。若,以后又重复上述过程。若X0为为OFF,C0和和C1复位复位(当前值当前值清零清零),同时,同时M0M3变为变为OFF,X0再为再为ON后重新开始运行。后重新开始运行。若若X0为为OFF,各输出点的状态不变。,各输出点的状态不变。在图在图6-47的程序中,有的程序中,有4个输出点个输出点(n=4)用
130、用M0M3来控制,它们的来控制,它们的ON/OFF状态受凸轮提供的脉冲个数状态受凸轮提供的脉冲个数控制。从控制。从D300开始的开始的4个个(n=4)数据寄数据寄存器用来存放使存器用来存放使M0M3处于处于0N状态状态的脉冲个数,可以用的脉冲个数,可以用MOV指令将它指令将它写入写入D300D303,图,图6-47中中D300D303的值分别为的值分别为20、30、10和和40。 C0的当前值依次达到的当前值依次达到D300D303中中的设定值后自动复位,然后又重新开的设定值后自动复位,然后又重新开始计数,段计数器始计数,段计数器C1用来计复位的次用来计复位的次数,数,M0M3按按C1的值依次
131、动作。由的值依次动作。由n指定的最后一段完成后,标志指定的最后一段完成后,标志M8029置置1,以后又重复上述过程。,以后又重复上述过程。若若X0为为OFF,C0和和C1复位复位(当前值清当前值清零零),同时,同时M0M3变为变为OFF,X0再再为为ON后重新开始运行。若后重新开始运行。若X0为为OFF,各输出点的状态不变。,各输出点的状态不变。6.8.4 定时器指令定时器指令1 示教定时器指令示教定时器指令TIMR(Teaching Timer FNC 64):目标操作数目标操作数D为为D,n=02,只有,只有16位运算。使用位运算。使用TIMR指令可以用一只指令可以用一只按钮调整定时器的设
132、定时间。按钮调整定时器的设定时间。图图6-48中的示教定时器将按钮中的示教定时器将按钮X10按下的时间乘以系数按下的时间乘以系数10n后作后作为定时器的预置值,按钮按下的时间由为定时器的预置值,按钮按下的时间由D301记录,该时间乘记录,该时间乘以以10n后存入后存入D300。设按钮按下的时间为。设按钮按下的时间为t (s),存人,存人D300的值的值为为10nt,即,即n=0时存入时存入t,n=1时存人时存人10t,n=2时存入时存入100t。X10为为OFF时,时,D301复位,复位,D300保持不变。保持不变。例例6-15 用示教定时器指令设置定时器用示教定时器指令设置定时器T0T9的设
133、定值,它们的设定值分的设定值,它们的设定值分别存放在别存放在D400D409中。中。T0T9是是100 ms定时器,实际运行时间是示教定时器,实际运行时间是示教定时提供的数据的定时提供的数据的1/10(以以s为单位为单位)。定时器的序号用接在。定时器的序号用接在X4X7上的十上的十进制数字拨码开关来设定,进制数字拨码开关来设定,BIN指令将拨码开关设定的指令将拨码开关设定的1位十进值数位十进值数(BCD码码)转换为二进制数,并送到变址寄存器转换为二进制数,并送到变址寄存器Z,示教按钮,示教按钮X0按下的时间按下的时间(s)存存人人D300,用下降沿微分指令,用下降沿微分指令LDF在放开按钮时将
134、在放开按钮时将D300中的时间值送人拨中的时间值送人拨码开关指定的数据寄存器,其元件号为码开关指定的数据寄存器,其元件号为400加加Z中拨码开关设定的定时器元中拨码开关设定的定时器元件号,这样就完成了一个示教定时器的设定。改变拨码开关的设定值,重件号,这样就完成了一个示教定时器的设定。改变拨码开关的设定值,重复上述步骤,可以完成对其他示教定时器的设定。复上述步骤,可以完成对其他示教定时器的设定。0LDX10/当当X10为ON时1OUTT0D400/T0开始定开始定时(T0的的设定定值存放在存放在D400中)中)4LDX11/当当X11为ON时5OUTT1D401/T1开始定开始定时(T1的的设
135、定定值存放在存放在D401中)中)36LDX2137OUTT9D40940LDM800041BINK1X4Z/将将拨码开关开关输入到入到X4X7中的十中的十进制数制数转换为BCD码后送后送Z46LDX0/当按下示教按当按下示教按钮X0(此(此时X0为ON)时47TTMRD300K0/按下按按下按钮的的时间被存入被存入D300中中52LDFX0/松开示教按松开示教按钮X0时54MOVD300D400Z/将示教将示教时间送至由送至由拨码开关指定的定开关指定的定时器的器的设定定值寄存器中寄存器中59END0LDX10/当当X10为ON时1OUTT0D400/T0开始定开始定时(T0的的设定定值存放在
136、存放在D400中)中)4LDX11/当当X11为ON时5OUTT1D401/T1开始定开始定时(T1的的设定定值存放在存放在D401中)中)36LDX2137OUTT9D40940LDM800041BINK1X4Z/将将拨码开关开关输入到入到X4X7中的十中的十进制数制数转换为BCD码后送后送Z46LDX0/当按下示教按当按下示教按钮X0(此(此时X0为ON)时47TTMRD300K0/按下按按下按钮的的时间被存入被存入D300中中52LDFX0/松开示教按松开示教按钮X0时54MOVD300D400Z/将示教将示教时间送至由送至由拨码开关指定的定开关指定的定时器的器的设定定值寄存器中寄存器中
137、59END6.8.4 定时器指令定时器指令2 特殊定时器指令特殊定时器指令STMR(Special Timer FNC 65):用来产生延时断开:用来产生延时断开定时器、单脉冲定时器和闪动定时器。源操作数定时器、单脉冲定时器和闪动定时器。源操作数S为为T0T199(100 ms定时器定时器),目标操作数,目标操作数D可以取可以取Y、M、S,m=132 767, 用来指定定时器的设定值,只有用来指定定时器的设定值,只有16位运算。位运算。图图6-49中中T12的设定值为的设定值为10 s(m=100)。图中的。图中的M0是延时断开定时器,是延时断开定时器,M1是是X0由由ONOFF的单脉冲定时器
138、,。的单脉冲定时器,。M2和和M3是为闪动而设的。是为闪动而设的。图图6-50中中M3的常闭触点接到的常闭触点接到STMR指令的输入电路中,使指令的输入电路中,使M1和和M2产生闪动输出。产生闪动输出。6.8.5 其他方便指令其他方便指令 1 交替输出指令交替输出指令ALT(Alterhate FNC 66):目标操作数:目标操作数D可以取可以取Y、M、S,只有,只有16位运算。位运算。每当图每当图6-51中的中的X0由由OFF变为变为ON时,时,Y0的状态改变一次,若不用的状态改变一次,若不用脉冲执行方式,每个扫描周期脉冲执行方式,每个扫描周期Y0的状态都要改变一次。的状态都要改变一次。AL
139、T指令具指令具有分频器的效果,使用有分频器的效果,使用ALT指令,用指令,用1只按钮只按钮X0就可以控制就可以控制Y0对应对应的外部负载的起动和停止。的外部负载的起动和停止。6.8.5 其他方便指令其他方便指令 2 斜坡信号输出指令斜坡信号输出指令RAMP(FNC 67):源操作数和目标操作数均为:源操作数和目标操作数均为D,n=132 767。该指令只能作。该指令只能作16位运算。预先将斜坡输出信号的初始值和最终值分别写位运算。预先将斜坡输出信号的初始值和最终值分别写入入D1和和 D2,X0为为ON时时D3中的数据即从初始值逐渐地变为最终值,变化的中的数据即从初始值逐渐地变为最终值,变化的全
140、过程所需的时间为全过程所需的时间为n个扫描周期,用个扫描周期,用D4保存已经扫描的次数。保存已经扫描的次数。将设定的扫描周期时间将设定的扫描周期时间(稍长于实际扫描周期稍长于实际扫描周期)写入写入D8039,然后令,然后令M8039置置1,PLC进入恒值扫描周期运行方式。如扫描周期的设定值为进入恒值扫描周期运行方式。如扫描周期的设定值为20 ms,图,图6-52中中D3的值从的值从D1的值变到的值变到D2的值所需的时间为的值所需的时间为20 ms1000=20 s。若在斜坡输出过程中若在斜坡输出过程中X0关断,则停止斜坡输出,关断,则停止斜坡输出,D3的值保持不变。此后若的值保持不变。此后若X
141、O再次接通,再次接通,D3清清0,斜坡输出重新从,斜坡输出重新从D1的值开始运行。输出达到的值开始运行。输出达到D2的值的值时,标志时,标志M8029置置1。若保持标志。若保持标志M8026为为0N状态,斜坡输出为保持方式,状态,斜坡输出为保持方式,其最终值可以保持其最终值可以保持(见图见图6-52)。若保持标志为。若保持标志为OFF,为重复方式,为重复方式,D3达到达到D2的值后恢复为的值后恢复为D1的值,重复斜坡输出。的值,重复斜坡输出。6.8.5 其他方便指令其他方便指令 3 旋转工作台控制指令旋转工作台控制指令ROTC(FNC 68):使工作台上指定位置的工:使工作台上指定位置的工件以
142、最短的路径转到出口位置。它的源操作数件以最短的路径转到出口位置。它的源操作数S为为D,目标操,目标操作数作数D可以取可以取Y、M和和S,该指令只能作,该指令只能作16位运算。位运算。图图6-53中的程序指定中的程序指定D200作为旋转工作台位置检测计数器,作为旋转工作台位置检测计数器,m1=232 767,用来指定旋转工作台划分的位置数,用来指定旋转工作台划分的位置数(本例为本例为10个个位置位置),m2=032 767,用来指定低速区间,用来指定低速区间(本例中为本例中为2个位置个位置),m1m2。S指定了指定了D200,就自动地将,就自动地将D201指定为取出窗口指定为取出窗口位置号的寄存
143、器,要取出的工件的位置号存放在位置号的寄存器,要取出的工件的位置号存放在D202中。中。图图6-53中的目标操作数实际上指定中的目标操作数实际上指定M0M2和和M3M7分别用来分别用来存放输入信号和输出信号。图中用一个存放输入信号和输出信号。图中用一个2相开关相开关X0和和X1检测工检测工作台的旋转方向,作台的旋转方向,X2是原点开关,当是原点开关,当0号工件转到号工件转到0号位置时,号位置时,X2接通。输入信号接通。输入信号X0X2驱动驱动M0M2(可以选任意的可以选任意的X和和M作作首元件首元件),M0M2分别为分别为A相信号、相信号、B相信号和原点检测信号。相信号和原点检测信号。M3M7
144、分别用来控制高速正转、低速正转、停止、低速反转分别用来控制高速正转、低速正转、停止、低速反转和高速反转。和高速反转。上述的设定任务完成后,若上述的设定任务完成后,若X10变为变为ON,执行,执行ROTC指令,自指令,自动控制动控制M3M7,使工作台上被指定的工件以最短的路径转到,使工作台上被指定的工件以最短的路径转到出口位置。出口位置。X10为为OFF时,时,M3M7均为均为OFF。执行执行ROTC指令时,若原点监测信号指令时,若原点监测信号M2变为变为ON,计数寄存器,计数寄存器D200清清0,在开始运行之前应先执行上述清,在开始运行之前应先执行上述清0操作。操作。若一个工件区间旋转检测信号
145、若一个工件区间旋转检测信号(M0、M1)的脉冲数为的脉冲数为10,则分度,则分度数、呼唤位置号和工件位置号都必需乘以数、呼唤位置号和工件位置号都必需乘以10。例如,若旋转检。例如,若旋转检测信号为测信号为100脉冲脉冲/周,工作台分成周,工作台分成10个位置,则个位置,则m1应为应为100,工件输入工件输入/输出信号应为输出信号应为0、10、20、90。要使低速区为。要使低速区为1.5个位置区间,则置个位置区间,则置m2=15。6.8.5 其他方便指令其他方便指令 4 数据排序指令数据排序指令SORT(Sort FNC 69):源操作数和目标操作数均为:源操作数和目标操作数均为D。SORT指令
146、将数据编号,按指定的内容重新排列,该指令只指令将数据编号,按指定的内容重新排列,该指令只能使用一次。能使用一次。S指定表的首地址,即要进行排序的表的第一项指定表的首地址,即要进行排序的表的第一项内容的地址,内容的地址,D指定排序后新表的首地址,它们后面应有足够指定排序后新表的首地址,它们后面应有足够的空间来存放整张表的内容。的空间来存放整张表的内容。m1=132,指定排序表的行数;,指定排序表的行数;m2=16,指定排序表的列数,数据被排列后存放于一个新表中。,指定排序表的列数,数据被排列后存放于一个新表中。n=1-m2,指定对表中哪一列的数据进行排序。图,指定对表中哪一列的数据进行排序。图6
147、-54中的中的X1由由OFF变为变为ON时,时,SORT指令将按指令将按D15指定的列号,根据该列数据指定的列号,根据该列数据从小到大的顺序,将各行重新排列,结果存入以从小到大的顺序,将各行重新排列,结果存入以D200为首地址为首地址的新表内。的新表内。6-9 外部外部I/O设备指令设备指令 6.9.1 数据输入指令数据输入指令1 10键输入指令键输入指令TKY(Ten Key FNC 70):源操作数可以取:源操作数可以取X、Y、M和和S,目,目标操作数标操作数D1可以取可以取KnY、KnM、KnS、T、C、D、V和和Z,D2可以取可以取Y、M和和S,该指令只能使用一次。,该指令只能使用一次
148、。图图6-55用用X0作首元件,作首元件,10个键接在个键接在X0-X11上。以图中上。以图中(1)(4)的顺序按的顺序按数字键数字键X2、X1、X3和和X0,则,则D1中中存入数据存入数据2130(见图见图6-55)。若送入的。若送入的数大于数大于9 999,高位数溢出并丢失,数,高位数溢出并丢失,数据以二进制形式存于据以二进制形式存于DO。使用使用32位指令位指令DTKY时,时,D1和和D2组合组合使用,输入的数据大于使用,输入的数据大于99 999 999时,时,高位数据溢出。高位数据溢出。6.9.1 数据输入指令数据输入指令因为指定因为指定D2为为M10,M10M19的的动作对应于动作
149、对应于X0X11。按下。按下X2后,后,M12置置1至另一键被按下,其他键也一至另一键被按下,其他键也一样。任意一键按下,键信号标志样。任意一键按下,键信号标志M20置置1,直到该键放开。两个或更多的,直到该键放开。两个或更多的键按下时,最先按下的键有效。键按下时,最先按下的键有效。X30变为变为0FF时,时,D0中的数据保持不变,中的数据保持不变,但是但是M10M20全部变为全部变为OFF。 6.9.1 数据输入指令数据输入指令2 16键输入指令键输入指令HKY(Hex Decimal Key FNC 71):用矩阵方式排列的:用矩阵方式排列的16个键来输入个键来输入BCD数字和数字和6个功
150、能键个功能键AF的状态,占用的状态,占用PLC的的4个个输入点和输入点和4个输出点。源操作数个输出点。源操作数S为为X,目标操作数,目标操作数D1为为Y,D2可以取可以取T、C、D、V和和Z,D3可以取可以取Y、M和和S。图图6-57中中HKY指令输入的数字指令输入的数字09 999以二进制数的方式存放在以二进制数的方式存放在D0中,大于中,大于9 999时溢出。时溢出。DHKY双字指令可以在双字指令可以在D0和和D1中存放中存放数字数字099 999 999。按下任意一个数字键时。按下任意一个数字键时M7置置1(不保持不保持)。功能。功能键键AF与与M0M5相对应,按下任意一个功能键时相对应
151、,按下任意一个功能键时M6置置1(不保持不保持)。6.9.1 数据输入指令数据输入指令X4变为变为OFF时,时,D0保持不变,保持不变,M0M7全部全部OFF。该指令只能。该指令只能使用一次。使用一次。按下按下A键,键,M0置置1并保持,再按下并保持,再按下D键则键则M0置置0,M3置置1并保持,并保持,依次类推。同时按下多个键时,先按下的有效。将依次类推。同时按下多个键时,先按下的有效。将M8167置置ON,可以输入十六进制数,可以输入十六进制数0FH。为防止键输入的滤波延迟造成的存储错误,建议使用恒定扫描为防止键输入的滤波延迟造成的存储错误,建议使用恒定扫描方式及定时器中断处理。扫描全部方
152、式及定时器中断处理。扫描全部16个键需要个键需要8个扫描周期。个扫描周期。6.9.1 数据输入指令数据输入指令3 数字开关指令数字开关指令DSW(Digital Switch)(FNC 72):用于读入一组或两组:用于读入一组或两组4位位BCD码数字开关的设置值,占用码数字开关的设置值,占用PLC的的4个或个或8个输入点和个输入点和4个输出点。个输出点。源操作数源操作数S为为X,用来指定选通输入点的首位元件号,目标操作数,用来指定选通输入点的首位元件号,目标操作数D1为为Y,用来指定选通输出点的首位元件号,用来指定选通输出点的首位元件号,D2可以取可以取T、C、D、V和和Z, n用来指定开关的
153、组数,用来指定开关的组数,n=1或或2,只有,只有16位运算,该指令可位运算,该指令可以使用两次。以使用两次。6.9.1 数据输入指令数据输入指令3 数字开关指令数字开关指令DSW图中的二极管用于防止在输入电路中出现寄生回路,可以选用图中的二极管用于防止在输入电路中出现寄生回路,可以选用0.1 A/50 V的二极管。如果需要连续读入数字开关的值,应使用晶体管输的二极管。如果需要连续读入数字开关的值,应使用晶体管输出型的出型的PLC,如果不需要连续读入,也可以使用继电器输出的,如果不需要连续读入,也可以使用继电器输出的PLC,可以用按钮输入和可以用按钮输入和SET指令将指令将M0置位,用置位,用
154、M0驱动驱动DSW指令,并用执指令,并用执行完毕标志行完毕标志M8029和复位指令将和复位指令将M0复位。复位。6.9.2 数字译码输出指令数字译码输出指令1 7段译码指令段译码指令SEGD(Seven Segment Decoder FNC 73):将源操:将源操作数作数S指定的元件的低指定的元件的低4位中的十六进制数位中的十六进制数(0F)译码后送给译码后送给7段显示器显示,译码信号存于目标操作数段显示器显示,译码信号存于目标操作数D指定的元件中,指定的元件中,输出时要占用输出时要占用7个输出点。源操作数个输出点。源操作数S可以选所有的数据类型,可以选所有的数据类型,目标操作数目标操作数D
155、为为KnY、KnM、KnS、T、C、D、V和和Z,只,只有有16位运算。位运算。S指定的元件的低指定的元件的低4位位(只用低只用低4位位)中的十六进制数中的十六进制数(0F)经经译码后驱动译码后驱动7段显示器,译码信号存于段显示器,译码信号存于D指定的元件中,指定的元件中,D的高的高8位不变。图位不变。图6-59中中7段显示器的段显示器的B0B6分别对应于分别对应于D的的最低位最低位(第第0位位)第第6位,某段应亮时位,某段应亮时D中对应的位为中对应的位为1,反之,反之为为0。例如显示数字。例如显示数字“0”时,时,B0B5均为均为1,B6为为0,D的值的值为十六进制数为十六进制数3FH。 6
156、.9.2 数字译码输出指令数字译码输出指令2 带锁存的带锁存的7段显示指令段显示指令SEGL(Seven Segment with Latch FNC 74):用:用12个扫描周期显示一组或两组个扫描周期显示一组或两组4位数据,占用位数据,占用8个或个或12个晶体管输出点。个晶体管输出点。源操作数源操作数S可以选所有的数据类型,目标操作数可以选所有的数据类型,目标操作数D为为Y,只有,只有16位位运算,运算,n=07,该指令可以使用两次。,该指令可以使用两次。SEGL指令显示一组或两组指令显示一组或两组4位数据,完成位数据,完成4位显示后标志位显示后标志M8029置为置为1。PLC的扫描周期应
157、大于的扫描周期应大于10 ms,若小于,若小于10 ms,应使用恒定扫描方式。,应使用恒定扫描方式。该指令的执行条件一旦接通,指令反复执行,若执行条件变为该指令的执行条件一旦接通,指令反复执行,若执行条件变为OFF,停止执行。停止执行。带锁存的带锁存的7段显示指令段显示指令SEGLPLC的晶体管输出电路有漏输出的晶体管输出电路有漏输出(即集电极输出即集电极输出)和源输出和源输出(即即发射极输出发射极输出)两种两种(见图见图6-61和图和图6-62),前者为负逻辑,梯形,前者为负逻辑,梯形图中的输出继电器为图中的输出继电器为ON时输出低电平;后者为正逻辑,梯形时输出低电平;后者为正逻辑,梯形图中
158、的输出继电器为图中的输出继电器为ON时输出高电平。时输出高电平。 带锁存的带锁存的7段显示指令段显示指令SEGL7段显示器的数据输入段显示器的数据输入(由由Y0Y3和和Y10Y13提供提供)和选通信号和选通信号(由由Y4Y7提供提供)也有正逻辑和负逻辑之分。若数据输入以高电也有正逻辑和负逻辑之分。若数据输入以高电平为平为“1”,则为正逻辑;反之为负逻辑。选通信号若在高电平,则为正逻辑;反之为负逻辑。选通信号若在高电平时锁存数据,则为正逻辑;反之为负逻辑。时锁存数据,则为正逻辑;反之为负逻辑。参数参数n的值由显示器的组数、的值由显示器的组数、PLC与与7段显示器的逻辑是否相同段显示器的逻辑是否相
159、同来确定来确定(见表见表6-6)。设。设PLC的输出为负逻辑,显示器的数据输入的输出为负逻辑,显示器的数据输入为负逻辑为负逻辑(相同相同),选通信号为正逻辑,选通信号为正逻辑(不同不同),一组显示时,一组显示时n=1,两组显示时两组显示时n=5。组 数数12PLC与数据与数据输入入类型型相同相同不同不同相同相同不同不同PLC与与选通脉冲通脉冲类型型相同相同不同不同相同相同不同不同相同相同不同不同相同相同不同不同n01234567表表6-6 参数参数n的确定的确定6.9.2 数字译码输出指令数字译码输出指令3 方向开关方向开关ARWS(ArroW Switch FNC 75):用方向开关:用方向
160、开关(4只按钮只按钮)来输入来输入4位位BCD数据,用带锁存的数据,用带锁存的7段显示器来显示当前设置的段显示器来显示当前设置的数值。移位按钮用来移动输入和显示的位,增加键和减少键用数值。移位按钮用来移动输入和显示的位,增加键和减少键用来修改该位的数据。源操作数来修改该位的数据。源操作数S为为X、Y、M、S,目标操作数,目标操作数D1为为T、C、D、V和和Z,D2为为Y,只有,只有16位运算。位运算。n=O3,其确定方法与其确定方法与SEGL指令相同。指令相同。ARWS指令只能使用一次,且必指令只能使用一次,且必须使用晶体管输出型须使用晶体管输出型PLC。例例6-16用方向开关指令修改定时器用
161、方向开关指令修改定时器T0T99的设定值。的设定值。6.9.3 其他指令其他指令1 ASC码转换指令码转换指令ASC(ASC Code FNC 76):将字符变为:将字符变为ASC码并存放在指定的元件中,源操作数码并存放在指定的元件中,源操作数S是输入的是输入的8 B以下的字以下的字母或数字,目标操作数母或数字,目标操作数D为为T、C和和D(4个连号的元件个连号的元件),只有,只有16位运算,该指令适合于用外部显示单元来显示出错等信息。位运算,该指令适合于用外部显示单元来显示出错等信息。图图6-65中的中的X3由由OFF变为变为ON时,将时,将8个字符变换为个字符变换为ASC码后码后存放在目标
162、元件存放在目标元件D300D303中。中。 在在M8161为为ON时时(8位处理模位处理模式式)执行该指令,向执行该指令,向D300D307的低的低8位传送位传送ASC码,高码,高8位位为为0。6.9.3 其他指令其他指令2 ASC码打印指令码打印指令PR(Print FNC 77):用于:用于ASC码的打印输出,码的打印输出,源操作数为源操作数为T、C和和D,目标操作数为,目标操作数为Y,只有,只有16位运算。位运算。 PR指指令和令和ASC指令配合使用,可以用外部显示单元显示出错信息指令配合使用,可以用外部显示单元显示出错信息等。等。图图6-66中执行中执行PR指令时,指令时,D300D3
163、03中的中的8个个ASC码送到码送到Y0Y7去打印,同时用去打印,同时用Y10和和Y11输出选通信号和执行标志信号。输出选通信号和执行标志信号。PR指令可以使用指令可以使用2次,且必须使用晶体管输出型次,且必须使用晶体管输出型PLC。若扫描。若扫描时间短,可以用定时中断方式执行。标志时间短,可以用定时中断方式执行。标志M8027为为ON时时PR指指令可以一次送令可以一次送16个个ASC码。码。6.9.3 其他指令其他指令3 读特殊功能模块指令读特殊功能模块指令FROM(FNC 78):目标操作数:目标操作数D为为KnY、KnM、KnS、T、C、D、V和和Z。接在。接在FX系列系列PLC基本单元
164、右基本单元右边扩展总线上的功能模块,从最靠基本单元的那个开始,其编边扩展总线上的功能模块,从最靠基本单元的那个开始,其编号号m1依次为依次为07。n是待传送数据的字数,是待传送数据的字数,n=132(16位操作位操作)或或116(32位操作位操作)。图图6-67中的中的X3为为ON时,将编号为时,将编号为m1的特殊功能模块内编号为的特殊功能模块内编号为m2开始的开始的n个缓冲寄存器个缓冲寄存器(BFM)的数据读入的数据读入PLC,并存入,并存入D开开始的始的n个数据寄存器中。个数据寄存器中。m2是特殊功能模块中缓冲寄存器的首是特殊功能模块中缓冲寄存器的首元件号,元件号,m2=032 767,n
165、是待传送数据的字数,是待传送数据的字数,n=l32 767,32位指令以双字为单位传送数据,指定的位指令以双字为单位传送数据,指定的BFM为双字的低为双字的低16位。位。读特殊功能模块指令读特殊功能模块指令6.9.3 其他指令其他指令4 写特殊功能模块指令写特殊功能模块指令TO(FNC 79):的源操作数:的源操作数S可以取所有的可以取所有的数据类型,数据类型,m1、m2和和n的取值范围与读特殊功能模块指令相同。的取值范围与读特殊功能模块指令相同。图图6-67中的中的X0为为ON时,将时,将PLC基本单元中从基本单元中从S指定的指定的D0开始开始的的n个字的数据写到编号为个字的数据写到编号为m
166、1的特殊功能模块中编号的特殊功能模块中编号m2开始的开始的n个缓冲寄存器中。个缓冲寄存器中。M8028为为ON时,在时,在FROM和和T0指令执行过程中,禁止中断;在指令执行过程中,禁止中断;在此期间发生的中断在此期间发生的中断在FROM和和T0指令执行完后执行。指令执行完后执行。M8028为为OFF时,在这两条指令的执行过程中不禁止中断。时,在这两条指令的执行过程中不禁止中断。写特殊功能模块指令写特殊功能模块指令6-10 FX系列外部设备指令系列外部设备指令 6.10.1 与串行通信有关的指令与串行通信有关的指令1 串行通信指令串行通信指令RS (FNC 80):RS-232C通信发送和接收
167、数据指令。通信发送和接收数据指令。2 并联运行指令并联运行指令PRUN(Parallel run FNC 81):用于控制:用于控制FX的并行链接的并行链接适配器适配器FX2-40AW/AP,它将源数据传送到位发送区,并行链接通信,它将源数据传送到位发送区,并行链接通信用特殊用特殊M标志控制。源操作数标志控制。源操作数S可以取可以取KnX和和KnM,目标操作数,目标操作数D可以取可以取KnY和和KnM,n=18,指定的元件号的最低位应为,指定的元件号的最低位应为0。PRUN将数据送入位发送区或从位接收区读出。传送时位元件的地将数据送入位发送区或从位接收区读出。传送时位元件的地址为八进制数,用址
168、为八进制数,用PRUN指令将指令将16个输入点个输入点K4X20(X20X27和和X30X37)送给发送缓冲区中的送给发送缓冲区中的K4M810(M810M817和和M820M827)时,数据不会写入时,数据不会写入M818和和M819,因为它们不属于八进制计数系统。,因为它们不属于八进制计数系统。6-10 FX系列外部设备指令系列外部设备指令 3HEXASC码转换指令码转换指令ASC(FNC 82):将:将S中的中的HEX转换为转换为ASC码。源操作数码。源操作数S可以取所有的数据类型,目标操作数可以取所有的数据类型,目标操作数D可以取可以取KnY、KnM、KnS、T、C和和D,只有,只有1
169、6位运算。位运算。1.ASC运行时如果运行时如果M8161为为0FF则为则为16位模式,每位模式,每4个个HEX占一个占一个数据寄存器,转换后每两个数据寄存器,转换后每两个ASC码占一个数据寄存器,转换的码占一个数据寄存器,转换的字符个数由字符个数由n指定,指定,n=l256。设。设D100中存放的是十六进制数中存放的是十六进制数0ABCH,X12为为ON时,时,ASCI指令将指令将D100中的十六进制数中的十六进制数0ABCH转换为对应的转换为对应的4个个ASC码,存入码,存入D120和和D121,0对应的对应的ASC码码30H存入存入D120的低位字节,十六进制数的低位字节,十六进制数C对应的对应的ASC码码43H存入存入D121的高位字节。的高位字节。