Technical Article
西门子程序有 G90,为什么还会出现 IC?
西门子程序有 G90,X=IC(15) 仍按增量计算。用两段 SINUMERIK 828D 程序和坐标图,读懂 IC、AC 对当前轴的单块作用,以及下一行为什么仍按 G90 或 G91 解释。
程序前面已有 G90,后处理却输出了 X=IC(15)。这行不一定写错。G90 管通常的坐标写法,IC 可以让某一个轴在当前块改用增量。把这一行和下一行接着读,区别就清楚了。
X 加15,Y到40
先看一段坐标读法片段:入口为 G90,起点 P=(20,10)。这里按 SINUMERIK 原生语言、普通铣削 X/Y 轴计算,坐标框架和补偿状态保持不变,具体条件列在文末技术注。
; 片段 A:入口为 G90,P=(20,10) N100 G1 X=IC(15) Y40 N110 X50 Y15
N100 的 X 从20再加15,得到35;Y没有写IC,仍按G90取40。终点就是 Q=(35,40)。如果从同一起点另行执行 G1 X15 Y40,X就到15,终点变成(15,40)。两种写法只差了IC,X的终点却相差20。

X用增量、Y用绝对值,仍共同确定一条直线的终点,并不会先走X、再走Y。图里的虚线只是尺寸投影。
下一行 X50,为什么不再加50
N110没有AC或IC,X50、Y15都按仍然有效的G90解释,终点是 R=(50,15),不是把X算成35+50=85。
这就是IC的非模态作用:它只管所在块的那个轴,没有把整个程序切成G91。G90/G91会继续有效,直到被同组指令改变。因此检查长程序或子程序,要从问题位置前已确认的模态往下读;文件开头出现过G90,不代表中间没有切换。
换成G91,AC怎么读
再独立看一段程序,重新从P=(20,10)出发,入口为G91,其余算例条件相同。它不接在片段A后面。
; 片段 B:入口为 G91,P=(20,10) N200 G1 X=AC(50) Y-5 N210 X10 Y5
N200的X直接取绝对位置50,Y从10减5,终点为 Q=(50,5)。下一行没有AC,两个轴都按G91:X=50+10=60,Y=5+5=10,终点是 R=(60,10)。

两个轴要用不同的尺寸方式,可以分别写AC或IC,等号和圆括号都要保留。不能改成同一块里的G90管X、G91管Y:该版本中两者属于G组14,一个块只能写该组的一个指令。
这里的“绝对”,相对于哪个零点
G90和AC参考的是当前有效坐标系的零点。“绝对”不能直接当成机床坐标,也不表示回机床零点。若程序中间改变了坐标框架,要先认清新的基准,再读位置值。框架的重建、追加及旋转顺序,另见 TRANS与ATRANS的区别。
遇到终点不一致,把问题前后几行NC、机型和系统版本一起发来,先核对入口状态;准备资料时可参照 后处理修改资料清单。
技术注
本文语法依据 SINUMERIK 828D CNC 5.25 SP1、07/2025 手册的原生语言。G290对应SINUMERIK语言,G291对应ISO语言,切换指令须独占一个块,两种语言不能混写在同一块。实际采用哪种语言,要与机床交付配置和后处理目标一致;AC/IC报错时也应核对这一点。
两组算例均为毫米制普通铣削直线轴X/Y,Z固定,当前有效笛卡尔坐标框架固定,无刀具半径补偿,刀长补偿状态不变。SD42440、SD42442均取0,不计增量段附加的框架偏移或刀长补偿移动;这两个值是算例假设,现场参数无需为此调整。片段省略了进给、安全空间与完整程序头尾等运行条件。
算例不含旋转、镜像、缩放、运动学变换、车床直径方式、圆心参数或旋转轴。有这些条件时,上面的X/Y加减不能直接当成机床轴位移。
原厂依据:Siemens《SINUMERIK 828D — NC programming》07/2025,A5E48764001B AK,§3.8.4.1–2(165–171页);语言模式893–894页;模态与同组限制1131页;G组14为1204页。