Technical Article
西门子 DIAM90 下写 G91 X-10,直径为什么少了20毫米?
西门子828D的DIAM90遇到G91,X按半径增量解释。用直径40到30的对照与R5圆弧图,算清DIAMON、DIAMOF、DIAM90的X倍率、实际值显示,以及I/K增量圆心为什么不能跟着翻倍。
车床 X 轴处在直径 40 的位置,下一段想走到直径 30,增量该写 X-10 还是 X-5?在西门子 828D 上,这两个数都有可能正确。先把当前的 DIAM 模式找出来:DIAMON 下,G91 的 X-10 是直径减少 10;换成 DIAM90,同样的 G91 X-10 会让刀具沿径向移动 10,终点变成直径 20。
本文按西门子 SINUMERIK 828D、CNC 软件 5.24、2024 年 7 月版官方手册说明。算例采用公制,工件中心线为 X0,机床配置的横向轴为 X;不叠加坐标变换,也不启用轴专用 DIAMONA、DIAMOFA 等覆盖指令。文中的直径与轨迹均为坐标演算。
DIAM90 的“90”,正好要和 G90、G91 一起看
G90、G91 决定这次给的是绝对位置还是增量。DIAMON、DIAMOF、DIAM90 则决定指定横向轴的数值按直径量还是半径量解释,两层状态需要同时核对。
DIAMON:G90 的 X 是直径位置,G91 的 X 是直径增量。
DIAMOF:G90 的 X 是半径位置,G91 的 X 是半径增量。
DIAM90:G90 的 X 是直径位置,G91 的 X 是半径增量。
这三条指令是模态指令,不能只盯着当前运动段找答案,要向前找到最后生效的模式。规则作用于机床配置指定的横向几何轴;本文以常见的 X 轴为例,Z 值不因此折半。程序里写了“车床”,也不能代替对横向轴配置的核对。
从直径 40 到 30,刀具实际只需向内走 5 毫米
把直径换回物理半径,计算就很直接:起点 r=40÷2=20,终点 r=30÷2=15,因此径向位移是 15−20=−5 mm。各组都从这个相同起点单独开始,所需 X 地址如下。
DIAMON + G90:X30 DIAMON + G91:X-10 DIAM90 + G90:X30 DIAM90 + G91:X-5 DIAMOF + G90:X15 DIAMOF + G91:X-5
上面是模式与地址的对应表,不能从第一行到最后一行连续执行。如果把原本配合 DIAMON 使用的 G91 X-10 留下来,只将入口改成 DIAM90,实际径向位移就从 −5 变为 −10 mm。由 r20 向内走到 r10,终点直径是 20,比原计划的直径 30 又小了 10 mm。

对照后处理输出时,可以固定这组直径 40→30 的简单几何,分别检查绝对段和增量段。若绝对 X30 都正确,而增量段差一倍,应先核对 DIAM90 与 G91 的配对,再查 X 数值有没有被后处理额外乘二或除二。不要先用刀补去抵消这个倍率差。
程序写 X-5,实际值却从 40 变 30,读数并不矛盾
官方手册还有一处容易漏看:DIAMON 或 DIAM90 生效时,工件坐标系中横向轴的实际值按直径显示。因而在 DIAM90+G91 下,程序的 X-5 表示径向向内移动 5 mm,直径实际值却会减少 10。
这时应把三项记录分开:程序增量 −5、物理径向位移 −5 mm、工件坐标系直径读数 40→30。若只拿 X 地址的差值和屏幕直径读数的差值比,容易把正常的直径显示误认为轴多走了一倍。这里说的是工件坐标系实际值,不能把其他诊断页或机床厂自定义画面的数字一并套入。
同样不能只看一行开头有没有 G90。西门子允许单轴使用 AC、IC 写法;本版功能手册明确给出,DIAM90 对 G90/AC 按直径,对 G91/IC 按半径。也就是说,即使总体保持 G90,X=IC(-5) 仍是半径增量 −5。需要先分清坐标基准时,可对照G90、G91 与 AC、IC 的单轴写法。
到圆弧段,再把 X 终点和 I 圆心分开
不能把“X 按直径”理解成圆弧段里所有横向数字都乘二。普通增量圆心 I、J、K 仍按半径量解释,不受这三种 DIAM 模式影响;G90、G91 控制终点的绝对或增量解释,也不会把默认增量圆心自动改成绝对圆心。
取 G18 平面上的一段 R5 圆弧,用物理坐标描述:起点 A 为 Z0、r20,终点 B 为 Z−5、r15,圆心 C 为 Z0、r15。DIAMON+G90 下,终点的直径是 30,圆心相对起点的径向差是 −5,轴向差为 0。把相关地址拆开检查:
终点:X30 Z-5 增量圆心:I-5 K0 I = 圆心半径15 - 起点半径20 = -5 K = 圆心Z0 - 起点Z0 = 0
这里的 X30 和 I-5 正确地出现在同一段圆弧中。若因为 X 是直径量,就将 I 也翻倍写成 I-10,圆心会落到 Z0、r10。此时起点到圆心的距离为 10,终点到圆心的距离是 √(5²+5²)≈7.071 mm,两端已经不在同一个圆上。

若程序采用 I=AC(...)、K=AC(...),那又是绝对圆心写法,横向分量要按相应直径模式核对。本文图 2 只用普通 I、K 增量圆心,不能把这张图的 I-5 原样搬到绝对圆心栏。
查一倍尺寸差时,把入口状态和输出倍率放在一起
我会先用同一个物理起点和终点,把程序展开成几项明确的信息:当前 DIAM 模式、该轴本段采用绝对还是增量、X 地址对应多少实际径向位移。圆弧再另外算一遍起点到圆心、终点到圆心的距离。这样可以定位究竟是坐标基准读错,还是直径与半径的倍率用错。
回到 Mastercam 后处理,重点比较程序入口、子程序边界和绝对/增量切换附近的 NC。不要因为看见 DIAMON 就把所有 X、I 一起翻倍,也不要把车削循环的专用参数当普通 X 轴地址统一处理。修改前后的文本可按后处理 NC 输出比较方法逐段核对,保留那组已算清楚的直径 40→30 作为检查例。
最后再回到对应版本的仿真中,看实际轨迹是否落在 r15、圆心是否落在 C;上机核验则从已确认的坐标系、补偿状态和安全位置开始。先把倍率算对,后续的刀补、进给和切削结果才有可比较的基础。
参考资料
西门子《SINUMERIK 828D NC programming》,07/2024,CNC 5.24,A5E48764001B AH。第 175~177 页说明横向轴直径/半径模式、模态属性、实际值显示及圆心例外;第 202~203 页说明圆弧终点和圆心地址。本文两组坐标与配图为依据手册规则编制的原创演算。
西门子《SINUMERIK 828D Axes and spindles》,07/2024,CNC 5.24,A5E48764224B AH,第 265 页 §8.5 示例 1 的 N60 注释,明确 DIAM90 对 G90/AC 与 G91/IC 的解释。