技术干货

发那科机器人的上升沿指令到底怎么用,跟三菱PLC那套一样吗?

小宋
小宋
2026/05/21 10:25

最近在搞一条FANUC R-30iB的产线,要做个按钮按一次机械手走一个循环,plc侧用三菱的,发现跟三菱里的上升沿指令用法对不上号。FANUC里好像有RISE和FAL,分别对应上升沿和下降沿?我手动按的时候信号明明只有一个扫描周期,但机械手那边偶尔会触发两次,有没有人遇到过这种情况?

我现在的程序里是用R[1]=RISE[R[2]]这种写法,R[2]接的是DI[5]按钮输入,跑下来动作是对的,就是偶尔会多走一步,找了半天没摸到规律。想问下各位是直接在TP里用RISE指令做条件,还是说用R[1]单独置位再自复位那种老套路更稳?

52 3

全部回复 (3)

5176062614
5176062614#1

RISE那玩意儿扫描周期是8ms,要是按钮接的是普通DI,而且你的DI采样时间设得短,确实会偶尔采两次。这种情况我一般用单调沿触发程序(One Shot Rising,OSR),在TP里写个简单的IF R[2]=ON AND R[3]=OFF THEN R[1]=ON, R[3]=ON,IF R[2]=OFF THEN R[3]=OFF。实际跑下来1000次循环只多触发过2次,比直接RISE稳。DI那边最好再加个20ms的硬件滤波,如果DI是源型输出接的PNP传感器,滤波时间低于10ms就容易抖。

2026/05/21 13:17
人到中年
人到中年#2

按钮是机械式的还是触摸的?机械按钮回弹时间一般5-15ms,FANUC的DI默认是2ms采样直接进R寄存器,这种组合出问题太正常了。先查下你那把按钮的触点抖动时间是多少ms,再看DI模块的滤波设了多少,DI[5]对应的滤波时间在$DEFPK[5]或者IO配置里能改,先设个20ms试试,多走一步的现象应该就没了。

2026/05/21 15:05
alei
alei#3

R[1]=RISE[R[2]]这种写法在三菱里能用,在FANUC里其实不算正经的沿检测,更像是把R[2]的状态锁存一帧。我以前在R-30iA Plus上也栽过,后来改成在TP里单独写一段:IF R[1]=ON, JMP LBL[100],主体程序跑完再R[1]=OFF,相当于自己用程序做单次触发,不依赖RISE指令的内部时序。跑了快两年没出过事,比RISE靠谱。

2026/05/21 20:07