Skip to content

FANUC 矩形沟槽循环程序详解

本文用一段尽可能短、又便于学习的 FANUC 程序,让刀具沿矩形路径持续运动,并在每完成一圈后自动把加工件数加 1。示例主要面向 CNC GUIDE 模拟器教学,用于观察坐标变化、进给倍率、循环返回和系统变量的执行效果。

FANUC 矩形沟槽循环教学总览

图示说明:总览图汇总了顶视路径、侧视深度、工艺参数、加工步骤、循环流程和精简示例程序,便于先建立整体理解。

安全提示

本文程序用于模拟器教学,不包含真实加工所需的主轴启动、冷却液、刀具长度补偿、刀具半径补偿和完整安全检查。真实机床运行前必须结合机床厂家说明书、夹具状态、刀具状态和现场安全规范重新验证。


1. 这段程序最终加工出什么

这段程序不会把矩形内部全部铣空

它只让刀具中心沿一个 40 × 30 mm 的矩形走一圈,因此最终效果是一条封闭的矩形沟槽。

  • 刀具中心路径:40 × 30 mm
  • 加工深度:2 mm
  • 建议演示刀具:D10 平底立铣刀
  • 沟槽宽度:约等于刀具直径,即约 10 mm
  • 沟槽四个拐角:由刀具半径形成圆角
  • 矩形内部:仍然保留原材料,不会被整体铣掉

重要区别

  • 走一圈:加工矩形沟槽。
  • 多圈逐步向内偏移:才能把矩形内部铣空,形成矩形凹腔。

加工后的矩形沟槽示意

矩形沟槽加工后的演示件与坐标系

图示说明:D10 平底立铣刀沿矩形中心线走一圈后,在工件上形成约 40 × 30 mm 中心线尺寸的矩形沟槽,起点位于 X0 Y0。

text
┌──────────────────────────────┐
│                              │
│   ┌──────────────────────┐   │
│   │      内部材料保留      │   │
│   └──────────────────────┘   │
│                              │
└──────────────────────────────┘

示意说明:刀具只沿矩形中心线走一圈,形成封闭沟槽;矩形内部材料仍然保留。


2. 最终精简程序

gcode
%
O1000(RECTANGLE LOOP DEMO)
(TOOL PATH 40X30 DEPTH 2)

G21 G17 G40 G49 G80 G90 G94 G54
#3901=0(PART COUNT RESET)

G00 Z5.(SAFE HEIGHT)
G00 X0.Y0.(START POINT)

N10 G01 Z-2.F300.(PLUNGE)
G01 X40.Y0.F600.(EDGE 1)
Y30.(EDGE 2)
X0.(EDGE 3)
Y0.(EDGE 4)

G00 Z5.(RETRACT)
#3901=#3901+1(PART COUNT +1)
G04 X2.(WAIT 2 SECONDS)
M99 P10(RETURN TO N10)

%

这是一段用于 CNC GUIDE 学习和观察坐标变化 的演示程序。它故意没有加入换刀、主轴启动、冷却液、刀具长度补偿和刀具半径补偿,以便先理解最基本的坐标运动、进给、循环和计数。


3. 坐标和加工路线

程序采用绝对坐标 G90,并约定:

位置坐标
工件上表面Z0
安全高度Z5
加工深度Z-2
矩形起点X0 Y0
第一角X40 Y0
第二角X40 Y30
第三角X0 Y30
返回起点X0 Y0

刀具中心的俯视路径如下:

text
             X40 Y30
       ④ <──────── ③
       │             ↑
       │             │
       ↓             │
X0 Y0 ① ─────────> ② X40 Y0

运动顺序:

  1. 刀具先到安全高度 Z5
  2. 快速移动到矩形起点 X0 Y0
  3. F300 下刀到 Z-2
  4. F600 沿矩形四条边运动。
  5. 完成一圈后抬刀到 Z5
  6. 加工件数加 1。
  7. 暂停 2 秒。
  8. 返回 N10,自动开始下一圈。

坐标系和路径示意

演示件坐标系、安全高度和加工深度

图示说明:工件上表面定义为 Z0,安全高度为 Z5,加工深度为 Z-2,矩形路径从 X0 Y0 起点开始。

text
Z+

│      安全高度:Z5
│      ─────────

│      工件表面:Z0
│      ─────────

│      加工深度:Z-2
│      ─────────
└────────────────→ X+

示意说明:程序先在安全高度移动到起点,再下刀到 Z-2,随后沿 XY 平面完成矩形路径。

矩形沟槽程序运动顺序

图示说明:蓝色虚线表示 G00 快速定位和抬刀,红色实线表示 G01 切削进给;程序依次完成下刀、四边加工和抬刀。


4. 逐行解释

4.1 程序开始和程序号

gcode
%
O1000(RECTANGLE LOOP DEMO)
(TOOL PATH 40X30 DEPTH 2)

%

程序文件的开始标记。文件末尾也放一个 %,表示程序文件结束。

O1000

程序号为 1000

传统 FANUC 程序通常使用:

text
O + 数字

例如:

text
O0001
O0100
O1000

当前 CNC GUIDE 也支持 <SAMPLE><Woody001> 这样的程序名,但为了兼容传统 FANUC 习惯,这里使用 O1000

括号内容

gcode
(RECTANGLE LOOP DEMO)
(TOOL PATH 40X30 DEPTH 2)

括号中的内容是注释,不参与执行。


4.2 初始化加工状态

gcode
G21 G17 G40 G49 G80 G90 G94 G54

这一行一次设置多个模态状态:

指令作用
G21使用毫米作为长度单位
G17选择 XY 平面
G40取消刀具半径补偿
G49取消刀具长度补偿
G80取消钻孔等固定循环
G90使用绝对坐标编程
G94进给速度单位为 mm/min
G54使用第一工件坐标系

其中最容易理解错的是 G90

G90 下:

gcode
X40.

表示移动到绝对坐标 X=40,而不是在当前位置基础上再移动 40 mm。


4.3 加工件数清零

gcode
#3901=0(PART COUNT RESET)

#3901 是 FANUC 的加工件数系统变量。

这一行把加工件数清零:

text
#3901 = 0

它只在程序首次从头启动时执行一次。

后面的循环使用:

gcode
M99 P10

直接跳回 N10,不会再次执行这条清零指令。

如果 CNC GUIDE 在这里出现宏变量相关报警,可以暂时删除所有包含 #3901 的两行。程序仍然可以循环,只是不再自动增加加工件数。


4.4 抬刀到安全高度

gcode
G00 Z5.(SAFE HEIGHT)

G00 表示快速定位。

这一行让 Z 轴快速移动到:

text
Z = 5 mm

因为工件上表面定义为 Z0,所以 Z5 表示刀尖位于工件上表面上方 5 mm。

先抬 Z,再移动 X、Y,是为了降低刀具横向快速移动时碰撞工件的风险。


4.5 快速到达矩形起点

gcode
G00 X0.Y0.(START POINT)

刀具保持在 Z5 安全高度,快速移动到:

text
X = 0
Y = 0

这里是矩形路径的左下角,也是每一圈加工的起点。


4.6 循环起点和下刀

gcode
N10 G01 Z-2.F300.(PLUNGE)

这一行可拆成四部分:

内容含义
N10程序段编号 10
G01直线切削进给
Z-2.移动到绝对坐标 Z=-2
F300.进给速度 300 mm/min

刀具从:

text
Z5

下降到:

text
Z-2

总移动距离是 7 mm。

理论下刀时间:

text
7 ÷ 300 × 60 = 1.4 秒

N10 是循环返回点。每完成一圈后,程序会通过 M99 P10 回到这里。


4.7 加工第一条边

gcode
G01 X40.Y0.F600.(EDGE 1)

刀具从:

text
X0 Y0

移动到:

text
X40 Y0

也就是沿 X 正方向移动 40 mm。

这一行同时把轮廓加工速度改为:

text
F600 mm/min

4.8 加工第二条边

gcode
Y30.(EDGE 2)

由于 G01F600 都是模态指令,所以不必在每一行重复。

刀具从:

text
X40 Y0

移动到:

text
X40 Y30

这一行没有写 X,因此 X 保持在 40。


4.9 加工第三条边

gcode
X0.(EDGE 3)

刀具从:

text
X40 Y30

移动到:

text
X0 Y30

这一行没有写 Y,因此 Y 保持在 30。


4.10 加工第四条边

gcode
Y0.(EDGE 4)

刀具从:

text
X0 Y30

移动到:

text
X0 Y0

至此,矩形四条边加工完成,刀具回到原来的起点。

矩形沟槽顶视图走刀路径

图示说明:顶视图中红色实线为切削路径,刀具中心依次经过 X0 Y0、X40 Y0、X40 Y30、X0 Y30,并回到 X0 Y0。


4.11 抬刀

gcode
G00 Z5.(RETRACT)

刀具从加工深度:

text
Z-2

快速抬到:

text
Z5

因为刀具已经回到 X0 Y0,所以抬刀后可以安全开始下一圈。


4.12 加工件数加一

gcode
#3901=#3901+1(PART COUNT +1)

这相当于:

text
当前加工件数 = 当前加工件数 + 1

例如当前件数为 7:

text
#3901 = 7 + 1
#3901 = 8

因此每完成一圈,CNC 屏幕上的加工件数就会增加 1。

这里把“完成一圈矩形沟槽”视为“完成一件”。


4.13 暂停两秒

gcode
G04 X2.(WAIT 2 SECONDS)

G04 表示暂停。

X2. 表示暂停约 2 秒。

暂停的作用:

  1. 方便观察加工件数已经增加。
  2. 让两次循环之间有清晰间隔。
  3. 便于学习程序执行节奏。

4.14 返回循环起点

gcode
M99 P10(RETURN TO N10)

这条指令让程序返回到:

gcode
N10

因此程序不会结束,而是形成无限循环:

text
N10 下刀
→ 加工四条边
→ 抬刀
→ 件数加 1
→ 暂停 2 秒
→ 返回 N10

只需点击一次循环启动 CST,程序就会一直重复运行,直到手动停止或复位。

矩形沟槽循环运行和加工件数计数

图示说明:每完成一圈矩形路径后,程序抬刀、暂停、加工件数加 1,再通过 M99 返回循环起点继续执行。


5. 每一圈需要多长时间

矩形周长:

text
40 + 30 + 40 + 30 = 140 mm

XY 轮廓使用:

text
F600 mm/min

理论轮廓时间:

text
140 ÷ 600 × 60 = 14 秒

下刀距离为 7 mm,下刀速度为:

text
F300 mm/min

理论下刀时间:

text
7 ÷ 300 × 60 = 1.4 秒

程序还会暂停 2 秒,因此理论总时间约为:

text
14 + 1.4 + 2 = 17.4 秒

再考虑快速移动、轴加减速和系统处理时间,实际大约为:

text
18~20 秒/圈

前提是操作面板中的进给倍率为 100%


6. 进给倍率会怎样影响运行

程序中的:

gcode
F300.
F600.

是编程进给速度。

操作面板上的进给倍率会在此基础上再次调整实际速度。

例如程序执行 F600

面板进给倍率实际进给速度
100%约 600 mm/min
50%约 300 mm/min
25%约 150 mm/min
0%0 mm/min,坐标停止变化

当倍率为 0% 时,会出现一种容易误判的现象:

  • 程序显示已经启动;
  • 运行时间继续增加;
  • 当前程序处于 STRTMTN
  • 但坐标停在某条 G01 指令上不动;
  • 屏幕上的实际 F 显示为 0。

这不是程序没有运行,而是切削进给被倍率锁在 0%。


7. 刀具中心路径不等于沟槽外形尺寸

程序写的是:

text
40 × 30 mm

它表示的是刀具中心线形成的矩形尺寸,不是最终沟槽的外边界尺寸。

假设使用 D10 立铣刀:

  • 刀具半径为 5 mm;
  • 沟槽宽度约为 10 mm;
  • 刀具中心线两侧各切削约 5 mm;
  • 四个拐角会形成约 R5 的圆角。

因此,在不使用刀具半径补偿的情况下,不能简单把这段程序理解成“加工出外形正好为 40 × 30 mm 的槽”。

这也是程序中加入:

gcode
G40

并明确说明“不考虑刀补”的原因。


8. 为什么矩形内部不会被铣掉

程序中的 XY 运动只有四条直线:

gcode
G01 X40.Y0.
Y30.
X0.
Y0.

刀具只沿矩形边界走一圈。

矩形中间没有任何走刀指令,因此中间的材料不会被切除。

要铣成完整矩形凹腔,需要增加多圈向内偏移的路径,例如:

text
外圈
→ 向内偏移一段距离
→ 第二圈
→ 再向内偏移
→ 第三圈
→ 持续到中心区域全部覆盖

还可以使用:

  • 往复式平行走刀;
  • 螺旋式向内走刀;
  • CAM 软件生成的口袋加工路径;
  • FANUC 宏程序自动计算多圈路径。

这些都不属于当前“最精简示例程序”的范围。


9. CNC GUIDE 中的运行步骤

9.1 导入或输入程序

把程序保存为文本文件,或在 CNC GUIDE 中创建 O1000 并输入程序。

9.2 设置为当前主程序

在程序目录中:

  1. 把光标移动到 O1000
  2. 点击“操作”。
  3. 选择“主程序”或“主程序选择”。
  4. 确认屏幕顶部显示 O1000

9.3 解除急停

如果屏幕底部显示:

text
--EMG--

需要:

  1. 点击 I/O 面板中的 ESP,释放急停。
  2. 按实体面板上的 RESET
  3. 确认 --EMG-- 消失。

9.4 设置进给倍率

确认右侧 I/O 面板中的 FOV 组合不是 0%。

测试时建议使用:

text
100%

也可以先使用较低倍率,观察坐标变化。

9.5 启动程序

  1. 点击 AUTO,进入自动运行模式。
  2. 确认 SSBK 单程序段没有开启。
  3. 点击 CST,即 Cycle Start。
  4. 观察 X、Y、Z 坐标和加工件数变化。

10. 正常运行时应该看到什么

启动后,坐标变化大致如下:

text
Z:5 → -2
X:0 → 40
Y:0 → 30
X:40 → 0
Y:30 → 0
Z:-2 → 5

随后:

text
加工件数 +1
暂停 2 秒
重新下刀

循环过程中:

  • X 会在 0 和 40 之间变化;
  • Y 会在 0 和 30 之间变化;
  • Z 会在 5 和 -2 之间变化;
  • 加工件数每圈增加 1;
  • 运行时间持续增加;
  • 程序不会执行 M30 结束。

11. 如何停止

正常暂停

使用:

text
Feed Hold / CSP

它会暂停当前进给运动。

终止循环

按:

text
RESET

它会终止当前程序运行,并解除程序的循环状态。

紧急情况

使用:

text
ESP

急停只用于紧急停止,不建议把它当作普通的程序停止按钮。


12. 常见问题

12.1 程序运行时间增加,但坐标不动

最常见原因是进给倍率为 0%。

检查:

text
屏幕实际 F 是否为 0 mm/min
右侧 FOV 是否设置为 0%

程序可能已经执行完 G00 快速定位,并停在:

gcode
G01 Z-2.F300.

等待非零的切削进给倍率。


12.2 运行到 #3901 时报警

可能是当前配置没有启用相关宏变量功能。

先删除:

gcode
#3901=0
#3901=#3901+1

程序仍可循环,只是加工件数不会自动增加。


12.3 程序只执行一行就停

检查是否开启了:

text
SSBK

它表示单程序段。开启后,每执行一段程序都需要重新按一次循环启动。


12.4 点击 CST 后完全不运行

检查:

  • 是否处于 AUTO 模式;
  • 是否仍有 --EMG--
  • 是否存在其他报警;
  • 当前主程序是否为 O1000
  • CSP 是否处于停止状态;
  • 进给倍率是否为 0%。

12.5 为什么程序没有主轴启动

当前程序是坐标运动教学程序,故意没有加入:

gcode
T1 M06
S2000 M03
M08
G43 H01

原因是这些指令可能依赖:

  • 换刀完成信号;
  • 主轴启动完成信号;
  • PMC 配置;
  • 刀具长度补偿值;
  • 冷却液控制信号。

加入后会增加初学时的变量和报警可能。

先把坐标、进给、循环和计数理解清楚,再逐步加入完整机床动作更合适。


13. 这段程序适合学习哪些基础概念

通过这段短程序,可以同时理解:

  1. O1000:传统 FANUC 程序号。
  2. G90:绝对坐标。
  3. G00:快速定位。
  4. G01:直线切削进给。
  5. F:编程进给速度。
  6. G54:工件坐标系。
  7. N10:程序段编号。
  8. G04:暂停。
  9. #3901:加工件数变量。
  10. M99 P10:返回指定程序段并循环。
  11. 模态指令:为什么后续行可以省略 G01F600
  12. 进给倍率:程序速度和面板倍率之间的关系。
  13. 刀具中心路径与实际加工轮廓的区别。

14. 用一句话理解整段程序

刀具从安全高度移动到矩形左下角,下刀 2 mm,以 600 mm/min 沿 40 × 30 mm 的矩形中心线走一圈,抬刀、件数加 1、等待 2 秒,然后自动重复。


15. 安全提醒

这段程序主要用于 CNC GUIDE 模拟器教学。

真实机床运行前,必须确认:

  • G54 工件坐标系设置正确;
  • 刀具和工件位置正确;
  • Z0 确实是工件上表面;
  • Z5 有足够安全空间;
  • Z-2 不会碰撞夹具;
  • X、Y 路径位于工件材料范围内;
  • 刀具已经正确装夹并启动主轴;
  • 使用单段、空运行和低倍率完成首次验证;
  • 程序没有因无限循环造成无人值守运行。

当前示例没有刀具长度补偿和主轴控制,不能不经修改直接用于真实加工。学习时建议先在 CNC GUIDE 中确认坐标路径、循环逻辑和加工件数变化,再逐步加入换刀、主轴、冷却液、刀补和退出条件,形成适合具体机床的完整加工程序。