Technical Article
三菱 M80 的 G52 为什么还在?切换 G54/G55 不会清零
三菱 M800/M80 加工中心切回 G54 后仍偏位,先查 G52 清零时的工件坐标与 G90/G91。用坐标验算说明独立偏移、增量累加和 Mastercam 后处理的工位交接。
一套夹具在 G54 下加工,程序里用 G52 把原点挪到第二个工位;中间切到 G55,回到 G54 后,刀路还是整体偏了一段。打开工件坐标表,G54 的数值又没有改。遇到这种情况,先沿着程序找 G52,尤其要看它在哪个工件坐标系下建立、在哪个坐标系下清除。
三菱 M800/M80 加工中心系统中,G54~G59 各自保存自己的 G52 局部偏移。切换 G55 只会换用 G55 那一组状态;再次选 G54,原来挂在 G54 上的局部偏移仍然有效。下面以普通三轴、毫米制的 XY 平移说明这个问题。
在 G55 清过零,为什么 G54 还偏?
把运动段暂时拿掉,只看这几行坐标状态:
N10 G90 G54 N20 G52 X40. Y20. Z0. N30 G55 N40 G52 X0. Y0. Z0. N50 G54
N20 给 G54 建立了 X 向 40 mm、Y 向 20 mm 的局部偏移。N40 执行时,当前工件坐标已经是 G55,所以清掉的是 G55 的 G52。到 N50,控制器重新选中 G54,X 向 40 mm、Y 向 20 mm 又成为当前有效的局部偏移。问题出在清除对象,不能用“程序中出现过一行 G52 X0. Y0. Z0.”判断所有工位都已经归零。
G52 指令段本身不产生轴运动。它改变的是后续程序坐标的参照原点,因此常见的现象是:执行 G52 时机床没动,等到后面的定位段才发现位置不对。排查时要向前看状态建立过程,不能只盯住发生偏位的那一行坐标。
同一个 X10. Y10.,到底会落在哪里?
先在 G54 内看。没有局部偏移时,程序点 X10. Y10. 就是 G54 内的 (10,10)。加入 G52 X40. Y20. 后,局部原点位于 G54 内的 (40,20),同样的程序点会落在 G54 内的 (50,30)。两次目标位置的差值恰好是 (40,20)。

再给它一个机床坐标中的位置。设 G54 原点为 (100,100),G55 原点为 (260,100),没有外部工件偏移、G92、旋转或缩放叠加,也不计入刀具半径补偿等会改变 XY 目标位置的补偿。程序点都取 (10,10):
G54 带着 (40,20) 的 G52:目标点为 (100,100)+(40,20)+(10,10)=(150,130)
G55 的 G52 已清零:目标点为 (260,100)+(0,0)+(10,10)=(270,110)
再回到 G54:仍然是 (150,130),不会自动变回 (110,110)
这个算式还可以反过来查后处理。如果 Mastercam 输出的 XY 已经包含了第二工位的平移,控制器端又执行一遍相同的 G52,就会把这次平移重复算进去。接程序时先明确:平移由后处理完成,还是由控制器完成;同一份偏移只保留一个计算入口。
G52 后面的零,还要看前面是 G90 还是 G91
在 G90 下,G52 指定局部原点的位置;在 G91 下,G52 给现有局部偏移再加一段增量。以 X 方向为例,每组都从零偏移开始:连续两次 G90 G52 X40.,最后仍是 40 mm;连续两次 G91 G52 X40.,最后是 80 mm。
所以已有 X 向 80 mm 偏移时,G91 G52 X0. 只是再加零,偏移仍为 80 mm。要把当前工件坐标系中的三轴局部偏移明确清掉,应写成 G90 G52 X0. Y0. Z0.。若程序还涉及其他局部偏移轴,需要把那些轴也纳入清除范围。

这里也别顺手把一行 G90 插进原程序就结束。G90 会影响后面的定位段;如果原程序原本要继续做增量运动,还需要按原来的编程意图安排后续 G90/G91。修改一个坐标状态,要同时看它前后的状态交接。
后处理里,清零要跟着工位边界走
对于由主程序统一管理 G52、子程序只接收局部坐标的方案,可以把边界安排清楚:
进入工位时,先选定 G54 或 G55,随后用绝对方式明确建立本工位需要的 G52,再调用该工位的加工内容。
离开工位时,在既定的安全退刀之后、下一次定位之前,清除当前工位的局部偏移。不要先换工件坐标,再清上一工位的偏移。
允许单独重跑的工序,应能从自己的入口恢复正确状态,不能依赖前一道工序刚好执行过清零。
例如,一段加工结束后仍处于 G54,要交接到不使用局部偏移的 G55 工位,坐标状态部分可以明确写成:
G90 G54 G52 X0. Y0. Z0. G55 G52 X0. Y0. Z0.
这四行处理的是两个工位的坐标状态,退刀路径、刀长补偿、夹具避让和下一次定位应由完整工艺程序安排。若某个子程序本来就约定继承 G52,也不要在它内部随意归零,否则会破坏主程序安排好的工位关系。
做 Mastercam 后处理回归检查时,至少对照四种输出:从头执行、同一工位重复调用、G54→G55→G54、从允许的工序入口重新开始。逐处记录“当前工件坐标、G90/G91、当前 G52、下一定位点”,比只搜索程序末尾有没有清零更容易发现问题。
RESET 和回参考点,另看机床的取消条件
切换 G54/G55 不会清除各自的 G52,这与 RESET、回参考点不是一回事。三菱功能规格手册把复位信号列入局部坐标取消条件;编程手册也列有重新上电、挡块式回参考点的清除规则,参数手册另有回参考点保留局部偏移的选择。现场应按该机的复位信号和参数配置判断,不能笼统写成“按 RESET 一定保留”或“回零一定清掉”。
让程序显式建立、显式撤销自己负责的 G52,工位之间的交接就容易核对。这里依据 2025 年 1 月 U 版加工中心编程手册,范围是 G54~G59;G54.1 扩展工件坐标的 G52 支持和共享方式另有版本规则,不能直接套用上面的六组独立模型。
查这类偏位,可以先记住两个问题:清零那一行选中了哪个工件坐标?它执行时是 G90 还是 G91?这两处对上,很多看起来像“G54 数据自己变了”的现象就能解释清楚。
相关阅读与手册
三菱 M80 的 G09、G61、G64:指令放在哪一段才有效,继续检查后处理的单段与模态状态。
G65 与 M98 的调用接口,可延伸阅读主程序和子程序的职责划分;该文以 Haas 为例,具体宏规则不能直接套到三菱。
三菱官方《M800/M80/E80/C80 Series Programming Manual (Machining Center System)》,IB-1501278-U,第 20.5~20.6 节,第 1008~1013 页:G52 局部坐标设定。
三菱官方《M800/M80/E80/C80 Series Specifications Manual (Function)》,IB-1501505-P,第 10.1.7 节,第 191 页:局部坐标取消条件。
三菱官方《M800/M80/E80 Series Alarm/Parameter Manual》,IB-1501279-T,第 401 页:#1279 ext15 的回参考点保留条件。