第二讲:G代码语法结构——行号、G、M、坐标字、F、S、T

大家好,我是老陈。干CNC这行快二十年了,今天咱们聊聊G代码的语法结构。

很多人觉得G代码就是一堆字母加数字,随便写写就能跑。嗯,我刚开始也这么想,直到有一次在车间里,一台五轴机因为一个逗号的位置不对,直接撞了刀。那次损失可不小,从那以后,我对语法结构就特别较真。

说白了,G代码就是数控机床的“语言”。你得按它的语法规则来,它才能听懂。今天我就把最核心的七个要素掰开揉碎了讲给你听。

核心要点:G代码的每一行,本质上就是一个“指令包”。这个包里可以包含:行号、准备功能、辅助功能、坐标字、进给率、主轴转速、刀具号。但不是每行都要写全,缺什么取决于你要干什么。

G代码语法结构 N 行号 G 准备功能 M 辅助功能 XYZ 坐标字 F 进给率 S 主轴转速 T 刀具号 G代码一行 = 一个完整的指令包 N10 G01 X100.5 Y50.2 F300 S1500 T01 M03 图例:G代码语法结构全景图 每个要素都是指令包的一部分,缺一不可但不必全有

1. 行号(N)——程序的“门牌号”

行号就是N后面跟一串数字,比如N10、N20、N100。它不参与加工,纯粹是为了让人好找位置。

我个人习惯用N10、N20、N30这样跳着编,中间留出空间。为什么?因为后期调试时,你可能需要在两行之间插入新指令。如果你用了N1、N2、N3,想插一行都难。

我的经验:行号不是必须的。很多现代数控系统根本不看行号,它只按顺序执行。但如果你要调试程序、跳转执行,行号就特别有用。我建议养成写行号的习惯,哪怕只是为了自己看着方便。

2. 准备功能(G)——机床的“动作指令”

G代码是G代码里最核心的部分。它告诉机床:你要干什么。

常见的G代码有:

  • G00:快速定位,不切削,只管跑得快
  • G01:直线插补,边跑边切
  • G02/G03:圆弧插补,顺时针/逆时针
  • G90/G91:绝对坐标/增量坐标模式

我记得有一次,一个新手把G01写成了G0(少了个0),结果机床直接快速移动撞上了工件。嗯,这里要注意:G代码的格式是严格固定的,G01不能写成G1(虽然有些系统支持,但为了兼容性,我建议按标准写)。

避坑指南:G代码是模态的,意思是它一旦设定,后面没写新G代码之前都有效。比如你写了G01,后面几行没写G代码,机床默认还是G01模式。我曾经见过有人每行都写G01,虽然没错,但看着累赘。反过来,也有人忘了写G代码,结果机床用上一段的G00快速移动去切削,直接崩刀。

3. 辅助功能(M)——机床的“开关指令”

M代码管的是机床的开关动作,比如主轴转不转、冷却液开不开。

M代码 功能 说明
M03 主轴正转 顺时针旋转
M04 主轴反转 逆时针旋转
M05 主轴停止 停转
M08 冷却液开 开切削液
M09 冷却液关 关切削液
M30 程序结束 复位并停止

M代码和G代码最大的区别是什么?G代码管的是“怎么走”,M代码管的是“开什么关什么”。你想想看,主轴不转,你让机床去切削,那不是扯吗?

4. 坐标字(X、Y、Z、A、B、C)——目标位置

坐标字就是告诉机床:你要去哪儿。

X、Y、Z是三个直线轴,A、B、C是旋转轴。坐标值可以是整数,也可以是小数。比如X100.5,表示X轴走到100.5毫米的位置。

这里有个坑:小数点。有些老系统要求必须带小数点,比如X100.要写成X100.0。我遇到过一台设备,写X100它当成X0.1(因为系统默认单位是微米)。那次差点报废一个模具。

我的建议:坐标值一律带小数点,哪怕整数也写成X100.0。这样既清晰又安全,不会因为系统设置不同而出错。

5. 进给率(F)——切削速度

F代码控制刀具移动的速度,单位通常是毫米/分钟(mm/min)。

比如F300,就是每分钟走300毫米。F值的大小直接影响加工效率和表面质量。太快了伤刀具,太慢了效率低。

我个人习惯:粗加工用F200-F400,精加工用F100-F200。当然,这取决于材料和刀具。有一次我加工铝合金,用了F600,结果刀具磨损得特别快。后来降到F300,效果就好多了。

6. 主轴转速(S)——转多快

S代码控制主轴转速,单位是转/分钟(rpm)。比如S1500,就是主轴每分钟转1500圈。

S值和F值要匹配。怎么匹配?看刀具直径和材料。一般来说,小刀具转速高,大刀具转速低。硬材料转速低,软材料转速高。

举个例子:用直径10毫米的铣刀加工钢件,S值大概在2000-3000转。用直径20毫米的铣刀,S值降到1000-1500转。这是经验值,具体还要看刀具厂商的推荐。

7. 刀具号(T)——用哪把刀

T代码告诉机床:换第几号刀具。比如T01,就是用1号刀。

在加工中心上,T代码通常和M06(换刀指令)配合使用。比如:

T01 M06   ; 换1号刀
G43 H01   ; 调用1号刀的刀长补偿

这里要注意:T代码只是指定刀具号,真正执行换刀动作的是M06。我见过有人只写了T01没写M06,结果机床没换刀,直接用上一把刀去加工,后果可想而知。

避坑指南:写T代码时,一定要确认刀库里有这把刀,而且刀具参数(长度、半径)已经设置正确。我曾经因为忘记设置刀长补偿,直接撞坏了工件。从那以后,我每次换刀前都会检查一遍刀具参数。

完整示例:一行G代码的“解剖”

咱们来看一个完整的例子:

N10 G90 G00 X0 Y0 Z100.0
N20 T01 M06
N30 G43 H01
N40 S2000 M03
N50 G01 Z-5.0 F200
N60 X100.5 Y50.2
N70 G00 Z100.0
N80 M05
N90 M30

我来一行行解释:

  • N10:行号10,设置绝对坐标模式,快速移动到X0 Y0 Z100位置
  • N20:换1号刀
  • N30:调用1号刀的刀长补偿
  • N40:主轴转速2000转,正转
  • N50:直线插补,Z轴下到-5毫米,进给率200
  • N60:移动到X100.5 Y50.2位置(此时Z保持-5,继续切削)
  • N70:快速抬刀到Z100
  • N80:主轴停止
  • N90:程序结束

你看,这一小段程序里,行号、G代码、M代码、坐标字、F值、S值、T值全用上了。每个要素各司其职,缺一不可。

最后提醒一句:G代码的语法结构看似简单,但细节决定成败。一个逗号、一个小数点、一个字母的大小写,都可能让机床“发疯”。我见过太多因为语法错误导致的撞机事故了。所以,写程序时多检查一遍,总比修机床省钱。


公众号:蓝海资料掘金营,微信deep3321