G 代码基础知识实际涵盖的内容
铣削程序是按顺序读取的一串字。多数错误来自状态,而非语法。
铣削程序段如何构成
G 代码程序由程序段序列组成。一个程序段是一行,一行是控制系统读取下一行前执行的一组指令。程序段通常包含行号、一个或多个 G 代码、带坐标的轴字、进给和转速字,有时还有括号内的注释。段内顺序并非随意,但多数现代控制系统接受常见顺序:N、G、X Y Z、I J K、F、S、T、M。
每条指令是一个字,字由字母加数字组成。G 是准备功能,用于设定模式。M 是辅助功能,用于开启或关闭某功能,如主轴旋转或切削液。X、Y、Z 携带坐标,坐标值本身取决于当前平面、当前单位和当前工件坐标系。
单看字母几乎说明不了什么。带进给字的 G01 走直线切削。同一行上不带进给字的 G01 沿用上次进给值,因为进给是模态的。这一事实解释了手工编辑文件时看到的大多数异常运动。
括号内的注释被控制系统忽略,但对操作员承载真实信息。刀具名称、毛坯尺寸和装夹说明常写在那里。程序在机床间传输时,注释往往最先丢失,却又是操作员最先需要的。
- 1模态保持有效,直到同组另一代码改变它。
- 2非模态仅对当前程序段有效,之后清除。
- 3组同组内同一时间只能有一个代码有效。
- 4取消G80 取消固定循环;G40 取消刀具补偿。
决定切削的 G 代码与 M 代码
多数讨论先讲运动代码。G00 快速定位,G01 直线进给,G02 和 G03 分别顺时针和逆时针圆弧切削,G02/G03 需要相对起点的 I、J、K 偏移或半径 R 值。在 Fanuc 风格控制系统上,两种圆弧格式并非在所有情况下可互换,同一程序内混用易触发报警。
平面选择比人们预想的更重要。G17 选择 XY 平面,G18 选择 XZ,G19 选择 YZ。圆弧方向和刀具补偿都参照当前平面。为 G17 编写却在 G18 有效时运行的程序仍会运动,这正是该错误直到零件报废才被发现的原因。
单位由 G20(英寸)和 G21(毫米)设定。这是模态状态,应出现在每个程序顶部附近。毫米程序在 G20 下运行会试图走约 25 倍的距离。代码本身看不出任何异常。
固定循环压缩重复工作。G81 钻简单孔,G83 为深孔增加啄钻,G73 带断屑啄钻,G84 攻丝。每个循环存储自己的深度、退刀平面和进给参数。G80 使控制系统恢复正常运动,应在下次换刀前关闭每个循环。
补偿代码改变控制系统实际切削的几何。G41 将刀具偏置在编程路径左侧,G42 在右侧,G40 取消。G43 用 H 寄存器应用刀具长度补偿,G49 取消。G54 至 G59 选择工件坐标系,多数机床上 G54 是第一个台虎钳或工装夹具位置。
M 代码处理所有非运动功能。M03 主轴顺时针启动,M05 停止,M08 开切削液,M09 关,M06 换刀,M30 结束程序并回卷。M00 是等待操作员的强制停止,M01 是仅在面板开关开启时触发的可选停止。
- 1G00/G01快速定位与直线进给。
- 2G02/G03顺时针与逆时针圆弧插补。
- 3G43/G49应用与取消刀具长度补偿。
- 4G54–G59选择工件坐标系。
常见铣削代码及其改变的内容
组列显示哪些代码互相取消。每组只能有一个代码有效。
| 代码 | 功能 | 类别 | 典型用途 |
|---|---|---|---|
| G00 | 快速定位 | 01 | 在特征之间移动 |
| G01 | 直线进给 | 01 | 轮廓与端面切削 |
| G02 / G03 | 圆弧插补 | 01 | 圆角、凸台、半径 |
| G17 / G18 / G19 | 平面选择 | 02 | 设定圆弧与补偿平面 |
| G20 / G21 | 英寸 / 公制单位 | 06 | 在程序顶部设定一次 |
| G40 / G41 / G42 | 刀具补偿 | 07 | 用补偿控制零件尺寸 |
| G43 / G49 | 刀具长度补偿开/关 | 08 | 按刀具设定 Z 零点 |
| G54–G59 | 工件坐标系 | 12 | 每个台虎钳或工装夹具一个 |
| G80 | 取消固定循环 | 09 | 换刀前关闭循环 |
| G81 / G83 | 钻孔/啄钻 | 09 | 孔与深孔 |
| G84 | 攻丝循环 | 09 | 同步刚性攻丝 |
| M03 / M05 | 主轴正转/停止 | — | 启动与停止切削 |
| M06 | 换刀 | — | 程序中的下一把刀具 |
| M08 / M09 | 切削液开 / 关 | — | flood 或雾状控制 |
| M30 | 结束程序并回卷 | — | 返回程序起点 |
模态状态及手工编辑出错的原因
控制系统只知道被告知的内容。每个模态值跨程序段持续有效,直到同组另一代码替换它。进给率、主轴转速、平面、单位、工件坐标系、刀具补偿和切削液都如此。操作员为省几秒删除一个程序段时,可能也删掉了为后续所有内容设定状态的那一行。
典型故障是缺少 G80。固定循环保持有效,下一次定位移动被解释为另一个孔。机床走到坐标并钻孔,即使图纸显示该处是光面。CAM 生成的程序通常处理正确;手工编辑通常不会。
刀具长度补偿是另一个常见陷阱。G43 配合 H 值设定该刀具的 Z 零点。如果 H 号与主轴上装的刀具不匹配,第一次 Z 轴移动就可能偏差整个补偿差值。在补偿误差为 100 mm 的机床上,刀具会在系统预期之前就碰到工件。
一个安全的习惯是从换刀处倒着读程序。对每把刀,确认 H 寄存器、工件坐标系、主轴转向和切削液状态。这项检查不到一分钟,能抓住大多数会流到机床上的错误。
工件坐标系、刀具补偿及其背后的数值
工件坐标系存储从机床原点 to 工件零点的距离。G54 通常是第一道工序,G55 是第二道,依此类推。这些值保存在系统中,通过对刀、测头或量具设定。程序本身不携带它们,这就是同一个文件在一台机床上能正确运行、在另一台上却空切的原因。
刀具长度补偿按刀具存储在 H 寄存器中。有对刀仪的机床,数值来自对刀仪;没有对刀仪的机床,数值来自每把刀碰基准面。无论哪种方式,程序中的 H 号必须与实际刀具一致。这是首次试切时撞刀最常见的原因。
半径补偿配合 G41 和 G42 使用。它让你在不修改几何形状的情况下调整轮廓的最终尺寸。0.02 mm 的磨损补偿在直径上使工件变化 0.04 mm,通常足以把返工件变成合格件。几何补偿保持为零,用磨损补偿做调整。
坐标系应记录在装夹单上,而不只是写在程序里。当二班由另一位操作员装夹时,装夹单能防止把 G55 的活装到 G54 的工装夹具上运行。正因如此,我们把装夹单和程序版本号放在一起。
何时改代码,何时不要动
在机床上修改已验证的程序,既快又有风险。在系统上改进给率是常规做法。改坐标、加程序段或调换刀具顺序则不是。一旦几何在机床上被改动,CAM 文件和运行中的程序就不再一致,下一次改版会丢掉已修好的内容。
适合在系统上修改的时机是试切和小幅工艺调整:进给倍率、磨损补偿、切削液变更、退刀高度。任何涉及刀路、刀具顺序或几何的改动,都应回到 CAM。这条规则让源文件保持真实。
有些零件根本不该手工编程。带摆头的五轴轮廓、用长悬伸刀具的深腔,或钛合金薄壁,都依赖仿真和碰撞检查。手写这些代码可行,但撞刀风险远高于省下的时间。
对简单零件,手写代码仍有其位置。一个面加工、一块两孔板或一块快换工装板,几分钟就能写完并验证。判断标准是零件是否超过约三个不同特征。超过这个点,CAM 更快也更安全。
关于铣削 G 代码的常见问题
和机加工厂打交道需要懂 G 代码吗?
你不需要会写。但你需要读到足以核对程序与图纸一致:刀具顺序、工件坐标系、单位,以及是否使用刀具半径补偿。这个程度的阅读能在报价和装夹问题变成废品之前抓住大多数问题。
G 代码和 M 代码有什么区别?
G 代码准备运动和设定控制状态,如单位、平面、补偿和循环。M 代码开关机床功能,如主轴旋转、切削液、换刀和程序结束。一个程序段可以同时包含两者。
为什么同一个程序在另一台机床上切出的尺寸不同?
工件坐标系和刀具长度补偿保存在系统中,不在文件里。如果新机床的 G54 值不同,或同一把刀的 H 寄存器不同,几何就会偏移。运行转移过来的程序前,务必重新对刀并核对补偿数值。
什么时候该用刀具半径补偿而不是改程序?
只要最终尺寸可能需要调整,就用 G41 或 G42。它让操作员改一个磨损补偿就能修正工件,而不动几何。如果轮廓按刀具中心线编程,每次尺寸变化都变成改程序。
手写程序能赶上 CAM 输出用于复杂零件吗?
对少数特征可以。对五轴轮廓、深腔或壁厚要求严的零件,带仿真的 CAM 更可靠。刀路、毛坯模型和碰撞检查必须一致,这很难靠肉眼验证。
准备充分的程序能达到什么公差和表面质量?
我们的铣削加工在受控特征上保持 ±0.005 mm(±0.0002 in),表面粗糙度精加工为 Ra 0.2–0.8 μm,加工态为 Ra 1.6–3.2 μm。程序决定刀路;机床、刀具和装夹决定实际能达到的水平。
