下表数据传送指令能够传送指定的数据到目标地址中。PMC中包含的常用数据传送指令如下所示:
序号 |
指令名称 |
功能号 |
功能 |
1 |
MOVB |
43 |
1字节的传送 |
2 |
MOVW |
44 |
2字节的传送 |
3 |
MOVD |
47 |
4字节的传送 |
4 |
MOVN |
45 |
传送任意数目的字节 |
5 |
MOVE |
8 |
逻辑乘数据传送 |
6 |
MOVOR |
28 |
逻辑或后的数据传送 |
7 |
XMOVB |
35 |
二进制编制数据传送 |
8 |
XMOV |
18 |
变址数据传送 |
9 |
DSCHB |
34 |
二进制数据检索 |
10 |
DSCH |
17 |
BCD数据检索 |
7XMOVB(二进制变址数据传送:SUB 35)
该指令能够读写数据表中任意位置的数据元素,其具备有两种模式:基础模式和扩展模式(通过“格式”参数选择),扩展模式相比于普通模式将允许多个数据被同时读写。具体功能说明如下:
(a)基础模式下读取数据表
(b) 扩展模式下的读取数据表
(c) 基础模式下写数据表
(d) 扩展模式下写数据表
指令格式:
(a) 基本模式
(b) 扩展模式
控制条件:
(a) 读、写指令(RW)
RW=0:从数据表中读数据。
RW=1:从数据表中写数据。
(b) 重置(RST)
RST=0:非重置状态。
RST=1:重置,W1=0。
(c) 执行指令(ACT)
ACT=0:不执行XMOVB,不改变W1状态。
ACT=1:执行XMOVB。
参数:
(a) 格式指定
基本模式下,该参数指定数据表中元素的长度。
0001:1字节数据。
0002:2字节数据。
0004:4字节数据。
扩展模式下,除了在第一位上设定1、2、4的字节长度外还需要设定参数的第2、3位,用于决定读取的元素个数,第4位保持0。
0nn1:读取nn个数据表元素,单个元素长度为1字节。
0nn2:读取nn个数据表元素,单个元素长度为2字节。
0nn4:读取nn个数据表元素,单个元素长度为4字节。
元素个数nn从00-99,但是设定为00、01时效果与基本模式下一样。
(b) 数据表容量地址
设定数据表容量,根据指定元素数据长度来选择,其设定范围为:
1字节元素:1至255。
2字节元素:1至16384。
4字节元素:1至16384。
(c) 数据表首地址
这样数据表总共占用的连续字节存储空间是(元素字节数)×(数据表元素个数)。
(d) 输入/输出数据地址
用于输入还是用于输出由输入信号决定,参数设定为(元素字节数)×nn(索引数据个数)的连续存储空间首地址。
(e) 索引存储地址
该地址存储需要进行读写数据的索引号,注意数据表的起始索引号为0,在扩展的指令格式中,该地址为连续索引号存储空间的首地址,注意索引号不能超过数据表的总个数,否者将导致W1=1。
错误输出(W1):
W1=0:无错误
W1=1:发现错误
出现错误主要有一下几种情况:
1、 如果索引号地址中的索引号超出了设定在参数2地址中存储数据表元素个数导致W=1,读和写操作将不予执行。
2、 在扩展模式中,如果有一个或者多个索引号超出了数据表的总个数导致W=1,这时候正确的索引号对应的输出地址中将能够执行输出输入,而异常索引号的输出地址将不执行输出输入操作。
指令示例:
该程序指令以扩展模式为例,读模式(R100.0=1),R9091.0为常0信号。参数0051表示需要进行操作的数据为5个1字节的二进制数,R1000为数据表元素个数存储地址,此处设定为20,R1010为数据表起始地址,这样R1010~R1029为数据表范围。R3000为索引号存储地址首地址(索引号共占用R3000~R3004),R2000为输入输出数据存储空间首地址(R2000~2004).则输出结果如下(这时W1=0):
8XMOV(变址数据传送:SUB 18)
读取数据表中任意位置的数据,数据表的数据类型为BCD编码形式。
注意:此处指定的数据表头地址被指定为表内号0。
指令格式:
控制条件:
(a) 指定数据表元素的位数(BYT)
BYT=0:2位BCD码(1字节)范围为0-99。
BYT=1:4位BCD码(2字节)范围为0-9999。
(b) 读写选择(RW)
RW=0:从数据表中读取数据。
RW=1:将数据写入数据表。
(c) 重置(RST)
ACT=0:不执行重置。
AXT=1:执行重置,置W1=0。
(d) 执行条件(ACT)
ACT=0:不执行XMOV,W1不改变。
ACT=1:执行XMOV。
参数:
(a) 数据表容量
数据表从0开始,如果数据表末尾为n,这需要设定n+1。这个值取决于控制条件“BYT”,其范围如下:
BYT=0:0~99
BYT=1:0~9999
(b) 数据表首地址
设定数据表的首地址。数据表的地址是固定的,因此必须实现决定数据表的地址,其占用存储空间为(数据字节数)×(数据个数)。
(c) 输入/输出数据地址
用于读取和写入数据,数据长度与参数1中设定的数据长度一致。
(d) 表内号地址
存放着进行读或者写操作的地址。
输出信号(W1):
W1=0:无错误。
W1=1:存在错误(当表的索引号超出数据表的范围的时候将出现错误)。
指令示例:
该示例程序中数据元素设定为为2位BCD码(R100.0=1),R9091.0为常0信号,则为读操作,参数10指的是数据表的长度,R1000~R1019为数据表存储空间,R2000为输入输出数据地址,R3000为索引号地址。则结果如下:
9DSCHB(二进制数据检索:SUB 34)
该功能指令能够在数据表中查找任意元素的位置,并将元素在表中的位置(以表的首地址为0计数)输出到指定地址中,如果有多个元素满足检索条件将输出第一个找到的位置(按从头到尾顺序检索)。该功能指令的数据类型为二进制格式。
该指令的数据均存放在中间地址中,在梯形图存入ROM后也能够修改数据表长度而不用重写梯形图。
注意:在该指令中你可以用R、E或D任意的地址指定数据表。
指令格式:
控制条件:
(a) 重置(RST)
RST=0:不执行重置。
RST=1:执行重置。
(b) 启动(ACT)
ACT=0:不执行 DSCHB指令,W1不改变。
ACT=1:执行指令,若找到了数据,将输出数据所在的位置;若找不到数据则W1=1。
参数:
(a) 格式指定
指定数据表中数据的字节数,在该参数的第一位上进行指定,其设定值含义如下:
1:1字节
2:2字节
4:4字节
(b) 数据表容量地址
数据表长度的范围由参数1的格式来确定,数据表中元素个数为n+1(表头号为0,表尾号为n),其具体范围如下:
1字节:1至255
2字节:1至16384
4字节:1至16384
(c) 数据表首地址
指定数据表的首地址。
(d) 检索数据地址
指定存放进行检索数据的地址。
(e) 检索结果输出地址
当检索目标找到后,将检索结果输出到该地址上。该地址要求与指令格式一样的存储空间。
输出结果(W1):
W1=0:找到检索数据。
W1=1:未找到检索数据。
指令示例:
程序指令中,参数0002指定了数据表元素为2字节二进制数,R1000中存放着数据表数据个数,此处设定为5,R1010~R1019为数据表存储空间,R2000为要进行检索的数据此处设定为5,R3000为检索结果输出地址,结果如下:
检索结果 |
检索数据 |
数据表 |
R3000 |
R2000 |
R1010 |
0 |
5 |
5 |
4 |
||
3 |
||
2 |
||
1 |
10DSCH(数据检索:SUB 17)
该功能指令能够在数据表中查找任意数据,并将该数据在表中的位置(表头为0开始计数)输出到指定地址中,该功能指令的数据类型为BCD编码。
注意:在该指令中可以用R、E或D任意的地址指定数据表。
指令格式:
控制条件:
(a) 指定数据长度(BYT)
BYT=0:数据表中数据为2位BCD码。
BYT=1:数据表中数据为4位BCD码。
(b) 重置(RST)
RST=0:不进行重置。
RST=1:进行重置,W1=0。
(c) 启动(ACT)
ACT=0:不执行DSCH,W1不改变。
ACT=1:执行DSCH,如果在表内找到期望数据,则置W1=0;如果未找到,则置W1=1。
参数:
(a) 数据表容量
指定数据表的大小,其范围取决于控制条件BYT,具体范围如下:
BYT=0:1至99
BYT=1:1至9999
(b) 数据表首地址
指定数据表存储空间的首地址。
(c) 检索数据地址
指定存储检索数据的存储地址。
(d) 检索结果输出地址
一旦检索到目标,该目标所在的编号将被输出,输出结果需要的字节数与数据元素字节数相同。
输出(W1):
W1=0:找到检索数据。
W1=1:未找到检索数据。
指令示例:
该程序指令为2位BCD码(BYT=0)数据检索指令,数据表长度为5个2位BCD码,R1000~R1004为数据表范围,R2000为需要检索的数据地址(设定检索数据为5),R3000为检索结果输出地址,则结果为2、W1=0。
本文转自:FANUC数控技术
相关链接:
问答社区 发起问答 报警查询 技术文章 维修服务 资料下载 加交流群 申请 VIP
本文转载来自【北京FANUC】,仅供大家学习交流,如侵权请联系站长删文。