FANUC 位置寄存器支持的四种数据类型

黄杰, 2018-04-18
root[a]linuxsand.info

在 TPP(Teach pendant programming)层面,存储在位置寄存器(PR)中的往往是关节数据或直角坐标系下的位姿数据。

实际上,PR 支持四种数据类型。

  1. POSITION
  2. XYZWPR
  3. XYZWPREXT
  4. JOINTPOS

下面分别介绍。

POSITION

它可不是仅仅包含 X Y Z 三个元素,而是一个更加复杂的数据结构,占用 56 字节的空间。

POSITION = STRUCTURE
    NORMAL: VECTOR -- RO
    ORINET: VECTOR -- RO
    APPROACH: VECTOR -- RO
    LOCATION: VECTOR -- RW
    CONFIG_DATA: CONFIG -- RW
ENDSTRUCTURE

还需要提及 VECTOR 类型,它是包含三个浮点数的类型(向量),可以是位置,也可以是方向;所有字段可读写。

VECTOR = STRUCTURE
    X: REAL
    Y: REAL
    Z: REAL
ENDSTRUCTURE

可以使用“相对位置操作符 :” 进行坐标变化,使用 >=< 判断两个 POSITION 是否基本相等(不可能比较两个浮点数相等,对不对)。

XYZWPR

XYZWPR 是表示机器人本体在直角坐标系下位置姿态的数据类型,WPR 是 XYZ 顺序的欧拉角,表示姿态;加上轴配置数据,一共 32 个字节。下面所有的字段都可以读写。

XYZWPR = STRUCTURE
    X: REAL
    Y: REAL
    Z: REAL
    W: REAL
    P: REAL
    R: REAL
    CONFIG_DATA: CONFIG
ENDSTRUCTURE

那么,CONFIG 变量就占用 32 - 6 * 4 = 8 个字节。其中四个字节 R(L)U(D)N(F)T(B) 表示关节朝向,剩余四个字节表示十六种(-8 ~ 7)旋转圈数的组合。

XYZWPREXT

相比于 XYZWPR,XYZWPREXT 增加了三个外部轴的字段,占用空间达到 32 + 3 * 4 = 44 字节,其余保持一致。下面所有的字段都可以读写。

XYZWPR = STRUCTURE
    X: REAL
    Y: REAL
    Z: REAL
    W: REAL
    P: REAL
    R: REAL
    CONFIG_DATA: CONFIG
    EXT1: REAL
    EXT2: REAL
    EXT3: REAL
ENDSTRUCTURE

JOINTPOS

表示关节位置,由于某个轴可能是直线轴,也可能是旋转轴,所以数值单位会相应是毫米或角度。占用的字节是 4 + 4 * n(n 是轴的数量)。

使用 CNV_REL_JPOSCNV_JPOS_REL 去访问 JOINTPOS 中的数值。前者将某个浮点数数组写入某个 JOINTPOS 变量,后者将某个 JOINTPOS 变量的数值读出、写入到某个浮点数数组中。角度度量单位是 degree。