讨论

发那科JMP指令用着怪,LBL跳来跳去是不是哪里写错了

19850828
19850828
2026/04/11 21:49

手头一台R-30iB,程序里JMP LBL[1]、JMP LBL[2]堆了七八个,跑起来偶尔动作顺序不对,但又不是每次都错,感觉跟没跳一样。LBL我已经按编号从小到大排了,IF条件单独占一行先判断再JMP,这样写不行吗?

有没有人遇到过类似情况,是IF判断放错位置还是JMP本身有什么坑?

19 3

全部回复 (3)

5066052159
5066052159#1

IF和JMP中间别插别的指令,尤其是那种带运算或者DO置位的,写多了JMP有时候就不认。你那个R-30iB如果是老版本固件,JMP还有个坑——IF条件如果用的是寄存器R[i],这个值在上一行可能被覆盖掉,跳转就乱。改成把IF判断单独抽出来,用一个标志位DI[x]或者F[i]先存结果,下一行再IF F[i]=1 JMP LBL[x],跑一周看看。

2026/04/12 03:34
蒋树林
蒋树林#2

先把你那个程序贴两段出来,光说偶尔错没法判断。LBL编号跳来跳去是没问题,又不是必须顺序执行,重点看IF那个条件里的变量是不是在JMP之前会被改动。

2026/04/13 21:28
a268807
a268807#3

JMP本身不背这个锅,大概率是你IF条件里的值被改掉了,常见情况:IF后面跟了一行JMP,但中间隔了别的运动指令,那条指令里如果调用了宏程序或者触发器,R寄存器值就变了。我们这边R-30iB用了四年,JMP用了上千次,固件是V9.40P/35,没出过这种乱跳的事。

2026/04/14 05:10