搜索文章与案例

Technical Article

新代 G29 写 G91 X20.,这20毫米从哪里算?

新代铣床 G29 在 G91 下的增量从前次 G28 中间点起算。用单轴算例解释40加20为何到60,以及修改G28后为什么必须连同回程一起检查。

已经回到参考点,接着执行 G91 G29 X20.,是不是从参考点再走20毫米?在新代铣床的这条指令里,先别拿当前位置加20。它要用的是前一次 G28 的中间点。

例如前次 G28 的中间点是程序坐标 X40,G29 的增量为 X20,目标就是 X60。即使参考点在这套程序坐标中显示 X200,目标也不会因此变成 X220。

这条回程指令记着哪一个点

新代《铣床程序手册》2.23节把 G29 定义为从参考点经先前 G28 的中间点返回指定位置。G29 不另设一个中间点,因此必须先有 G28。G90 下,G29 的轴值是目标的绝对程序坐标;G91 下,则是从那个中间点到目标的增量。

本文采用官方公开手册的2025年11月14日修改版,导出日期2026年1月23日。该节没有列出特定硬件型号或最低固件号,所以这里限定为采用该手册 G29 语义的新代铣床系统、标准 X 轴命名;不将它当成车床、旋转轴或机床厂自定义回程宏的说明。

把一段回程拆成两个阶段

下面只分析 X 轴,单位为毫米,并保持同一程序坐标系。假设中间点 B 为 X40,参考点 C 在这一程序坐标中为 X200。X200 只是本例为画图设置的坐标,不代表参考点的机械坐标数值。

算例开始前,刀具已在经现场确认的避让高度,Y、Z 保持不动;从当前位置到 X40、从 X40 到参考点以及返回 X60 的整段 X 行程都无夹具障碍。按手册2.22节,G28 前的刀具补正须已取消。这里不展开退刀和取消补正的机床动作,只保留讨论坐标含义的两句:

G90 G28 X40.;
G91 G29 X20.;

第一句先到程序坐标 X40,再回 X 轴参考点,留下中间点 B。第二句先从参考点返回 B,再由 B 走正向20毫米,终点 D 为 X60。其末段是40+20;不能把参考点显示的200代进去。

新代G29从参考点X200先回G28中间点X40再增量20到X60的两阶段单轴路径示意图

图1 两段回程共用同一根 X 轴。图中上下错开是为了标注阶段,不代表实际 Y 或 Z 位移。

G29 是快速回程。它经过 X40 再到 X60,不能当成从 X200 直接到 X60 的一条切削进给。若现场 X40 位置有夹具,改对终点仍不足以解决路径问题。

改了去程的中间点,回程也要重新算

假如为避让把第一句改成 G90 G28 X70.,第二句仍是 G91 G29 X20.,G29 就会通过 X70,最终到 X90。程序没有改 G29,目标却变了30毫米,原因就在它引用的中间点变了。

前次G28中间点从X40改到X70时同一G91G29X20终点从X60改到X90的计算对照图

图2 两个独立算例的增量都为20毫米,终点分别为60和90。去程与回程不能分开修改。

如果目标必须固定在程序坐标 X60,在本例坐标系不变的条件下,可以将回程写为 G90 G29 X60.。它仍经过前次 G28 的中间点,只是终点改用绝对值定义,并没有取消中间点这一步。

后处理排查,往前找 G28

遇到回程位置不对,先在输出 NC 里找到对应的 G29,再向前找实际执行的 G28,算出它的中间点。注意 G28 自己处于 G90 还是 G91:本例用 G90 明确写 X40;若改成 G91,G28 的 X 值还要加到执行它之前的位置,不能直接把这个字面值当成中间点坐标。

然后确认两条指令之间没有更换程序坐标系、修改零点或插入另外的 G28。本文计算保持这些条件不变;存在这类操作时,应把实际执行顺序和中间点含义逐项还原,不沿用图中的40。最后检查 G29 后的模式:例中第二句带了 G91,后续若要按绝对坐标定位,应明确恢复 G90。

在仿真或经机床规程允许的单段核对中,观察的是“参考点→中间点→目标”三个位置,而不只是最终的 X 数字。需要排查时,把控制器型号、软件版本、前后完整 G28/G29 程序段,以及当时使用的程序坐标系一起整理,才能区分后处理写法与现场坐标设置的问题。

去程的中间点概念可接着看G28 与 G53 的回零路径区别;涉及换刀段衔接时,再核对退刀、回零、换刀和刀补的顺序。

规则来源:新代《铣床程序手册》2.22—2.23节,手册第59—61页。两张示意图及40、60、70、90、200毫米的坐标算例为原创推导,未作为实机测试结果。