G代码M代码记不住?收藏这篇就够了
干数控的每天打交道最多的就是G代码和M代码,但说实话,这么多代码全记住也不现实。很多师傅干了好几年,常用的那十几个倒背如流,偶尔用到的还是要翻手册。
今天这篇就把常用的G代码和M代码整理一遍,不是干巴巴地列参数表,而是配合实际场景说清楚每个代码怎么用。
G代码:控制刀具怎么走
G代码的核心作用是告诉机床”怎么运动”——走直线还是走圆弧,快速移动还是切削进给,用什么坐标系等等。
必须熟记的G代码
G00 快速定位
最常用的没有之一。G00让刀具以最快速度移动到指定位置,不切削。编程时用来做刀具的空行程移动——从换刀点到工件上方,从一个加工区域移到另一个区域。
G00 X100. Y50. Z20.;注意:G00移动时各轴同时以最大速度运动,实际走的是一条斜线(不是45度,是各轴速度合成的方向)。如果你需要在G00移动时避免碰到障碍物,要分轴移动。
G01 直线插补
切削走直线就靠它。G01后面跟坐标和进给速度(F值)。
G01 X80. Y30. Z-5. F500;进给速度F的单位通常是mm/min。500表示每分钟走500mm。
G02/G03 圆弧插补
G02顺时针圆弧,G03逆时针圆弧。这两个代码在铣轮廓、倒角、铣圆的时候经常用。
G02 X50. Y0. R25. F300; // 顺时针圆弧到(50,0),半径25
G03 X0. Y50. R25. F300; // 逆时针圆弧到(0,50),半径25注意R值的正负:圆弧小于180度用正R,大于180度用负R。如果不确定圆弧方向,G02和G03搞反了,刀路就是镜像的,轻则加工方向错,重则撞工件。

G04 暂停
让程序暂停指定时间。主要用于:
- 钻孔到底部时暂停,让切屑断掉
- 攻丝到底部暂停
- 倒角时短暂停留保证表面质量
G04 P500; // 暂停500毫秒(0.5秒)有些系统用X值表示暂停秒数,比如G04 X0.5表示暂停0.5秒。不同系统有差异,用之前确认一下。
G17/G18/G19 平面选择
- G17:XY平面(默认)
- G18:ZX平面
- G19:YZ平面
这个主要影响圆弧插补的方向。在XY平面用G02是顺时针,换到ZX平面(G18)后,顺时针的方向就变了。大部分铣削加工都用G17(XY平面),车削用G18。
坐标系相关的G代码
G54-G59 工件坐标系
这是对刀时设定的坐标系。一个机床可以同时存6个工件坐标系(G54到G59),适合多工件同时加工或者多次装夹。
G54; // 切换到G54坐标系
G00 X0 Y0; // 移动到G54坐标系的原点G28 返回参考点
让机床回到机械参考点(机床零点)。主要用于:
- 换刀前回到安全位置
- 加工结束后归位
- 开机后回零建立机床坐标系
G28 G91 Z0; // Z轴回参考点
G28 G91 X0 Y0; // X、Y轴回参考点注意G28中间会经过一个中间点,编程时要确保中间点位置不会撞到工件或夹具。
G90/G91 绝对/增量编程
- G90:绝对坐标,所有坐标值都是相对于工件原点
- G91:增量坐标,坐标值是相对于上一个位置的增量
G90 G01 X100. Y50. F500; // 走到绝对坐标(100,50)
G91 G01 X20. Y10.; // 从当前位置X方向走20,Y方向走10大部分编程用G90,但在某些循环和子程序中用G91更方便。
刀具补偿相关的G代码
G41/G42 刀具半径补偿
这是铣削编程中极其重要的代码。编程时按图纸轮廓走,但刀具有半径,实际刀心要偏移一个半径值。
- G41:左补偿(刀具在工件左侧)
- G42:右补偿(刀具在工件右侧)
G41 D01 G01 X50. Y30. F500; // 开启左补偿,D01是刀补寄存器号
... // 沿轮廓加工
G40; // 取消刀补判断左还是右的方法:沿着刀具运动方向看,刀具在工件左边就是G41,右边就是G42。顺时针铣外轮廓用G41,逆时针用G42。
注意:G41/G42开启和取消时刀具会有一段过渡移动,这段移动要在安全位置完成,不能在切削工件时开启或取消补偿,否则会过切。
G43 刀具长度补偿
每把刀长度不同,用G43来补偿。
G43 H01 Z50.; // Z轴加上H01寄存器中的长度补偿值H01对应的长度补偿值通常在对刀时设定。换刀后用G43切换到新刀的长度补偿。

循环相关的G代码
G81 钻孔循环
G81 X20. Y20. Z-15. R2. F100; // 在(20,20)位置钻孔,孔深15mm,R平面高度2mmR平面是刀具快速下刀到接近工件表面的位置,然后以进给速度继续下钻。
G83 深孔钻循环(断屑式)
深孔加工时排屑困难,G83会间歇性退刀排屑:
G83 X20. Y20. Z-50. R2. Q10. F80; // Q10每次钻深10mm后退刀排屑G84 攻丝循环
G84 X20. Y20. Z-15. R2. F100; // 攻丝到15mm深度攻丝时主轴正转进,到底后反转退出。进给速度要和转速匹配:F = S × 螺距。
M代码:控制机床动作
M代码控制的是机床的辅助功能——主轴转不转、冷却液开不开、换不换刀等等。
最常用的M代码
M03/M04 主轴正转/反转
M03 S6000; // 主轴正转,转速6000
M04 S3000; // 主轴反转,转速3000铣削绝大部分用M03(正转)。反转(M04)主要用于左旋刀具或者某些特殊加工。
M05 主轴停止
M05; // 主轴停换刀前、测量前、程序结束时都要先停主轴。
M06 换刀
T01 M06; // 换1号刀有些机床T代码和M06要分开写,有些可以写在一起。具体看机床说明书。
M08/M09 冷却液开/关
M08; // 开冷却液
M09; // 关冷却液通常在切削开始前开冷却液,切削结束后关。有些粗加工可以不开冷却液(干切),精加工再开。
M00/M01 程序暂停/可选暂停
- M00:无条件暂停,按循环启动继续
- M01:可选暂停,只有面板上的”选择停”开关打开时才暂停
这两个代码用于加工中间需要检查、测量或者清理切屑的情况。
M30 程序结束
M30; // 程序结束,光标回到程序开头和M02的区别是M30会自动回到程序开头,方便连续加工。
其他常用M代码
M19 主轴定向停止
换刀时主轴需要停在一个固定的角度,M19就是让主轴定向。通常自动换刀时机床会自动执行,手动编程时偶尔需要。
M98/M99 子程序调用/返回
M98 P1001; // 调用O1001号子程序子程序里用M99返回主程序。经常加工的形状可以写成子程序,主程序里多次调用,省得重复写。
M29 刚性攻丝
普通攻丝时主轴和Z轴是分别控制的,刚性攻丝时主轴和Z轴同步,精度更高。

实际程序中代码是怎么配合的
光看单个代码没感觉,来看一段实际加工程序:
O0001; // 程序号
G17 G21 G40 G49 G80; // 安全初始化
G54 G90; // 选G54坐标系,绝对编程
T01 M06; // 换1号刀(10mm立铣刀)
M03 S6000; // 主轴正转6000转
G00 X-20. Y-20.; // 快速移动到下刀点上方
G43 H01 Z50.; // 刀长补偿,Z到安全高度
G00 Z2.; // 快速下刀到R平面
M08; // 开冷却液
G01 Z-5. F200; // 切削下刀到-5mm深度
G41 D01 G01 X0 Y-15. F500; // 开半径补偿,移到轮廓起点
G01 X0 Y50.; // 铣右边
G01 X80. Y50.; // 铣上边
G01 X80. Y0; // 铣左边
G01 X-15. Y0; // 铣下边(多走15mm保证闭合)
G40 G00 X-20. Y-20.; // 取消半径补偿
G00 Z50.; // 抬刀到安全高度
M09; // 关冷却液
M05; // 主轴停
M30; // 程序结束这段程序铣了一个80×50的方框。可以看出G代码和M代码是交替使用的——G代码控制运动,M代码控制开关。
程序开头的安全初始化
注意上面程序第二行那串代码:G17 G21 G40 G49 G80
这是安全初始化,每个程序开头都应该写:
- G17:XY平面
- G21:公制单位
- G40:取消刀补(防止上一程序遗留的补偿)
- G49:取消长度补偿
- G80:取消固定循环
很多撞刀事故就是上一程序遗留的刀补或者循环没取消,下一个程序直接跑导致的。开头写安全初始化是基本习惯。
写在最后
G代码M代码看着多,实际常用的也就二三十个。关键是理解每个代码的作用,而不是死记硬背。
麟思数控在培训新人时,会让他们先手写几个简单程序——铣方框、钻孔、铣圆弧,把G00、G01、G02/G03、G41/G42、M03/M05/M08/M09这些用熟了,后面的复杂程序就是在这个基础上叠加的。
记住一点:程序是逻辑的体现,代码只是表达工具。想清楚加工顺序和刀具路径,代码自然就写出来了。













评论 (0)