中国机器人网 App
手机扫码下载 · 或点击查看
刚入行的机器人应用工程师,上周去客户现场,机器人跑着跑着突然报prio-379停了。重启之后能继续跑,但过个把小时又出来。看了下手册,写的啥程序优先级队列溢出,看得有点懵。
程序里就一个主程序带两个子程序调用,TP程序不大,三四百行左右。是不是程序里用了太多优先级不同的程序?现场的是R-30iB Plus。各位这种情况一般咋排查?
先看$PRIO_CFG这个系统变量,把当前配置导出来贴出来看看。一般prio-379就是程序里声明的优先级超出了系统分配的队列深度,或者同一个优先级塞了太多程序。常见的是用KAREL或者TP里CALL带优先级参数写太高了,比如写到80以上,系统最多也就支持到100多但默认分配的深度只有几十。
还有个低级错误,检查一下有没有死循环或者F[ ]条件里互相调用的,某些老版本固件会把这个也算成队列溢出。R-30iB Plus的版本是几?V9.10之前有个已知bug跟这个相关,升级到V9.40以后基本就没事了。
几百行的TP程序,正常情况下根本不可能触发队列溢出,你这个八成不是程序本身的问题。优先看看$TIMER.$SPEED是不是被改过,或者有没有装第三方通讯包占用优先级。
冒昧问一句,你确定是prio-379不是pri-379?我印象里FANUC报警号没这个prio前缀,是不是现场手抄抄错了?方便把报警界面截图发出来看看么,报警代码后面带不带子码也很关键。