讨论

发那科新人求带,TP程序里那个条件跳转到底咋用?

日进斗金
日进斗金
2026/03/23 18:56

刚调到发那科这边,之前一直玩的ABB和库卡,对FANUC的示教器逻辑有点懵。手头一台R-30iB,搁那摆了三天了,就想搞个简单的:抓取位放料位循环,中间碰到个IO信号就跳过某段动作。我在TP里写了IF/SELECT,跳转用的是JMP LBL[],跑起来死活不按我想的走,要么直接跳过要么死循环。

程序结构大概是MAIN里调几个子程序,子程序里想用条件跳到另一个标签。有没有兄弟能给个实际能跑的片段参考?发那科这玩意的条件判定是不是跟ABB那套完全两码事?

13 3

全部回复 (3)

wei888
wei888#1

IF后面那个条件必须是数字变量或者寄存器,不能直接写DI[1]=ON这种,得写F[标志位]或者R[i]。我刚入行那年也卡这,后来师父一句话点醒:FANUC的条件判定就认数,IO信号得先映射到标志位或寄存器。把你那段IF条件贴出来看看吧,大概率是这问题。跳转本身没问题,JMP LBL[1]这种写法是对的,死循环八成是条件永远成立没复位。

2026/03/25 23:27
19880815
19880815#2

干嘛用JMP啊,直接IF THEN分支调用子程序不香吗。FANUC那个条件跳转用得人少,逻辑一复杂自己都绕不出来,子程序嵌套三层的跳转真出了BUG调试能疯掉。把你抓取放料逻辑拆成两个子程序,主程序里IF信号满足就CALL抓取子程序,不满足就CALL放料子程序,清清楚楚的。

2026/03/26 18:43
一路向北
一路向北#3

R-30iB哪个版本?老版本好像IF条件里数字判定有坑,寄存器值跟IO状态映射那块我记得早期固件有bug,刷过B之后的版本才修。你先看看示教器右上角报错过没有,或者把那个具体条件值用DOUT输出来看实际是0还是1。

2026/03/28 20:11