BrainCo-Revo2Slave EtherCAT 通信协议文档
1.设备基础信息
| 项目 | 内容 |
|---|---|
| 设备名称 | BrainCo-Revo2Slave |
| Vendor Name | BrainCo |
| Vendor ID | 0x00BC0000 |
| Product Code | 0x00009252 |
| Revision No | 0x00000001 |
- 具体对象字典配置
2.同步管理器与 PDO 映射
2.1 同步管理器配置
| SM Index | 功能 | 对应 PDO Index |
|---|---|---|
| SM2 (0x1C12) | Master → Slave 输出 | 0x1600 |
| SM3 (0x1C13) | Slave → Master 输入 | 0x1A00 |
2.2 RxPDO(0x1600)
| 子索引 | 对象 | 描述 |
|---|---|---|
| 0x01 | 0x7000:01 | 多指控制模式 |
| 0x02 | 0x7000:02 | 多指控制参数1(6xINT16) |
| 0x03 | 0x7000:03 | 多指控制参数2(6xUINT16) |
| 0x04 | 0x7010:01 | 单指控制模式 |
| 0x05 | 0x7010:02 | 单指目标关节 ID |
| 0x06 | 0x7010:03 | 单指控制参数1(INT16) |
| 0x07 | 0x7010:04 | 单指控制参数2(UINT16) |
控制模式定义
# define CTRL_MODE_POS_TIME 0x01 // 位置 + 时间
# define CTRL_MODE_POS_SPD 0x02 // 位置 + 速度
# define CTRL_MODE_SPD 0x03 // 速度控制
# define CTRL_MODE_CURRENT 0x04 // 电流控制
# define CTRL_MODE_PWM 0x05 // PWM占空比目标关节 ID 定义
typedef enum {
// 拇指尖部
THUMB_FLEX,
// 拇指根部
THUMB_ABDUCT,
// 食指
INDEX_FINGER,
// 中指
MIDDLE_FINGER,
// 无名指
RING_FINGER,
// 小指
PINKY
} finger_index_t;2.3 手指TxPDO(0x1A00)
| 子索引 | 对象 | 描述 |
|---|---|---|
| 0x01 | 0x6000:01 | 关节位置(6xUINT16) |
| 0x02 | 0x6000:02 | 关节速度(6xINT16) |
| 0x03 | 0x6000:03 | 关节电流(6xINT16) |
| 0x04 | 0x6000:04 | 关节状态(6xUINT16) |
- 6 个手指电机位置(Pos) → UINT16 ×6
- 6 个手指速度(Spd) → INT16 ×6
- 6 个手指电流(Cur) → INT16 ×6
- 6 个手指状态(State) → UINT16 ×6
- 总计:12 + 12 + 12 + 12 = 48 字节数据,主站可直接映射到变量使用。
2.4 电容式触觉 TxPDO 字典(0x6010)
| 索引 | 子索引 | 字段名 | 类型 | 数量 | 描述 |
|---|---|---|---|---|---|
| 0x6010 | 0x01 | force_normal | UINT16 | 5 | 法向力 |
| 0x6010 | 0x02 | force_tangential | UINT16 | 5 | 切向力 |
| 0x6010 | 0x03 | force_direction | UINT16) | 5 | 切向力方向 |
| 0x6010 | 0x04 | proximity | UINT32 | 5 | 接近觉 |
| 0x6010 | 0x05 | touch_status | UINT16 | 5 | 触觉状态 |
5个手指法向力(force_normal) → UINT16 ×5
5个手指切向力(force_tangential) → INT16 ×5
5个手指切向力方向(force_direction) → INT16 ×5
5个手指接近觉(proximity) → UINT32 ×5
5个手指触觉状态(touch_status)→ UINT16 ×5 总计:10 + 10 + 10 + 20 + 10 = 60 字节数据,主站可直接映射到变量使用。
法向力,切向力是 16 位的无符号数据。数值单位是 100 * N, 例如切向力 1000 表示 1000 / 100 N, 即 10 N。法向力,切向力的测量范围是 0 ~ 25 N。
切向力方向是 16 位的无符号数据。单位是角度,数值范围为 0 ~ 359 度。靠近指尖的方向为 0 度,按顺时针旋转最大到 359 度,当数值为 65535 (0xFFFF) 时,表示切向力方向无效。
接近值是 32 位的无符号数据。
触觉状态寄存器为 16 位,分高低字节表示不同状态信息:
高字节:用于表示传感器内部数据更新的包序号。该字节数值若递增或发生变化,表明传感器输出数据已更新。
低字节:用于指示传感器当前状态,各位定义如下:
- bit2:触发时间超时
- bit1:原始值未更新
- bit0:原始值错误
3.配置参数字典(Object 0x8000)
3.1 通用配置字段
| 子索引 | 参数名 | 类型 | 描述 |
|---|---|---|---|
| 0x01 | hand_type | UINT8(WR) | 0=左手,1=右手 |
| 0x02 | led_switch | UINT8(WR) | 手背灯开关 |
| 0x03 | buzzer_switch | UINT8(WR) | 蜂鸣器开关 |
| 0x04 | vibrator_switch | UINT8(WR) | 振动马达开关 |
| 0x05 | unit_mode | UINT8(WR) | 0=无量纲, 1=物理单位 |
| 0x06 | pos_calibration | UINT8 (WO) | 手动位置校准 |
| 0x07 | auto_calibration | UINT8(WR) | 开机自动校准 |
| 0x08 | turbo_mode | UINT8(WR) | Turbo |
| 0x09 | turbo_param[0] ,turbo_param[1] | 2XUINT16(WR) | Turbo |
3.2 各关节保护电流字段
| 子索引 | 参数名 | 类型 | 描述 |
|---|---|---|---|
| 0x0A | thumb_flex_pro_cur | UINT16(WR) | 拇指尖保护电流 |
| 0x0B | thumb_aux_pro_cur | UINT16(WR) | 拇指根保护电流 |
| 0x0C | index_pro_cur | UINT16(WR) | 食指保护电流 |
| 0x0D | mid_pro_cur | UINT16(WR) | 中指保护电流 |
| 0x0E | ring_pro_cur | UINT16(WR) | 无名指保护电流 |
| 0x0F | pink_pro_cur | UINT16(WR) | 小指保护电流 |
| 0x10 | thumb_aux_lock_cur | UINT16(WR) | 拇指副关节锁定电流 |
3.3 固件信息字段
| 子索引 | 参数名 | 类型 | 描述 |
|---|---|---|---|
| 0x11 | ctrl_wrist_fw_version | STRING(20)(RO) | 控制板固件版本(字符串:高.中.低) |
| 0x12 | ctrl_sn | STRING(18)(WR) | 控制板设备序列号(SN) |
| 0x13 | wrist_fw_version | STRING(20)(RO) | 手腕板固件版本(字符串:高.中.低) |
| 0x14 | wrist_sn | STRING(18)(WR) | 手腕板设备序列号(SN) |
| 0x15 | foe_file_type | UINT8(WO) | FoE 文件类型标识:1=手腕板,2=控制板 |
| 0x16 | foe_auth_code | STRING(8)(WO) | FoE 文件认证码 |
4.触觉 SDO 参数字典(Object 0x8010)
| 索引 | 子索引 | 字段名 | 类型 | 长度 | 描述 |
|---|---|---|---|---|---|
| 0x8010 | 1 | thumb_calibration | uint8(WO) | 1 | 拇指校准 |
| 0x8010 | 2 | index_calibration | uint8(WO) | 1 | 食指校准 |
| 0x8010 | 3 | mid_calibration | uint8(WO) | 1 | 中指校准 |
| 0x8010 | 4 | ring_calibration | uint8(WO) | 1 | 无名指校准 |
| 0x8010 | 5 | pinky_calibration | uint8(WO) | 1 | 小指校准 |
| 0x8010 | 6 | touch_vendor | uint8(RO) | 1 | 触觉厂商(1:电容式 2:压力感知式) |
| 0x8010 | 7 | thumb_acq_param_update | uint8(WO) | 1 | 拇指通道值调整 |
| 0x8010 | 8 | index_acq_param_update | uint8(WO) | 1 | 食指通道值调整 |
| 0x8010 | 9 | mid_acq_param_update | uint8(WO) | 1 | 中指通道值调整 |
| 0x8010 | 10 | ring_acq_param_update | uint8(WO) | 1 | 无名指通道值调整 |
| 0x8010 | 11 | prink_acq_param_update | uint8(WO) | 1 | 小指通道值调整 |
| 0x8010 | 12 | reserved1 | uint8(RO) | 1 | 预留 |
| 0x8010 | 13 | thumb_touch_fw_version | string(RO) | 20 | 拇指触觉固件版本 |
| 0x8010 | 14 | index_touch_fw_version | string(RO) | 20 | 食指触觉固件版本 |
| 0x8010 | 15 | mid_touch_fw_version | string(RO) | 20 | 中指触觉固件版本 |
| 0x8010 | 16 | ring_touch_fw_version | string(RO) | 20 | 无名指触觉固件版本 |
| 0x8010 | 17 | pink_touch_fw_version | string(RO) | 20 | 小指触觉固件版本 |
5.控制模式与参数说明
灵巧手控制协议支持 6 个手指的单独或联合控制。控制方式支持位置、速度、电流、PWM 占空比等多种模式,分别适配百分比模式和物理量模式。其中符号代表方向(正为手指弯曲方向,负为手指伸直方向)
5.1 控制模式编号(适用于单/多指控制)
| 控制模式编号 | 模式名称 | param1 说明 | param2 说明 |
|---|---|---|---|
| 0x01 | 位置 + 时间控制 | 目标位置 | 运动时间(ms) |
| 0x02 | 位置 + 速度控制 | 目标位置 | 运动速度 |
| 0x03 | 速度控制 | 目标速度 | 无 |
| 0x04 | 电流控制 | 目标电流 | 无 |
| 0x05 | PWM 占空比控制 | PWM 比值 | 无 |
5.2 PWM 控制说明
- PWM占空比是一个无单位比值,范围 -1000 ~ +1000
5.3 单位模式解释
a)百分比模式(unit_mode = 0)
| 参数 | 含义 | 范围 |
|---|---|---|
| 位置 | 行程的百分比 | 0 ~ 1000 |
| 速度 | 最大速度的百分比 | -1000 ~ 1000 |
| 电流 | 最大电流(1000mA)的百分比 | -1000 ~ 1000 |
b)物理量模式(unit_mode = 1)
| 参数 | 含义 | 单位 |
|---|---|---|
| 位置 | 手指角度位置 | °(度) |
| 速度 | 手指角速度 | °/s |
| 电流 | 实际电机控制电流 | mA |
5.4 多指控制与单指控制区别
| 类型 | 地址区 | 控制模式字段 | 控制参数结构 |
|---|---|---|---|
| 多指控制 | RxPDO 0x7000 | mult_finger_ctrl_mode | param1[6] + param2[6] |
| 单指控制 | RxPDO 0x7010 | finger_ctrl_mode | finger_id + param1 + param2 |
- 多指控制一次性设定所有 6 个手指的目标
- 单指控制用于精确单个手指调整或调试控制
6. FoE 固件升级协议说明
Revo 2 进阶版和触觉版灵巧手支持通过 EtherCAT FoE(File over EtherCAT)协议进行固件升级,适用于手腕板与控制板的独立升级需求。
6.1 升级类型与认证信息
| 升级类型 | 文件名 | 升级认证码 |
|---|---|---|
| 手腕板固件 | Revo2EC_x.x.x_$time.bin | BRCW2025 |
| 控制板固件 | Revo2_Vx.x.x_$time.bin | BRCC2025 |
6.2 FoE 升级流程
FoE 升级完整流程包含认证、文件类型指定、固件传输与写入四个步骤:
一. 主站写入升级类型与认证码
- SDO 0x8000:0x15 写入升级类型(1=手腕板,2=控制板)
- SDO 0x8000:0x16 写入认证码(如 "BRCW2025")
二. 主站通过 FoE 发送固件文件
- 文件名必须匹配约定值(如 Revo2EC_0.0.1_2506231346.bin)
三. 从站接收并校验
- 检查认证码是否一致
- 写入对应 Flash 区域
四. 升级完成
- 建议主站复位设备或系统重新扫描
6.3 注意事项
- 文件名大小写敏感,需完全匹配
- 从站写入过程中将中断 PDO 通信
- 设备升级后回自动重启新的固件
- 建议升级完成后重启 EtherCAT 总线
6.4 升级时序图
6.5 固件文件头结构
为确保固件升级文件合法性与版本识别,所有通过 FoE 升级的 .bin 文件,已由打包工具自动添加如下文件头结构(共计 16 字节):
| 字段名称 | 长度 | 描述 |
|---|---|---|
| Magic Number | 8 字节 | 固定标识符,用于识别设备类型: 手腕板 → "BRCW2025" 控制板 → "BRCC2025" |
| Firmware Version | 4 字节 | 固件版本号结构如下: 最高字节为保留字段(0x00), 后三字节依次为主版本号(Major)、 次版本号(Minor)、修订号(Patch)。 例如版本号 1.2.3 表示为:0x00010203 |
| 预留字段 | 4 字节 | 保留字段,当前为 0x00,留作后续扩展使用 |
该结构由打包工具自动写入文件头部,用户无需手动添加,也不应修改。
** 升级验证逻辑**
- 从站在接收 FoE 文件后,先检查 Magic Number 是否匹配当前升级类型;
- 若不匹配则拒绝升级,若匹配,进入烧录流程
- 固件头数据用于升级判断,不会写入 Flash 应用区。