FANUC数控技术的各位朋友们,在上个月我们为大家推出了系统常见问题排查的系列,是不是很有帮助呢?本月起,我们要推出一个新主题——常用PMC功能指令介绍。希望学习PMC编程或者正为梯形图所困的你,一定可以通过这一系列的介绍有所收获!
下表数据传送指令能够传送指定的数据到目标地址中。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数据检索 |
MOVB指令从一个指定源地址传送1个字节数据到一个指定的目标地址。
指令格式:
控制条件:
(a) 执行条件
ACT=0:不执行传送。
ACT=1:执行一个字节的传送。
参数:
(a) 传送源地址
指定数据传送的源地址。
(b) 传送目标地址
指定数据传送的目标地址。
指令示例:
R1000为源数据地址,R1001为传送目标地址,当R100.0=1时,R1000中的二进制数复制到了R1001中。
执行前 | 执行后 | ||
源数据地址R1000 | 目的传送地址R1001 | 源数据地址R1000 | 目标传送地址R1001 |
100 | 0 | 100 | 100 |
MOVW指令从一个指定源地址传送2个字节数据到一个指定的目标地址。
指令格式:
控制条件:
(a) 执行条件
ACT=0:不执行数据传送。
ACT=1:执行2字节的数据传送。
参数:
(a) 传送源地址
指定传送连续2字节源地址的首地址。
(b) 传送目标地址
指定连续2字节目标地址的首地址。
指令示例:
R1000~R1001存放2字节的源数据,R1002~R1003为传送目标地址,当R100.0为1时,R1000~R1001中的二进制数将被复制到R1002~R1003中。
执行前 | 执行后 | ||
源数据地址R1000 | 目的传送地址R1002 | 源数据地址R1000 | 目标传送地址R1002 |
30000 | 0 | 30000 | 30000 |
MOVD指令从一个指定源地址传送4个字节数据到一个指定的目标地址。
指令格式:
控制条件:
(a) 执行条件
ACT=0:不执行数据传送。
ACT=1:执行4字节的数据传送。
参数:
(a) 传送源地址
指定连续4字节源地址的首地址。
(b) 传送目的地址
指定连续4字节目的地址的首地址。
指令示例:
R1000~R1003存放4字节的源数据,R1004~R1007为4字节目的存储地址,当R100.0为1时,R1000~R1003中的二进制数将被复制到R1004~R1007中。
执行前 | 执行后 | ||
源数据首地址R1000 | 目的传送首地址R1003 | 源数据首地址R1000 | 目的传送首地址R1003 |
655350 | 0 | 655350 | 655350 |
MOVN指令从一个指定源地址传送任意字节数据到一个指定的目标地址。
指令格式:
控制条件:
(a) 执行条件(ACT)
ACT=0:不执行数据传送指令。
ACT=1:执行数据传送指令。
参数:
(a) 传送字节数
传送字节数允许指定1到9999,奇数和偶数皆可,但要确认地址范围必须在PMC地址范围内。
(b) 传送源地址
指定连续N字节存储空间的首地址。
(c) 传送目标地址
指定连续N字节的存储空间的首地址。
指令示例:
该程序指令中指定了需要传送的数据为2字节(参数1为2),同时指定了R1000~R1001为传送源地址,R1002~R1003为传送目标地址。当R100.0=1时R1000~R1001的二进制数将被传送到R1002~R1003中。
逻辑乘数据传送指令将输入数据和逻辑乘数据进行按位与运算,所得的结果输出到指定地址中,数据大小为1字节。该指令也可用于清零8位数据里面不需要的位。
指令格式:
控制条件:
(a) 输入信号(ACT)
ACT=0:指令不执行。
ACT=1:执行逻辑乘指令。
参数:
(a) 逻辑乘法数据高四位
二进制数形式输入。
(b) 逻辑乘法数据低四位
二进制数形式输入。
(c) 输入数据地址
源数据所在一个字节存储空间地址。
(d) 输出地址
指定逻辑乘后输出的地址(一个字节)。
指令示例:
该程序指令的逻辑乘法数据为10011111,假设R1000中数据为10111111,则R100.0=1时输出结果如下:
逻辑乘法数据 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 |
操作数据 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
输出数据 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 |
计算结果10011111输出到R1001中。
该功能指令实现将输入数据与逻辑和数据进行逻辑和运算后输出到指定地址中。
指令格式:
控制条件:
(a) 执行条件(ACT)
ACT=0:不执行MOVOR指令。
ACT=1:执行MOVOR指令。
参数:
(a) 输入数据地址
一个字节的输入数据地址。
(a) 逻辑和数据地址
一个字节的逻辑和数据地址。
(b) 输出数据地址
一个字节的结果输出数据地址。
注意:其中逻辑和数据地址和输出数据地址可以为同一个地址,运算后逻辑和数据被输出数据替换。
指令示例:
程序指令中R1000为输入数据地址,假设其中的值为11011100,R1001为逻辑或数据地址,假设其中的值为10011011。当R100.0则计算结果如下:
源操作数 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 |
逻辑和数据 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 |
运算结果 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
计算结果11011111存入R1002中。
联系客服