-
《玄雅·灵动/灵越上下位机通讯协议》正在持续优化和迭代中。如在实际使用过程中发现与本协议存在版本不一致的情况,请与我们联系,我们将第一时间为您提供所需的技术支持;
-
本协议中的所有数值统一采用十进制或十六进制表示,其中以0x标识的数据为十六进制数,未有标识的数据一律为十进制数;
-
本协议适用于所有购买玄雅·灵动系列产品的用户。
上一次修改时间:2025年12月19日
灵系列产品的通讯协议由帧头、指令、功能码、数据长度、数据、校验、帧尾构成,通信波特率为 1000000。
| 字段 | 说明 | 示例/固定值 |
|---|
| 帧头 | 数据帧的起始位置 | 0xAA(固定) |
| 指令 | 控制指令ID,对应特定控制逻辑或数据格式,便于接收时动态匹配处理流程 | 指令ID |
| 功能码 | 每个指令下的细分功能,各功能对应不同参数 | function |
| 数据长度 | 后续“数据”字段的长度 | length |
| 数据 | 关节的位置、速度、加速度或力矩数据 | data1 ~ dataN |
| 校验 | CRC32校验(取低八位),计算规则:Check = 指令ID + function + length + data1 ~ datan | Check |
| 帧尾 | 数据帧的结束位置 | 0xFF(固定) |
指令ID与对应功能说明
| 指令ID | 指令功能 |
|---|
| 0x01 | 查询机器类型、固件版本、硬件版本及唯一标识码 |
| 0x03 | 机器零点位置设置 |
| 0x04 | 夹爪行程设置 |
| 0x05 | 机器扭矩开关控制 |
| 0x06 | 关节及夹爪控制及获取 |
| 0XFE | 机器自检指令 |
二、指令功能
1. 查询机器信息指令
机器信息查询指令ID为0x01,该指令用于获取机器的固件版本号、硬件版本号和唯一机器码。
| 字段 | 取值 |
|---|
| 指令 | 0x01 |
| 功能码 | 0x00 |
| 数据长度 | 0x01 |
| 数据 | 0xFE |
| 校验 | 0x23 |
示例:查询机器信息
| 帧头 | 指令 | 功能码 | 数据长度 | 数据 | 校验 | 帧尾 |
|---|
| 0xAA | 0x01 | 0x00 | 0x01 | 0xFE | 0x23 | 0xFF |
返回帧
| 帧头 | 指令 | 功能码 | 数据长度 | 数据 | 校验 | 帧尾 |
|---|
| 0xAA | 0x01 | 0x00 | 0x18 | 0x41 0x44 0x4C 0x53 0x32 0x35 0x31 0x32 0x30 0x35 0x31 0x32 0x33 0x34 0x35 0x36 0x6E 0x00 0x00 0x00 0x62 0x02 0x00 0x00 | 0x92 | 0xFF |
返回数据说明
数据格式:序列号(16字节) + 硬件版本(4字节,十进制) + 固件版本(4字节,十进制)
注:各字段内容以字母的ASCII码转为16进制表示
- 示例序列号:
ADFS 251120 X10L23
含义:标准操作臂 + 出厂时间 + 标识码 + 产品型号 + 后续12字节序列号
- 示例硬件号:
110(十进制,表示1.10版本)
对应16进制:0x00 0x00 0x00 0x6E(0x6E对应十进制110)
- 示例固件号:
610(十进制,表示6.10版本)
对应16进制:0x00 0x00 0x02 0x62(0x0262对应十进制610)
2. 机器零点位置设置指令
机器零点位置设置指令ID为0x03,该指令用于设置机器零点位置。该指令会关闭扭矩。
| 字段 | 取值 |
|---|
| 指令 | 0x03 |
| 功能码 | 0x00 |
| 数据长度 | 0x01 |
| 数据 | 0xFE |
| 校验 | 0xA8(功能码0x00时) |
功能码说明
示例:设置灵动零点位置
| 帧头 | 指令 | 功能码 | 数据长度 | 数据 | 校验 | 帧尾 |
|---|
| 0xAA | 0x03 | 0x00 | 0x01 | 0xFE | 0xA8 | 0xFF |
3. 夹爪行程设置指令
夹爪行程设置指令ID为0x04,该指令用于设置机器夹爪的行程,同时支持查询夹爪行程配置。
| 字段 | 取值 |
|---|
| 指令 | 0x04 |
| 功能码 | 0x00、0x01、0x02、0x0E |
| 数据长度 | 0x01 |
| 数据 | 0xFE(指令发送时);行程类型值(查询返回时) |
| 校验 | 0x7F |
功能码说明
| 功能码 | 功能含义 |
|---|
| 0x00 | 设置夹爪为50mm行程 |
| 0x01 | 设置夹爪为75mm行程 |
| 0x02 | 设置夹爪为100mm行程 |
| 0x0E | 查询夹爪行程配置 |
示例1:设置夹爪行程为100mm
| 帧头 | 指令 | 功能码 | 数据长度 | 数据 | 校验 | 帧尾 |
|---|
| 0xAA | 0x04 | 0x02 | 0x01 | 0xFE | 0x7F | 0xFF |
示例2:查询夹爪行程配置
| 帧头 | 指令 | 功能码 | 数据长度 | 数据 | 校验 | 帧尾 |
|---|
| 0xAA | 0x04 | 0x0E | 0x01 | 0xFE | 0x7F | 0xFF |
返回数据说明
查询夹爪行程配置后,返回的数据字段为夹爪的行程类型,对应关系如下:
- 0x00:50mm行程夹爪
- 0x01:75mm行程夹爪
- 0x02:100mm行程夹爪
返回帧示例(以75mm行程为例)
| 帧头 | 指令 | 功能码 | 数据长度 | 数据 | 校验 | 帧尾 |
|---|
| 0xAA | 0x04 | 0x0E | 0x01 | 0x01 | 0x7F | 0xFF |
4. 机器扭矩开关指令
机器扭矩开关指令ID为0x05,该指令用于设置机器的扭矩开关。
| 字段 | 取值 |
|---|
| 指令 | 0x05 |
| 功能码 | 0x00 |
| 数据长度 | 0x01 |
| 数据 | 0x00、0x01 |
| 校验 | 0x6F |
数据字段说明
指令帧示例
| 帧头 | 指令 | 功能码 | 数据长度 | 数据 | 校验 | 帧尾 |
|---|
| 0xAA | 0x05 | 0x00 | 0x01 | 0x00 | 0x6F | 0xFF |
5. 关节及夹爪控制指令
关节及夹爪控制帧的指令ID为0x06,该指令内涵多个功能,下面一一列举
获取位置、速度及温度数据
1. 获取位置和运动状态
- 功能:获取关节、夹爪及运行状态数据。
- 指令:0x06
- 数据长度:0x01
- 功能码:0x00(获取位置和运动状态)
- 数据:0xFE
- 校验:
示例:获取关节及夹爪角度数据
| 帧头 | 指令 | 功能码 | 数据长度 | 数据 | 校验 | 帧尾 |
|---|
| 0xAA | 0x06 | 0x00 | 0x01 | 0xFE | 0x9A | 0xFF |
示例:灵动回复数据
| 帧头 | 指令 | 功能码 | 数据长度 | 数据 | 校验 | 帧尾 |
|---|
| 0xAA | 0x06 | 0x00 | 0x0F | 0x02 0x08 0xFB 0x07 0xFB 0x07 0x02 0x08 0xFA 0x07 0x01 0x08 0x03 0x08 0x00 | 0xA9 | 0xFF |
- 数据格式:关节角度(每个关节2字节) + 夹爪位置(2字节) + 运行状态(1字节),数据低位在前高位在后
- 运行状态(最后一字节):空闲 0x00、锁定 0x01、同步 0x10、同步锁定0x11,过热状态 0xE1、过热保护 0xE2
2. 获取温度数据
示例:获取舵机的温度数据(灵动示教臂6个舵机,操作臂10个)
| 帧头 | 指令 | 功能码 | 数据长度 | 数据 | 校验 | 帧尾 |
|---|
| 0xAA | 0x06 | 0x01 | 0x01 | 0xFE | 0xAD | 0xFF |
示例:灵动回复温度数据(灵动示教返回6个,操作返回10个)
| 帧头 | 指令 | 功能码 | 数据长度 | 数据 | 校验 | 帧尾 |
|---|
| 0xAA | 0x06 | 0x01 | 0x0A | 0x23 0x24 0x23 0x26 0x23 0x26 0x23 0x25 0x24 0x24 | 0x4B | 0xFF |
- 设置温度保护最大阈值(在温度功能码下,如果数据不为0xFE,则为设置温度最大阈值)
- 示例:设置温度保护最大阈值为0x64(100),默认是85
| 帧头 | 指令 | 功能码 | 数据长度 | 数据 | 校验 | 帧尾 |
|---|
| 0xAA | 0x06 | 0x01 | 0x01 | 0x64 | 0xF7 | 0xFF |
3. 获取速度数据
示例:获取舵机的velocity数据(灵动示教臂6个舵机,操作臂10个)
| 帧头 | 指令 | 功能码 | 数据长度 | 数据 | 校验 | 帧尾 |
|---|
| 0xAA | 0x06 | 0x02 | 0x01 | 0xFE | 0xF4 | 0xFF |
示例:灵动回复velocity数据(灵动示教返回6个,操作返回10个)
| 帧头 | 指令 | 功能码 | 数据长度 | 数据 | 校验 | 帧尾 |
|---|
| 0xAA | 0x06 | 0x02 | 0x14 | 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 | 0xE9 | 0xFF |
关节、夹爪及状态控制
- 功能:控制左右臂关节、左右夹爪及运行状态。
- 指令:0x06
- 功能码:0x03
- 数据长度:0x1C
- 数据:关节角度 + 速度
- 数据格式:关节角度 + 速度(每个关节4字节),数据低位在前高位在后
- 校验:
示例:控制各关节角度为0度,速度1000,控制夹爪闭合到一半(0x3E8)(运动速度最高可以设置为5000,先位置角度再速度)(夹爪映射到0到1000,1000是夹爪张开到最大量程)
| 帧头 | 指令 | 功能码 | 数据长度 | 数据 | 校验 | 帧尾 |
|---|
| 0xAA | 0x06 | 0x03 | 0x1C | 0x00 0x08 0xE8 0x03 0x00 0x08 0xE8 0x03 0x00 0x08 0xE8 0x03 0x00 0x08 0xE8 0x03 0x00 0x08 0xE8 0x03 0x00 0x08 0xE8 0x03 0xF4 0x01 0xE8 0x03 | 0x6A | 0xFF |
6.机器自检指令
机器自检指令ID为0xFE,该指令用于检测舵机是否正常,一共2个字节数据,从低到高每个bit位代表舵机ID从低到高的舵机状态好坏,舵机正常该bit位为1,不正常为0,灵动操作臂10个bit,示教臂6个bit。
| 字段 | 取值 |
|---|
| 指令 | 0xFE |
| 功能码 | 0x00 |
| 数据长度 | 0x03 |
示例:发送请求机器舵机状态
| 帧头 | 指令 | 功能码 | 数据长度 | 数据 | 校验 | 帧尾 |
|---|
| 0xAA | 0xFE | 0x00 | 0x00 | 0xFE | 0x93 | 0xFF |
示例:返回的状态数据(操作臂所有舵机正常)
| 帧头 | 指令 | 功能码 | 数据长度 | 数据 | 校验 | 帧尾 |
|---|
| 0xAA | 0xFE | 0x00 | 0x02 | 0xFF 0x03 | 0x87 | 0xFF |