首页 理论教育 比较译码转换传送判别指令解析

比较译码转换传送判别指令解析

时间:2023-06-18 理论教育 版权反馈
【摘要】:图8.3-12 COIN指令的编程格式指令的控制条件中的BYT为数据长度选择,BYT=0为2位BCD码;BYT=1为4位BCD码。图8.3-16 DEC指令的编程格式图8.3-16中的ACT为译码启动信号、WRT为译码输出,其作用和含义与指令COIN相同。DCNV指令的控制条件如下。

比较译码转换传送判别指令解析

1.数据比较指令

FANUC集成式PMC可使用的数据比较指令有COIN、COMP、COMPB、PARI等,其中,COIN用于一致比较,COMP用于十进制比较;COMPB用于二进制比较;PARI为奇偶校验指令。比较指令的编程格式和功能如下。

1)COIN指令。COIN指令用于十进制数据(BCD码)的一致判断,当输入数据和基准数据一致时,结果输出为“1”,否则为“0”,指令的编程格式如图8.3-12所示。

978-7-111-42089-7-Chapter08-52.jpg

图8.3-12 COIN指令的编程格式

指令的控制条件中的BYT为数据长度选择,BYT=0为2位BCD码;BYT=1为4位BCD码。ACT为数据比较启动信号,ACT=1时,数据比较开始,结果输出状态将更新;ACT=0时,不进行数据比较,结果输出保持不变。

指令参数中的输入数据格式用来定义输入数据的格式,设定0时,输入数据以常数形式指定;设定1时,输入数据以存储器地址形式指定。指令中的输入数据是按规定的格式输入的被比较数据;基准数据是数据比较的基准,它需要以存储器地址的形式指定。

结果输出WRT为比较结果的状态输出,如输入数据和基准数据一致,WRT输出为1,否则WRT为0。

2)COMP指令。COMP指令用于十进制数(BCD码)的大小比较,当输入数据小于基准数据时,结果输出为“1”,否则输出为“0”,指令的编程格式如图8.3-13所示。

978-7-111-42089-7-Chapter08-53.jpg

图8.3-13 COMP指令的编程格式

COMP指令的控制条件、参数要求与COIN指令相同,如输入数据小于基准数据,结果输出WRT为“1”;否则WRT输出为“0”。

3)COMPB指令。COMPB指令用于二进制数据的大小比较,其比较结果存储在PMC的内部特殊继电器R9000中,指令的编程格式如图8.3-14所示。

COMPB指令的功能、控制条件、参数与COMP指令基本相同,但其输入数据的格式和长度指定需要通过输入数据格式参数定义。输入数据格式参数为4位十进制数,其前2位用于数据格式定义,00位常数,10为存储器地址;后2位定义数据长度,01为1字节;02为2字节;04为4字节。

978-7-111-42089-7-Chapter08-54.jpg

图8.3-14 COMPB指令的编程格式

数据比较结果存储于PMC的特殊内部继电器R9000上,当输入数据等于基准数据时,R9000.0=1;当输入数据小于基准数据时,R9000.1=1。

4)PARI指令。PARI指令用于数据的奇偶性判断,多用于通信。奇偶校验按字节进行,校验出错时可在WRT上输出错误信号,指令的编程格式如图8.3-15所示。

978-7-111-42089-7-Chapter08-55.jpg

图8.3-15 PARI指令的编程格式

PARI指令控制条件中的O.E用来定义校验方式,O.E=0为偶校验;O.E=1为奇校验。RST为复位输入,RST=1时错误输出WRT将复位。ACT为数据校验启动输入,ACT=1时校验开始,结果输出WRT状态更新;ACT=0时数据校验无效,输出结果WRT保持不变。

2.数据译码指令

数据译码指令的作用与数据比较指令类似,当输入数据与基准数据(译码值)一致时,其执行结果输出为1。FS-0iD的PMC译码指令有DEC、DECB两种,DEC用于十进制(BCD码)译码;DECB用于二进制译码。指令的编程格式和功能如下。

1)DEC指令。DEC指令用于2位十进制数译码,输入数据应为BCD格式的十进制数,指令的编程格式如图8.3-16所示。

978-7-111-42089-7-Chapter08-56.jpg

图8.3-16 DEC指令的编程格式

图8.3-16中的ACT为译码启动信号、WRT为译码输出,其作用和含义与指令COIN相同。

指令参数中的输入数据为需要译码的输入数据,它应以存储器地址的形式指定(图中为R200)。指令参数中的译码参数用来定义基准数据与译码位数,以4位十进制常数的形式定义,前2位定义基准数据(译码值,图中为30);后2位定义译码位数,设定01时,只对个位译码;设定10时只对十位译码;设定11时,同时对个位和十位译码。例如,对于图8.3-16的程序,如果输入数据R200=30,其输出WRT=1;如将译码参数定义为3001,则只要R200的个位为0,其输出WRT就为“1”,即在R200=00、10、20、…90时,输出WRT均为1。

2)DECB指令。DECB指令可对1、2或4字节的二进制数进行连续译码,每次可译出8个连续数据,指令的编程格式如图8.3-17所示。

978-7-111-42089-7-Chapter08-57.jpg

图8.3-17 DECB指令的编程格式

指令中的ACT为译码启动信号,其含义与指令COIN相同。指令参数的要求如下。

输入格式:以常数形式定义的输入数据长度,1、2、4分别代表输入数据为1、2、4字节的二进制数。

输入数据:需要译码的输入数据,应以存储器地址的形式指定(图中为F10)。

基准数据:以常数形式定义的基准数据的起始值,由于DECB可进行8个连续正整数的译码,故定义为00时,就相当于给定了8个连续基准数据00、01、02、…07。

结果寄存:结果寄存器应为1字节的内部继电器或数据寄存器(图中为R200),它用来存储8个连续数据的比较结果,当输入数据与基准数据的起始值一致时,寄存器的bit0为“1”;当输入数据与第2个基准数据一致时,寄存器的bit1为“1”,依次类推。

例如,对于图8.3-17的程序,因为F10在FS-0iD上为CNC的4字节二进制M代码输出,因此,图示的指令可对CNC的M00~M07指令进行一次性译码,其结果保存到R200.0~R200.7上,即:CNC输出M00时,R200.0=1、输出M01时,R200.1=1等。

3.数据转换指令

PMC的数据转换指令可用于二/十进制转换和任意数据转换。数据转换指令有DCNV、DCNVB和COD、CODB两类,前者用于二/十进制转换;后者用于任意数据\转换。

1)DCNV指令。数据转换指令DCNV可将输入的二进制数转换为十进制数(BCD码),或反之,指令的编程格式如图8.3-18所示。

DCNV指令的控制条件如下。

BYT:输入/输出数据的格式(字长)选择。BYT=0为1字节;BYT=1为2字节。

CNV:数据转换方式选择。CNV=0为二进制转换到十进制;CNV=1为十进制转换到二进制。

RST:复位输入,RST=1时可将错误输出WRT复位。

978-7-111-42089-7-Chapter08-58.jpg

图8.3-18 DCNV指令的编程格式

ACT:数据转换启动输入,ACT=1时启动数据转换。

指令的参数要求如下。

输入数据地址:定义需要进行转换的数据存储器地址。

输出数据地址:定义保存转换结果的数据存储器地址。

WRT:错误输出,当转换数据格式错误或数据溢出时,WRT输出“1”。

2)DCNVB指令。DCNVB指令的作用与DCNV基本相同,但它可用于4字节数据转换,且可转换负数,指令的编程格式如图8.3-19所示。(www.xing528.com)

指令的控制条件中的CNV、RST、ACT含义同DCNV指令。

控制条件SIN用来选择十进制符号,如SIN=1,在十进制转换为二进制时,其输入数据为十进制数负数;当输入数据为十进制正数或进行二进制转换为十进制时,应定义SIN=0。在进行二进制到十进制转换时,数据的符号在特殊内部继电器R9000.1上输出,R9000.1=1,代表所转换的数据为负数。

指令参数中的数据格式用来指定数据长度,设定1、2、4分别代表数据的长度为1、2、4字节;错误输出WRT在转换数据格式错误或数据溢出时为“1”。

978-7-111-42089-7-Chapter08-59.jpg

图8.3-19 DCNVB指令的编程格式

3)COD指令。COD指令用于任意十进制数据的转换,它可用于F1位数或F2位数进给指令的译码,以便将加工程序中的F0~F9或F00~F99指令转换为4位实际进给速度值。指令的编程格式如图8.3-20所示。

COD指令控制条件中的BYT为数据表中的数据格式(字长)选择,BYT=0为2位十进制数00~99(BCD码);BYT=1为4位十进制数0000~9999。控制条件RST为复位输入,RST=1时,可将错误输出WRT复位;ACT为数据转换启动输入,ACT=1时,启动数据转换。

978-7-111-42089-7-Chapter08-60.jpg

图8.3-20 COD指令的编程格式

指令的参数要求如下。

数据表长度:以常数的形式所定义数据表的长度,输入范围为00~99。

转换数据输入地址:以存储器地址形式指定的转换数据,转换数据的范围应为00~99。

转换数据输出地址:指定保存转换结果的存储器起始地址。

数据表:按照次序排列的转换数据表,最大允许100组数据。

错误输出WRT:数据格式错误或数据溢出时为“1”。

COD指令的数据转换以“查表”的方式进行,其转换过程如图8.3-21所示。

例如,当图8.3-20所示的指令用于F2位数译码时,假设编程指令F00、F01、F02、F03所对应的实际进给速度值分别为100、200、500、1000mm/min;则存储器R200的内容应为CNC输出到PMC的F2位数代码,数据表中应存储F2位数代码对应的实际进给速度值100、200、500、1000。这样,如果R200为02(F2位数代码F02),由于数据表中存储的第3个数据(地址为02)为0500,因此,转换结果存储器R100、R101的内容将为0500;如果R200为03(F2位数代码F03),则R100、R101的内容将为1000;故可将编程中的F2位进给速度指令F02、F03转换成实际进给速度500、1000。

978-7-111-42089-7-Chapter08-61.jpg

图8.3-21 COD指令的数据转换

4)CODB指令。CODB指令用于任意二进制数据转换,其作用和指令COD类似,指令的编程格式如图8.3-22所示。

978-7-111-42089-7-Chapter08-62.jpg

图8.3-22 CODB指令的编程格式

CODB的转换数据地址、转换表中的数据均以二进制格式存储,数据表的长度可达256组数据。

CODB指令的数据表数据格式需要通过指令中的数据格式参数定义,数据表中的数据格式(长度)设定值可为1、2、4,以定义数据表中的数据为1、2、4字节二进制数,因此,CODB指令数据表中的数据最大可为232-1。

4.数据传送指令

数据传送指令包括常数传送和存储器传送两类,常数传送指令分十进制常数传送NUME和二进制常数传送NUMEB两种;存储器传送指令分字节、字、双字和多字节传送四种。

1)NUME指令。NUME指令在FANUC资料中称常数定义指令,该指令用于十进制常数传送,它可将常数00~99(1字节)或0000~9999(2字节)传送到指定的存储器中。指令的编程格式如图8.3-23所示。

978-7-111-42089-7-Chapter08-63.jpg

图8.3-23 NUME指令的编程格式

指令控制条件中的BYT用来定义常数的格式(字长),BYT=0为2位十进制数00~99(BCD码);BYT=1为4位十进制数0000~9999。ACT为指令执行启动信号,ACT=1时执行传送操作。数据存储器地址用来指令传送目标位置。

2)NUMEB指令。NUMEB指令用于二进制常数传送,它可将1、2、4字节的十进制常数转换为二进制格式,并传送到指定的存储器中。指令的编程格式如图8.3-24所示。

978-7-111-42089-7-Chapter08-64.jpg

图8.3-24 NUMEB指令的编程格式

指令参数中的数据长度用来定义常数的字长,输入值1、2、4代表1、2、4字节。需要传送的常数以十进制形式表示,它在传送过程中可自动转换为二进制格式,并保存到数据存储器地址指定的存储器上。

3)MOVB、MOVW、MOVD指令。MOVB、MOVW、MOVD指令用于字节、字、双字传送,它可将1、2、4字节的数据从源存储器传送到目标存储器中。指令的编程格式如图8.3-25所示。

4)MOVN指令。MOVN指令用于多字节传送,它可一次性将最大200字节的连续数据从一个存储器区传送到另一个存储区,指令作用与MOVB相同,编程格式如图8.3-26所示。指令中的数据长度参数用来定义传送数据长度,输入范围为1~200。

978-7-111-42089-7-Chapter08-65.jpg

图8.3-25 MOVB、MOVW、MOVD指令的编程格式

978-7-111-42089-7-Chapter08-66.jpg

图8.3-26 MOVN指令的编程格式

5.数据判别指令

数据判别指令为数据比较指令的扩展,它包括二进制格式带符号数据的等于(EQ)、不等于(NE)、大于(GT)、小于(LT)、大于等于(GE)、小于等于(LE)等大小判别和范围判别(RNG)两类,每类指令又分字节、字、双字3条,指令代码最后字符为数据长度代码,B代表1字节、W代表2字节、D代表4字节,例如,EQB为1字节、EQW为2字节、EQD为4字节二进制数的等于判别等。指令编程要求和功能如下。

1)大小判别指令。数据大小判别指令可用于1、2或4字节二进制数的等于(EQ)、不等于(NE)、大于(GT)、小于(LT)、大于等于(GE)、小于等于(LE)判别,数据大小判别指令除了指令代码和SUB号不同外,其指令格式、控制条件、参数等内容均相同。指令的编程格式如图8.3-27所示。

978-7-111-42089-7-Chapter08-67.jpg

图8.3-27 大小判别指令的编程格式

大小判别指令在ACT为1时启动,如果输入数据等于(EQ)、不等于(NE)、大于(GT)、小于(LT)、大于等于(GE)、小于等于(LE)基准数据,输出WRT为“1”,否则,WRT为0。

2)范围判别指令。数据范围判别指令可用于1、2或4字节二进制数的范围判别,指令代码最后字符为数据长度代码,B代表字节、W代表字、D代表双字。数据范围判别指令除了指令代码和SUB号不同外,其指令格式、控制条件、参数等内容均相同。指令的编程格式如图8.3-28所示。

978-7-111-42089-7-Chapter08-68.jpg

图8.3-28 范围判别指令的编程格式

范围判别指令在ACT为1时启动,如果输入数据在操作数1和操作数2的范围内,输出WRT为“1”,否则,WRT为0。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈