Technical Article
海德汉 CALL LBL REP 3 为什么执行 4 遍:重复次数与增量终点
海德汉 TNC 640 的 REP 计数为什么比实际执行次数少一次?用 X20、X40、X60、X80 的增量算例,讲清 CALL LBL REP、LBL 0 与子程序返回,并给出逐行核对方法。
海德汉程序写了 CALL LBL 1 REP 3,为什么同一段动作走了 4 遍?因为程序第一次顺序走到调用行时,前面的代码已经执行过一遍。REP 3 是再重复 3 遍,合计 4 遍。如果只想总共执行 3 遍,应写 REP 2。
IX+20 执行四遍,终点是 X80
以 TNC 640、NC 软件 34059x-18 的铣削模式为例。假设刀具已在可横移的安全高度,X0 至 X80 的行程与装夹空间允许移动,当前没有旋转、镜像或缩放,单位为毫米:
10 L X+0 R0 FMAX 11 LBL 1 12 L IX+20 R0 F500 13 CALL LBL 1 REP 3 14 L X+0 R0 FMAX
第 10 行快速定位到当前工件坐标 X0;R0表示不采用刀具半径补偿。第 11 行标记重复段的起点,所以前面的 X0 定位不会跟着重复。
第 12 行的 I在轴名前,表示增量坐标:每执行一次,目标就在上一编程目标位置上增加 20 mm;F500给出该段的进给值。
第 13 行让这一段在首次执行后再重复 3 遍,目标依次是 X20、X40、X60、X80。第 14 行等重复结束后才执行,随后快速回到 X0。图中的 X80 是执行第 14 行之前的位置。

若把第 12 行改成绝对坐标 L X+20 R0 F500,四次的目标都会是 X20,不再逐次累计。复位代码的位置也会改变结果:把回 X0 放进 LBL 1至带 REP 调用行之间,每遍都会复位,20 × 4 的累计关系就不成立。要看清每次进刀到哪里,必须同时看坐标写法和重复范围。
LBL 0 负责子程序返回
CALL LBL 10不带 REP 时,可调用从 LBL 10开始、到 LBL 0结束的子程序。执行到 LBL 0,控制器返回调用行的下一行。输入子程序调用时,用 NO ENT跳过 REP 提示。

程序段重复由带 REP 的调用行结束,子程序由 LBL 0结束并返回。不要把 LBL 0补到重复段末尾,也不能用 CALL LBL 0调用它。
子程序应放在主程序的 M2或 M30之后。若放在主程序结束之前,顺序执行到这里时,即使没有调用,也会至少执行一次。因此,多加工一次既要查 REP 是否少算了首次执行,也要查子程序有没有被主程序顺序走到。
修改 CAM 输出时,可按先比较 NC 变化的方法,直接列出修改前后每遍的目标位置和末遍后的动作。
原厂资料
HEIDENHAIN TNC 640 Klartext 编程手册,34059x-18,10/2023:253—254 页说明子程序与 LBL 0,255—256 页说明 REP 次数;91 页说明绝对与增量坐标。