G02/G03 圆弧插补:方向判断以及 R 指令与 I/J/K 指令的区别
结合铣削示例和路径图,说明如何结合平面选择判断 G02(顺时针)与 G03(逆时针)、R 指令的 180 度问题、I/J/K 圆心指令以及整圆加工。
圆弧程序段需要的三项信息
直线只要有终点就能画出来,圆弧却不行。因为经过同一起点和终点的圆有无数个。所以圆弧程序段必须同时具备旋转方向(G02 或 G03)、终点以及半径或圆心位置。
顺时针是从哪一侧看的
G02 是顺时针(CW),G03 是逆时针(CCW)。但“顺时针”的基准是从垂直于所选平面的轴的正方向朝负方向看过去。在加工中心的默认平面 G17(XY)中,视线是从上方俯视工作台,因此与直觉一致。
在 G18(ZX)或 G19(YZ)中,观察方向改变,可能会感觉与屏幕上画的图纸方向相反。车床默认是 G18,而图纸上看到的旋转方向会因刀塔位于主轴中心上方(后置)还是下方(前置)而翻转。车床 X 轴的表示方法另见车床直径编程与 G18。
| 平面 | 指令 | 观察方向 | 主要用途 |
|---|---|---|---|
| XY | G17 | 从 +Z 看向 -Z | 加工中心默认 |
| ZX | G18 | 从 +Y 看向 -Y | 车床默认,铣削侧面 |
| YZ | G19 | 从 +X 看向 -X | 铣削侧面加工 |
R 指令的注意事项
像 G03 X40. Y10. R10. 这样直接给出半径,几乎不需要计算,在手工编写的程序中被广泛使用。但即使起点、终点和半径都相同,也可能有两个圆:较短的一段(180° 以下)和较长的一段(超过 180°)。
大多数控制器把 R 为正解释为 180° 以下的圆弧,R 为负解释为超过 180° 的圆弧。本想画 270° 圆弧却漏写了 R 的符号,就会得到 90° 的圆弧,刀具会切到错误的位置。另外,起点和终点相同的整圆不能用 R 定义,因为只有圆的大小,没有确定其位置的信息。
I/J/K 指令:直接给出圆心
I、J、K 分别是 X、Y、Z 方向上从圆弧起点到圆心的距离。在大多数控制器中,即使处于 G90 绝对模式,I/J/K 也按以起点为基准的增量值读取。示例中的 G02 X50. Y40. I10. J0. 是以距起点 (40,30) 沿 X 方向 10 的 (50,30) 为圆心、半径为 10 的圆弧。
I/J/K 方式的圆心明确,因此适用于整圆、超过 180° 的圆弧以及 CAM 输出等对精度要求高的场合。反过来,如果终点实际上不在那个圆上,起点半径和终点半径就会不一致,差值超过允许值时会报警。
示例路径
第一段圆弧是 R 指令逆时针,第二段是 I/J 指令顺时针,最后一个程序段是起点和终点相同的整圆。可以通过图形确认三者如何在一条路径中连接起来。
把 R 指令逆时针圆弧、I/J 指令顺时针圆弧和 I/J 指令整圆连在一起的路径
O2002
T2 M6
G21 G90 G17 G94
G54
S2500 M03
G00 X0. Y-5. Z5.
G01 Z-1. F80
Y0. F250
X30.
G03 X40. Y10. R10.
G01 Y30.
G02 X50. Y40. I10. J0.
G01 X70.
G02 X70. Y40. I0. J-15.
G00 Z50.
M30上图是CNC Path Analyzer对该程序的解析结果 (快速移动 2 段, 直线切削 5 段, 圆弧 3 段).
查找圆弧错误的检查清单
- 平面:G17/G18/G19 中是否选择了预期的平面?平面不同,同样的 G02 会变成另一方向的圆。
- R 的符号:超过 180° 的圆弧是否把 R 写成了正值?
- 终点一致:由 I/J 算出的半径与圆心到终点的距离是否相等?小数点后第三位的舍入误差累积起来也会导致报警。
- 刀具半径补偿:在 G41/G42 有效的状态下,如果内侧圆弧半径小于刀具半径,就无法生成补偿路径。
- 进给速度:加工圆弧内侧时,刀具中心的速度与刀刃处的速度不同。对于小半径的内侧圆弧,通常会降低 F。
计算练习:把 R 指令改写成 I/J
示例中的 G03 X40. Y10. R10. 是从起点 (30, 0) 到终点 (40, 10)、半径为 10 的逆时针 90° 圆弧。沿逆时针方向经过这两点、半径为 10 的短圆弧,其圆心在 (30, 10)。起点到圆心的距离为 X 0、Y +10,因此同一圆弧也可以写成 G03 X40. Y10. I0. J10.。
最后的整圆 G02 X70. Y40. I0. J-15. 圆心为 (70, 25),半径为 15。周长为 2 × π × 15 ≈ 94.2 mm,F250 时走一圈约需 22.6 秒。
工具中的显示
CNC Path Analyzer 用短直线段近似绘制圆弧;对于方向或半径对不上的圆弧程序段,不会臆造路径,而是连同原因行一起发出警告。警告行的起点是前一程序段的终点,所以很多时候出错的不是圆弧程序段本身,而是紧挨在上面的直线程序段坐标。