技术干货

发那科机器人UALM报警到底咋搞,示教器上那几个参数搞不懂

小林
小林
2026/03/18 16:26

手上两台R-30iB Plus,跑程序跑到一半偶尔会跳出UALM(就是那个用户报警),不是每次都出,大概几百次出一次,报警代码也不固定,有时候是程序里自己定义的,有时候是系统自动抛的。查了KAREL手册里关于UALM那一段,越看越绕,什么PALM数组、ALM_IF这些变量一堆,试了几次没太搞明白触发逻辑。

主要想问两个事:一是怎么从示教器或者TP程序里直接读取当前UALM的代码和触发原因,不用每次都连电脑;二是这种偶发的用户报警,有没有啥办法在程序里加个监控,触发的时候自动把当时的机器人位置、速度、IO状态一起存下来,方便后面排查?现在就是出了报警啥也记不住,等人过去看现场早没了,烦得很。

13 3

全部回复 (3)

小李
小李#1

UALM分两种,一种是你自己用UALM[i]指令在TP里手动触发的,那种报警代码直接就是你填的那个数字;另一种是系统自动抛的,比如TP里漏写END、或者ALM_IF变量被改写、还有Macro里没保护好也会出。示教器上想看具体代码,按MENU → ALARM → HIST能看到历史,但要看触发瞬间的变量,得在触发那一刻把数据存出来。

建议你直接用BG逻辑起个后台程序,监控PALM[1]到PALM[10]这几个数组,PALM[1]是报警号,PALM[2]是严重等级,PALM[3]到PALM[7]是五个附加参数,具体啥意思看你自己UALM里写的啥。一旦发现PALM[1]不为0,立刻把PR[10]到PR[20]、R[100]到R[120]这些寄存器和当前DO/DI全拍下来存到VR或者写到CF卡里,文件名用$DATE $TIME拼一下,每次触发一个文件,回头排查就方便了。我这边库卡、ABB都有类似套路,发那科这套写法其实更直接,就是手册写得太学术。

2026/03/19 11:39
平平安安
平平安安#2

你这个几百次出一次的偶发问题,别死磕UALM本身,先把机器人本体和柜子里的电池电压查一下,R-30iB的编码器电池低于3V左右会偶发位置丢失进而触发保护性停机,表现就是各种奇奇怪怪的报警代码乱跳。我们这边出过三台都是这个毛病,换电池就好了。

2026/03/22 00:11
hu1994
hu1994#3

你那程序是自己写的还是厂里老师傅留下来的?自己写的话检查一下有没有用CALL调用子程序后没正常返回,或者FOR循环里跳出去再跳回来这种操作,KAREL和TP混着写特别容易把栈搞乱,出UALM的时候报警号看着像自定义的其实底层是栈溢出。你把出过报警的那段程序发出来看看,光说偶发没法判断。

2026/04/20 23:22