搜索文章与案例

Technical Article

三菱 M80 G04 改成宏变量:0.5 秒为什么变成 500 秒?

三菱M800/M80在G94、Decpt2=0时,G04 X500停0.5秒,改成X#100且变量为500却停500秒。按U版原厂手册拆解宏变量的小数点规则,用秒接口、毫秒换算和重复调用回归验证修复。

把原来停半秒的 G04 X500 改成宏变量,赋值 #100=500 后写 G04 X#100,程序可能要等八分多钟才往下走。遇到这种变化,先查停留值的单位:在本文限定的条件下,原来的500按毫秒解释,宏变量里的500却按秒解释,停留时间放大了1000倍。

本文限定三菱 M800/M80 加工中心系统,依据《M800/M80/E80/C80 Series Programming Manual (Machining Center System)》IB-1501277-U,第8章及第14章。算例使用独立的 G94 G04 时间停留,#1078 Decpt2=0,机床具备所用宏变量功能。以下数字是按手册规则推算的教学结果,不是实机测试记录;现场软件、机床厂规格和变量占用仍须逐项核对。

1. 代码只改了一处,单位却换了

原程序:

G94
G04 X500

错误的变量化改写:

#100=500
G94
G04 X#100

这两段都没有轴移动。G04所在程序段里的X是停留值,不是X轴位移;没有G04时,不能沿用这个判断。这里把G94单独写出,是为了明确时间停留的模式,不让前段遗留的G95混进算例。G94会持续生效,G04结束后不会自动恢复G95;接回原程序前,须显式恢复后续加工要求的进给模式,并同时核对F的单位和值。

在#1078=0时,无小数点的X500按500毫秒执行,也就是0.5秒。可是变量引用总按带小数点的数据解释。官方第477页用“变量值10,X#100相当于X10.”说明这条规则,第232页的G04对照表也直接验证了宏变量停留。因此,变量值500代入G04的X地址后,相当于X500.,结果是500秒,即8分20秒。

理论差值:500−0.5=499.5秒。理论倍率:500÷0.5=1000。将“常数文本”换为“变量数值”时,不能只确认两个地方都写了500。

G94且Decpt2为0时,X500按500毫秒得到0.5秒,宏变量500按秒得到500秒;变量改为0.5后恢复半秒。三条为单位解析路径,非时间长度比例图。
图1:G94且Decpt2为0时,X500按500毫秒得到0.5秒,宏变量500按秒得到500秒;变量改为0.5后恢复半秒。三条为单位解析路径,非时间长度比例图。

2. 先锁定条件,别为了半秒去改机床参数

第230页说明,#1078 Decpt2=1会把无小数点的X停留值按秒解释。若现场本来就是1,G04 X500原本就应为500秒,不能套用“原来半秒”的前提。核对参数值用于解释当前程序,不是让读者把参数改成0。#1078还影响部分无小数点坐标输入,不能只为修正这段停留而改全机设置。

在独立G94 G04中,下面这张对照只讨论X地址:

写法#1078=0#1078=1
G04 X5000.5秒500秒
G04 X500.500秒500秒
G04 X0.50.5秒0.5秒
#100=500 后 G04 X#100500秒500秒
#100=0.5 后 G04 X#1000.5秒0.5秒

P地址另受#8112 DECIMAL PNT-P及#19014 G04 P factor等规则影响,不能把本表的X换成P就当作等价程序。钻孔、攻丝等固定循环的等待规则也另有条件,不纳入这次改写。

3. 两种修复,按接口的单位选一种

如果宏的调用方可以统一约定用秒,直接把输入改成0.5:

#100=0.5 (DWELL INPUT IN SECONDS)
G94
G04 X#100

如果现有调用方已经按毫秒传入500,就保留输入,在输出前换算到另一只工作变量:

#100=500 (DWELL INPUT IN MILLISECONDS)
#101=[#100/1000.] (WORK VALUE IN SECONDS)
G94
G04 X#101

两种方案的理论停留都是0.5秒。固定半秒而无需传参时,直接写G94、G04 X0.5更容易检查。例中的#100/#101是教学占位号,接入前必须确认它们未被测头、换刀、机床厂宏或其他工序占用,也未受保护;不要整段复制到正在生产的程序里试跑。复位或上电后,公共变量可能按机床设置保留或清空,不能假定它仍有上次的值。重新起动时不得跳过输入初始化和单位换算,从G04中间行起跑前必须另行确认变量有效。

毫秒方案不要写成#100=[#100/1000.]后又在下次调用中继续除。只要调用方没有重新赋值,500第一次变0.5,第二次就会变0.0005。更稳妥的接口是保留原始输入,每次从输入算出工作值,转换只做一次。若调用方已经传秒,再除1000同样会出错。

秒接口直接输出,毫秒接口另用工作变量除1000;100、500、1250毫秒在重复换算中分别保持0.1、0.5、1.25秒,原输入不变。
图2:秒接口直接输出,毫秒接口另用工作变量除1000;100、500、1250毫秒在重复换算中分别保持0.1、0.5、1.25秒,原输入不变。

4. 用三组数值验收,不能只看程序不报警

先做NC文本和变量计算检查,再在机床厂允许的仿真或受控无切削条件下验证。不要为了证明错误,直接执行500秒的错误段,也不要在刀具接触工件时做停留试验。验证段应从确定的安全状态开始,不包含轴运动、换刀、主轴或其他辅助动作。

毫秒输入第一次换算不重设输入,再换算一次两次理论停留
1000.1秒0.1秒各0.1秒
5000.5秒0.5秒各0.5秒
12501.25秒1.25秒各1.25秒

验收时至少留下四项证据:
(1)模式与设置:确认G94、当前#1078及实际控制器版本;本文不要求修改参数。
(2)数据流:秒接口的输入应为0.5;毫秒接口的输入应保持500,工作变量应为0.5。第二次转换后也应如此。
(3)NC输出:G04之后再写X停留值,赋值与G04分成不同程序段;检查后处理没有把0.5格式化成无小数点的整数。
(4)时间记录:分别记录预期停留值、观察到的停留段时长以及测量分辨率。先按机床和记录工具的能力约定容差,不能把手机秒表的小数位当成控制器精度,也不能据此虚报“通过”。

计时若异常,先查是否有进给保持、跳转信号取消停留、上一段减速,或同段M/S/T/B动作。手册第231页说明这些因素会改变观察到的等待过程。总程序时间不能直接当作G04设置值,机器锁住也不等于停留被跳过。

5. 后处理要保存的是“数值加单位”

这次问题出在常数改宏之后,接口还把500叫作“半秒”。在后处理配置或宏说明里,应明确写“停留输入,单位秒”或“停留输入,单位毫秒”,并把转换放在一个固定位置。验收既看最终NC,也看输入值是否被意外覆盖,尤其要补一次不重新赋值的重复调用。

不同系统的G04单位也不能照抄,可对照站内Fagor G04 停半秒:8055 的 K50,8060 为什么写 K0.5;落到实际机床前,按NC 程序修改后的最低安全检查清单补齐检查。本例不改变机床参数,也不证明任何未经验证的宏程序可以直接投入切削。

官方依据:三菱电机 IB-1501277-U 官方编程手册,第37–38页(小数点输入)、第150页(G94/G95模式),第230–232页(G04时间停留及对照表),第477页(变量引用规则),第474及478页(宏变量语法、保留/清除与保护条件)。上述页码为印刷页码,PDF阅读器页序会有偏移。