FANUC 机械臂 --- 配置字

一、配置字基础总览

1. 核心定义

配置字是FANUC控制器内置的系统级参数集合,以系统变量形式存储,直接决定机器人硬件适配、运动逻辑、通信规则、安全策略等核心行为,是机器人底层控制的核心载体。

2. 分类体系

按功能域分为6大类:1.本体硬件配置、2.系统全局配置、3.运动控制配置、4.坐标系配置、5.外部轴配置、6.安全配置。

3. 存储与权限

存储介质 存储内容 掉电特性 权限等级
FROM(Flash ROM) 机型编码、轴硬件参数、功能授权 不丢失 只读/维护级
SRAM(CMOS RAM) 用户坐标系、工具参数、临时配置 依赖电池 读写级

独立说明

  • 权限分3级:只读(RO)、读写(RW)、维护级(MO),维护级参数需8级密码修改,禁止现场随意篡改。
  • 配置字修改后,部分核心参数(如轴减速比、安装方式)需重启控制器生效,否则运动学计算异常。

4. 开发访问方式

访问方式 适用场景 技术载体
FOCAS2协议 上位机C++远程控制 Fwlib32.dll/so,TCP/IP通信
KAREL语言 机器人本地程序 内置脚本,直接读写系统变量
TP示教器 现场调试 可视化界面修改

独立说明

  • FOCAS2是C++开发对接FANUC的唯一官方标准协议,端口默认8193,支持配置字批量读写、实时监控。
  • 禁止通过非官方协议修改配置字,易导致控制器死机、运动失控。

二、本体硬件配置字

1. 机器人型号基础配置

配置字 作用 取值范围 数据类型 存储位置
$MNU_MODEL 机器人机型编码 对应机型专属值 INTEGER FROM
$MNU_AXES 本体轴数 6/7/8 INTEGER FROM

独立说明

  • 机型编码与物理机器人必须完全匹配,否则D-H参数、运动学模型直接失效,C++端运动学解算会出现位置漂移。
  • 轴数参数决定后续关节数组长度,C++开发中需先读取该参数初始化关节数据结构。

2. 单轴硬件配置

配置字 作用 取值/类型 数据类型
AXIS_CFG\[axis\]. TYPE 轴运动类型 0=旋转,1=直线 INTEGER
AXIS_CFG\[axis\]. GEAR_RATIO 轴减速比 机型定制值 REAL
AXIS_CFG\[axis\]. DIRECTION 轴运动方向 0=正向,1=反向 INTEGER
AXIS_CFG\[axis\]. HOME_POS 轴机械零点 机型定制角度 REAL

独立说明

  1. 减速比直接关联编码器脉冲→关节角度的换算关系,C++运动学解算中必须精准代入,误差会导致末端定位偏差超公差。
  2. 轴方向参数影响正/逆运动学符号,修改后需重新标定TCP,否则运动方向反转。
  3. 数组索引axis=1~ 6对应本体J1~J6轴,C++开发中需按索引遍历读取单轴参数。

3. 安装方式配置

配置字 作用 取值 存储位置
$MNU_INSTALL 机器人安装姿态 0=地面,90=壁挂,180=倒挂 FROM

独立说明

  • 安装姿态直接影响重力补偿算法、关节力矩计算,C++端做动力学仿真时需读取该参数适配重力模型。
  • 倒挂/壁挂安装后,必须重新校准软限位,否则易触发机械碰撞。

4. 轴限位配置

配置字 作用 取值范围 权限
AXIS_LIMIT\[axis\]. SOFT_UPPER 正向软限位 轴最大角度 MO
AXIS_LIMIT\[axis\]. SOFT_LOWER 负向软限位 轴最小角度 MO
AXIS_LIMIT\[axis\]. HARD_UPPER 正向硬限位 机械挡块位置 RO
AXIS_LIMIT\[axis\]. HARD_LOWER 负向硬限位 机械挡块位置 RO

独立说明

  1. 软限位:系统级防护,触发后机器人平滑减速停止,C++开发中可通过FOCAS2动态读取软限位值做轨迹预校验。
  2. 硬限位:物理级防护,触发后伺服立即断电,无法自动恢复,需手动解除,C++程序中严禁轨迹超出硬限位范围。
  3. 软限位数值必须小于硬限位,预留安全余量,避免机械冲击。

三、系统全局配置字

1. 系统基础变量

配置字 作用 数据类型 权限
$SYS_VERSION 控制器系统版本 STRING RO
$SYS_AXES_TOTAL 总轴数(本体+外部轴) INTEGER RO
$SYS_IOMAP_SIZE I/O信号总数量 INTEGER MO

独立说明

  • C++开发中可通过读取$SYS_VERSION做协议兼容性判断,不同系统版本FOCAS2参数号存在差异,避免读写失败。
  • 总轴数参数用于初始化多轴运动控制数组,适配外部轴扩展场景。

2. I/O端口配置

配置字 作用 取值 数据类型
IO_CFG\[no\]. TYPE I/O信号类型 0=数字,1=模拟,2=专用 INTEGER
IO_CFG\[no\]. ADDRESS I/O物理地址 1000+输入,2000+输出 INTEGER
IO_CFG\[no\]. DIRECTION 信号方向 0=输入,1=输出 INTEGER

独立说明

  • 数字I/O地址段:输入1000 ~ 1999,输出2000 ~ 2999;模拟I/O为3000 ~ 3999,C++端信号映射需严格遵守地址规则。
  • 专用I/O为机器人内置信号(如急停、伺服就绪),禁止用户程序修改配置。

3. 通信配置

配置字 作用 数据类型 协议支持
$ETH_IP_ADDR 以太网IP STRING EtherNet/IP、FOCAS2
$ETH_SUBNET_MASK 子网掩码 STRING 以太网通信
$PROFINET_ENABLE Profinet使能 0/1 Profinet

独立说明

  • IP地址是C++上位机通过FOCAS2连接机器人的核心参数,网络不通时优先检查该配置字。
  • 工业总线(Profinet/EtherCAT)使能配置字修改后,需重新加载总线配置文件,否则通信中断。

四、运动控制配置字

1. 速度配置

配置字 作用 取值范围 单位
$VEL_MAX[group] 关节最大速度 0~100% %
$VEL_LINEAR_MAX 直线最大速度 0~10000 mm/s
$VEL_OVERRIDE 实时速度倍率 0~200% %

独立说明

  • 速度倍率$VEL_OVERRIDE可通过C++实时修改,适配不同工况(如调试低速、生产高速),无需重启。
  • 关节速度与直线速度为独立配置,C++轨迹规划中需分别校验,避免超速报警。

2. 加减速与冲击配置

配置字 作用 取值范围 单位
$ACC_GLOBAL 全局加速度 0~150% %
$DEC_GLOBAL 全局减速度 0~150% %
$JERK_LIMIT 加加速度(冲击) 0~1000 mm/s³
$CNT_VALUE 轨迹过渡系数 0~100 %

独立说明

  1. 加速度超100%需开启系统高级权限,否则参数写入无效,C++开发中需先校验权限再写入。
  2. JERK_LIMIT控制运动平稳性,数值越小冲击越小,适合精密装配;数值越大运动效率越高,适合搬运。
  3. $CNT_VALUE:0=精确定位(Fine),100=最大圆弧过渡,C++连续轨迹规划中通过该参数平衡精度与效率。

3. 轨迹规划配置

配置字 作用 取值 运动类型
$PATH_TYPE 轨迹类型 0=关节,1=直线,2=圆弧 通用
$ARC_TOLERANCE 圆弧轨迹误差 0.001~10 mm
$SPLINE_ORDER 样条曲线阶数 3~5 样条运动

独立说明

  • 圆弧误差参数决定轨迹拟合精度,C++视觉引导场景需调小该值(≤0.1mm),保证末端定位精度。
  • 样条阶数越高轨迹越平滑,但控制器计算负载越大,C++实时控制中需平衡平滑度与系统延时。

五、工具&用户坐标系配置字

1. 工具坐标系(TCP)配置

配置字 作用 数据类型 存储
TOOL_CFG\[no\]. TCP 工具坐标(X,Y,Z,W,P,R) REAL[6] SRAM
TOOL_CFG\[no\]. WEIGHT 工具重量 REAL SRAM
TOOL_CFG\[no\]. CENTER 工具重心 REAL[3] SRAM

独立说明

  • TCP是机器人所有运动的基准点,C++端轨迹规划、正逆解算均基于该配置字,修改后需立即更新运动学模型。
  • 工具重量/重心参数用于力矩补偿,负载变化时需同步修改,否则关节过载报警。

2. 用户坐标系(UCS)配置

配置字 作用 数据类型 有效性
UFRAME_CFG\[no\]. ORIGIN 坐标系原点 REAL[3] BOOLEAN
UFRAME_CFG\[no\]. ROTATION 坐标系姿态 REAL[3] BOOLEAN

独立说明

  • 多工位场景通过切换UFRAME简化轨迹编程,C++开发中可批量读取多组坐标系参数,实现动态工位切换。
  • 坐标系参数单位:位移mm,角度°,与C++运动学库单位统一,无需额外转换。

六、外部轴配置字

1. 外部轴基础配置

配置字 作用 取值 数据类型
EXT_AXIS_CFG\[no\]. TYPE 外部轴类型 0=直线,1=旋转 INTEGER
EXT_AXIS_CFG\[no\]. GEAR_RATIO 减速比 定制值 REAL
EXT_AXIS_CFG\[no\]. HOME_POS 零点位置 定制值 REAL

独立说明

  • 外部轴与本体轴属于同一运动组,C++多轴同步控制中,需将外部轴参数纳入运动学解算数组,否则轨迹不同步。
  • 外部轴无内置机械零点,需通过$HOME_POS手动标定,参数错误会导致位置偏移。

2. 外部轴限位配置

配置字 作用 取值范围 权限
EXT_AXIS_CFG\[no\]. SOFT_UPPER 正向软限位 轴最大行程 MO
EXT_AXIS_CFG\[no\]. SOFT_LOWER 负向软限位 轴最小行程 MO

独立说明

  • 外部轴软限位需与本体轴限位联动校验,C++碰撞检测算法中需同时遍历本体+外部轴限位参数。
  • 外部轴无硬限位,完全依赖软限位做安全防护,参数设置需预留≥5mm余量。

七、C++开发实战:FOCAS2配置字读写

核心接口

cpp 复制代码
#include "fwlib32.h"
// FOCAS2句柄初始化
short Focas_Init(const char* ip, FOCAS_HANDLE& hnd)
{
    return cnc_allclibhndl3(ip, 8193, 5000, &hnd);
}
// 读取整数型配置字
short Focas_ReadInt(FOCAS_HANDLE hnd, short paramNo, int& val)
{
    return cnc_rdparam(hnd, paramNo, 0, 0, 2, (unsigned char*)&val);
}
// 写入实数型配置字
short Focas_WriteReal(FOCAS_HANDLE hnd, short paramNo, double val)
{
    return cnc_wrparam(hnd, paramNo, 0, 0, 4, (unsigned char*)&val);
}

独立开发要点

  1. FOCAS2参数号与FANUC配置字一一对应,需查阅官方《FOCAS2参数手册》匹配,C++开发中禁止硬编码未知参数号。
  2. 配置字读写需加异常捕获,写入后立即读取校验,避免参数写入失败导致运动异常。
  3. 核心安全参数(限位、急停)仅做读取,禁止C++程序写入修改,防止安全风险。
相关推荐
oldmao_20004 小时前
第八章 设计并发代码
开发语言·c++·多线程编程·并发编程
达不溜的日记4 小时前
CAN总线网络传输层CanTp详解
网络·stm32·嵌入式硬件·网络协议·网络安全·信息与通信·信号处理
ZPC82104 小时前
RViz 虚拟机械臂 / 真实机械臂 / Gazebo 仿真
linux·人工智能·机器人
芒果披萨4 小时前
日志管理 logging
java·开发语言·c++
wanhengidc4 小时前
网站服务器具体功能有哪些?
运维·服务器·网络·网络协议·智能手机
放羊郎4 小时前
多机器人协同全覆盖路径规划
机器人
天若有情6735 小时前
颠覆C++传统玩法!Property属性与伪类,开辟静态语言新维度
java·c++·servlet
CylMK5 小时前
题解:P11625 [迷宫寻路 Round 3] 迷宫寻路大赛
c++·数学·算法
计算机安禾5 小时前
【数据结构与算法】第44篇:堆(Heap)的实现
c语言·开发语言·数据结构·c++·算法·排序算法·图论