很多从 FANUC 转海德汉(HEIDENHAIN)TNC 的师傅,第一关就卡在”刀补在哪设”。FANUC 是在程序里写 G43 Hxx 调长度补偿、用 Dxx 调半径补偿;TNC 不一样——它把每把刀的几何数据(长度 L、半径 R、类型、寿命)全放进一张刀具表 TOOL.T,把”刀库每个套位装的是哪把刀”放进另一张刀库表 TOOL_P.TCH,系统自动按表生效,程序里只写 Txx + M6 换刀即可。
本文按 TNC 320 / 620 / 640 / iTNC 530 / TNC7 共用的”两张表”机制讲,具体软键名字和寿命监控的触发方式会因版本略有差异,文中已标注,动手前以本机版说明书为准。
一句话:刀的几何数据在 TOOL.T(每把刀一行),刀库的物理位置在 TOOL_P.TCH(每个套位一行,P0 永远是主轴),程序用
T 号 + M6换刀,长度和半径补偿由系统自动从 TOOL.T 取,不用写 G43。
一、海德汉 TNC 刀具管理是什么(和 FANUC 思路对比)
TNC 的刀具管理是”数据驱动”的:所有刀的信息集中在两张表里,程序和 PLC 都去读这两张表,而不是把补偿值硬写进每段程序。

| 对比项 | FANUC | 海德汉 TNC |
|---|---|---|
| 长度补偿 | G43 Hxx + 偏置号 | 系统自动读 TOOL.T 的 L 值 |
| 半径补偿 | Dxx + G41/G42 | 系统自动读 TOOL.T 的 R 值 |
| 刀库位置 | 参数/PLC 管 | TOOL_P.TCH 刀库表(P↔T) |
| 换刀指令 | Txx M6 | Txx M6(一致) |
核心区别:FANUC 的补偿值”挂在偏置号上、程序里显式调用”;TNC 的补偿值”挂在刀号上、换刀后自动生效”。所以 TNC 里你改了 TOOL.T 里某把刀的 L,下次换上这把刀就自动用新值。
二、两个核心表:TOOL.T 刀具表 与 TOOL_P.TCH 刀库表
两张表都常驻在 TNC:\TABLE\ 目录(路径因版本可能略有不同,有些老版本刀具表叫 TOOL.T,刀库表叫 TOOL_P.TCH;TNC7 同样沿用手册名 tool_p.tch)。
- TOOL.T(刀具表):每把刀一行,存这把刀的几何与寿命数据。行号 0 通常是占位行(不要删 0 行,否则表结构会坏)。
- TOOL_P.TCH(刀库表 / 套位表):每个刀套一行,存”第几个套位(P)装的是哪把刀(T)”,以及这个套位是否禁用、是否固定、是否保留。
两者关系:换刀时系统先在 TOOL_P.TCH 里找”目标刀号 T 在哪个套位 P”,转刀库把那把刀送到主轴,再读 TOOL.T 里这把刀的 L/R 生效。刀库表错了,刀就取错;刀具表错了,刀装上也是错的尺寸。
三、TOOL.T 里每个刀填什么(L 长度 / R 半径 / 类型 / 寿命)
在 TOOL.T 里,一把刀至少要填这几类数据(列名可能因版本略有差异,含义一致):

表 1:TOOL.T 常用字段
| 字段 | 含义 | 现场备注 |
|---|---|---|
| T / 行号 | 刀号 | 程序里 Txx 调用的就是它 |
| TNAME | 刀具名 | 文本,便于辨认 |
| L | 长度(刀长) | 对刀仪测或机上测,决定 Z 向补偿 |
| R / R2 | 半径 / 第二半径 | 铣刀半径;R2 用于成型刀(如球刀另一向) |
| DL / DR | 长度/半径增量 | 修磨后的微调,叠在 L/R 上 |
| 类型 | 铣/钻/镗… | 决定可用循环 |
| TIME1 | 预警寿命 | 用到这个值弹”快到寿命” |
| TIME2 | 最大寿命 | 用到这个值强制换刀/报警 |
| CUR_TIME | 已用寿命 | 系统累加,可清零 |
| RT | 替代刀(sister) | 本刀到寿命后自动顶上的那把 |
填法要点:L 和 R 必须和实际刀具一致(用对刀仪测最稳);阶梯刀/成型刀用到 R2、DL/DR;想做寿命管理就给 TIME1/TIME2 填上数,RT 写一把备用刀。
四、刀具长度 L 与半径 R 补偿怎么生效(不用 G43)
这是和 FANUC 最大的不同点,必须说清:
- TNC 没有
G43。换刀(Txx M6)后,系统自动把 TOOL.T 里这把刀的 L 当作长度补偿、R 当作半径补偿 接入当前加工。 - 程序里正常写轮廓和深度即可,刀长、刀径的修正都来自刀具表,改刀补只改表、不用改程序。
- 半径补偿的方向(左/右补)仍由程序里的
RL(左,相当于 G41)/RR(右,相当于 G42)决定,但补偿量取自 R。
经验:发现”尺寸整体偏一个刀长”或”侧面留量不对”,先查 TOOL.T 里这把刀的 L/R 有没有填错、有没有被 0 覆盖,而不是去改程序里的 Z 值——TNC 里 90% 的”刀补不对”是表填错,不是程序写错。
五、刀库表 TOOL_P.TCH 怎么编(P↔T 映射,P0=主轴)
TOOL_P.TCH 决定”刀库第几个套位装哪把刀”。每行核心三列:P(套位号)、T(刀号)、TNAME(刀名),还有状态位:RSV(保留套位)、ST(特殊刀/超大刀)、F(固定套位)。

关键规则:
- P0.0 永远是主轴位,不是刀库套位。把 P0 写成一把真实刀库刀会破坏”主轴清空逻辑”,换刀立刻 abort——千万别动 P0。
- 每把要用的刀,必须同时在 TOOL.T(有这把刀的数据)和 TOOL_P.TCH(有它的套位)里都有记录,缺一就调不出来。
- 如果机床掉电、电池失效或刀库被手动转动过,刀库表的 P↔T 和物理实际对不上,第一次
M6就会卡在半转、报”刀库位置不正确 / 换刀不可能”。
六、刀具寿命管理(TIME1/TIME2/CUR_TIME,预警与强制换刀)
TNC 在 TOOL.T 里就预留了寿命列,不用额外装功能:
- TIME1(预警寿命):已用寿命
CUR_TIME达到它,系统提示”该刀快到寿命”,你可以安排换刀但不强制。 - TIME2(最大寿命):达到它,系统强制要求换刀(或报警停机),避免用钝刀。
- CUR_TIME(已用):系统按加工时间/次数累加,可在表上清零重来。
- RT(替代刀):本刀到寿命后,系统可自动顶上这把备用刀,减少停机。
具体”怎么启动寿命监控、怎么让它弹提示/强制换刀”,不同 TNC 版本走法不同(有的是软键”刀具寿命”、有的用 Q 参数或专用循环)。这部分以本机 TNC 版本的刀具寿命管理说明书为准,本文只讲清字段含义,不编具体循环号。
七、程序里怎么调用 + 现场:tool_p.tch 读不出 / 改了不生效
程序里调用一把刀就是一行 Txx(选刀,xx=TOOL.T 里的刀号),配合 M6(执行换刀把刀送到主轴)。换刀后 L/R 自动生效,后面直接走轮廓。

现场最常见的两类故障(都已验证是 TNC 高发问题):
- tool_p.tch 读不出 / PGM 管理里刀库空了:多半是 NCK 缓冲电池失效或掉电,导致刀库表的易失镜像丢失、刀库初始化成空。处理:先给控制上电状态下更换缓冲电池(带电换,避免镜像再丢),再进”编程与编辑”模式核对/重编 TOOL_P.TCH,确认 P↔T 和物理刀库一致后,再执行一次换刀初始化。
- 改了 TOOL.T / TOOL_P.TCH 机床不认:检查是不是在错误的操作模式下改的(要在”编程与编辑”或相应编辑模式、EDITING 软键 ON 才写盘);确认文件确实在
TNC:\TABLE\且文件名正确;有些版本改完要”存盘/退出”才生效,改到一半按了 END 会丢。另外 PLC 那边有”刀具就位”标志,表改了但 PLC 没重新同步时,第一次M6也会拒。
常见问题
tool_p.tch 和 TOOL.T 有什么区别?
TOOL.T 是刀具表,每把刀一行,存这把刀自己的几何与寿命数据(L 长度、R 半径、类型、TIME1/TIME2 寿命等);TOOL_P.TCH 是刀库表(套位表),每个刀套一行,存”第几个套位装哪把刀”(P↔T 映射)和套位状态。简单说:TOOL.T 回答”这把刀长什么样”,TOOL_P.TCH 回答”这把刀放在刀库哪个位置”。换刀时系统先查刀库表找套位,再查刀具表取尺寸。
海德汉 TNC 怎么设刀具长度和半径补偿(要写 G43 吗)?
不用写 G43。TNC 没有 G43/H 那套——换刀(Txx M6)后,系统自动把 TOOL.T 里这把刀的 L 当长度补偿、R 当半径补偿 接入加工,程序里正常写轮廓和深度即可。半径补偿的左右方向用 RL(左)/ RR(右)决定,补偿量取自 R。所以改刀补只改 TOOL.T 表里的值,不用改程序。发现尺寸整体偏一个刀长,先查表里 L/R 有没有填错。
刀库表改了机床不认 / 读不出 tool_p.tch 怎么办?
读不出多半是 NCK 缓冲电池失效或掉电,刀库表易失镜像丢失、刀库初始化为空——要在控制上电状态下更换缓冲电池,再进编辑模式核对/重编 TOOL_P.TCH,让 P↔T 和物理刀库一致。改了不生效,检查:是否在正确编辑模式(EDITING 软键 ON)下改并成功存盘退出、文件是否在 TNC:\TABLE\ 且文件名正确、PLC 的”刀具就绪”标志是否重新同步(表改后第一次 M6 可能因 PLC 未同步而拒)。P0 永远是主轴位,千万别把真实刀写进 P0。
最后更新:2026-10-29
面向海外读者的完整英文版,内容与本文对应 — 可直接转给非中文同事或海外客户。






















暂无评论内容