G17 实际控制什么
一个模态代码,在四个地方决定刀具是否切在你预期的位置。
在安全程序段中声明平面
G17 是模态的。一旦激活,它会一直保持激活,直到有东西改变它。这正是它容易被忘记的原因。许多 CAM 后处理只在程序开头写一次 G17,别处不再出现,因此循环中途重启、手动 MDI 移动,或切换到 G18 的子程序,都可能让控制器停留在错误的平面上。
把 G17 放进安全程序段,紧跟在 G90 绝对定位和 G21 或 G20 单位调用之后。在第一个圆弧移动或第一个 G41 程序段之前再写一次,即使后处理已经输出过。多一行的代价不算什么。在已加工完的 7075 板上铣伤型腔的代价是重新加工、错过交期和一张报废报告。
我们的标准程序头是 G17、G40 和 G80 一起写。取消刀具补偿、取消固定循环、平面设为 XY。车间里每台机床都从同一状态开始,因此程序在 3 轴立式加工中心和 5 轴单元之间转移时行为一致。
- 1顺序很重要先 G90 和单位,再 G17,然后 G40/G80。
- 2圆弧前重复第一个 G02 或 G03 之前写一行 G17。
- 3不要假设复位或 MDI 移动可能让平面保持上一个工件的状态。
刀具半径补偿存在于当前激活平面中
G41 和 G42 沿编程路径按刀具半径偏移刀具。该偏移矢量在当前激活平面中计算。G17 激活时,矢量位于 XY 平面,刀具在水平面内左移或右移。取消补偿、切换到 G18 或 G19 后,同一个 G41 程序段就会在另一对轴上偏移。
真正的损坏就发生在这里。编程员在 G17 下铣型腔底面,然后用直角铣头加工零件侧面并切换到 G18,返回顶面时忘了重新进入 G17。切换后的第一刀就切在轮廓的错误一侧。深度铣伤,没有任何警告。
在任何平面切换之前用 G40 取消补偿。用足够长的直线移动切入和切出,覆盖刀具半径,通常至少为刀具直径的 50%,否则控制器会在切入程序段报警。然后在新平面中重新进入 G41 或 G42。把补偿寄存器号写在 G41 同一程序段中,不要单独一行,使偏移值和方向保持配对。
带动力刀具的车床上规则相同。大多数车削中心的 ZX 平面是 G18,但副主轴或 B 轴铣头可能为端面铣削输出 G17。查机床手册,不要只看后处理。
- 1先 G40切换平面前始终取消补偿。
- 2切入长度至少为刀具直径的一半,直线切入,不要用圆弧切入。
- 3寄存器写在同一行把 D 或 H 值保留在 G41/G42 程序段中。
平面代码、轴对和典型用途
输出程序前,让代码与机床配置匹配。
| 代码 | 激活平面 | 补偿矢量 | 典型工序 |
|---|---|---|---|
| G17 | XY | X 和 Y 偏移 | 型腔底面、端面铣削、板类加工 |
| G18 | ZX | Z 和 X 偏移 | 车削、直角铣头加工侧壁 |
| G19 | YZ | Y 和 Z 偏移 | 卧式机床或转台工装上的侧铣 |
| G17 与 G18 | 混合 | 之间需要 G40 | 带回转分度的 5 轴单元 |
圆弧插补需要在第一个 G02 或 G03 之前有 G17
G02 和 G03 根据平面不同,对 I、J、K 字的解读也不同。在 G17 中,I 是相对圆弧起点的 X 偏移,J 是 Y 偏移。K 被忽略。切换到 G18 后,J 变成 Z 偏移,I 仍在 X 上。切换到 G19 后,K 接管 Y。控制器不会猜,它使用当前激活的平面。
I 和 J 设为零的整圆圆弧,或起点和终点相同的圆弧,在平面错误时大多数控制器会报警。即使能运行,刀路也会弯向错误的轴,切穿你想保留的壁。在 6061 壳体的深加强筋上,这就是一把断掉的 3 mm 立铣刀和一个报废零件。
圆弧用 I、J、K 输出完整圆心偏移,不要用 R。R 格式对超过 180 度的圆弧有歧义,不同控制器解读不同。圆心偏移圆弧读起来更长,但不留解释空间。如果必须用 R,保持在 180 度以下,并把平面代码写在 G02 或 G03 同一程序段中,使两者不会被操作员编辑分开。
G90、G91 和坐标旋转取决于平面
G68 坐标旋转和 G51 缩放都在当前激活平面内运行。在 G17 中旋转一个阵列,控制器会绕 Z 轴、用你给的 XY 中心旋转。在 G18 中做同样的事,旋转就绕 Y 轴发生。两种情况下数字看起来都有效,所以不会报警。零件只是错了。
编写可能从任一上下文调用的子程序时,把绝对或增量模式明确写在平面调用同一程序段中。一行写 G90 G17 可消除任何疑问。在 G91 中调用却假设 G90 的子程序会把特征镜像或堆叠到错误位置,错误只在检验时才暴露。
旋转前,把刀具定位到旋转中心并取消任何激活的刀具补偿。补偿激活时旋转,在某些控制器中偏移矢量随路径移动,在另一些中则保持固定。仅这一差异就足以报废法兰上螺栓圆很紧的孔阵列。
- 1在平面内旋转G68 绕垂直于激活平面的轴旋转。
- 2先关补偿G68 之前用 G40,绝不在旋转过程中。
- 3写明模式子程序头写 G90 G17,不要继承。
换刀和重启不会替你复位 G17
许多控制器在换刀过程中会保留模态状态,另一些则在操作员按下复位、打开防护门或执行 MDI 指令时将其清除。Fanuc、Siemens 和 Heidenhain 之间的行为各不相同,甚至使用同一控制系统的不同机床制造商之间也有差异。这里没有可以安全假设的余地。
把每个重启点都当作新的平面来处理。如果程序为每把刀具设置了安全重启程序段,就在其中加入 G17、G40 和 G80。这样操作员在切屑堵塞或刀片破损后中途重新进入程序时,得到的是已知状态,而不是上一次 MDI 移动留下的状态。
在五轴加工单元上,这一点更重要,而不是更次要。在两次装夹之间转动工件的回转分度会改变 XY 相对于工件的含义。应根据当前工件坐标系设定平面,并在第一次切削移动前确认回转位置。对于每个涉及回转分度的五轴任务,我们都在装夹单中保留一份简短的检查清单。
固定循环也会读取平面
G81、G83、G73 等钻孔循环沿当前平面的法向轴钻孔。在 G17 中为 Z 轴,在 G18 中为 Y 轴,在 G19 中为 X 轴。大多数操作员只在 G17 下见过这些循环,所以这个错误很少发生,但一旦发生在卧式机床或直角头上,代价就很高。
有两个细节容易出问题。第一,R 平面和退刀高度沿钻孔轴测量,因此切换平面会改变同一 R 值的含义。第二,在任何平面切换之前必须用 G80 取消循环。在调用 G18 时仍处于活动状态的循环会以错误方向重复钻孔,或者根据控制器不同而报警。
对于深孔,啄钻增量和暂停不受平面影响,但返回模式受影响。G98 返回初始高度,G99 返回 R 平面高度。在转动工装夹具之前确认返回模式,因为如果平面和偏置不是计划中的,高工件上的 G98 退刀可能会把钻头拖过压板。
- 1轴随平面变化G17 沿 Z 轴钻孔,G18 沿 Y 轴,G19 沿 X 轴。
- 2切换前先取消在任何新平面代码之前一行写 G80。
- 3检查返回模式G98 或 G99 会改变退刀高度。
后处理器和仿真器设置也是解决方案的一部分
只在程序顶部输出一次 G17 的后处理器,对于单次装夹的三轴任务没问题,在其他场合则是隐患。将后处理器配置为在每次圆弧移动、每个补偿程序段和每组固定循环之前输出平面代码。每个程序多几行,却能消除整类错误。
让仿真器与机床一致。如果验证软件假设 G17 在子程序中保持活动,而控制器在复位时将其清除,仿真就不会显示你想要捕捉的撞机。将仿真器设置为与机床相同的模态行为,或者在显式重新声明平面的情况下进行验证,并将其视为真实路径。
保留一份重要的后处理设置清单,并在新机床进入车间时检查这些设置。平面输出、补偿输出与寄存器在同一程序段、圆弧格式为 IJK,以及每次换刀时重置平面的安全程序段。这四项设置能在程序到达主轴之前发现大多数 G17 问题。
- 1圆弧前先设平面在任何 G02/G03 之前输出 G17。
- 2IJK 圆弧超过 180 度的圆弧避免使用 R 格式。
- 3每把刀的安全程序段每次换刀时写 G17、G40、G80。
关于 G17 的常见问题
铣床上 G17 总是默认平面吗?
在大多数立式加工中心上,控制器上电时处于 G17,许多制造商在手册中将其列为默认值。但这并不等于有保证。
复位、加工过程中的断电重启,或设置 G18 的宏程序都可能改变它。应在安全程序段中显式写入 G17,而不是依赖上电状态。
如果误在 G18 下运行 G41 会怎样?
补偿矢量将在 ZX 平面而不是 XY 平面中应用。刀具会沿与你编程不同的轴对进行偏置。
结果通常是侧壁过切或底面被挖伤。有些控制器在引入移动与平面不匹配时会报警,但许多控制器会直接切出错误路径而不报错。
钻孔循环前需要 G17 吗?
需要,如果循环沿 Z 轴钻孔。G81、G83 及类似循环沿当前平面的法向轴钻孔。
如果机床因上一道工序停留在 G18,同一循环将沿 Y 轴钻孔。在循环前一行加入 G17,并在任何平面切换之前用 G80 取消循环。
圆弧输出应该用 R 还是 IJK?
IJK 圆心偏置没有歧义。控制器使用从圆弧起点算起的偏置,因此不存在符号或方向上的猜测。
R 格式更短,但对于超过 180 度的圆弧存在歧义,不同控制器的解析方式也不同。对于批量铣削,后处理输出 IJK,R 仅用于 180 度以下的简单情况。
G17 会影响坐标旋转吗?
会。G68 绕当前平面的法向轴旋转。在 G17 中,旋转绕 Z 轴,使用你指定的 XY 中心。
切换到 G18 后,同样的数值将绕 Y 轴旋转。在调用 G68 之前用 G40 取消刀具补偿,因为不同控制器对旋转期间补偿行为的处理不同。
如何在多次装夹中避免平面错误?
将平面代码放入每次换刀时运行的安全程序段,而不仅仅是程序顶部。把 G17、G40 和 G80 放在一起。
设置后处理器在每个圆弧、补偿程序段和固定循环之前输出平面,并将仿真器设置为与机床相同的模态行为。这样程序就自带状态,而不是继承状态。
