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

图示说明:总览图汇总了顶视路径、侧视深度、工艺参数、加工步骤、循环流程和精简示例程序,便于先建立整体理解。
安全提示
本文程序用于模拟器教学,不包含真实加工所需的主轴启动、冷却液、刀具长度补偿、刀具半径补偿和完整安全检查。真实机床运行前必须结合机床厂家说明书、夹具状态、刀具状态和现场安全规范重新验证。
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运动顺序:
- 刀具先到安全高度
Z5。 - 快速移动到矩形起点
X0 Y0。 - 以
F300下刀到Z-2。 - 以
F600沿矩形四条边运动。 - 完成一圈后抬刀到
Z5。 - 加工件数加 1。
- 暂停 2 秒。
- 返回
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/min4.8 加工第二条边
gcode
Y30.(EDGE 2)由于 G01 和 F600 都是模态指令,所以不必在每一行重复。
刀具从:
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 秒。
暂停的作用:
- 方便观察加工件数已经增加。
- 让两次循环之间有清晰间隔。
- 便于学习程序执行节奏。
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 mmXY 轮廓使用:
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% 时,会出现一种容易误判的现象:
- 程序显示已经启动;
- 运行时间继续增加;
- 当前程序处于
STRT或MTN; - 但坐标停在某条
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 设置为当前主程序
在程序目录中:
- 把光标移动到
O1000。 - 点击“操作”。
- 选择“主程序”或“主程序选择”。
- 确认屏幕顶部显示
O1000。
9.3 解除急停
如果屏幕底部显示:
text
--EMG--需要:
- 点击 I/O 面板中的
ESP,释放急停。 - 按实体面板上的
RESET。 - 确认
--EMG--消失。
9.4 设置进给倍率
确认右侧 I/O 面板中的 FOV 组合不是 0%。
测试时建议使用:
text
100%也可以先使用较低倍率,观察坐标变化。
9.5 启动程序
- 点击
AUTO,进入自动运行模式。 - 确认
SSBK单程序段没有开启。 - 点击
CST,即 Cycle Start。 - 观察 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. 这段程序适合学习哪些基础概念
通过这段短程序,可以同时理解:
O1000:传统 FANUC 程序号。G90:绝对坐标。G00:快速定位。G01:直线切削进给。F:编程进给速度。G54:工件坐标系。N10:程序段编号。G04:暂停。#3901:加工件数变量。M99 P10:返回指定程序段并循环。- 模态指令:为什么后续行可以省略
G01和F600。 - 进给倍率:程序速度和面板倍率之间的关系。
- 刀具中心路径与实际加工轮廓的区别。
14. 用一句话理解整段程序
刀具从安全高度移动到矩形左下角,下刀 2 mm,以 600 mm/min 沿 40 × 30 mm 的矩形中心线走一圈,抬刀、件数加 1、等待 2 秒,然后自动重复。
15. 安全提醒
这段程序主要用于 CNC GUIDE 模拟器教学。
真实机床运行前,必须确认:
- G54 工件坐标系设置正确;
- 刀具和工件位置正确;
- Z0 确实是工件上表面;
Z5有足够安全空间;Z-2不会碰撞夹具;- X、Y 路径位于工件材料范围内;
- 刀具已经正确装夹并启动主轴;
- 使用单段、空运行和低倍率完成首次验证;
- 程序没有因无限循环造成无人值守运行。
当前示例没有刀具长度补偿和主轴控制,不能不经修改直接用于真实加工。学习时建议先在 CNC GUIDE 中确认坐标路径、循环逻辑和加工件数变化,再逐步加入换刀、主轴、冷却液、刀补和退出条件,形成适合具体机床的完整加工程序。

