三菱PLC技术完全攻略
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.2.3 A2N系列PLC的基本功能指令

A2N系列PLC基本功能指令是指可以处理16位或32位数据的数据处理指令。它分为比较指令、算术运算指令、BCD与BIN的转换指令、数据传送指令、程序分支指令和通信刷新指令等几大类,共115条。由于篇幅所限,不能对每一条指令都作详细的讲解。为了对A2N系列PLC的基本功能指令有一个全面的了解,对每一类指令,也都挑选几个具有代表性的指令进行详细的讲解,并举出编程实例。这样,对于同类指令即可参考实例和“A2N系列PLC的指令列表”进行学习应用了。

3.2.3.1 比较指令

比较指令用于比较两个数据之间的数值大小(如=、>、<等),共有36条(其中有18条用于32位数据的比较)。比较指令的编程,与LD/LDI、AND/ANI、OR/ORI顺控指令相同。其源软元件(S1)、(S2)可为所有位软元件(对16位指令,其数字规格为K1~K4;对32位指令,其数字规格为K1~K8)、所有的字软元件(对32位指令,A1、V除外)和常数。比较指令的编程实例如图3-77所示。

图3-77 比较指令的编程实例

由于比较指令在执行比较时,认为指定的数据为二进制(BIN)数。因此,在用BCD码或十六进制数进行比较时,当该数据的最高位(在16位指令中为b15,在32位指令中为b31)为1时,将作为负的BIN值进行数值比较。例如,在图3-77(a)中,由于十六进制数H8731的最高位(b15)为1,故H8731对应的十进制数为-30927,而H0568对应的十进制数为1384。因为比较结果为-30927<1384,不满足大于(“>”)的比较条件,所以Y10不接通。

当进行32位数据的比较时,要采用32位指令(例如DMOV指令)来指定数值。若采用16位指令(如MOV指令),比较指令将不能被正确执行。例如,若将图3-77(b)中的任意一个DMOV(32位传送)指令换成MOV(16位传送)指令,则比较结果将出错,因为,指令“D<=”为32位比较指令。

图3-77(c)是将XF~X0的BIN数据(因为K后面的数字为4,故从X0~XF共有16位二进制数)与D3中的数据进行比较的程序。当X0~XF的数据与D3中的数据相等时,线圈Y20接通。若将该图中的K4改为K5至K8中的任意一个,则前面的比较指令“=”必须改为32位的比较指令“D=”,否则将出错。

图3-77(d)是将-80000与D3、D4中的数据进行比较的程序。

从语句表可以看出,对比较指令的编程,即是在与之相关的顺控指令(LD/LDI、AND/ANI、OR/ORI)后加上对应的比较符号。

3.2.3.2 算术运算指令

算术指令是完成两个BIN数据或BCD数据的加、减、乘、除运算的指令。

当用BIN(二进制)码作算术运算时,对于加法运算的结果不能超过32767(在32位指令中,不能超过2147483647,即231-1),否则,结果将变为负值。同样,对于减法运算的结果不能低于-32767(在32位指令中,不能低于-2147483647,即-231),否则,结果将变为正值。

当用BCD码进行算术运算时,若加法运算的结果超过9999(在32位指令中为99999999),则结果变为0(因为进位被忽略了),例如,4位BCD码的加法运算:9999+0001=0000。在减法指令中,当被减数小于减数时,可以向前借位操作,例如,4位BCD码的减法运算:0005-0008=9997。

算术运算指令共有40条,下面分类介绍之。

(1)加法运算指令

加法运算指令有16位BIN数据的加法(+、+P)、32位BIN数据的加法(D+、D+P)、4位BCD码数据的加法(B+、B+P)和8位BCD码数据的加法(DB+、DB+P),共8条。

对于16位BIN数据的加法运算和4位BCD码数据的加法运算指令,其源软元件(S)可为任意一种位软元件(其数字规格为K1~K4),任意一种字软元件或常数;其目标软元件(D)可为除输入继电器(X)以外的任意一种位软元件(其数字规格为K1~K4),或任意一种字软元件。

对于32位BIN数据的加法运算和8位BCD码数据的加法运算指令,其源软元件(S)可为任意一种位软元件(其数字规格为K1~K4),任意一种字软元件(不含A1和V)或常数;其目标软元件(D)可为除输入继电器(X)以外的任意一种位软元件(其数字规格为K1~K8),或任意一种字软元件(不含A1和V)。

对于16位BIN数据的加法,其被加数、加数和运算结果的数据设定范围均为-32768~32767(对32位指令,为-2147483648~2147483647)。当最高位b15(对32位BIN数据,最高位为b31)为0时,表示正数;当最高位为1时,表示负数。

对于4位BCD码数据的加法,其被加数、加数和运算结果的数据设定范围均为0~9999(对8位BCD码,为0~99999999)。当加法结果超过9999(对8位BCD码,为99999999)时,进位被忽略。当被加数、加数和运算结果数据中的任意一位数字不在0~9之间时,将产生操作错误。

加法指令的编程举例,如图3-78所示。

图3-78 加法指令的编程举例

(2)减法运算指令

减法运算指令有16位BIN数据的减法(-、-P)、32位BIN数据的减法(D-、D-P)、4位BCD码数据的减法(B-、B-P)和8位BCD码数据的减法(DB-、DB-P),共8条。其可用的源软元件(S)和目标软元件(D)与加法运算指令相同。

对于16位BIN数据的减法,其被减数、减数和运算结果的数据设定范围均为-32768~32767(对32位指令,为-2147483648~2147483647)。当最高位(对32位BIN数据,最高位为b31)为0时,表示正数;当最高位为1时,表示负数。

对于4位BCD码数据的减法,其被减数S1、减数S2和运算结果D的数据设定范围均为0~9999(对8位BCD码,为0~99999999)。当被减数、减数和运算结果数据中的任意一位数字不在0~9之间时,将产生操作错误。

减法指令的编程举例,如图3-79所示。

图3-79 减法指令的编程举例

(3)乘法运算指令

乘法运算指令有16位BIN数据的乘法(*、*P)、32位BIN数据的乘法(D*、D*P)、4位BCD码数据的乘法(B*、B*P)和8位BCD码数据的乘法(DB*、DB*P),共8条。

对于16位BIN数据的乘法运算和4位BCD码数据的乘法运算指令,其源软元件(S)可为任意一种位软元件(其数字规格为K1~K4),任意一种字软元件或常数;其目标软元件(D)可为除输入继电器(X)以外的任意一种位软元件(其数字规格为K1~K8),或任意一种字软元件(不含A1和V)。

对于32位BIN数据的乘法运算和8位BCD码数据的乘法运算指令,其源软元件(S)可为任意一种位软元件(其数字规格为K1~K8),任意一种字软元件(不含A1和V)或常数;其目标软元件(D)可为除输入继电器(X)以外的任意一种位软元件(其数字规格为K1~K8),或字软元件T、C、D、W、R。

对于16位BIN数据的乘法运算,其被乘数(S1)和乘数(S2)的数据设定范围均为-32768~32767,而运算结果(32位)则应该采用相邻两个16位寄存器来存放。对于被乘数和乘数,当最高位b15为0时,表示正数;当最高位为1时,表示负数。对于运算结果(D),其正负数应根据最高位b31来判断。

对于32位BIN数据的乘法运算,其被乘数(S1)和乘数(S2)的数据设定范围均为-2147483648~2147483647,而运算结果(64位)则应该采用相邻四个16位寄存器(D+3~D,D表示存放运算结果的软元件首地址)来存放。当D是一个位软元件时,最多可指定运算结果的低32位,而不可能指定高32位(因为数字规格最大为K8),若要将乘法结果的高32位存入位软元件,则必须先将数据存到字软元件,然后再把字软元件(D+2和D+3)的数据传送到指定的位软元件中。对于被乘数和乘数的正负,应根据最高位(b31)来判断。对于运算结果(D),其正负数应根据最高位b63来判断。

对于4位BCD的乘法,被乘数、乘数的数据设定范围均为0~9999(对8位BCD码,为0~99999999)。对于运算结果(D),则需要相邻两个16位的寄存器来存放(若是8位BCD码的乘法运算,则需用相邻四个16位寄存器来存放。当存放运算结果的软元件首地址D是位软元件时,其存放方法与32位BIN数据的乘法运算相同)。当被乘数、乘数中的任意一位数字不在0~9之间时,将产生操作错误。

乘法运算指令的编程举例,如图3-80所示。

图3-80 乘法运算指令的编程举例

(4)除法运算指令

除法运算指令有16位BIN数据的除法(/、/P)、32位BIN数据的除法(D/、D/P)、4位BCD码数据的除法(B/、B/P)和8位BCD码数据的除法(DB/、DB/P),共8条。

其可用的源软元件(S)和目标软元件(D)与乘法运算相同。

在使用16位BIN数据的除法运算指令时,应注意以下几点。

①被除数(S1)和除数(S2)的数据设定范围均为-32768~32767。

②如果存放运算结果的是字软元件,则采用32位寄存器(由相邻两个16位寄存器组成)来存放商和余数,其中,商存入低16位(即存入字软元件D中),余数存入高16位(即存入字软元件D+1中),这里“D”为目标软元件。

③如果存放运算结果的是位软元件,则余数不予保存,仅用16位将商保存,如图3-81(a)所示。

图3-81 除法运算指令的编程举例

④对于被除数和除数的正负,应根据最高位(b15)来判断;而对于运算结果(D),其正负数应根据最高位b31来判断(仅对“D”为字软元件而言)。

⑤在编程时,若将存放运算结果的软元件(即目标软元件D)指定为累加器A1或变址寄存器V,则将出现操作错误。此外,除数S2不能为0,否则,也会出现操作错误。

在使用32位BIN数据的除法运算指令时,应注意以下几点。

①被除数(S1)和除数(S2)的数据设定范围均为-2147483648~2147483647。

②如果存放运算结果的是字软元件,则采用64位寄存器(由相邻四个16位寄存器组成)来存放商和余数,其中,商存入低32位(即存入字软元件D和D+1中),余数存入高32位(即存入字软元件D+2和D+3中)。

③如果存放运算结果的是位软元件,则余数不予保存,仅用32位将商保存。

④对于被除数(S1)和除数(S2)的正负,应根据最高位(b31)来判断;而对于运算结果,其正负数应根据最高位(b63)来判断(仅对存放运算结果的是字软元件而言)。

⑤在编程时,若将(S1)和(S2)指定为AI或V,或者将存放运算结果的软元件(即目标软元件D)指定为累加器A0、A1或变址寄存器Z、V,则将出现操作错误。此外,除数S2不能为0,否则,也会出现操作错误。

使用4位和8位BCD数的除法运算指令时,应注意以下几点。

①被除数(S1)和除数(S2)的数据设定范围均为0~9999(若为8位BCD数除法,则S1、S2的设定范围应为0~99999999)。

②对于4位BCD数除法,如果存放运算结果的是字软元件,则采用32位寄存器(由相邻两个16位寄存器组成)来存放商和余数,其中,商存入低16位(即存入字软元件D中),余数存入高16位(即存入字软元件D+1中),如图3-81(b)所示。

③对于8位BCD数除法,如果存放运算结果的是字软元件,则采用64位寄存器(由相邻四个16位寄存器组成)来存放商和余数。其中,商存入低32位(即存入字软元件D和D+1中),余数存入高32位(即存入字软元件D+2和D+3中),如图3-81(c)所示。

④对于4位BCD数除法运算,如果存放运算结果的是位软元件,则余数不予保存,仅用16位(对8位BCD数除法,则为32位)将商保存。

⑤若S1和S2数据的任意一位数字不在0~9之间,或者除数S2为0,则将出现操作错误。

除法运算指令的编程举例,如图3-81所示。

(5)BIN数据的增1、减1指令

BIN数据的增1、减1指令有16位BIN数据的增1指令(INC、INCP)、32位BIN数据的增1指令(DINC、DINCP)、16位BIN数据的减1指令(DEC、DECP)、32位BIN数据的减1指令(DDEC、DDECP),共8条。在结构上,它们都没有源软元件(S),只有目标软元件(D)。其目标软元件可为除X外的所有位软元件(对16位指令,其数字规格为K1~K4;对32位指令,其数字规格为K1~K8)和所有的字软元件(对32位指令,A1、V除外)。

在使用BIN数据的增1指令时,应注意以下几点。

①BIN数据增1指令的功能是将目标软元件(D)中的BIN数据增1。

②执行INC或INCP指令时,若目标软元件(D)中的内容是32767,则将-32768(8000H)存到(D)所指定的软元件中。

③执行INC或INCP指令时,若目标软元件(D)中的内容是2147483647,则将-2147483648(80000000H)存到(D)所指定的软元件中。

在使用BIN数据减1指令时,应注意以下几点。

①BIN数据减1指令的功能是将目标软元件(D)中的BIN数据减1。

②执行DEC或DECP指令时,若目标软元件(D)中的内容是0,则将-1(FFFFH)存到(D)所指定的软元件中。

③执行DDEC或DDECP指令时,若目标软元件(D)中的内容是0,则将-1(FFFFFFFFH)存到(D)所指定的软元件中。

BIN数据的增1、减1运算指令的编程举例,如图3-82所示。

图3-82 BIN数据的增1、减1运算指令的编程举例

3.2.3.3 数据转换指令

数据转换指令是指BCD数据和BIN数据之间的转换,它分为将BCD数据转换成BIN数据和将BIN数据转换成BCD数据两类,共8条指令,下面分类加以说明。

(1)将BIN数据转换成BCD数据的指令

将BIN数据转换成BCD数据的指令,包括将BIN数据转换成4位BCD数据的指令(BCD、BCDP)和将BIN数据转换成8位BCD数据的指令(DBCD、DBCDP),共4条。

BCD和BCDP指令的功能是将由源软元件(S)所指定的0~9999(对DBCD和DBCDP指令,为0~99999999)范围内的BIN数据转换成BCD数据,将结果存到由目标软元件(D)所指定的软元件中。

当使用BCD和BCDP指令时,由于转换后的BCD数据最大为9999,所以,源软元件(S)所指定的数据范围不能超出0~9999。也就是说,源数据的最高两位(即b15和b14)必须确保为0(因为“9999”所对应的二进制数为“10011100001111”),否则转换为BCD码时将会出错。

同样地,当使用DBCD和DBCDP指令时,由于转换后的BCD数据最大为99999999,所以,源软元件(S)所指定的数据范围不能超出0~99999999。也就是说,源数据的最高五位(即b27~b31)必须确保为0(因为“99999999”所对应的二进制数为“1011 1110 1011 1100 0001 1111111”),否则转换为BCD码时也将会出错。

BCD指令的软元件可为所有位软元件(对16位指令,其数字规格为K1~K4;对32位指令,其数字规格为K1~K8;X不能为目标软元件)、和所有的字软元件(对32位指令,A1、V除外)。

其编程实例如图3-83所示。图中,假设C4的当前值为“678”。由于十进制数“678”所对应的二进制数为“1010100110”,因此,BCDP指令将此二进制数转换为BCD码(即“011001111000”,并输出到Y2B~Y20)中,如图3-83(b)所示。图3-83(c)表示将转换结果输出到七段数码显示器上显示出来。

图3-83 BCD指令的编程举例(图中显示的为658)

(2)将BCD数据转换成BIN数据的指令

将BCD数据转换成BIN数据的指令,包括将4位BCD数据转换成BIN数据的指令(BIN、BINP)和将8位BCD数据转换成BIN数据的指令(DBIN、DBINP),共4条。

BIN和BINP指令的功能是将由源软元件(S)所指定的0~9999(对DBIN和DBINP指令,为0~99999999)BCD数据转换成BIN数据,并将转换结果存到由目标软元件(D)所指定的软元件中。其编程实例如图3-84所示。

图3-84 BIN指令的编程举例

由图3-84可以看出,用数字拨码开关拨一位0~9之间的数字(即一位BCD码),要占用4个输入,因为一位BCD码,由4位二进制数字组成。假设要转换的BCD数为“236”,则“236”所对应的二进制数为“11101100”。可见,转换后D8中的数为“11101100”。

图3-84(b)为将X2B~X20中的BCD数据(236)转换为BIN数据的过程,并将转换结果存到数据寄存器D8中;图3-84(c)表示用“数字拨码开关”输入要转换的BCD码数据。

BIN和BCD指令可用的软元件与BCD/BCDP指令相同。

使用BIN或DBIN指令时,需注意以下两点。

①源数据(S)中的任意一位数字必须在0~9之间。

②一定要在数据设定完以后,再接通执行条件进行数据转换。如图3-85所示。

图3-85 BIN或DBIN指令执行条件的要求

3.2.3.4 数据传送指令

数据传送指令是完成数据传送、数据交换和取反数据传送等的指令。用数据传送指令传送的数据一直保持到有新的数据传送为止,即使每条指令的执行条件断开,数据也不变。数据传送指令分为传送、取反传送、块传送和交换四类,共16条,下面分类介绍它们的用法。

(1)传送指令

传送指令包括16位数据传送指令(MOV、MOVP)和32位数据传送指令(DMOV、DMOVP),共4条。16位数据传送指令用于16位二进制数据的传送,32位数据传送指令用于32位二进制数据的传送。

当指令前面的执行条件满足时,若为MOV/MOVP指令,则将源软元件(S)中的16位二进制数据传送到目标软元件(D)中,如图3-86(a)所示;若为DMOV/DMOVP指令,则将源软元件(S)中的32位二进制数据传送到目标软元件(D)中,如图3-86(b)所示。

图3-86 16位/32位数据传送指令的编程举例

传送指令的源软元件(S)可为所有的位软元件(对16位指令,其数字规格为K1~K4;对32位指令,其数字规格为K1~K8)、所有的字软元件(对32位指令,A1、V除外)和常数。其目标软元件(D)可为除X以外的所有的位软元件(对16位指令,其数字规格为K1~K4;对32位指令,其数字规格为K1~K8)、所有的字软元件(对32位指令,A1、V除外)。

(2)取反传送指令

取反传送指令包括16位数据取反传送指令(CML、CMLP)和32位数据取反传送指令(DCML、DCMLP),共4条。16位数据取反传送指令用于16位数据的取反传送,32位数据取反传送指令用于32位数据的取反传送。其可用的软元件与传送指令相同。

当指令前面的执行条件满足时,若为CML/CMLP指令,则将源软元件S中的16位数据的每一位取反后传送到目标软元件(D)中,如图3-87(a)所示;若为DCML/DCMLP指令,则将源软元件S中的32位数据的每一位取反后传送到目标软元件(D)中,如图3-87(b)所示。

图3-87 16位/32位数据取反传送指令的编程

当源软元件的位数小于目标软元件的位数时,其处理方法,如图3-87(a)所示。

(3)块传送指令

块传送指令包括不同数据块传送指令(BMOV、BMOVP)和相同数据块传送指令(FMOV\FMOVP),共4条。它们都是16位数据块传送。

BMOV/BMOVP指令用来将以S所指定的软元件为首地址的n点数据,传送到以(D)所指定的软元件为首地址的n点软元件中,其编程实例如图3-88所示。当源和目标所指定的软元件为同一类软元件时,数据也能传送。传送至地址号较小的软元件中,从(S)开始执行;传送至地址号较大的软元件中去,从S+(n-1)开始执行。BMOV/BMOVP指令的软元件可为所有的位软元件[对目标软元件(D),X除外;其数字规格为K1~K4]和字软元件T、C、D、W、R。

图3-88 BMOV/BMOVP指令的编程

FMOV/FMOVP指令用来将(S)所指定的软元件中的内容,传送到以(D)所指定的软元件为首地址的n个软元件中。即将同一内容传送n次。传送时应注意:传送的范围不能超出对应软元件的范围,其编程实例如图3-89所示。FMOV/FMOVP指令的源软元件可为所有的位软元件(其数字规格为K1~K4)、所有的字软元件和常数,其目标软元件(D)可为所有的位软元件(其数字规格为K1~K4,X除外)和字软元件T、C、D、W、R。

图3-89 FMOV/FMOVP指令的编程

(4)数据交换指令

数据交换指令用于将指定的两个数据进行交换,它包括16位数据交换指令(XCH、XCHP)和32位数据交换指令(DXCH、DXCHP),共4条。其软元件可为除X外的所有位软元件(对16位指令,其数字规格为K1~K4;对32位指令,其数字规格为K1~K8)和所有的字软元件(对32位指令,A1、V除外)。

数据交换指令的编程举例如图3-90所示。

图3-90 数据交换指令的编程举例

3.2.3.5 程序分支指令

(1)跳转指令

跳转指令分为条件跳转指令(CJ、SCJ)和无条件跳转指令(JMP),共3条。其目标软元件为指针P0~P255。

条件跳转指令CJ是当CJ的执行条件接通时,执行指定的指针地址号所指引的程序。当执行条件断开(条件不满足)时,执行紧接CJ指令后的下一步程序。

条件跳转指令SCJ是当SCJ的执行条件从断开到接通时,从下一个扫描周期开始执行指定的指针地址号所指引的程序。当执行条件断开或从接通到断开时,执行紧接SCJ指令后的下一步程序。

CJ和SCJ的时序图如图3-91所示。

图3-91 CJ和SCJ的时序图

无条件跳转指令JMP用于无条件执行指定的指针地址号所指引的程序。

在使用跳转指令时需考虑以下几方面情况。

①定时器的线圈接通后,即使计时器的线圈由于执行CJ、SCJ、JMP指令而被跳过,该定时器继续计时。

②当线圈输出指令(OUT)被CJ、SCJ、JMP指令跳过时,无论该线圈支路的条件是否通断,线圈的状态保持不变。

③当用CJ、SCJ、JMP指令跳过一段在用户程序存储区存放的程序时,扫描时间缩短。

④使用CJ、SCJ、JMP指令也可将程序跳到步序号小的步序。但必须在WDT(警戒定时器)定时时间到达以前跳出。如图3-92所示。

图3-92 跳转指令回跳的情况

使用跳转指令时,若出现下列情况,将引起操作错误。

①跳转指令后的指针地址号P**(标号),在程序中的不同位置出现多次。

②跳转指令后面没有标号。

③跳转到END指令后面的标号。

④跳转到FOR~NEXT之中的某一步。

⑤跳转到子程序中。

跳转指令的编程实例如图3-93所示。

图3-93 跳转指令的编程实例

(2)子程序的调用及返回指令

子程序调用指令(CALL、CALLP)是当执行条件满足时,执行其指针(P**)所指定的子程序。CALL和CALLP指令最多允许5级嵌套。其目标软元件为指针P0~P253。

返回指令RET,是与CALL或CALLP指令成对使用的指令,当执行RET指令时,表示CALL或CALLP指令所调用的子程序结束,程序执行位于CALL或CALLP指令下面一步的顺控程序。

编程时,必须牢记在子程序的RET指令和顺控程序的END指令之间加一条NOP指令,否则,PLC将不能正常操作。

使用CALL(P)、RET指令时,若出现下列情况,将产生操作错误,且PLC停止操作。

①在执行CALL(P)指令后和RET指令前,已经执行了END或FEND指令。

②在执行CALL(P)指令前,已经执行RET指令。

③CALL(P)指令调用了标号P255。

④在执行RET指令之前,执行了JMP指令以致从子程序中跳出。

⑤嵌套级数多于5级。

CALL(P)和RET指令的编程实例如图3-94所示。

图3-94 CALL(P)和RET指令的编程实例

(3)微机程序调用指令

微机程序调用指令(SUB、SUBP)用来调用由用户自己编写的微机程序,并允许其运行。当所调用的微机程序运行结束(执行到RET指令)时,程序执行位于SUB或SUBP指令后的下一步开始的顺控程序。由SUB(P)指令调用的微机程序与顺控程序的结构关系如图3-95(a)所示。在微机程序区内(对A2N系列PLC,微机程序区为0~26K字节)可以建立多个微机程序,如图3-95(b)所示。

图3-95 SUB(P)指令调用的方法

使用时注意,一个SUB指令调用的一个微机程序的处理时间不能超过5ms,否则,在微机程序和PLC内部处理之间的操作配合将会失控,PLC不能正确工作。如果一个微机程序的执行处理时间超过5ms,可将其分成几个块按顺序调用,这种方式将会使一个SUB指令调用的微机程序的处理时间缩短。

(4)中断允许(EI)、禁止(DI)和返回(IRET)指令

对于A2N系列PLC,EI和DI的功能仅在特殊辅助继电器M9053断开时才起作用。如图3-96所示。当M9053接通时,EI、DI指令为允许、禁止通信刷新。

图3-96 中断EI/DI指令的格式

DI指令是禁止执行中断程序(即中断信号被忽略),直到执行EI指令为止。当PLC复位时,也禁止执行中断程序。

EI指令是允许执行中断程序。当中断程序结束时,用中断返回指令IRET返回。当要在中断程序中使用计数器时,应使用中断计数器。在执行中断程序过程中,不允许多个中断程序同时运行,因此DI置位(中断禁止)。

包含在MC指令中的EI、DI指令,将不受MC指令的执行与否的限制。但若在执行中断程序之前执行了IRET指令,PLC将停止操作。

3.2.3.6 刷新指令

刷新指令包括通信刷新指令(COM)、通信刷新允许/禁止指令(EI/DI)和部分刷新指令(SEG)4条。

(1)COM指令

COM指令用于加快和远程I/O站的数据通信,或当主站顺控程序的扫描周期大于从站顺控程序扫描周期时,用COM指令来主动接收数据。在执行COM指令时,PLC暂停对顺控程序的处理,而执行通用数据处理和通信刷新处理。这里的通用数据处理包括PLC和外部设备的通信、监视其他站、用计算机通信模块读取其他特殊功能模块的缓冲区。COM指令在顺控程序中可以使用任意次,此时顺控程序的扫描周期将增加通用数据处理和通信刷新时间。

(2)通信刷新允许/禁止(EI/DI)指令

EI/DI指令仅当特殊辅助继电器M9053接通时,才用于通信刷新允许/禁止(当M9053断开时,EI/DI用作中断允许/禁止),它们在梯形图下的指令格式如图3-97所示。EI为允许通信刷新,在顺控程序开始时,允许通信刷新;在END处理过程中,总是允许通信刷新。DI为禁止通信刷新,直到EI指令执行。若EI/DI指令包含在MC指令开始的程序段中,则EI/DI指令的执行与MC指令的执行与否无关。

图3-97 刷新EI/DI指令的格式

(3)SEG指令

SEG指令仅当M9052接通时,才用于部分刷新(当M9052断开时,SEG为七段译码)。当I/O的控制方式为刷新方式时,SEG在一个扫描周期内接收输入信号,并把输出信号输出到输出模块。在通常的刷新方式下,I/O信号是在执行完END指令后成批处理,而SEG指令让所指定的输入X、输出Y(数字规格为K1~K4)强制刷新。

SEG指令的编程举例如图3-98所示。

图3-98 SEG指令的编程举例

在图3-98中,当X1接通时,刷新Y10~Y27(共24点)。这里的24点是由B后面的数字确定的。比如B1(只能用通信继电器B),表示要刷新的软元件为8点,B2表示16点,B3表示3×8=24点,以此类推。但若设定为B0,则从所设定的软元件首地址开始,对所有的软元件全部刷新。图中的Y10表示要刷新的软元件(只能是输入继电器X或输出继电器Y)的首地址。而Y10和B3上面的K4,在本指令中没有什么含义,它为K1~K4,其功能均相同。