第三节 G代码基础与程序结构:G代码与M代码分类、程序名与程序段格式、主程序与子程序结构

各位同学,欢迎来到数控编程的核心地带。今天我们要聊的,是每个数控人都绕不开的“通用语言”——G代码和M代码。说白了,这就是你跟机床沟通的“暗号”。你写对了,它干活;你写错了,它罢工,甚至可能“自残”。

我刚开始学编程那会儿,总觉得G代码就是一堆字母加数字,死记硬背就行。结果有一次,我编了个程序,机床主轴死活不转。我查了半天,最后发现是M03写成了M30。嗯,M30是程序结束,主轴当然不转。从那以后,我对每一个代码都多了一份敬畏。

一、G代码与M代码:机床的“动词”和“状态词”

G代码,全称是准备功能代码。它告诉机床“怎么动”。比如G01是直线切削,G02是顺时针圆弧。你可以把它想象成“动词”。

M代码,全称是辅助功能代码。它告诉机床“开什么、关什么”。比如M03是主轴正转,M08是开冷却液。这更像是“状态词”。

我个人习惯,把G代码和M代码分成几大类,这样记起来不费劲:

类别 常见代码 作用 我的经验
运动类G代码 G00, G01, G02, G03 控制刀具移动轨迹 G00快速定位时,一定要确认路径上没有障碍物。我见过有人撞刀,就是G00没算好安全距离。
平面选择类 G17, G18, G19 指定加工平面(XY/XZ/YZ) 车床默认G18(XZ平面),但如果你用动力头,就得小心了。
刀具补偿类 G40, G41, G42 刀具半径补偿的取消/左/右 补偿用不好,尺寸肯定超差。我建议新手先关掉补偿(G40),手动算刀路。
固定循环类 G70, G71, G72, G73 粗车、精车、螺纹等复合循环 这是车床编程的“大招”,后面章节会细讲。
主轴与冷却M代码 M03, M04, M05, M08, M09 主轴正反转、停止;冷却液开/关 M03和M04千万别搞反。有一次我徒弟把M04(反转)用在攻丝上,丝锥直接断了。
程序控制M代码 M00, M01, M02, M30 程序暂停、选择停止、结束 M00是“无条件暂停”,常用于测量。M30是“结束并复位”,光标会回到程序头。

核心要点:G代码是“模态”的,意思是它一旦设定,后续程序段都有效,直到被同组别的G代码取代。比如G01是直线插补,你写了G01 X10,下一行只写Z-20,它还是直线切削。M代码大部分是“非模态”的,只在本行生效。

二、程序名与程序段格式:写程序的“语法规则”

你想想看,写文章有标点符号,写程序也有它的“语法”。数控程序的基本单元是“程序段”,一个程序段就是一行指令。

程序名:每个程序都有一个名字。在FANUC系统里,程序名以O开头,后面跟4位数字,比如O1234。西门子系统用%开头。我建议你给程序起名时有点规律,比如O1001代表“某产品第一道工序”,不然程序多了,找起来像大海捞针。

程序段格式:一个标准的程序段长这样:

N10 G01 X50.0 Z-20.0 F0.15 S1200 M03 T0101 ;

我们来拆解一下:

  • N10:顺序号(行号)。不是必须的,但我强烈建议加上。调试程序时,你直接搜N50就能定位,省时间。
  • G01:准备功能,告诉机床直线切削。
  • X50.0 Z-20.0:坐标值。注意,小数点不能省。写X50机床可能理解为X0.050,这是血泪教训。
  • F0.15:进给速度,单位是mm/转(车床常用)。
  • S1200:主轴转速,单位是转/分钟。
  • M03:主轴正转。
  • T0101:调用1号刀具,并启用1号刀补。
  • :程序段结束符。在FANUC系统里,分号就是“回车键”。

我的小技巧:写程序时,我习惯把G代码放在最前面,然后是坐标,最后是M代码和T代码。这样读起来一目了然。另外,每行只写一个动作,别把G01和G00写在同一行,机床会懵的。

三、主程序与子程序结构:学会“偷懒”的艺术

做机械加工,最怕重复劳动。如果你要加工6个一模一样的零件,难道要把同样的程序写6遍?当然不。这时候,子程序就派上用场了。

主程序:是程序的“总指挥”。它负责调用子程序,控制加工流程。

子程序:是“具体干活的”。它里面存放重复的加工步骤。

举个例子,你要车一个阶梯轴,外圆粗车、精车、切槽这三个步骤,每个零件都要做一遍。你可以把这三个步骤写成一个子程序,主程序里循环调用它。

结构如下:

O1000 (主程序)
N10 G21 G40 G99 ; 公制、取消补偿、每转进给
N20 M03 S1500 T0101 ; 主轴正转,调用1号刀
N30 G00 X100.0 Z50.0 ; 快速定位到安全点
N40 M98 P2000 L6 ; 调用子程序O2000,重复6次
N50 G00 X100.0 Z50.0 ; 返回安全点
N60 M30 ; 程序结束

O2000 (子程序)
N10 G01 X50.0 Z-10.0 F0.2 ; 外圆粗车
N20 G00 X55.0 Z2.0 ; 退刀
N30 G01 X48.0 Z-10.0 F0.1 ; 外圆精车
N40 G00 X55.0 Z2.0 ; 退刀
N50 G01 X45.0 Z-10.0 F0.15 ; 切槽
N60 G00 X100.0 Z50.0 ; 返回安全点
N70 M99 ; 子程序结束,返回主程序

你看,主程序里用M98 P2000 L6调用了子程序6次。P后面是子程序号,L后面是重复次数。如果不写L,默认执行1次。

避坑指南:我曾经犯过一个错,子程序里用了M30(程序结束)。结果调用一次就停了,后面的5次全废了。记住,子程序结尾必须是M99,不是M30。M99的意思是“返回主程序”,M30是“全剧终”。

四、知识体系框架:一张图看懂

为了让你更直观地理解今天的内容,我画了一张结构图。它把G代码、M代码、程序结构串在了一起。你保存下来,以后忘了就看看。

数控车床程序结构知识体系 数控程序 主程序 (OXXXX) 子程序 (OXXXX) 程序段 (N... G... X... F...) 程序段 (N... G... X... F...) G代码(准备功能) M代码(辅助功能) G代码(准备功能) M代码(辅助功能) 运动类:G00/G01/G02/G03 固定循环:G70/G71/G72/G73 主轴控制:M03/M04/M05 程序控制:M00/M01/M30 刀具补偿:G40/G41/G42 平面选择:G17/G18/G19 冷却控制:M08/M09 子程序调用:M98/M99 主程序通过M98调用子程序,子程序以M99返回 G代码多为模态,M代码多为非模态

这张图把今天的内容串起来了。从最顶层的“数控程序”,往下拆成主程序和子程序,再往下是程序段,最后是具体的G代码和M代码。你写程序的时候,脑子里要有这个层次感。

好了,G代码基础就讲到这里。记住,编程不是背代码,而是理解逻辑。你多写几遍,自然就熟了。下次我们聊聊坐标系,那是所有刀路的“地基”。


专注资料整理