一、配置字基础总览
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 |
独立说明
- 减速比直接关联编码器脉冲→关节角度的换算关系,C++运动学解算中必须精准代入,误差会导致末端定位偏差超公差。
- 轴方向参数影响正/逆运动学符号,修改后需重新标定TCP,否则运动方向反转。
- 数组索引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 |
独立说明
- 软限位:系统级防护,触发后机器人平滑减速停止,C++开发中可通过FOCAS2动态读取软限位值做轨迹预校验。
- 硬限位:物理级防护,触发后伺服立即断电,无法自动恢复,需手动解除,C++程序中严禁轨迹超出硬限位范围。
- 软限位数值必须小于硬限位,预留安全余量,避免机械冲击。
三、系统全局配置字
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 | % |
独立说明
- 加速度超100%需开启系统高级权限,否则参数写入无效,C++开发中需先校验权限再写入。
- JERK_LIMIT控制运动平稳性,数值越小冲击越小,适合精密装配;数值越大运动效率越高,适合搬运。
- $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);
}
独立开发要点
- FOCAS2参数号与FANUC配置字一一对应,需查阅官方《FOCAS2参数手册》匹配,C++开发中禁止硬编码未知参数号。
- 配置字读写需加异常捕获,写入后立即读取校验,避免参数写入失败导致运动异常。
- 核心安全参数(限位、急停)仅做读取,禁止C++程序写入修改,防止安全风险。