FANUC 一起编写M代码译码出现故障的案例
发布时间:2026-01-09 10:47 [ 我要自学网原创 ] 发布人: 快乐小女 阅读: 367

问题描述

最近有个小伙伴在PMC中编写完M代码译码指令后,实际测试程序时发现当执行M代码M281时,系统中M代码译码信号F1010(双系统)显示为25,但是M281译码信号可以正常输出,而M25指令的译码信号也会输出,不清楚是什么问题,如下图。


处理过程

首先关于系统的M代码译码信号F1010为何不显示为实际执行的M代码281而是显示为25,这是因为PMC中编写的DECB译码指令,指定的字节型式为单字节,数据有效范围为:-128~127;


我们系统中执行的M281代码,将281转换为2进制是:0000 0001 0001 1001,而在译码指令中由于设定的字节为单字节,所以系统只识别单字节数据范围,所以对于超出单字节的部分就会自动忽略,从而系统只会识别数据:0001 1001;而这个二进制转换为十进制就是:25;所以这就是为什么执行M281,而F1010会显示25的原因。

至于为什么F1010显示为25,执行M281的M代码却可以正常进行译码?这个可能是系统出于某种原因考虑而强制进行的译码。

那如果将DECB译码指令设置成单字节数据,M代码也可以正常译出,那是不是这个字节数据就没有必要设置成双字节等数据格式了?其实并不是,如果我们只用单字节数据会出现以下这种问题,就是当我们执行M281时,M281代码会输出,但是M25代码的信号也会同时输出,会出现M代码异常输出的现象,这就是本文中所出现的异常现象。


那么如何解决这一问题呢?

其实只要我们按照DECB译码指令的使用规范,确认设备使用的最大M代码位数是多少,根据这个数据的大小,选择最适合DECB译码指令的字节数据大小,然后应用到所有的DECB指令中。一般来说2字节的数据大小就可以满足大多数设备的M代码指令范围了。

如下图,我们将PMC中所有的DECB译码指令的字节数据修改为2字节,再执行M代码时,M代码就可以正常输出了。


数控车(FANUC系统)宏程序教程
我要自学网商城 ¥100 元
进入购买
文章评论
0 条评论 按热度排序 按时间排序 /350
遵守中华人民共和国的各项道德法规,
承担因您的行为而导致的法律责任,
本站有权保留或删除有争议评论。
参与本评论即表明您已经阅读并接受
上述条款。
V
特惠充值
联系客服
APP下载
官方微信
返回顶部
分类选择:
电脑办公 平面设计 室内设计 室外设计 机械设计 工业自动化 影视动画 程序开发 网页设计 会计课程 兴趣成长 AIGC