一、什么是 CNC 编程CNCComputer Numerical Control计算机数控编程是指通过编写一系列指令代码控制数控机床按照预定轨迹和工艺参数自动完成零件加工的过程。这些指令代码最核心的就是 G 代码准备功能和 M 代码辅助功能。无论你是从事机械加工的一线操作工还是机电一体化的在校学生掌握 CNC 编程都是提升核心竞争力的关键一步。本文将从基础指令讲起配合大量可直接上机验证的代码示例带你系统掌握 CNC 编程。二、坐标系与编程基础2.1 机床坐标系CNC 编程使用的是右手直角坐标系Z 轴与主轴轴线平行刀具远离工件的方向为正方向X 轴水平方向车床为径向铣床为工作台左右方向Y 轴由右手定则确定铣床常用车床一般不涉及2.2 绝对坐标与增量坐标这是初学者最容易混淆的概念模式 指令 含义绝对坐标 G90 所有坐标值均以工件坐标系原点为基准增量坐标 G91 坐标值表示从当前点出发的位移量G90 G00 X50.0 Z10.0 ; 绝对模式移动到 X50, Z10 的位置G91 G00 X50.0 Z10.0 ; 增量模式从当前位置向 X方向移动50, Z方向移动10 经验之谈初学阶段建议默认使用 G90 绝对坐标编程思维更直观不易出错。只有在铣削轮廓循环、子程序调用等特定场景才切换到 G91。三、常用 G 代码指令速查G 代码 功能 所属组 模态G00 快速定位 01 ✅G01 直线插补切削进给 01 ✅G02 顺时针圆弧插补 01 ✅G03 逆时针圆弧插补 01 ✅G04 暂停 dwell 00 ❌G17 选择 XY 平面 02 ✅G18 选择 ZX 平面 02 ✅G19 选择 YZ 平面 02 ✅G20 英制单位英寸 06 ✅G21 公制单位毫米 06 ✅G28 返回参考点 00 ❌G40 取消刀具半径补偿 07 ✅G41 刀具半径左补偿 07 ✅G42 刀具半径右补偿 07 ✅G43 刀具长度正补偿 08 ✅G49 取消刀具长度补偿 08 ✅G54~G59 工件坐标系选择 14 ✅G73 高速深孔钻孔循环 09 ✅G81 钻孔循环 09 ✅G83 深孔啄钻循环 09 ✅G84 攻丝循环 09 ✅G80 取消固定循环 09 ✅G90 绝对坐标模式 03 ✅G91 增量坐标模式 03 ✅G96 恒线速度控制 13 ✅G97 恒转速控制取消恒线速 13 ✅ 模态指令Modal同一组的 G 代码是互斥的一旦设定会一直保持有效直到被同组的其他 G 代码替换。比如 G01 激活后后续所有直线运动都按进给速度执行直到你切换回 G00。四、常用 M 代码指令速查M 代码 功能 执行时机M00 程序暂停 程序段执行后M01 可选暂停需开启选择停止开关 程序段执行后M02 程序结束不返回开头 程序段执行后M03 主轴正转CW 与本段同步M04 主轴反转CCW 与本段同步M05 主轴停止 程序段执行后M06 自动换刀 程序段执行后M08 冷却液开 与本段同步M09 冷却液关 程序段执行后M30 程序结束并返回开头 程序段执行后M98 调用子程序 程序段执行后M99 子程序返回 程序段执行后五、实战编程示例5.1 数控车床 —— 外圆与端面车削加工一根 φ50×100mm 的阶梯轴材料为 45# 钢; ; 程序号O0001; 零件阶梯轴 φ50→φ40→φ30; 毛坯φ55×105mm 45#钢; 刀具T01 外圆车刀主偏角93°; O0001G21 G40 G97 G99 ; 公制/取消补偿/恒转速/每转进给G28 U0 W0 ; 回参考点T0101 ; 换1号刀取1号刀补M03 S800 ; 主轴正转 800rpmG00 X60.0 Z2.0 ; 快速移动到安全位置M08 ; 开冷却液; --- 粗车外圆 φ50 ---G01 Z0.0 F0.3 ; 靠近端面X-1.0 ; 车端面G00 X55.0 Z2.0 ; 退刀G90 ; 外圆切削循环X51.0 Z-50.0 F0.25 ; 第一刀X47.0 ; 第二刀X43.0 ; 第三刀X40.5 ; 半精车留量0.5mm; --- 精车外圆 φ40 ---S1200 ; 提高转速G00 X40.0 Z2.0G01 Z-50.0 F0.12X50.0 ; 车台阶端面G00 Z2.0X30.0G01 Z-30.0X40.0 ; 车台阶端面G00 X100.0 Z100.0M09 ; 关冷却液G28 U0 W0 ; 回参考点M05 ; 主轴停止M30 ; 程序结束5.2 数控车床 —— 圆弧与螺纹加工加工带 R5 圆角和 M30×2 螺纹的台阶轴; ; 程序号O0002; 零件带圆角和螺纹的台阶轴; 刀具T01 外圆车刀 / T02 外螺纹车刀; O0002G21 G40 G97 G99G28 U0 W0; 外圆加工T01T0101M03 S1000G00 X55.0 Z2.0M08; 车外圆 φ30带 R5 圆角过渡G01 X26.0 Z0.0 F0.2G03 X30.0 Z-2.0 R5.0 ; 逆时针圆弧R5圆角G01 Z-40.0X42.0G03 X46.0 Z-42.0 R2.0G01 Z-60.0X52.0G00 X100.0 Z100.0; 螺纹加工T02T0202G00 X35.0 Z5.0 ; 螺纹起点X方向留安全距离G76 P020060 Q100 R50 ; 螺纹复合循环G76 X27.4 Z-38.0 P1300 Q400 F2.0; P: 02精车2次 00无倒角 60刀尖角60°; X27.4 螺纹底径 (30-2×1.3mm); P1300 牙高1.3mm F2.0 螺距2mmG00 X100.0 Z100.0M09G28 U0 W0M05M305.3 数控铣床 —— 矩形轮廓铣削铣削一个 80×60mm 的矩形外形使用 G41 刀具半径补偿; ; 程序号O0003; 零件80×60mm 矩形轮廓; 刀具φ12 立铣刀; O0003G21 G40 G49 G80 G90 ; 安全初始化G17 ; 选择 XY 平面G54 ; 选择工件坐标系G28 G91 Z0 ; Z轴回参考点T01 M06 ; 换1号刀 φ12立铣刀G90 G00 X-60.0 Y-50.0 ; 移动到下刀位置G43 Z50.0 H01 ; 刀具长度补偿M03 S2500 ; 主轴正转 2500rpmM08; --- 分层铣削每层2mm共铣6层---#100 0 ; 变量当前深度WHILE [#100 LT 12] DO1 ; 循环深度 12mmG00 Z[-#100 2] ; 快速下到安全高度G01 Z[-#100 - 2] F500 ; 切削进给到当前深度; 建立刀具半径左补偿G41 X-40.0 Y-40.0 D01 F800; 铣削矩形轮廓Y30.0X40.0Y-30.0X-40.0; 取消补偿并抬刀G40 X-60.0 Y-50.0G00 Z2.0#100 #100 2 ; 深度递增END1G00 Z100.0M09G49 Z0 ; 取消长度补偿G28 G91 Z0M05M305.4 数控铣床 —— 圆周均布钻孔在 φ80 的圆周上均布 6 个 φ8 的孔使用 G83 深孔啄钻循环; ; 程序号O0004; 零件圆周均布6孔 PCDφ80; 刀具T02 φ8 钻头; O0004G21 G40 G49 G80 G90G17G54G28 G91 Z0T02 M06 ; φ8 钻头G90 G00 X0 Y0 ; 圆心位置G43 Z50.0 H02M03 S1800M08; 用宏程序实现圆周均布钻孔#1 6 ; 孔数#2 360 / #1 ; 角度增量 60°#3 0 ; 当前角度#4 40.0 ; 分布圆半径PCD/2#5 -15.0 ; 孔深WHILE [#3 LT 360] DO1#10 #4 * COS[#3] ; X R × cos(θ)#11 #4 * SIN[#3] ; Y R × sin(θ)G00 X#10 Y#11 ; 移动到孔位上方G00 Z5.0 ; 快速到安全平面G83 Z#5 Q3.0 R2.0 F120 ; 深孔啄钻每啄3mm退屑; Q 每次啄钻深度 R 参考平面G80 ; 取消钻孔循环G00 Z20.0 ; 抬刀#3 #3 #2 ; 角度递增END1G00 Z100.0M09G49 Z0G28 G91 Z0M05M305.5 数控铣床 —— 整圆铣削与型腔加工铣削一个 φ60 的圆形型腔深 10mm; ; 程序号O0005; 零件φ60 圆形型腔 深10mm; 刀具T03 φ16 键槽铣刀可轴向切入; O0005G21 G40 G49 G80 G90G17G54G28 G91 Z0T03 M06 ; φ16 键槽铣刀G90 G00 X0 Y0G43 Z50.0 H03M03 S2000M08; --- 螺旋下刀 环切法铣型腔 ---#1 0 ; 当前深度#2 -10.0 ; 目标深度#3 0 ; 当前半径#4 22.0 ; 目标半径30 - 8 刀具半径#5 2.0 ; 每层深度#6 8.0 ; 径向步距刀径的50%G00 Z2.0WHILE [#1 GT #2] DO1 ; 深度循环#1 #1 - #5IF [#1 LT #2] THEN #1 #2 ; 确保最后一刀到位; 螺旋下刀到当前层深G01 Z#1 F300#3 0 ; 重置半径WHILE [#3 LT #4] DO2 ; 径向循环环切#3 #3 #6IF [#3 GT #4] THEN #3 #4G01 X#3 Y0 F600G02 I-#3 J0 ; 顺时针整圆END2G01 X0 Y0 ; 回中心END1G00 Z100.0M09G49 Z0G28 G91 Z0M05M30六、FANUC 宏程序编程宏程序是 CNC 编程的高级技能通过变量和逻辑控制实现参数化加工。以下是变量类型速查变量类型 编号范围 说明 断电保持局部变量 #1 ~ #33 仅在当前宏程序中有效 ❌公共变量 #100 ~ #199 各程序共享断电清零 ❌公共变量 #500 ~ #999 各程序共享 ✅系统变量 #1000 机床状态、坐标、刀具等 —6.1 宏程序运算与函数; 常用运算符#1 #2 #3 ; 加法#1 #2 - #3 ; 减法#1 #2 * #3 ; 乘法#1 #2 / #3 ; 除法; 常用函数FANUC#1 SIN[#2] ; 正弦角度单位度#1 COS[#2] ; 余弦#1 TAN[#2] ; 正切#1 ATAN[#2] ; 反正切#1 SQRT[#2] ; 平方根#1 ABS[#2] ; 绝对值#1 ROUND[#2] ; 四舍五入#1 FIX[#2] ; 向下取整#1 FUP[#2] ; 向上取整6.2 条件判断与循环; IF 条件判断IF [#1 GT 10] GOTO 100 ; 如果 #1 10跳转到 N100IF [#1 EQ #2] THEN #3 0 ; 如果相等执行 THEN 后的语句; 比较运算符; EQ() NE(≠) GT() LT() GE(≥) LE(≤); WHILE 循环#1 0WHILE [#1 LE 10] DO1G01 X#1 F500#1 #1 1END1; 循环嵌套最多 3 层WHILE [条件] DO1WHILE [条件] DO2WHILE [条件] DO3END3END2END16.3 椭圆的宏程序加工这是一个经典的宏程序应用 —— 在铣床上加工椭圆外形; ; 程序号O0006; 功能椭圆轮廓铣削长轴 a50, 短轴 b30; 椭圆参数方程X a×cos(θ), Y b×sin(θ); O0006G21 G40 G49 G80 G90 G17G54G28 G91 Z0T01 M06G90 G00 X55.0 Y0G43 Z50.0 H01M03 S3000M08G00 Z2.0G01 Z-5.0 F300 ; 下刀到加工深度; 建立刀具半径补偿G41 X50.0 Y0 D01 F600; 用角度增量逼近椭圆#1 0 ; 角度 θ起始#2 50.0 ; 长半轴 a#3 30.0 ; 短半轴 b#4 1.0 ; 角度增量越小越光滑WHILE [#1 LE 360] DO1#10 #2 * COS[#1] ; X a × cos(θ)#11 #3 * SIN[#1] ; Y b × sin(θ)G01 X#10 Y#11 F800#1 #1 #4END1G40 X55.0 Y0G00 Z100.0M09G49 Z0G28 G91 Z0M05M30七、程序结构规范与安全编程7.1 推荐的程序框架Oxxxx ; 程序号xxxx0001~9999; 程序头 (PROGRAM: 零件名称)(DATE: 2026-07-06)(TOOLS: T01-外圆车刀 T02-钻头)(MATERIAL: 45#钢); 安全初始化 G21 G40 G49 G80 G90 G17 ; 取消所有补偿和循环G54 ; 选择工件坐标系G28 G91 Z0 ; Z轴回参考点G28 X0 Y0 ; X/Y轴回参考点; 加工主体 ; ... 你的加工代码 ...; 程序尾 M09 ; 关冷却液G49 Z0 ; 取消长度补偿G28 G91 Z0 ; Z轴回零G28 Y0 ; Y轴回零M05 ; 主轴停止M30 ; 程序结束并返回7.2 安全编程注意事项⚠️ 以下每一条都是用真金白银换来的教训开机必回零。每次开机或急停后必须先执行回参考点操作否则机床坐标系会偏移。首次运行用单段 低速。新程序上机先空运行检查轨迹再低速试切。进给倍率旋钮调到最低。刀具半径补偿的建立与取消必须在 G00/G01 模式下。切勿在 G02/G03 圆弧插补时建立或取消刀补。Z 轴安全高度。每次换刀或工序切换确保 Z 轴在安全高度一般 50mm避免撞刀。换刀前取消所有补偿。执行 M06 前应先 G40 G49 G80确保刀具状态干净。括号注释用英文或拼音。部分老旧 FANUC 系统不支持中文注释建议统一使用英文或拼音。固定循环后必须 G80 取消。否则后续定位指令可能意外触发钻孔动作。八、不同系统的 G 代码差异虽然 G 代码是 ISO 标准但不同数控系统之间仍存在差异。以下是 FANUC、Siemens 和 Heidenhain 三大主流系统的对比功能 FANUC Siemens 840D Heidenhain绝对坐标 G90 G90 坐标直接书写增量坐标 G91 G91 / IC() IX, IY, IZ公制单位 G21 G71 系统参数设定刀具补偿 G41/G42 D G41/G42 D RL/RR钻孔循环 G81~G89 CYCLE81~89 CYCL DEF 200~坐标系 G54~G59 G54~G57/G505~ CYCLE DEF 7.0子程序 M98 Pxxxx Lxxxx / CALL CALL PGM变量 #1~#33, #100 R0~R99 Q1~Q1999 跨平台建议如果你的车间有多种系统建议在注释中标注目标系统或为每种系统维护独立的程序库。CAM 后处理是另一个更省心的方案。九、学习路径建议如果你是从零开始学习 CNC 编程建议按以下路径循序渐进阶段 内容 周期① 基础认知 机床结构、坐标系、装夹与对刀 1~2 周② 手编入门 G00/G01/G02/G03 M代码车削/铣削简单零件 2~4 周③ 固定循环 G70~G76车削复合循环、G81~G89钻孔循环 2 周④ 刀补与子程序 G41/G42/G43、M98/M99 子程序调用 1~2 周⑤ 宏程序 变量、运算、条件、循环 → 参数化加工 3~6 周⑥ CAM 软件 Mastercam / UG NX / PowerMill → 后处理配置 持续提升⑦ 实战优化 工艺参数优化、刀具路径策略、效率与表面质量平衡 持续积累 关键建议手编是基础理解每行代码的含义能帮你更好地使用 CAM 软件和排查问题。不要跳过手编阶段直接学 CAM —— 那会让你在出了问题后束手无策。十、总结CNC 编程是一门理论 实操紧密结合的技能。本文涵盖了✅ G 代码与 M 代码核心指令表✅ 数控车床外圆、圆弧、螺纹的完整编程示例✅ 数控铣床轮廓、钻孔、型腔的完整编程示例✅ FANUC 宏程序的变量、运算、条件、循环语法✅ 椭圆等非圆曲线的宏程序加工方法✅ 程序结构规范与安全编程注意事项✅ 主流数控系统的代码差异对比✅ 从零开始的学习路径规划代码示例可以直接在 FANUC 0i 系列机床上运行其他系统Siemens、Heidenhain、华中数控等需要根据上文对比表做适当调整。如果你觉得这篇文章有帮助欢迎 点赞 收藏 关注后续我会持续分享更多数控加工、宏程序和 CAM 编程的实战经验。—— 全文完 ——
CNC 编程代码示例 —— 从入门到实战
一、什么是 CNC 编程CNCComputer Numerical Control计算机数控编程是指通过编写一系列指令代码控制数控机床按照预定轨迹和工艺参数自动完成零件加工的过程。这些指令代码最核心的就是 G 代码准备功能和 M 代码辅助功能。无论你是从事机械加工的一线操作工还是机电一体化的在校学生掌握 CNC 编程都是提升核心竞争力的关键一步。本文将从基础指令讲起配合大量可直接上机验证的代码示例带你系统掌握 CNC 编程。二、坐标系与编程基础2.1 机床坐标系CNC 编程使用的是右手直角坐标系Z 轴与主轴轴线平行刀具远离工件的方向为正方向X 轴水平方向车床为径向铣床为工作台左右方向Y 轴由右手定则确定铣床常用车床一般不涉及2.2 绝对坐标与增量坐标这是初学者最容易混淆的概念模式 指令 含义绝对坐标 G90 所有坐标值均以工件坐标系原点为基准增量坐标 G91 坐标值表示从当前点出发的位移量G90 G00 X50.0 Z10.0 ; 绝对模式移动到 X50, Z10 的位置G91 G00 X50.0 Z10.0 ; 增量模式从当前位置向 X方向移动50, Z方向移动10 经验之谈初学阶段建议默认使用 G90 绝对坐标编程思维更直观不易出错。只有在铣削轮廓循环、子程序调用等特定场景才切换到 G91。三、常用 G 代码指令速查G 代码 功能 所属组 模态G00 快速定位 01 ✅G01 直线插补切削进给 01 ✅G02 顺时针圆弧插补 01 ✅G03 逆时针圆弧插补 01 ✅G04 暂停 dwell 00 ❌G17 选择 XY 平面 02 ✅G18 选择 ZX 平面 02 ✅G19 选择 YZ 平面 02 ✅G20 英制单位英寸 06 ✅G21 公制单位毫米 06 ✅G28 返回参考点 00 ❌G40 取消刀具半径补偿 07 ✅G41 刀具半径左补偿 07 ✅G42 刀具半径右补偿 07 ✅G43 刀具长度正补偿 08 ✅G49 取消刀具长度补偿 08 ✅G54~G59 工件坐标系选择 14 ✅G73 高速深孔钻孔循环 09 ✅G81 钻孔循环 09 ✅G83 深孔啄钻循环 09 ✅G84 攻丝循环 09 ✅G80 取消固定循环 09 ✅G90 绝对坐标模式 03 ✅G91 增量坐标模式 03 ✅G96 恒线速度控制 13 ✅G97 恒转速控制取消恒线速 13 ✅ 模态指令Modal同一组的 G 代码是互斥的一旦设定会一直保持有效直到被同组的其他 G 代码替换。比如 G01 激活后后续所有直线运动都按进给速度执行直到你切换回 G00。四、常用 M 代码指令速查M 代码 功能 执行时机M00 程序暂停 程序段执行后M01 可选暂停需开启选择停止开关 程序段执行后M02 程序结束不返回开头 程序段执行后M03 主轴正转CW 与本段同步M04 主轴反转CCW 与本段同步M05 主轴停止 程序段执行后M06 自动换刀 程序段执行后M08 冷却液开 与本段同步M09 冷却液关 程序段执行后M30 程序结束并返回开头 程序段执行后M98 调用子程序 程序段执行后M99 子程序返回 程序段执行后五、实战编程示例5.1 数控车床 —— 外圆与端面车削加工一根 φ50×100mm 的阶梯轴材料为 45# 钢; ; 程序号O0001; 零件阶梯轴 φ50→φ40→φ30; 毛坯φ55×105mm 45#钢; 刀具T01 外圆车刀主偏角93°; O0001G21 G40 G97 G99 ; 公制/取消补偿/恒转速/每转进给G28 U0 W0 ; 回参考点T0101 ; 换1号刀取1号刀补M03 S800 ; 主轴正转 800rpmG00 X60.0 Z2.0 ; 快速移动到安全位置M08 ; 开冷却液; --- 粗车外圆 φ50 ---G01 Z0.0 F0.3 ; 靠近端面X-1.0 ; 车端面G00 X55.0 Z2.0 ; 退刀G90 ; 外圆切削循环X51.0 Z-50.0 F0.25 ; 第一刀X47.0 ; 第二刀X43.0 ; 第三刀X40.5 ; 半精车留量0.5mm; --- 精车外圆 φ40 ---S1200 ; 提高转速G00 X40.0 Z2.0G01 Z-50.0 F0.12X50.0 ; 车台阶端面G00 Z2.0X30.0G01 Z-30.0X40.0 ; 车台阶端面G00 X100.0 Z100.0M09 ; 关冷却液G28 U0 W0 ; 回参考点M05 ; 主轴停止M30 ; 程序结束5.2 数控车床 —— 圆弧与螺纹加工加工带 R5 圆角和 M30×2 螺纹的台阶轴; ; 程序号O0002; 零件带圆角和螺纹的台阶轴; 刀具T01 外圆车刀 / T02 外螺纹车刀; O0002G21 G40 G97 G99G28 U0 W0; 外圆加工T01T0101M03 S1000G00 X55.0 Z2.0M08; 车外圆 φ30带 R5 圆角过渡G01 X26.0 Z0.0 F0.2G03 X30.0 Z-2.0 R5.0 ; 逆时针圆弧R5圆角G01 Z-40.0X42.0G03 X46.0 Z-42.0 R2.0G01 Z-60.0X52.0G00 X100.0 Z100.0; 螺纹加工T02T0202G00 X35.0 Z5.0 ; 螺纹起点X方向留安全距离G76 P020060 Q100 R50 ; 螺纹复合循环G76 X27.4 Z-38.0 P1300 Q400 F2.0; P: 02精车2次 00无倒角 60刀尖角60°; X27.4 螺纹底径 (30-2×1.3mm); P1300 牙高1.3mm F2.0 螺距2mmG00 X100.0 Z100.0M09G28 U0 W0M05M305.3 数控铣床 —— 矩形轮廓铣削铣削一个 80×60mm 的矩形外形使用 G41 刀具半径补偿; ; 程序号O0003; 零件80×60mm 矩形轮廓; 刀具φ12 立铣刀; O0003G21 G40 G49 G80 G90 ; 安全初始化G17 ; 选择 XY 平面G54 ; 选择工件坐标系G28 G91 Z0 ; Z轴回参考点T01 M06 ; 换1号刀 φ12立铣刀G90 G00 X-60.0 Y-50.0 ; 移动到下刀位置G43 Z50.0 H01 ; 刀具长度补偿M03 S2500 ; 主轴正转 2500rpmM08; --- 分层铣削每层2mm共铣6层---#100 0 ; 变量当前深度WHILE [#100 LT 12] DO1 ; 循环深度 12mmG00 Z[-#100 2] ; 快速下到安全高度G01 Z[-#100 - 2] F500 ; 切削进给到当前深度; 建立刀具半径左补偿G41 X-40.0 Y-40.0 D01 F800; 铣削矩形轮廓Y30.0X40.0Y-30.0X-40.0; 取消补偿并抬刀G40 X-60.0 Y-50.0G00 Z2.0#100 #100 2 ; 深度递增END1G00 Z100.0M09G49 Z0 ; 取消长度补偿G28 G91 Z0M05M305.4 数控铣床 —— 圆周均布钻孔在 φ80 的圆周上均布 6 个 φ8 的孔使用 G83 深孔啄钻循环; ; 程序号O0004; 零件圆周均布6孔 PCDφ80; 刀具T02 φ8 钻头; O0004G21 G40 G49 G80 G90G17G54G28 G91 Z0T02 M06 ; φ8 钻头G90 G00 X0 Y0 ; 圆心位置G43 Z50.0 H02M03 S1800M08; 用宏程序实现圆周均布钻孔#1 6 ; 孔数#2 360 / #1 ; 角度增量 60°#3 0 ; 当前角度#4 40.0 ; 分布圆半径PCD/2#5 -15.0 ; 孔深WHILE [#3 LT 360] DO1#10 #4 * COS[#3] ; X R × cos(θ)#11 #4 * SIN[#3] ; Y R × sin(θ)G00 X#10 Y#11 ; 移动到孔位上方G00 Z5.0 ; 快速到安全平面G83 Z#5 Q3.0 R2.0 F120 ; 深孔啄钻每啄3mm退屑; Q 每次啄钻深度 R 参考平面G80 ; 取消钻孔循环G00 Z20.0 ; 抬刀#3 #3 #2 ; 角度递增END1G00 Z100.0M09G49 Z0G28 G91 Z0M05M305.5 数控铣床 —— 整圆铣削与型腔加工铣削一个 φ60 的圆形型腔深 10mm; ; 程序号O0005; 零件φ60 圆形型腔 深10mm; 刀具T03 φ16 键槽铣刀可轴向切入; O0005G21 G40 G49 G80 G90G17G54G28 G91 Z0T03 M06 ; φ16 键槽铣刀G90 G00 X0 Y0G43 Z50.0 H03M03 S2000M08; --- 螺旋下刀 环切法铣型腔 ---#1 0 ; 当前深度#2 -10.0 ; 目标深度#3 0 ; 当前半径#4 22.0 ; 目标半径30 - 8 刀具半径#5 2.0 ; 每层深度#6 8.0 ; 径向步距刀径的50%G00 Z2.0WHILE [#1 GT #2] DO1 ; 深度循环#1 #1 - #5IF [#1 LT #2] THEN #1 #2 ; 确保最后一刀到位; 螺旋下刀到当前层深G01 Z#1 F300#3 0 ; 重置半径WHILE [#3 LT #4] DO2 ; 径向循环环切#3 #3 #6IF [#3 GT #4] THEN #3 #4G01 X#3 Y0 F600G02 I-#3 J0 ; 顺时针整圆END2G01 X0 Y0 ; 回中心END1G00 Z100.0M09G49 Z0G28 G91 Z0M05M30六、FANUC 宏程序编程宏程序是 CNC 编程的高级技能通过变量和逻辑控制实现参数化加工。以下是变量类型速查变量类型 编号范围 说明 断电保持局部变量 #1 ~ #33 仅在当前宏程序中有效 ❌公共变量 #100 ~ #199 各程序共享断电清零 ❌公共变量 #500 ~ #999 各程序共享 ✅系统变量 #1000 机床状态、坐标、刀具等 —6.1 宏程序运算与函数; 常用运算符#1 #2 #3 ; 加法#1 #2 - #3 ; 减法#1 #2 * #3 ; 乘法#1 #2 / #3 ; 除法; 常用函数FANUC#1 SIN[#2] ; 正弦角度单位度#1 COS[#2] ; 余弦#1 TAN[#2] ; 正切#1 ATAN[#2] ; 反正切#1 SQRT[#2] ; 平方根#1 ABS[#2] ; 绝对值#1 ROUND[#2] ; 四舍五入#1 FIX[#2] ; 向下取整#1 FUP[#2] ; 向上取整6.2 条件判断与循环; IF 条件判断IF [#1 GT 10] GOTO 100 ; 如果 #1 10跳转到 N100IF [#1 EQ #2] THEN #3 0 ; 如果相等执行 THEN 后的语句; 比较运算符; EQ() NE(≠) GT() LT() GE(≥) LE(≤); WHILE 循环#1 0WHILE [#1 LE 10] DO1G01 X#1 F500#1 #1 1END1; 循环嵌套最多 3 层WHILE [条件] DO1WHILE [条件] DO2WHILE [条件] DO3END3END2END16.3 椭圆的宏程序加工这是一个经典的宏程序应用 —— 在铣床上加工椭圆外形; ; 程序号O0006; 功能椭圆轮廓铣削长轴 a50, 短轴 b30; 椭圆参数方程X a×cos(θ), Y b×sin(θ); O0006G21 G40 G49 G80 G90 G17G54G28 G91 Z0T01 M06G90 G00 X55.0 Y0G43 Z50.0 H01M03 S3000M08G00 Z2.0G01 Z-5.0 F300 ; 下刀到加工深度; 建立刀具半径补偿G41 X50.0 Y0 D01 F600; 用角度增量逼近椭圆#1 0 ; 角度 θ起始#2 50.0 ; 长半轴 a#3 30.0 ; 短半轴 b#4 1.0 ; 角度增量越小越光滑WHILE [#1 LE 360] DO1#10 #2 * COS[#1] ; X a × cos(θ)#11 #3 * SIN[#1] ; Y b × sin(θ)G01 X#10 Y#11 F800#1 #1 #4END1G40 X55.0 Y0G00 Z100.0M09G49 Z0G28 G91 Z0M05M30七、程序结构规范与安全编程7.1 推荐的程序框架Oxxxx ; 程序号xxxx0001~9999; 程序头 (PROGRAM: 零件名称)(DATE: 2026-07-06)(TOOLS: T01-外圆车刀 T02-钻头)(MATERIAL: 45#钢); 安全初始化 G21 G40 G49 G80 G90 G17 ; 取消所有补偿和循环G54 ; 选择工件坐标系G28 G91 Z0 ; Z轴回参考点G28 X0 Y0 ; X/Y轴回参考点; 加工主体 ; ... 你的加工代码 ...; 程序尾 M09 ; 关冷却液G49 Z0 ; 取消长度补偿G28 G91 Z0 ; Z轴回零G28 Y0 ; Y轴回零M05 ; 主轴停止M30 ; 程序结束并返回7.2 安全编程注意事项⚠️ 以下每一条都是用真金白银换来的教训开机必回零。每次开机或急停后必须先执行回参考点操作否则机床坐标系会偏移。首次运行用单段 低速。新程序上机先空运行检查轨迹再低速试切。进给倍率旋钮调到最低。刀具半径补偿的建立与取消必须在 G00/G01 模式下。切勿在 G02/G03 圆弧插补时建立或取消刀补。Z 轴安全高度。每次换刀或工序切换确保 Z 轴在安全高度一般 50mm避免撞刀。换刀前取消所有补偿。执行 M06 前应先 G40 G49 G80确保刀具状态干净。括号注释用英文或拼音。部分老旧 FANUC 系统不支持中文注释建议统一使用英文或拼音。固定循环后必须 G80 取消。否则后续定位指令可能意外触发钻孔动作。八、不同系统的 G 代码差异虽然 G 代码是 ISO 标准但不同数控系统之间仍存在差异。以下是 FANUC、Siemens 和 Heidenhain 三大主流系统的对比功能 FANUC Siemens 840D Heidenhain绝对坐标 G90 G90 坐标直接书写增量坐标 G91 G91 / IC() IX, IY, IZ公制单位 G21 G71 系统参数设定刀具补偿 G41/G42 D G41/G42 D RL/RR钻孔循环 G81~G89 CYCLE81~89 CYCL DEF 200~坐标系 G54~G59 G54~G57/G505~ CYCLE DEF 7.0子程序 M98 Pxxxx Lxxxx / CALL CALL PGM变量 #1~#33, #100 R0~R99 Q1~Q1999 跨平台建议如果你的车间有多种系统建议在注释中标注目标系统或为每种系统维护独立的程序库。CAM 后处理是另一个更省心的方案。九、学习路径建议如果你是从零开始学习 CNC 编程建议按以下路径循序渐进阶段 内容 周期① 基础认知 机床结构、坐标系、装夹与对刀 1~2 周② 手编入门 G00/G01/G02/G03 M代码车削/铣削简单零件 2~4 周③ 固定循环 G70~G76车削复合循环、G81~G89钻孔循环 2 周④ 刀补与子程序 G41/G42/G43、M98/M99 子程序调用 1~2 周⑤ 宏程序 变量、运算、条件、循环 → 参数化加工 3~6 周⑥ CAM 软件 Mastercam / UG NX / PowerMill → 后处理配置 持续提升⑦ 实战优化 工艺参数优化、刀具路径策略、效率与表面质量平衡 持续积累 关键建议手编是基础理解每行代码的含义能帮你更好地使用 CAM 软件和排查问题。不要跳过手编阶段直接学 CAM —— 那会让你在出了问题后束手无策。十、总结CNC 编程是一门理论 实操紧密结合的技能。本文涵盖了✅ G 代码与 M 代码核心指令表✅ 数控车床外圆、圆弧、螺纹的完整编程示例✅ 数控铣床轮廓、钻孔、型腔的完整编程示例✅ FANUC 宏程序的变量、运算、条件、循环语法✅ 椭圆等非圆曲线的宏程序加工方法✅ 程序结构规范与安全编程注意事项✅ 主流数控系统的代码差异对比✅ 从零开始的学习路径规划代码示例可以直接在 FANUC 0i 系列机床上运行其他系统Siemens、Heidenhain、华中数控等需要根据上文对比表做适当调整。如果你觉得这篇文章有帮助欢迎 点赞 收藏 关注后续我会持续分享更多数控加工、宏程序和 CAM 编程的实战经验。—— 全文完 ——