讨论

FANUC机器人视觉寄存器VR地址怎么算?现场老是不稳定

人到中年
人到中年
2026/05/08 14:38

做汽车焊装线视觉引导,FANUC R-30iB Plus配康耐视相机,走的PROFINET,寄存器VR用的是R[i]那种对吧?我这边IO配的是DI[1-16] DO[1-16],视觉那边给的数据是X/Y/R和置信度,一共4个float,按手册说VR是32位,地址是R[1]到R[4]对吧?我直接用4个R寄存器收,结果抓出来的数偶尔会乱跳一帧,置信度还出现过负数,康耐视那边说他们发的没问题。

想确认下FANUC这边VR的字节序是大端还是小端?手册上好像有几种寄存器类型(BYTE/INT/DOUBLE),我选哪个对?还有R[1]和R[2]是不是拼成DOUBLE更稳?现场等不了太久,麻烦做过的大哥说细点。

11 4

全部回复 (4)

宋传东
宋传东#1

R寄存器是16位一个,FANUC里没有32位的VR,只有R[i](16位)和CR[i](32位)。你收4个float,每个32位,应该用CR[1]到CR[4],不是R[1]到R[4]。你用R[1] R[2]拼一个float的话,地址偏移就错了,抓到乱码是必然的,置信度变负数也是因为地址对不上读到了乱七八糟的内存。先去TP上选[DATA]寄存器类型改成CR试试。

2026/05/09 15:12
胡元明
胡元明#2

字节序是Big-Endian,这个不用怀疑,FANUC和康耐视默认都是大端。你那个问题就是寄存器选错了,R和CR的区别没搞清楚。我上个月做电池盒抓取也是4个float+1个int,用CR[1]-CR[4]收X/Y/Z/R,CR[5]收置信度,跑了三班没问题。

2026/05/09 18:58
mhw1982
mhw1982#3

我厂里视觉项目一般不让视觉数据直接进R寄存器,干扰太大了。一般做法是视觉那边用FANUC的KAREL程序走PQ-V接口,R只做握手和心跳,真正的数据走CR或者直接走DI/DO打包。你那种一个寄存器一个值的做法在现场电磁环境复杂的时候基本都会出问题,不建议这么干。

2026/05/10 01:52
5066052159
5066052159#4

你PROFINET的GSD文件版本对吗?我之前碰到过R-30iB用老GSD的时候寄存器映射会自动按字节对齐,新版本才支持CR直接32位对齐。你确认下机器人控制软件是不是V9.40以后的,老版本可能根本没CR概念。

2026/05/19 10:21