第3章:G代码基础——数控铣床的“通用语言”

各位学员,欢迎来到G代码的世界。说实话,G代码就是咱们数控铣床的“通用语言”。你想想看,你画好了图纸,编好了工艺,最后怎么让机床动起来?靠的就是这一行行G代码。我刚开始学的时候,也觉得这东西密密麻麻的,后来摸透了规律,发现其实就那么回事。

3.1 G代码的功能分类:模态 vs 非模态

G代码分两类:模态代码非模态代码。这个分类特别重要,搞混了会出大问题。

模态代码,说白了就是“一次设定,持续有效”。比如你写了G01(直线插补),后面只要不出现同组的G代码(比如G00、G02),机床就一直按G01的方式走。我见过一个新手,他在G01后面忘了写进给速度F值,结果机床按上一次的F值跑,直接把刀给崩了。嗯,这就是模态的“坑”——它不会提醒你,它只会默默执行上一次的设定。

非模态代码,就是“一次性指令”。只在当前程序段有效,下一段就失效了。比如G04(暂停指令),你让它停2秒,它就停2秒,下一段该干嘛干嘛。

类型 特点 典型例子 我的建议
模态 持续有效,直到被同组代码取代 G00、G01、G90、G91 养成习惯,关键位置显式写一遍
非模态 仅当前段有效 G04、G28、G92 别指望它“记住”,每段都要写
⚠️ 我曾经踩过的坑:有一次我编一个深腔铣削程序,中间换了一把刀,结果忘了重新写G43(刀具长度补偿)。因为G43是模态的,换刀后它还在生效,但补偿值还是上一把刀的。结果Z轴直接扎进去了……从那以后,我换刀后一定重新写一遍G43 Hxx。

3.2 常用G代码详解

3.2.1 G00——快速定位

G00就是“空跑”,机床以最快速度移动到目标点。注意,它不切削,只负责“赶路”。我个人习惯在程序开头先用G00把刀具移到安全位置,再开始干活。

G00 X100. Y50. Z10.   ; 快速移动到 (100,50,10) 位置

这里有个细节:G00的移动路径不一定是直线。不同机床的G00路径可能不同,有的是先走X再走Y,有的是走斜线。所以,如果你在工件上方用G00,一定要留够安全高度。我见过有人用G00直接往工件表面扎,结果撞刀了——嗯,这就是没留安全高度的后果。

3.2.2 G01——直线插补

G01是“干活”的指令,配合F值(进给速度)进行直线切削。说白了,你要切直线,就用它。

G01 X200. Y100. F300   ; 以300mm/min的速度直线移动到(200,100)

我建议:G01的F值一定要写清楚,别偷懒。模态虽然会记住上一次的F值,但万一你中间改过速度,后面忘了写,那就麻烦了。

3.2.3 G02/G03——圆弧插补

G02是顺时针圆弧,G03是逆时针圆弧。判断方向有个小技巧:从Z轴正方向往下看,顺时针就是G02,逆时针就是G03。

G02 X100. Y100. R50. F200   ; 顺时针圆弧,半径50mm
G03 X100. Y100. I50. J0. F200 ; 逆时针圆弧,圆心相对起点偏移(50,0)

这里要注意:R格式(半径)只能用于小于180°的圆弧。大于180°的圆弧,必须用I、J、K格式(圆心坐标偏移量)。我刚开始学的时候,用R格式编了一个270°的圆弧,结果机床报警了——它根本不知道你要走哪边。

💡 我的小技巧:编圆弧时,我习惯先用CAD画出来,量一下圆心坐标,再用I、J、K格式写。这样最保险,不会出错。

3.2.4 G90/G91——绝对坐标与增量坐标

G90是绝对坐标,所有位置都以工件原点为基准。G91是增量坐标,每个位置都是相对于上一个点的偏移。

G90 G01 X100. Y100.   ; 移动到绝对坐标(100,100)
G91 G01 X50. Y50.     ; 从当前位置再移动(50,50),即到(150,150)

我个人强烈建议:新手全程用G90。G91虽然写起来短,但容易算错。你想想看,一个程序几百行,中间改一次G91,后面所有坐标都得重新算,太容易出错了。我只有在编循环孔的时候才用G91,其他时候一律G90。

3.3 程序结构:骨架要搭好

一个完整的数控程序,就像一篇文章,得有头有尾。我见过太多人程序写得乱七八糟,结果机床一跑就报警。

3.3.1 程序名

程序名是程序的“身份证”。FANUC系统用O开头(如O1000),西门子用%开头(如%100)。我习惯用零件图号加工序号命名,比如O20240301,这样一看就知道是哪个零件的哪道工序。

3.3.2 程序段

每个程序段就是一行指令。我建议每行只写一个主要动作,别把G00、G01、M03全塞在一行里。虽然语法上允许,但调试的时候你根本看不清。

N10 G90 G54 G00 X0 Y0   ; 设定绝对坐标,选择工件坐标系,快速定位
N20 S2000 M03           ; 主轴转速2000,正转
N30 G43 H01 Z50.        ; 刀具长度补偿,Z轴到安全高度
N40 G01 Z-5. F100       ; 下刀到-5mm
N50 G01 X100. F200      ; 开始切削

你看,这样写多清楚。每行一个动作,出了问题一眼就能找到是哪一行。

3.3.3 程序结束

程序结束不能随便写个M30就完事。我建议的结束格式:

G00 Z100.      ; 抬刀到安全高度
M05            ; 主轴停止
M09            ; 切削液关闭
M30            ; 程序结束并复位

为什么要先抬刀再停主轴?因为如果先停主轴,刀具还在工件里,万一卡住了,你连抬刀的机会都没有。这是我用教训换来的经验。

📌 核心要点:
  • 模态代码会“记住”,非模态代码只“说一次”
  • G00用于快速移动,G01用于直线切削,G02/G03用于圆弧
  • 新手全程用G90(绝对坐标),别碰G91
  • 程序结构:程序名 → 程序段(每行一个动作) → 安全结束
G代码知识体系 G代码 功能分类 常用G代码 程序结构 模态 vs 非模态 模态:一次设定,持续有效 非模态:仅当前段有效 G00/G01/G02/G03/G90/G91 G00:快速定位(空跑) G01:直线插补(切削) 程序名 → 程序段 → 结束 程序名:Oxxxx 或 %xxx 结束:抬刀→停主轴→M30

好了,这一章的内容就这些。G代码是数控编程的基石,你把它搞透了,后面学什么循环、子程序都轻松。记住我一句话:写程序就像写文章,结构清晰比什么都重要

专注资料整理