G90与G91模态指令:CNC绝对坐标与增量坐标编程的深度对比指南
本指南深度解析G90绝对坐标与G91相对坐标指令在Fanuc、Siemens及Mitsubishi系统中的应用细节。深入剖析机床启动默认参数、数据输入G10偏移修改、弧中心参数规则与手轮中断安全恢复路径,帮助操作员与编程员精准控制批量生产节拍并消除机械碰撞停机隐患。
引言
在紧凑的批量生产线中,一把价值数千元的硬质合金面铣刀在快速移动中猛烈撞向硬化钢平口钳(vise jaw)钳口,碎屑飞溅,主轴箱(spindle housing)瞬间开裂。这种灾难性的硬碰撞(hard collision)不仅会导致设备面临数周的非计划停机时间(downtime),更会在高强度排产中产生大量废品。在实际生产中,此类事故很少源于机械故障,而往往是由于程序中坐标模态(modal)切换(G90 与 G91)时出现了一个字符的偏差。当 CNC 控制器将绝对坐标指令(G90)误读为增量坐标步进(G91),或者反之,机床便会失去与工件物理零点的关联。刀具路径会完全偏离预设轨迹,导致主轴(spindle)高速冲向平口钳、夹具(fixture)或卡盘(chuck)。对于追求批量生产节拍与合格率的现代化车间而言,精准掌握绝对定位(G90)与增量定位(G91)的编程差异,是避免刀具损坏、降低废品率、缩短停机时间(downtime)以及保障设备安全的底线屏障。
绝对定位(G90)和增量定位(G91)是控制所有自动化移动指令的坐标转换机制。G90 将刀具路径绑定到唯一的、固定不变 of 坐标原点,而 G91 则随着每个程序行(block)的执行动态移动参考点,将目标位置解析为相对于刀具当前位置的距离偏差。一旦忽视了这些指令的模态(modal)状态,或误配置了系统启动时的默认参数,刀具就会产生不可预测的偏移。为了在量产中实现极高的合格率并消除停机隐患,本指南对 Fanuc、Siemens 和 Mitsubishi 控制系统进行了深入的跨品牌对比,详细解析了它们的语法差异、系统参数、报警代码和具体的应用规则,确保车间现场的安全高效运行。
技术摘要
| 技术属性 | 规范与约束 |
|---|---|
| 命令代码 | G90 (绝对尺寸标注), G91 (增量尺寸标注) |
| 模态 (modal) 组 | Group 03 / 模态 (modal) |
| 主要功能 | 确定坐标指令是表示相对于当前工件零点(G90)的位置,还是相对于当前刀具位置(G91)的相对增量距离。 |
| 支持的品牌 | Fanuc, Siemens, Mitsubishi |
| 默认启动/重置参数 | Fanuc: 参数 3402 第 3 位; Siemens: MD20154 $MC_EXTERN_GCODE_RESET_VALUES[10]; Mitsubishi: 参数 #1073 I_Absm |
| 车床例外情况 (System A) | 标准的 System A 车床使用并行的坐标地址(绝对定位使用 X/Z,增量定位使用 U/W),而无需使用模态 (modal) G90/G91 进行切换。 |
| 主要编程约束 | 活动的模态 (modal) 状态会改变可编程数据输入 G10 的偏置修改结果;Siemens 不允许在同一轴上同时使用相冲突的 AC/IC ;Mitsubishi 将所有圆弧中心(I, J, K)和半径(R)严格解释为增量值。 |
快速阅读
- 核心解析: 在绝对模态(G90)与增量模态(G91)之间进行切换,决定了轴输入坐标是从活动的坐标原点开始计算,还是被视为相对于当前刀具位置的相对距离矢量。
- 车床地址划分: 标准车床 G-code System A(Fanuc 和 Mitsubishi)完全绕过 G90/G91 模态 (modal) 切换,为绝对定位分配 X、Z、C 轴地址,为增量定位步进分配 U、W、H 轴地址,以防轨迹跟踪错误。
- Siemens 行内扩展: Siemens 允许通过在特定轴字后直接附加非模态 (non-modal)
AC(...)和IC(...)修饰符,在单个程序段中同时执行绝对和相对增量运动,而无需改变全局模态 (modal) 状态。 - 系统启动默认值: 机床启动状态可通过参数进行配置;Fanuc 3402.3、Siemens MD20154 以及 Mitsubishi #1073 决定了系统是在绝对模态(G90)还是增量模态(G91)下进行初始化。
- G10 偏置风险: 在 G90 绝对模式下在 Fanuc 系统中执行可编程数据输入(G10)会完全覆盖现有偏置,而在 G91 相对模式下则是以相加的形式修改偏置,因此坐标状态的验证至关重要。
- 圆弧中心限制: Mitsubishi 对圆弧插补 (interpolation) 忽略模态 (modal) G90,将圆弧中心(I, J, K)和半径(R)严格判定为自圆弧起点的相对增量尺寸。
- 手动干预安全: 使用手轮进行手动中断需要极其谨慎;如果在 G91 相对模式下恢复刀具路径,若系统参数(例如 Fanuc 7001)强制执行了不同的运动矢量,可能会导致不可预测的意外刀具轨迹。
基本概念
G90(绝对定位)和 G91(增量定位)指令都是属于第 3 组的模态 (modal) G-code,用以决定轴目标尺寸是相对于活动的工件坐标系原点(绝对零点)进行评估,还是相对于刀具当前的物理位置进行评估。G90 允许相对于固定基准进行精准定位,而 G91 则广泛用于子程序、固定循环 (cycle) 或简单的步进循环 (cycle)。在加工中心上,这些模式通常通过标准的 G90 和 G91 指令进行切换。在车床上,标准的编程方式可能会使用直接的轴地址字母(绝对定位使用 X/Z,增量定位使用 U/W)而不改变模态 (modal) 状态,尽管 Fanuc 和 Mitsubishi 都提供了配置参数以在车床系统中启用类似于铣床的 G90/G91 模态 (modal) 切换。程序员 and 操作员必须在循环 (cycle) 中途的手动干预和对刀操作期间,对活动的坐标模态 (modal) 状态保持时刻警惕,以避免灾难性的位置错误、报废工件或严重的主轴 (spindle) 撞车事故。
在零件工艺路径规划和 CNC 编程过程中,选择绝对编程还是增量编程是一项关键性的策略决策。绝对坐标允许程序员建立与设计图纸的直接、不变的联系,确保一旦发出了特定坐标的指令,无论循环 (cycle) 从何处开始,刀具都将返回到该精确的物理坐标。相反,增量编程将轴路径定义为从刀具当前位置开始的离散轴向相对步进,因而是重复几何图案(如阵列孔图案或螺纹铣削)的理想选择,因为只需移动起点,子程序即可在零件的任何位置重复运行。然而,这种灵活性也引入了极高的风险:一次忘记将模态 (modal) 切换回 G90,就会导致随后的绝对位置被读取为相对距离纸跃,从而使轴向运动不断累积,直到该轴达到软件软限位或与障碍物发生碰撞。当刀具半径补偿激活时,程序员必须在尺寸标注模式切换时格外小心。在活动的 刀尖与刀具半径补偿 (G40, G41, G42) 期间切换 G90/G91,可能会导致意想不到的刀具路径偏移,从而导致刀具折断或工件报废。
命令结构
在标准 CNC 编程中,程序段由解析器顺序执行。当读取到诸如 G90 或 G91 这样的模态 (modal) 坐标指令时,它会更改控制器轨迹发生器的内部计算模式。一旦编程了 G90,它就会对所有后续的运动程序段保持有效,直到显式编程了 G91,反之亦然。至关重要的是要认识到,这些指令本身并不会引起轴的运动;相反,它们充当了数学过滤器的角色,指引后续的坐标字(如 X、Y、Z、A、B、C)如何解码为伺服电机的旋转角度。
在设计 CNC 程序时,这些坐标的集成需要严格的语法格式,以确保控制系统的解析器正确读取程序段。空格、小数点使用以及在同一程序段中出现重复地址的情况,在不同的品牌中有着不同的解析规则。例如,加工中心通常允许在一行中多次指定 G90 和 G91 或与其他 G-code 并列,而车床系统若在同一轴上组合了相互冲突的绝对和增量参数,则可能会触发报警代码。以下是控制这些坐标切换的语法格式和系统参数设置的结构化分解。
语法与寻址格式
- Fanuc:
- 加工中心:
G90 X[坐标值] Y[坐标值] Z[坐标值] ;(绝对定位) 或G91 X[相对距离] Y[相对距离] Z[相对距离] ;(增量定位)。 - 车床 (G-code System A):不使用 G90/G91,而是使用平行的轴地址字母:
X_ Z_ C_ ;用于绝对定位,U_ W_ H_ ;用于增量定位。
- 加工中心:
- Siemens:
- 模态切换:
G90(绝对模态状态) 或G91(增量模态状态)。 - 非模态行内修饰符:
<轴名>=AC(<数值>)强制该程序段中该轴进行绝对尺寸定位,而<轴名>=IC(<数值>)则强制进行相对增量步进运动。 - 旋转最短路径/方向(仅限旋转轴):
<轴名>=DC(<数值>)(绝对最短路径定位),<轴名>=ACP(<数值>)(绝对正向旋转定位),或<轴名>=ACN(<数值>)(绝对负向旋转定位)。
- 模态切换:
- Mitsubishi:
- 加工中心:
G90 X_ Y_ Z_ ;(绝对定位) 或G91 X_ Y_ Z_ ;(增量定位)。 - 车床:Lathe System A 下默认使用
X_ Z_ ;(绝对定位) 和U_ W_ ;(增量定位),或在 G-code 列表 6 和 7 下使用G190 X_ Z_ ;/G191 X_ Z_ ;。
- 加工中心:
系统配置参数
| 品牌 | 参数 | 功能与取值范围 |
|---|---|---|
| Fanuc | 参数 3402 第 3 位 (G91) | 控制系统启动或复位时模态 (modal) G-code 第 3 组的默认状态。0 = 默认绝对模式 (G90);1 = 默认增量模式 (G91)。 |
| 参数 3401 第 4 位 (MAB) 和 第 5 位 (ABS) | 控制手动数据输入 (MDI) 面板中的坐标行为。若 MAB=1,ABS=0 会强制所有 MDI 输入为增量,而 ABS=1 会强制 MDI 输入为绝对坐标。若 MAB=0,MDI 会跟踪活动的 G90/G91 程序模态 (modal) 状态。 | |
| 参数 7001 第 1 位 (ABS) | 决定了手动绝对值有效时,在手动干预后刀具路径恢复的运行行为。0 = 在 G90 和 G91 模式下沿着不同的路径运动;1 = 在两种模式下强制执行相同的绝对路径运动。 | |
| 参数 5500 第 4 位 (G90) | 确定分度工作台分度轴的运动行为。0 = 根据当前活动的 G90/G91 模式进行评估;1 = 分度轴永久固定于绝对坐标指令下运动。 | |
| Siemens | MD20154 $MC_EXTERN_GCODE_RESET_VALUES[10] | 定义系统启动或通道复位时 G-code 第 3 组的初始状态。直接配置为 G90 或 G91。 |
| SD42440 $SC_FRAME_OFFSET_INCR_PROG | 控制在 G91 相对坐标编程中活动工件坐标系偏置的运动路径。0 = 仅运行编程轨迹;1 = 在增量运动期间,叠加运行工件偏移量。 | |
| SD42442 $SC_TOOL_OFFSET_INCR_PROG | 决定增量坐标轴运动期间 刀具长度补偿 (G43, G44, G49) 的运动行程。0 = 不会叠加运行偏置;1 = 刀具长度补偿的变化与 G91 的运动行程叠加同步运行。 | |
| MD30455 $MA_MISC_FUNCTION_MASK (Bit 2) | 配置在 360 度圆周模数旋转轴上执行移动时,精准的 G90 绝对定位行为。 | |
| Mitsubishi | 参数 #1073 I_Absm | 设置机床通电启动或系统复位时的默认坐标模式。0 = 默认增量模式 (G91);1 = 默认绝对模式 (G90)。 |
| 参数 #1076 AbsInc | 为车床系统配置绝对/相对坐标轴的选择方式。0 = 通过模态 (modal) G90/G91 代码进行切换;1 = 通过不同的轴地址代码进行切换(绝对坐标使用 X/Z,增量坐标使用 U/W)。 | |
| 参数 #1126 PB_G90 | 示教再现 G90 参数。决定在示教再现编辑(Playback Editing)期间如何保存手动轴慢速进给量。0 = 记录为相对增量值;1 = 记录为绝对坐标值。 |
品牌应用
Fanuc
在 Fanuc 生态系统中,绝对定位与增量定位编程由允许深度系统定制的参数控制,以防止操作员失误。其中一个核心特性是其加工中心(M 系列)与车床(T 系列)之间坐标输入逻辑的天然分叉。对于 M 系列加工中心,G90 和 G91 是模态 (modal) 切换键,控制着控制器对坐标字的解码方式。然而,在 G-code System A 下 delimiter 的 T 系列车床则完全绕过模态 (modal) 跟踪,通过在同一个程序段中明确地将物理轴与独特的绝对定位地址(X、Z、C)和增量定位地址(U、W、H)相匹配。这消除了活动增量状态导致刀具在后续操作中发生意外相对偏移的风险。如果通过配置参数将车床切换为 G-code System B 或 C,它的表现将类似于铣床,依赖于模态 (modal) G90/G91 指令。
Fanuc 还允许机床制造商将手动数据输入 (MDI) 面板的坐标逻辑与活动程序的模态 (modal) 状态完全隔离。通过设置参数 3401 第 4 位(MAB)和第 5 位(ABS),无论自动程序是在 G90 还是 G91 中暂停,控制器都可以强制将所有 MDI 的执行限制为严格的绝对或增量输入。此外,参数 7001 第 1 位(ABS)控制了操作员执行手动手轮干预(摇走刀具以检查工件)后的路径恢复行为。若 ABS 设置为 0,当恢复自动运行时,CNC 可能会对 G90 和 G91 模式构建不同的运动路径,而将 ABS 设置为 1 则强制系统遵循相同的绝对路径,从而保护机床在循环 (cycle) 中途返回时不会与工件或夹具发生碰撞。对于分度工作台,参数 5500 第 4 位(G90)可将分度轴锁定为严格解释绝对坐标指令,完全忽略 G91 相对模式。
Siemens
Siemens 控制系统采用先进的非模态 (non-modal) 地址扩展架构来处理坐标定位。在原生 Siemens 模式(G290)和 ISO Dialect B/C 模式(G291)下,标准的 G90 和 G91 指令可以切换模态 (modal) 坐标状态。在传统的 ISO Dialect System A 下,G91 指令不可用,程序员必须使用并行的轴地址字母 U、V、W 和 H 进行增量步进。然而,使 Siemens 脱颖而出的是其极其独特的行内地址修饰符。通过直接在轴字后附加 AC(...)(绝对坐标)或 IC(...)(相对增量坐标),程序员可以命令一轴移动到精确的绝对坐标,同时另一轴在同一程序段中相对移动一个距离(例如,X=AC(100.0) Z=IC(-5.0))。这消除了在多个程序段中来回切换 G90 和 G91 模式的必要性,简化了复杂的刀具轨迹过渡。
Siemens 还具有专门的旋转轴和主轴 (spindle) 尺寸定位框架。无论当前活动的 G90/G91 模式如何,操作员都可以使用 DC(...)(直接逼近,选择通往目标角度的最短路径)、ACP(...)(绝对正向,顺时针旋转至目标)或 ACN(...)(绝对负向,逆时针旋转至目标)来对主轴 (spindle) 或旋转轴进行目标坐标编程。在底层,Siemens 将增量编程与活动框架(frames)紧密协调。机床设定数据 SD42440 $SC_FRAME_OFFSET_INCR_PROG 控制在 G91 相对增量移动期间是否以累加形式计算和运动当前活动的零点偏移,而 SD42442 $SC_TOOL_OFFSET_INCR_PROG 决定在 G91 相对运动中变化了的刀具长度补偿是否同步运动,为开发人员提供了广泛的后台运动学自定义选项。
Mitsubishi
Mitsubishi CNC 控制系统提供流畅的坐标定位定位,其最显著的特色是能够在同一个程序段中处理多个 G90 和 G91 模式(例如,G90 X300. G91 Y100. ;)。这允许程序员在一行代码中命令一个轴向移动到绝对坐标,同时命令另一个轴在增量距离上移动,从而无需书写多行代码。标准的铣削系统使用 G90 and G91 模态 (modal) 指令,而车床系统默认使用不同的字母寻址(绝对定位使用 X/Z,增量定位使用 U/W)。然而,Mitsubishi 提供了参数 #1076 AbsInc 来解耦这种车床地址限制;将 #1076 设置为 0 允许标准车床控制通过模态 (modal) G90/G91 G-code 进行坐标切换。在运行 G-code 列表 6 或 7 的车床配置中,指令 G190 和 G191 代替了 G90/G91,如果在这些列表中使用标准的 G90/G91 将触发 P34 程序错误报警。
另一个值得注意的 Mitsubishi 功能是参数 #1126 PB_G90(Playback G90)。该参数决定了在示教再现编辑(Playback Editing)期间如何记录手动轴慢速进给坐标。若设置为 1,慢速进给运动将记录为绝对坐标;若设置为 0,则记录为增量相对距离,从而加快了车间现场的手动示教循环 (cycle)。尽管具有这种多功能性,Mitsubishi 对圆弧插补 (interpolation) 实施了严格的规则:所有圆弧中心(I, J, K)和圆弧半径(R)都被判定为相对于圆弧起点起的严格相对增量值,即使 G90 绝对模式正处于活动状态也是如此。尝试为圆弧中心编程绝对坐标将会导致刀具路径畸变并导致零件报废。此外,当使用先进循环 (cycle) 如 G54.4(工件安装误差补偿)时,操作员必须立即在第一个移动程序段中编程 G90 绝对定位指令;在 G54.4 后立即发出的 G91 相对增量指令会导致机床相对于未补偿的物理位置进行相对移动,从而引发机床碰撞。
品牌对比
| 特性 | Fanuc | Siemens | Mitsubishi |
|---|---|---|---|
| 语法与坐标切换 | M 系列上使用模态 (modal) G90/G91。T 系列车床使用绝对定位(X/Z/C)与增量定位(U/W/H)的并行地址。 | 原生/ISO 模式下使用模态 (modal) G90/G91。支持 non-modal 行内扩展 AC(...)、IC(...)、DC(...)、ACP(...) 以及 ACN(...)。 | M 系列上使用模态 (modal) G90/G91。车床默认使用轴地址代码(X/Z vs. U/W),或通过参数 #1076 允许使用模态 (modal) G90/G91。车床 G-code 列表 6/7 使用 G190/G191。 |
| 混合程序段(在同一段中混合绝对与增量) | 加工中心不支持。车床通过独特的 X/Z 和 U/W 轴地址字母提供支持。 | 通过在特定轴上使用行内非模态 (non-modal) AC(...) / IC(...) 修饰符实现原生支持。 | 通过在单个程序段中允许定义多个模态 (modal) G90 和 G91 坐标实现原生支持。 |
| 圆弧中心与半径的判定 | 根据当前活动的 G90/G91 模式或系统参数配置进行判定。 | 根据编程风格进行判定;支持圆弧中心使用行内 AC 和 IC 修饰符。 | 无论 G90 是否活动,均严格评估为增量相对值(I, J, K, R)。 |
| 旋转轴与主轴定位 | 基于模态 (modal) G90/G91,或通过参数 5500 第 4 位永久锁定为绝对定位。 | 原生支持最短路径绝对定位 (DC)、绝对正向定位 (ACP) 以及绝对负向定位 (ACN)。 | 分度轴上的 G90 移动必须与预置的分度增量参数对齐,以防触发报警。 |
| 示教慢速进给坐标记录 | — (无数据源) | — (无数据源) | 可通过参数 #1126 进行配置(0 = 记录为相对增量,1 = 记录为绝对坐标)。 |
| MDI 模式坐标锁定 | 通过参数 3401(MAB/ABS 位)支持强制 MDI 运行为绝对坐标或增量坐标。 | — (无数据源) | — (无数据源) |
技术分析
对 Fanuc、Siemens 和 Mitsubishi 控制器的分析评估展示了在坐标管理上不同的架构理念。Fanuc 强调稳健的安全边际和物理隔离。通过将车床 G-code System A 锁定到不同的寻址字母(X/Z/C 与 U/W/H),并允许通过参数 3401 进行 MDI 面板强制覆盖,Fanuc 优先考虑结构性防范操作员误操作,确保手动条目和活动程序保持数学上的物理隔离。相比制造,Siemens 提供了无与伦比的编程密度和运动学灵活性。通过将非模态 (non-modal) 修饰符(AC 和 IC)直接嵌入到底层解析器中,Siemens 消除了解锁 G90 和 G91 模式的需求,使程序员能够在单行紧凑的代码中执行空间复杂过渡(例如螺旋下刀)。此外,Siemens 独特的主轴 (spindle) 和圆周模数旋转轴定位(通过 DC、ACP、ACN)提供了深度的运动学控制,而无需改变主程序的坐标模态 (modal) 状态。
Mitsubishi 占据了极富通用性的中间地带,融合了 Fanuc 和 Siemens 的绝对/增量语法,同时提供了自己独特的灵活解决方案。Mitsubishi 独一无二地允许在完全相同的程序段中进行多个模态 (modal) 定义(例如 G90 X... G91 Y...),这与 Siemens 的混合坐标功能相媲美,但它使用的是标准 G-code 而不是行内函数。然而,Mitsubishi 施加了严格的数学约束,例如将圆弧中心尺寸(I, J, K)和圆弧半径(R)判定为永久的相对增量定位。这是它与 Fanuc 和 Siemens 的关键差异,在后者中,圆弧插补 (interpolation) 的中心点可以根据系统参数自动跟踪活动绝对坐标模态 (modal)。Mitsubishi 还集成了专门的车间应用工具,如参数 #1126,用以确定手动慢速进给运动在交互式示教再现编辑(playback editing)期间的保存方式,为手动对刀调试提供了极高的适应性。
程序示例
Fanuc 编程示例
O1001 (FANUC 铣削演示) ;
G90 G54 G00 X0. Y0. Z10. ; (相对于 G54 工件零点的绝对定位)
G43 H01 Z2. ; (启用刀具长度补偿)
G01 Z-5. F200 ; (在 G90 绝对模式下进行线性下刀)
G91 X50. Y30. ; (切换至相对增量模式;从当前位置移动 X+50mm,Y+30mm)
X20. ; (增量步进;再移动 X+20mm)
G90 X100. Y50. ; (返回绝对模式;刀具直接移动至坐标 X100.0,Y50.0)
G00 Z10. ; (在绝对模式下退刀至 Z10.0)
M30 ;
Fanuc 空运行 (dry run) 路径分析
- 程序段 2 (G90 G54 G00 X0. Y0. Z10.): 解析器建立绝对定位编程。各轴以快速定位速度运动到坐标 X = 0.0, Y = 0.0, Z = 10.0,该坐标相对于活动的 工件坐标系 (G54) 基准。
- 程序段 3 (G43 H01 Z2.): 启用 刀具长度补偿 (G43),调用存储在寄存器 H01 中的偏置值,将主轴 (spindle) 面安全地定位在 Z = 2.0。
- 程序段 4 (G01 Z-5. F200): 主轴 (spindle) 以 200 mm/min 的进给率 (feedrate) 线性进给切削到工件零点下方刚好 -5.0 mm 的深度。
- 程序段 5 (G91 X50. Y30.): 将坐标解析模态 (modal) 切换为增量式。刀具从当前位置运动 X+50.0 mm 和 Y+30.0 mm,到达绝对坐标 X = 50.0, Y = 30.0。
- 程序段 6 (X20.): 仍处于 G91 模态 (modal) 状态。刀具再次增量移动 X+20.0 mm,到达绝对坐标 X = 70.0, Y = 30.0。
- 程序段 7 (G90 X100. Y50.): 将坐标模式切换回 G90 绝对模式。刀具直接移动到物理位置坐标 X = 100.0, Y = 50.0。
- 程序段 8 (G00 Z10.): 垂直快速定位退刀至坐标 Z = 10.0,安全避开工件。
Siemens 编程示例
N10 G290 (切换至 Siemens 原生模式)
N20 G90 G00 G54 X0 Y0 Z10 T1 D1 S2500 M03 (模态绝对定位,激活工件零点和刀具偏置)
N30 G01 Z2 F500 (进给至绝对坐标 Z2)
N40 X50 Y50 (线性进给至坐标 X50, Y50)
N50 X=IC(30) Y=AC(80) (在单个程序段中混合绝对与相对增量:X 相对移动 +30mm,Y 移动至绝对值 80mm)
N60 G91 X20 Y10 (模态切换为相对增量模式:X 移动 +20mm,Y 移动 +10mm)
N70 G90 Z50 (模态切换为绝对模式:Z 退回至绝对坐标 50mm)
N80 M30
Siemens 空运行路径分析
- 程序段 N20 (G90 G00 G54 X0 Y0 Z10): 解析器激活模态 (modal) 绝对定位(
G90),并使用 工件坐标系 (G54) 选择工件原点。主轴 (spindle) 快速定位运动到坐标位置 X = 0.0, Y = 0.0, Z = 10.0。 - 程序段 N30 (G01 Z2 F500): 主轴 (spindle) 以 500 mm/min 的进给速度线性进给切削到绝对深度 Z = 2.0。
- 程序段 N40 (X50 Y50): 刀具进给运动到绝对坐标位置 X = 50.0, Y = 50.0。
- 程序段 N50 (X=IC(30) Y=AC(80)): 非模态 (non-modal) 混合尺寸定位程序段。X 轴从当前位置行进 +30.0 mm 的相对增量距离,到达绝对坐标 X = 80.0。与此同时,Y 轴运动到绝对坐标位置 Y = 80.0。全局的
G90模态 (modal) 状态不受影响。 - 程序段 N60 (G91 X20 Y10): 模态 (modal) 状态切换为增量
G91。刀具相对运动 X+20.0 mm 和 Y+10.0 mm,到达绝对坐标位置 X = 100.0, Y = 90.0。 - 程序段 N70 (G90 Z50): 坐标解析返回到模态 (modal) 绝对
G90。Z 轴直接退刀到绝对目标坐标 Z = 50.0。
Mitsubishi 编程示例
% (MITSUBISHI 混合模式演示)
N10 G90 G00 G54 X0. Y0. Z20. S2000 M03 ; (绝对快速定位至 G54 工件零点)
N20 G01 Z2. F600 ; (进给至绝对深度 Z2.0)
N30 G90 X200. G91 Y50. ; (在同一程序段中同时执行绝对 X 和相对增量 Y)
N40 X10. G90 Y150. ; (指令冲突解析:X 为增量相对 10mm,Y 为绝对值 150mm)
N50 G90 G00 Z20. ; (绝对退刀至 Z20.0)
N60 M30 ;
%
Mitsubishi 空运行路径分析
- 程序段 N10 (G90 G00 G54 X0. Y0. Z20.): 激活 G90 绝对模式,将刀具相对于 工件坐标系 (G54) 基准进行定位。主轴 (spindle) 快速定位运动到坐标位置 X = 0.0, Y = 0.0, Z = 20.0。
- 程序段 N20 (G01 Z2. F600): 主轴 (spindle) 以 600 mm/min 的速度线性进给切削到绝对目标深度 Z = 2.0。
- 程序段 N30 (G90 X200. G91 Y50.): 处理多个坐标指令。X 轴直接行进到绝对坐标位置 X = 200.0。与此同时,Y 轴从其起点(Y = 0.0)相对运动 +50.0 mm 的相对增量距离,到达绝对坐标位置 Y = 50.0。
- 程序段 N40 (X10. G90 Y150.): 由于 G91 是程序段 N30 中的尾部指令,当前活动的模态 (modal) 状态为 G91 相对增量。X 轴行进 +10.0 mm 的增量相对距离(到达 X = 210.0)。与此同时,行内的
G90指令强制 Y 轴直接移动到绝对坐标位置 Y = 150.0。 - 程序段 N50 (G90 G00 Z20.): 重新建立模态 (modal) 绝对 G90。主轴 (spindle) 快速垂直退刀定位到绝对坐标 Z = 20.0。
错误分析
| 品牌与报警代码 | 触发条件 | 操作员症状表现 | 根本原因 / 解决方法 |
|---|---|---|---|
| Fanuc: PS5074 | 在 G-code System A 车床程序中,在同一个程序段内为同一个物理轴编程了重复的绝对和相对增量地址(例如,在一行中同时编程了 X 和 U)。 | 循环 (cycle) 立即停止;机床面板显示报警信息 “ADDRESS DUPLICATION ERROR” (地址重复错误)。 | 在不同的程序段中分别编程绝对和相对增量移动。确保车床程序不要在单个坐标行中混合轴地址字符(例如 X 和 U)。 |
| Fanuc: PS1090 / SR1090 | 程序格式化错误,当系统参数 ESL 设置为 0 且程序段在编写时缺少合适的空格或小数点。 | 解析器停止读取 NC 程序,并显示 “PROGRAM FORMAT ERROR” (程序格式错误)。 | 通过添加必需的空格和显式小数点来纠正格式语法(例如,编写 G90 G01 X100.0 Y50.0 ; 而不是 G90G01X100y50 ;)。 |
| Siemens: Alarm 61805 | 在同一个程序段中,某轴坐标字同时接收到了相冲突的绝对和增量声明(例如,同时编程了 X=AC(100) and X=IC(10))。 | NC 启动被禁用;循环 (cycle) 立即停止,显示报警 “Value programmed absolute and incremental” (绝对与增量重复编程值)。 | 识别并从该轴程序段中移除重复或相冲突的地址修饰符。确保每个轴字上只有一个绝对或相对增量修饰符是活动有效的。 |
| Siemens: Alarm 10255 / 15100 | 在 ISO Dialect 模式下调用连续加工循环 (cycle)(如 G71 粗加工)时,未插入标准的过渡代码 G00/G01 以及 G90/G94。 | 循环 (cycle) 在执行期间中止;控制器显示坐标过渡或语言格式错误。 | 在紧接循环 (cycle) 调用之前的 NC 程序行中插入正确的过渡运动(G00/G01)和坐标模式(G90)指令。 |
| Mitsubishi: Indexing Increment Error | G90 绝对定位指令引导分度工作台轴移动到一个非预定义分度增量参数整数倍的坐标位置。 | 程序在执行期间立即停机;屏幕显示程序错误信息。 | 修改编程坐标,使其在数学上与系统的分度增量参数对齐(例如,使轴目标位置与 2 度或 5 度分度增量对齐)。 |
| Mitsubishi: Alarm P34 | 程序员在当前活动的 G-code 列表标准不支持该命令格式的机床配置上命令了 G90、G91、G190 或 G191。 | 程序段立即跳过或循环 (cycle) 停机;屏幕显示 “P34 Program Error” (P34 程序错误)。 | 验证并编程与机床活动 G-code 列表相兼容 of 正确坐标切换代码(例如,在车床列表 6/7 上使用 G190/G191 代替 G90/G91)。 |
应用指南
在进行手动干预(如手轮中断)或配置补偿循环 (cycle) 时,若后台系统参数未经过严密配置,处于活动状态的坐标模态 (modal) 可能会触发毁灭性的刀具轨迹。一个突出的风险发生在 Fanuc 控制系统上的手动手轮干预恢复中:如果操作员暂停自动程序并使用手轮将主轴(spindle)摇走以进行快速工件检查,机床的轨迹恢复行为将完全取决于 7001 号参数第 1 位(ABS)。换班后确认 7001 号参数,可消除该指令最常见的非计划停机时间(downtime)原因。如果该参数未经验证就投入量产,每个加工循环 (cycle) 的尺寸偏差会逐渐累积,直到终检才发现废品。如果 7001 号参数的 ABS 位被设为 0,当操作员清除手动干预并按下循环 (cycle) 启动键时,CNC 会根据暂停时处于活动状态的是 G90 还是 G91 来构建完全不同的移动矢量,导致刀具无法沿预期的直线返回,而是执行意想不到的数学路径,直接撞向旋转的卡盘(chuck)或紧固的夹具(fixture)夹爪(vise jaw)。这不仅会折断硬质合金刀具、使主轴(spindle)偏斜,还会产生昂贵的废品并导致漫长的非计划停机时间(downtime)。为了彻底消除这一生产风险,必须在换班后确认该参数并将 7001 号参数的 ABS 位锁定为 1,以强制两种模式在干预后均沿相同的绝对坐标路径返回。
类似的灾难性失效也常见于 Mitsubishi 系统。当操作员将先进的零点补偿(如 G54.4 工件安装误差补偿)与 G91 增量指令结合使用时,如果 G54.4 补偿参数未经验证就投入量产,每个加工循环 (cycle) 的尺寸偏差会逐渐累积,直到终检才发现废品。因为 G54.4 程序段(block)本身仅更新空间网格偏移而不产生物理轴移动,如果在紧接其后的程序段中误输入了 G91 增量相对坐标命令,机床就会基于未补偿的物理位置执行相对偏移,导致刀具完全偏离原定轨迹,直接高速撞入平口钳夹爪(vise jaw)或卡盘(chuck)。这种硬碰撞(hard collision)会在瞬间损毁主轴(spindle)轴承,产生严重的机床停机,并使正在批量生产的零件沦为废品。标准化坐标重置流程、确认 Fanuc 3402 号 and Mitsubishi #1073 号等启动默认参数,并强制在任何补偿指令后立即执行 G90 绝对定位指令,是实现稳定生产节拍和提高生产合格率的行业标准操作规程。
相关命令网络
- G54 到 G59 (工件坐标系): 选择绝对坐标指令(G90)用以规划物理轴向位置所参照的工件坐标系原点。
- G10 (可编程数据输入): 动态更新工件和刀具偏置寄存器,在 G90 绝对模式下会完全覆盖已有偏置数值,在 G91 增量模式下则是相对增量累加式修改偏置值。
- G92 (工件坐标系设定 / 主轴最高速度限制): 在不产生物理轴移动的前提下手动漂移活动工件坐标系原点,直接改变随后 G90 绝对坐标的目标运行位置。
- G00 和 G01 (快速定位 / 线性插补): 其轴向坐标参数根据当前活动模态 (modal) 状态的不同,被解析为绝对定位目标位置或相对距离矢量的移动指令。
- G290 和 G291 (Siemens/ISO 语言模式切换): 控制 Siemens 系统解析器如何解码模态 (modal) G90/G91 指令以及相关的 ISO dialect 并行轴向寻址字母(例如 U、V、W)。
结论
为了确保批量生产的稳定生产节拍并最大限度降低设备意外停机风险,CNC 制造车间必须建立严格的标准操作规程来显式管理 G90 和 G91 坐标模态(modal)状态。程序的安全初始化程序段(例如 G90 G17 G21 G40 G49 G80)中必须显式声明活动坐标模态(modal),并在子程序返回、手动中断恢复或零点偏移切换后立即重新声明。工艺人员应确保机床的启动默认参数和 MDI 覆盖参数在同型号机床间完全标准化,从而使操作员在输入手动数据指令时获得一致且可预测的机床动作。通过将 G90 和 G91 视为 CNC 解析器的底层坐标过滤器,而不仅仅是简单的功能切换代码,制造企业能够显著降低废品率、缩短单件循环时间,并在高强度产线中延长主轴(spindle)的使用寿命。
常见问题
在批量生产中,如何在程序里安全地切换绝对坐标G90与增量坐标G91?
在批量生产环境中,由于模态混淆导致的坐标漂移是引发撞车和产生大量废品的重要隐患。最安全的实践是在任何增量定位子程序(如 G91 步进加工或深孔排屑)结束并返回主程序后,立即以独立行显式声明 G90 绝对定位指令。实操建议:在后处理器的输出规则中,强制设定在每个子程序结束指令 M99 或 M17 后自动插入一行单独的 G90 指令,从根本上防止后续绝对位置运行块被误读为相对增量位移。
如何通过修改机床参数来防止因G90/G91状态混乱引起的非计划停机?
在多班组交叉作业的批量生产中,机床由于复位或断电重启产生的启动默认坐标模态非常关键。要确保设备在通电或手动复位后状态一致,可在 Fanuc 系统中将 3402 号参数第 3 位(G91)设为 0(默认启动为 G90 绝对定位模式),并在 Mitsubishi 系统中将 #1073 参数 I_Absm 设为 1(默认绝对定位)。实操建议:对车间内所有 CNC 控制系统开展参数一致性核查,将标准配置记录在机床设备履历卡中,避免同一程序在不同机床上运行产生歧义运动。
出现坐标冲突报警(如Fanuc PS5074或Siemens 61805)时,现场操作员该如何快速排查并恢复生产?
当程序尝试在同一个程序段内为同一个物理轴混合输入绝对坐标和增量坐标逻辑(例如在 G-code System A 下的车床同一行中写了 X 和 U,或在 Siemens 同一行中对 X 轴同时输入 AC 和 IC 修饰符)时,系统解析器会立刻触发此类报警并实施NC安全停机。操作员应当立即按下急停或复位,在编辑状态下定位到触发报警的 NC 程序段,删除冗余的坐标指令,或将冲突的移动拆分到连续的相邻程序段中。实操建议:打开 NC 编程软件,对报警所在的刀具路径行进行语法分割,利用机床自带的图形模拟功能进行空运行验证无误后,再行启动自动量产循环。
仍未解决?
使用自然语言向我们的AI助手咨询该话题。基于经验证的来源,无幻觉。

- CNC CARE Co-Founder (May 2025 - Present)
- Mitsubishi Electric NC Sales & Service Section Manager (2008 - 2025)
- Reis CNC Service Engineer (2003 - 2005)
- Ören Kalıp CNC Mold Line Team Leader (1999 - 2002)
在CNC机床行业拥有超过25年的丰富经验,我继续作为CNC CARE of the 联合创始人开展活动,我们提供独立于品牌的咨询、工程和原厂备件服务。
相关文章
关于该主题的其他文章
Siemens CYCLE800 旋转平面与刀具对齐 G 代码指南
深入解析西门子 SINUMERIK CYCLE800 旋转平面与刀具对齐参数。详述退刀模式 _FR 与旋转方向 _DIR 的安全配置方法,并提供 Alarm 61190 与 Alarm 61153 常见报警的排查步骤,助您提升批量生产节拍与合格率。
Siemens CYCLE72轮廓铣削与Sinumerik路径编程指南
详述Siemens CYCLE72轮廓铣削参数配置。本指南重点阐述如何定义_KNAME文本标签,以消除程序段号重编号引起的尺寸累积偏差与报废件风险,并提供避免仿真Alarm 61123及预防卡盘和刀塔故障导致非计划停机时间的具体解决方案。
西门子数控系统CYCLE952轮廓车削循环编程与批量量产防撞指南
本指南详解西门子数控系统CYCLE952轮廓车削循环编程。针对大批量零件量产,深入剖析其与CYCLE62的调用机制、_VARI加工策略以及SD55212等内存管理参数,解决Alarm 61051与61059等非计划停机报警,全面提升机床连续加工的节拍优化与工件合格率。
西门子数控系统SLOT1与SLOT2槽铣削循环编程指南与参数配置规范
本指南详解西门子数控系统SLOT1纵向与SLOT2圆弧槽铣削循环编程。针对大批量工件量产,深入剖析VARI定位模式、D号刀补激活、立铣刀DIN844规格等关键参数对节拍与合格率的影响,并提供防碰撞及非计划停机故障排查方法,助您提升多轴精密加工效率。