打印自 Kezuriba(kezuriba.net/zh/nc/decimal-point/)
小数点输入:X1000 是 1000 mm 还是 1 mm
在数控程序中,X100. 这样带小数点的数,在任何机床上都读作 100 mm。可是不带小数点的 X1000 ,会随机床的设定,变成 1000 mm、1 mm 或 0.1 mm。这是把其他机床或 CAM 的程序拿来使用时,刀具移动到偏差 1000 倍的位置这类事故的原因。本页汇总两种读法以及各地址的例外。
图解:不带小数点的 X1000 的读法(用同一把尺子比较)
.两种读法:计算器型与标准型
由什么决定,如何确认
计算:这个字会被读作多少 mm、多少秒
| 程序字 | 地址的种类 | 读取的值 |
|---|
换算系数依据 Siemens ISO 方言说明书中的表(mm、inch,IS-B、IS-C)。采用哪种读法,由机床参数决定(Siemens 的 ISO 方言为 MD 10884,三菱电机为 #1078)。请不要靠让机床动起来来确认,先查看画面上的参数,或询问机床厂家。根据 G 代码体系和机型,还会有这里没有列出的例外。
各地址的单位(标准型,单位为 mm 时)
不带小数点的数 1 代表什么。依据 Siemens ISO 方言说明书中的表汇总而成[1]。在这张表中,读法会改变的地址是 X Y Z U V W A B C I J K Q R F。
| 地址 | 标准型 IS-B | 标准型 IS-C | 计算器型 |
|---|---|---|---|
| 直线轴 X Y Z U V W | 0.001 mm | 0.0001 mm | 1 mm |
| 旋转轴 A B C | 0.001° | 0.0001° | 1° |
| 圆弧的 I J K、半径 R、Q | 0.001 mm | 0.0001 mm | 1 mm |
| F(每分钟进给) | 1 mm/min | 1 mm/min | 1 mm/min |
| F(每转进给) | 0.01 mm/rev | 0.01 mm/rev | 1 mm/rev |
| F(螺纹的导程) | 0.01 mm | 0.01 mm | 1 mm |
| 暂停 G04 的 X、U | 0.001 秒 | 0.001 秒 | 1 秒 |
单位为 inch 时,直线轴在 IS-B 下是 0.0001 inch,在 IS-C 下是 0.00001 inch[1]。暂停的例子:G04 X1000 在标准型下是 1 秒,在计算器型下是 1000 秒(会停近 17 分钟)[2]。
×小数点无效的地址
三菱电机的说明书将 D H L M N O P S T 视为“小数点无效的地址”,即使带上小数点,也会舍去小数部分,按整数读取[3]。包括编号(N、O、T、H、D)、次数(L)、转速(S)、M 代码等。S1000.5 即使这样写,结果也还是 1000。
同一个 NC 内部的例外(这里容易出错)
- 螺纹切削的起始角 Q:Haas 的 G32 中,Q 是以 0.001° 为单位的整数,不能带小数点(180° 写作
Q180000)。而 Siemens 的 ISO 方言则带小数点,写成Q180.[4][2]。同样是“多线螺纹的第 2 条”,写法却完全相反。 - G76 第 2 行的 P、Q(牙高、第 1 次切深):用不带小数点的最小设定单位的整数书写(例如
P1534 Q450表示 1.534 mm、0.45 mm)。详情见车床复合固定循环的 G76。 - 暂停的 P:
G04 P500中的 P 是不带小数点的整数(单位毫秒)。用 X、U 书写时要带小数点,写成G04 X0.5。 - 三菱电机的螺纹切削 F:不带小数点的 F 也不是按最小单位读取,而是按 mm 的整数部分读取(
F1为 1 mm)[3]。与每转进给的 F 读法不同。
图解:多线螺纹的起始角 Q(从端面看)
表达式、变量、宏程序的自变量
- 使用表达式或变量得到的值,按带小数点处理。三菱电机把
X123+0读作 123 mm,变量的值全部带小数点[3]。 - 反过来,调用宏程序时的自变量如果不带小数点,有时会按最小单位读取。Haas 的说明书指出,在 mm 设定下
A1这样写,#1 会变成 0.001[5]。自变量要像A1.这样,务必带上小数点。详情见用户宏程序入门中的 G65。
各 NC 的差异
| NC | 不带小数点的数 | 注意事项 |
|---|---|---|
| FANUC 兼容 | 以标准型为基本。有的机型可以通过设定切换为计算器型 | 循环的 P、Q 为最小单位的整数 |
| 三菱电机 | 用 #1078 选择 I 型(最小单位)或 II 型(mm)[3] | D H L M N O P S T 会舍去小数部分。螺纹切削的 F 按 mm 的整数部分读取 |
| Siemens(ISO 方言) | 用 MD 10884 选择计算器型或标准型。标准型的系数为 IS-B、IS-C[1][2] | 多线螺纹的 Q 要带小数点(Q180.) |
| Haas | 有的情况下,不带小数点的自变量按最小单位读取[5] | G32 的 Q 为不带小数点的整数(Q180000)[4] |
| LinuxCNC | 不带小数点的数也直接按原值读取(实质上就是计算器型)[6][7] | 把 FANUC 系统不带小数点的程序拿来用,会偏差 1000 倍 |
现场检查清单
- X、Y、Z、U、W、I、J、K、R 一律带了小数点(
X30不行,要写X30.) - F 也带了小数点(
F0.2、F150.) - 循环的 P、Q(G76 的第 2 行、G04 P)按说明书写成了不带小数点的整数
- 多线螺纹的 Q,按该机床的写法(带或不带小数点)书写
- 宏程序的自变量带了小数点(
A1.) - 借用其他机床、CAM 的程序时,已检索过是否残留不带小数点的数
- 已在参数画面或向机床厂家确认了机床的小数点输入设定(计算器型还是标准型,IS-B 还是 IS-C)
相关:NC 车床编程入门(可在模拟器中试验忘记小数点)、固定循环一览(Q 的符号与小数点)、G32 螺纹切削、编号冲突的代码
出处
各公司公开资料的要点,由 Kezuriba 用自己的话整理而成,并未抄录说明书中的文字和表格。
- Siemens AG「SINUMERIK 802D sl/840D/840D sl/840Di/840Di sl/810D Programming Manual ISO Milling, 04.2007 Edition(6FC5398-7BP10-0BA0)」 cache.industry.siemens.com
- Siemens AG“SINUMERIK 802D sl/840D/840D sl/840Di/840Di sl/810D Programming Manual ISO Turning, 04.2007 Edition” cache.industry.siemens.com
- 三菱电机(Mitsubishi Electric)「MITSUBISHI CNC 700/70 Series Programming Manual (Lathe System)(IB-1500057)」 mitsubishielectric.com
- Haas Automation, Inc.「G32 Thread Cutting (Group 01)(车床,各代码说明页)」 haascnc.com
- Haas Automation, Inc.「Mill Operator's Manual – 13 Macros(在线版)」 haascnc.com
- LinuxCNC project「G-code Overview(LinuxCNC Documentation)」 linuxcnc.org
- 美国国家标准与技术研究院(NIST)「The NIST RS274NGC Interpreter – Version 3(NISTIR 6556, 2000)」 nvlpubs.nist.gov