4. 常用G代码详解(二):G04暂停、G17/G18/G19平面选择、G20/G21单位制
好,咱们接着聊G代码。上一章讲了几个基础指令,这一章我挑三个非常实用、但新手容易忽略的指令来讲:G04暂停、G17/G18/G19平面选择、还有G20/G21单位制。
这三个指令,说白了就是控制「什么时候停」、「在哪个面上画图」、「用毫米还是英寸」。听起来简单,但用不好,机床撞刀、尺寸全错的事故我可见过不少。
G04:暂停指令——让机床「喘口气」
G04,也叫 dwell 指令。它的作用就是让主轴停转、进给停止,但保持当前位置,等一段时间再继续。
你可能会问:「为什么要暂停?」嗯,我刚开始学的时候也觉得这指令多余。直到有一次做深孔钻削,钻头排屑不畅,直接卡断在孔里……从那以后,我再也不敢小看 G04 了。
G04 的典型应用场景
- 深孔钻削排屑:钻到一定深度,暂停一下,让切屑被冷却液冲走。
- 主轴转速稳定:主轴刚启动时转速还没稳定,暂停几秒再进刀,表面光洁度会好很多。
- 换刀后确认:自动换刀后,暂停一下,确认刀具夹紧再开始切削。
- 工件表面清理:比如铣完一个面,暂停一下,操作员可以吹掉切屑再继续。
G04 的语法格式
不同控制系统写法略有差异,但主流有两种:
G04 P1000 ; 暂停 1000 毫秒(即 1 秒)
G04 X1.0 ; 暂停 1 秒(某些系统用 X 表示秒)
G04 U1.0 ; 暂停 1 秒(某些系统用 U 表示秒)
我个人习惯用 P 地址,单位是毫秒。这样精度高,也直观。比如暂停 0.5 秒,就写 G04 P500。
DWELL 这个单词。上机前一定要看机床手册,别想当然。
一个实际例子
我记得有一次帮客户调试一台老机床,做不锈钢深孔钻削。孔径 6mm,深度 40mm,长径比接近 7:1。如果不加暂停,钻头进去就「尖叫」,然后断掉。我加了这么一段:
G01 Z-5.0 F50 ; 钻入 5mm
G04 P200 ; 暂停 0.2 秒排屑
G01 Z-10.0 F50 ; 再钻 5mm
G04 P200 ; 再暂停
... ; 循环直到深度
加了暂停之后,切屑顺利排出,钻头寿命从 30 个孔提升到 200 个孔。你看,一个小小的 G04,效果立竿见影。
G17/G18/G19:平面选择——告诉机床「你在哪个面上干活」
这三个指令,是圆弧插补和刀具半径补偿的基础。说白了,就是告诉机床:你现在是在 XY 平面、ZX 平面、还是 YZ 平面上画圆弧?
我见过不少新手,写圆弧指令时忘了指定平面,结果机床走出来的轨迹完全不是想要的形状。嗯,这里要注意:默认平面是 G17(XY 平面),但如果你换了平面没改回来,后面所有圆弧都会跑偏。
三个平面的定义
| 指令 | 平面 | 圆弧插补轴 | 常用场景 |
|---|---|---|---|
| G17 | XY 平面 | X、Y 轴 | 最常用,铣削顶面、轮廓加工 |
| G18 | ZX 平面 | Z、X 轴 | 车铣复合、侧面圆弧加工 |
| G19 | YZ 平面 | Y、Z 轴 | 较少用,某些特殊夹具加工 |
平面选择对圆弧的影响
举个例子。你想在工件侧面铣一个 R10 的圆弧。如果你忘了指定 G18,机床默认在 XY 平面走圆弧,结果就是:刀具在顶面画了个圆弧,而不是侧面。你说这能不出废品吗?
正确的写法应该是:
G18 ; 切换到 ZX 平面
G01 Z-5.0 F100 ; 下刀到深度
G02 X20.0 Z0 R10 ; 在 ZX 平面走圆弧
平面选择与刀具半径补偿
还有一个坑:刀具半径补偿(G41/G42)必须和平面选择匹配。你在 G17 下开启补偿,补偿方向就是 XY 平面内的左/右。如果你切换到 G18,补偿方向就变成 ZX 平面内的左/右。搞混了,补偿方向就全错了。
我曾经在一个五轴项目上,因为平面切换后忘了关补偿,结果刀具路径直接撞到工件上。还好是模拟阶段发现的,不然几万块的工件就废了。
G20/G21:单位制——毫米还是英寸?这是个问题
G20 是英制(英寸),G21 是公制(毫米)。这个指令看似简单,但出错的后果非常严重。
你想想看:如果你用 G21 编了个程序,所有尺寸都是毫米。结果机床默认是 G20(英制),那机床会把 100mm 当成 100 英寸来走。100 英寸 ≈ 2540mm,直接撞到机床极限,轻则报警,重则撞坏主轴。
单位制的使用规则
- G21:公制,所有坐标、进给、半径等单位都是毫米。
- G20:英制,所有单位都是英寸。
- 模态指令:一旦设定,一直有效,直到被另一个指令改变。
- 必须在程序开头设定:一般在程序第一行就写 G21 或 G20。
一个真实教训
我记得刚入行时,帮师傅传程序。师傅编的是公制程序,但机床前一天被另一个师傅调成了英制。我没检查,直接按了启动。结果第一刀下去,Z 轴直接扎到工件台面上,「哐」的一声,主轴都震歪了。还好只是撞坏了夹具,没伤到人。
从那以后,我养成了一个习惯:程序第一行必须是 G21(或 G20),而且单独一行,前面不加任何其他指令。 比如:
G21 ; 明确使用公制
G17 ; 明确使用 XY 平面
G90 ; 绝对坐标
G40 ; 取消半径补偿
G49 ; 取消长度补偿
G80 ; 取消固定循环
这叫「程序头部的安全初始化」。每次写程序,我都这么写,雷打不动。
本章知识体系
下面这张图,是我自己总结的这三个指令的关系。你可以把它当成一个「速查地图」:
这三个指令,单独看都不难。但组合起来,再加上实际加工中的各种意外情况,就容易出问题。我的建议是:写程序时,把 G04、G17/G18/G19、G20/G21 当成「安全检查点」,每次用到都确认一下,养成习惯。
好了,这一章就到这里。下一章我们聊 G40/G41/G42 刀具半径补偿,那才是真正考验编程功底的地方。