跳到主要内容

云擎通讯协议 v1.0.6

警告

阅读指南

  1. 本文中的所有数值统一采用十进制或十六进制表示,其中以 0x 开头的数据为十六进制数,未标识的数据为十进制数。
  2. 多字节数据均采用低字节在前、高字节在后的顺序。示例帧已经包含校验字节,可以直接用于串口调试。

云擎按键功能:

  • 单击:切换电机模式,mit mode ↔ pv mode(掉电保存)
  • 双击:按键灯快速闪烁,回放记录的动作(期间任意键停止回放)
  • 长按:1~2s 内切换重力补偿模式(仅 mit 模式有效)
  • 超长按:2s 以上按键灯慢闪烁,记录按键灯闪烁期间的动作(期间任意键停止记录)

串口通信参数:

  • 有重力补偿帧率:830 Hz
  • 无重力补偿帧率:1000 Hz
  • 极限帧率:1630 Hz(适用于 C/C++)

上一次修改时间:2026年5月21日

注:该通讯协议文档及其相关功能的最终解释权由 玄雅科技有限公司 所有。

一、云擎通讯协议基本构成

云擎通讯协议由帧头、指令、功能码、数据长度、数据、校验、帧尾构成,用户串口默认波特率为 1000000

字段长度说明固定值或示例
帧头1字节数据帧起始标记0xAA
指令1字节本帧要执行的大类功能0x01、0x06
功能码1字节读写方向、机械臂选择或子功能0x02、0x82
数据长度1字节后续“数据”字段的字节数0x00、0x10
数据可变关节、夹爪、参数或状态数据按各指令说明
校验1字节CRC32 校验结果低 8 位示例中已给出
帧尾1字节数据帧结束标记0xFF

校验计算范围为:指令 + 功能码 + 数据长度 + 数据。帧头和帧尾不参与计算。

例如查询设备信息:

帧头指令功能码数据长度数据校验帧尾
0xAA0x010x7E0x000x5D0xFF

完整帧:

AA 01 7E 00 5D FF

其中 0x5D 就是对 01 7E 00 计算得到的校验字节。


二、常用约定

1. 机械臂选择

多数指令使用功能码低两位选择机械臂:

功能码位含义
第0位示教臂
第1位操作臂

常见取值:

功能码含义
0x01选择示教臂
0x02选择操作臂
0x03同时选择示教臂和操作臂
0x81写入示教臂
0x82写入操作臂

推荐按“单帧只操作一条机械臂”的方式对接,尤其是关节数据读写和电机参数设置。

2. 关节编号

使用场景编号方式
调零、机械锁0 开始编号
电机参数设置1 开始编号
关节数据读写不带起始关节字段,默认从第 0 个关节开始

云擎单臂常规物理关节数量为 7 个。公开对接时,第 7 个关节为夹爪相关关节;0x11 写控制模式时会跳过它,加速度、减速度、速度环和位置环等其它已开放电机参数仍按请求范围处理。

3. 反馈功能码

大多数反馈帧会把请求功能码的最高位置 1。例如:

请求功能码反馈功能码
0x020x82
0x030x83
0x7E0xFE

如果请求功能码本身已经大于等于 0x80,反馈功能码通常保持相同。


三、指令ID总览

指令功能公开说明
0x01设备信息读取开放
0x02用户个性化设置开放
0x03协议层调零开放
0x05机械锁和刚度切换开放
0x06关节数据读写开放
0x09使能和失能开放
0x11电机参数设置开放控制模式、加速度、减速度、速度环和位置环参数
0x15清除电机错误开放
0x16控制锁定开放
0x17夹爪夹持参数开放
0xFB串口帧率统计开放,用于调试
0xEE错误反馈由下位机返回

四、指令功能

1. 指令ID 0x01:查询设备信息

指令 0x01 用于读取云擎的产品型号、序列号、硬件版本和固件版本。

字段取值
指令0x01
请求功能码0x7E
请求数据长度0x00
反馈功能码0xFE
反馈数据长度0x18

示例:查询设备信息

帧头指令功能码数据长度数据校验帧尾
0xAA0x010x7E0x000x5D0xFF

完整帧:

AA 01 7E 00 5D FF

示例:设备信息反馈

帧头指令功能码数据长度数据校验帧尾
0xAA0x010xFE0x180x41 0x4D 0x58 0x53 0x32 0x35 0x30 0x31 0x30 0x31 0x30 0x31 0x41 0x30 0x30 0x31 0x64 0x00 0x00 0x00 0x6E 0x00 0x00 0x000x050xFF

完整帧:

AA 01 FE 18 41 4D 58 53 32 35 30 31 30 31 30 31 41 30 30 31 64 00 00 00 6E 00 00 00 05 FF

反馈数据共 24 字节:

偏移长度含义示例
04字节产品型号41 4D 58 53
412字节序列号32 35 30 31 30 31 30 31 41 30 30 31
164字节硬件版本64 00 00 00
204字节固件版本6E 00 00 00

上例中,硬件版本原始值为 100,可显示为 1.0.0;固件版本原始值为 110,可显示为 1.1.0


2. 指令ID 0x02:用户个性化设置

指令 0x02 用于读取或写入用户配置。写入后会掉电保存。

功能码说明:

功能码位含义
最高位为 0读取
最高位为 1写入
第0位开机动作配置
第1位夹爪类型配置
第2位定时上传开关

每个配置项占 4 字节,均为低字节在前。

配置项功能码位数据长度取值范围或有效规则说明
开机动作配置第0位4字节预留字段,建议保持默认值预留配置
夹爪类型配置第1位4字节当前按 bit1 判断:bit1=0 为小夹爪配置,bit1=1 为大夹爪配置;推荐写 02配置标志值,不是直接写入型号数字
定时上传开关第2位4字节0 关闭,1 开启;其它值保留开启后约每 5ms 主动上传操作臂位置数据

夹爪类型配置不是直接写入型号数字,当前按 bit1 解析:

配置值字节序含义
000 00 00 00bit1=0,选择小夹爪配置
202 00 00 00bit1=1,选择大夹爪配置

开启定时上传后,下位机会约每 5ms 主动上传一次操作臂位置数据。该主动上传帧使用 0x06 指令,功能码为 0x04。

示例1:读取全部用户配置

帧头指令功能码数据长度数据校验帧尾
0xAA0x020x070x000xBB0xFF

完整帧:

AA 02 07 00 BB FF

发送解析:

字段字节含义
指令02用户个性化设置
功能码07读取第0、1、2位对应的三个配置项
数据长度00读取请求不需要数据
校验BB本帧校验

示例反馈:

帧头指令功能码数据长度数据校验帧尾
0xAA0x020x070x0C0x00 0x00 0x00 0x00 0x02 0x00 0x00 0x00 0x01 0x00 0x00 0x000x550xFF

完整帧:

AA 02 07 0C 00 00 00 00 02 00 00 00 01 00 00 00 55 FF

反馈解析:

字段字节含义
指令02用户个性化设置
功能码07返回第0、1、2位对应的三个配置项
数据长度0C数据区 12 字节,每个配置项 4 字节
数据100 00 00 00开机动作配置值为 0
数据202 00 00 00夹爪类型配置值为 2,bit1=1,表示大夹爪
数据301 00 00 00定时上传已开启

示例2:修改夹爪类型配置

本例把夹爪类型配置写成 2,表示选择大夹爪配置。当前固件中,该值的第1位用于选择夹爪类型。

帧头指令功能码数据长度数据校验帧尾
0xAA0x020x820x040x02 0x00 0x00 0x000xCF0xFF

完整帧:

AA 02 82 04 02 00 00 00 CF FF

发送解析:

字段字节含义
指令02用户个性化设置
功能码82写入第1位对应的夹爪类型配置
数据长度04写入 1 个配置项,共 4 字节
数据02 00 00 00目标配置值为 2,bit1=1,选择大夹爪配置

反馈:

帧头指令功能码数据长度数据校验帧尾
0xAA0x020x820x010x810x8E0xFF

完整帧:

AA 02 82 01 81 8E FF

反馈解析:

字段字节含义
指令02用户个性化设置
功能码82对应本次写入请求
数据长度01反馈 1 字节状态
数据81写入请求已接收

示例3:开启定时上传

帧头指令功能码数据长度数据校验帧尾
0xAA0x020x840x040x01 0x00 0x00 0x000x3C0xFF

完整帧:

AA 02 84 04 01 00 00 00 3C FF

发送解析:

字段字节含义
指令02用户个性化设置
功能码84写入第2位对应的定时上传开关
数据长度04写入 1 个配置项,共 4 字节
数据01 00 00 00开启定时上传

反馈:

帧头指令功能码数据长度数据校验帧尾
0xAA0x020x840x010x810x3C0xFF

完整帧:

AA 02 84 01 81 3C FF

反馈解析:

字段字节含义
指令02用户个性化设置
功能码84对应本次写入请求
数据长度01反馈 1 字节状态
数据81写入请求已接收

示例4:写入开机动作配置

本例把开机动作配置写为 0。该项当前作为预留配置,工具侧可用于确认写入链路是否正常。

帧头指令功能码数据长度数据校验帧尾
0xAA0x020x810x040x00 0x00 0x00 0x000xEA0xFF

完整帧:

AA 02 81 04 00 00 00 00 EA FF

发送解析:

字段字节含义
指令02用户个性化设置
功能码81写入第0位对应的开机动作配置
数据长度04写入 1 个配置项,共 4 字节
数据00 00 00 00目标配置值为 0

反馈:

帧头指令功能码数据长度数据校验帧尾
0xAA0x020x810x010x810xD70xFF

完整帧:

AA 02 81 01 81 D7 FF

反馈数据为 0x81 时,表示设置已被接收。


3. 指令ID 0x03:协议层调零

指令 0x03 用于把当前关节位置作为新的协议零点。它有两种方式:

调零方式数据值说明
弱调零0x00只改变协议显示和协议控制零点,不改变电机底层零点
强调零0x01清空协议偏移,并执行底层硬调零

请求数据按选中的机械臂顺序排列。每条机械臂占 2 字节:

字节含义
第1字节起始关节编号,从 0 开始
第2字节连续关节数量

如果最后再多带 1 字节,则该字节为调零方式。不带调零方式时,默认按强调零处理。

示例1:操作臂 7 个关节弱调零

帧头指令功能码数据长度数据校验帧尾
0xAA0x030x020x030x00 0x07 0x000x440xFF

完整帧:

AA 03 02 03 00 07 00 44 FF

字段解释:

字段
功能码0x02,操作臂
起始关节0x00
连续数量0x07
调零方式0x00,弱调零

反馈:

帧头指令功能码数据长度数据校验帧尾
0xAA0x030x820x010x010xCB0xFF

完整帧:

AA 03 82 01 01 CB FF

反馈解析:0x82 表示操作臂调零反馈,数据 0x01 表示接收成功。

示例2:双臂 7 个关节强调零

帧头指令功能码数据长度数据校验帧尾
0xAA0x030x030x050x00 0x07 0x00 0x07 0x010x4C0xFF

完整帧:

AA 03 03 05 00 07 00 07 01 4C FF

字段解释:

字段
功能码0x03,同时选择示教臂和操作臂
示教臂起始关节0x00
示教臂连续数量0x07
操作臂起始关节0x00
操作臂连续数量0x07
调零方式0x01,强调零

反馈:

帧头指令功能码数据长度数据校验帧尾
0xAA0x030x830x010x010xFC0xFF

完整帧:

AA 03 83 01 01 FC FF

反馈解析:0x83 表示双臂调零反馈,数据 0x01 表示接收成功。


4. 指令ID 0x05:机械锁和刚度切换

指令 0x05 用于让指定关节进入高刚度保持,其余关节进入低刚度保持。它不是断电锁止,而是改变关节保持力度。

请求数据格式与调零相同:每条选中的机械臂占 2 字节。

字节含义
第1字节起始关节编号,从 0 开始
第2字节连续关节数量

示例:操作臂 7 个关节进入高刚度保持

帧头指令功能码数据长度数据校验帧尾
0xAA0x050x020x020x00 0x070x2B0xFF

完整帧:

AA 05 02 02 00 07 2B FF

发送解析:

字段字节含义
指令05机械锁和刚度切换
功能码02选择操作臂
数据长度02操作臂占 2 字节区间描述
数据00 07从第 0 个关节开始,连续 7 个关节进入高刚度保持

反馈:

帧头指令功能码数据长度数据校验帧尾
0xAA0x050x820x010x010x170xFF

完整帧:

AA 05 82 01 01 17 FF

反馈解析:0x82 表示操作臂反馈,数据 0x01 表示接收成功。


5. 指令ID 0x06:关节数据读写

指令 0x06 是云擎最常用的控制指令,用于读取关节状态,也用于写入目标位置、速度、力矩等控制数据。

5.1 关节数据地址表

每个地址在数据帧中固定占 2 字节。

地址名称可读可写有效位宽单位说明
0x00pos16位rad受调零影响的关节位置
0x01vel12位rad/s速度目标或反馈
0x02tor12位N·m力矩目标或反馈
0x03kp16位无量纲位置刚度系数,非负值
0x04kd16位无量纲速度阻尼系数,非负值
0x05线性插补速度12位rad/s用于位置目标平滑运动
0x06线圈温度16位°C只读

12位数据放在 2 字节槽位中。写入速度、力矩、线性插补速度这 3 类 12 位字段时,如果 2 字节原始值为 0xFFFF(小端帧中写作 FF FF),下位机会按底层精确零值 0 处理。该特殊值仅用于写入 12 位字段,不适用于位置、刚度、阻尼或温度字段。

5.2 读取关节数据

读取请求的数据区固定为 2 字节:

字节含义
第1字节起始地址
第2字节连续地址数量

读取反馈的数据区格式:

字段长度说明
回包起始地址1字节请求起始地址最高位置 1
地址数量1字节与请求一致
关节数据2 × 地址数量 × 7 字节按关节顺序展开
运行状态1字节按键、错误或外设状态

示例:读取操作臂 7 个关节的协议位置

帧头指令功能码数据长度数据校验帧尾
0xAA0x060x020x020x00 0x010xCE0xFF

完整帧:

AA 06 02 02 00 01 CE FF

示例反馈:7 个关节都在协议零点附近,运行状态为 0。

帧头指令功能码数据长度数据校验帧尾
0xAA0x060x020x110x80 0x01 0xFF 0x7F 0xFF 0x7F 0xFF 0x7F 0xFF 0x7F 0xFF 0x7F 0xFF 0x7F 0xFF 0x7F 0x000x4D0xFF

完整帧:

AA 06 02 11 80 01 FF 7F FF 7F FF 7F FF 7F FF 7F FF 7F FF 7F 00 4D FF

反馈数据中 FF 7F 为一个 16 位位置值,可理解为“接近零点的中间值”。

5.3 写入关节数据

写入请求的数据区格式:

字段长度说明
起始地址1字节要写入的第一个地址
地址数量1字节连续写入几个地址
关节数据可变默认从第 0 个关节开始依次写入

写入反馈的数据区固定为 3 字节:

字段长度说明
回包起始地址1字节请求起始地址最高位置 1
地址数量1字节与请求一致
接收状态1字节0x01 表示接收成功

示例1:操作臂 7 个关节目标位置为零,速度为零

此示例同时写入地址 0x00 和 0x01。每个关节 4 字节:位置 FF 7F,速度 FF FF

帧头指令功能码数据长度数据校验帧尾
0xAA0x060x820x1E0x00 0x02 0xFF 0x7F 0xFF 0xFF 0xFF 0x7F 0xFF 0xFF 0xFF 0x7F 0xFF 0xFF 0xFF 0x7F 0xFF 0xFF 0xFF 0x7F 0xFF 0xFF 0xFF 0x7F 0xFF 0xFF 0xFF 0x7F 0xFF 0xFF0x350xFF

完整帧:

AA 06 82 1E 00 02 FF 7F FF FF FF 7F FF FF FF 7F FF FF FF 7F FF FF FF 7F FF FF FF 7F FF FF FF 7F FF FF 35 FF

反馈:

帧头指令功能码数据长度数据校验帧尾
0xAA0x060x820x030x80 0x02 0x010x360xFF

完整帧:

AA 06 82 03 80 02 01 36 FF

示例2:把操作臂 7 个关节的线性插补速度清零

帧头指令功能码数据长度数据校验帧尾
0xAA0x060x820x100x05 0x01 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF0xEF0xFF

完整帧:

AA 06 82 10 05 01 FF FF FF FF FF FF FF FF FF FF FF FF FF FF EF FF

反馈:

帧头指令功能码数据长度数据校验帧尾
0xAA0x060x820x030x85 0x01 0x010x1E0xFF

完整帧:

AA 06 82 03 85 01 01 1E FF

6. 指令ID 0x09:使能和失能

指令 0x09 用于使能或失能指定机械臂。

数据值含义
0x00失能
非 0x00使能

示例1:使能操作臂

帧头指令功能码数据长度数据校验帧尾
0xAA0x090x820x010x010xAF0xFF

完整帧:

AA 09 82 01 01 AF FF

发送解析:0x09 为使能/失能指令,功能码 0x82 表示写操作臂,数据 0x01 表示使能。

反馈:

帧头指令功能码数据长度数据校验帧尾
0xAA0x090x820x010x010xAF0xFF

完整帧:

AA 09 82 01 01 AF FF

反馈解析:功能码保持 0x82,数据 0x01 表示下位机已接收本次使能请求。

示例2:失能操作臂

帧头指令功能码数据长度数据校验帧尾
0xAA0x090x820x010x000x390xFF

完整帧:

AA 09 82 01 00 39 FF

发送解析:功能码 0x82 仍表示写操作臂,数据 0x00 表示失能。

反馈:

帧头指令功能码数据长度数据校验帧尾
0xAA0x090x820x010x010xAF0xFF

完整帧:

AA 09 82 01 01 AF FF

反馈解析:数据 0x01 表示下位机已接收本次失能请求,不表示“当前仍为使能”。


7. 指令ID 0x11:电机参数设置

指令 0x11 用于修改电机控制参数。公开版开放控制模式、加速度、减速度、速度环和位置环参数。 写入控制模式时,第 7 个物理关节会被跳过;写入加速度、减速度、速度环和位置环参数时不会因为第 7 个物理关节是夹爪而自动跳过。

参数参数地址参数值类型单位或属性参数说明
加速度0x0532 位浮点数rad/s²值越大,启动和提速越快
减速度0x0632 位浮点数rad/s²值越大,减速和停止越快
速度环 Kp0x1A32位浮点数驱动参数速度跟随慢就小幅调大;速度抖动就调小
速度环 Ki0x1B32位浮点数驱动参数长时间达不到目标速度就小幅调大;容易过冲就调小
位置环 Kp0x1C32位浮点数驱动参数位置跟随慢就小幅调大;到位后抖动就调小
位置环 Ki0x1D32位浮点数驱动参数长时间有位置误差就小幅调大;回摆或拖尾明显就调小
控制模式0x0B32位无符号整数枚举值决定电机按哪种方式接受控制

控制模式取值:

模式值含义
1力矩混合控制模式
2位置速度模式
3速度模式
4位置、速度、电流混合模式

写入数据格式:

字段长度说明
起始电机编号1字节1 开始
电机数量1字节连续数量
参数地址1字节见上方参数地址表
参数值4字节低字节在前
保存标志1字节0 不保存,非 0 写入并保存

读取数据格式:

字段长度说明
起始电机编号1字节1 开始
电机数量1字节连续数量
参数地址1字节公开版开放读取控制模式 0x0B

调试时可先使用保存标志 0,确认动作效果正常后,再决定是否写入并保存。

示例1:把操作臂 1 到 6 号电机切到位置速度模式,不掉电保存

帧头指令功能码数据长度数据校验帧尾
0xAA0x110x820x080x01 0x06 0x0B 0x02 0x00 0x00 0x00 0x000xC40xFF

完整帧:

AA 11 82 08 01 06 0B 02 00 00 00 00 C4 FF

发送解析:

字段字节含义
指令11电机参数设置
功能码82写操作臂
数据长度08起始电机、数量、参数地址、参数值、保存标志共 8 字节
起始电机01从 1 号电机开始
电机数量06连续 6 个电机
参数地址0B控制模式
参数值02 00 00 00位置速度模式
保存标志00不掉电保存

反馈:

帧头指令功能码数据长度数据校验帧尾
0xAA0x110x820x040x01 0x06 0x8B 0x010xD60xFF

完整帧:

AA 11 82 04 01 06 8B 01 D6 FF

反馈解析:01 06 原样返回本次电机范围,8B 表示控制模式地址的反馈,末尾数据 01 表示接收成功。

示例2:把操作臂 1 到 6 号电机加速度改为 20,不掉电保存

帧头指令功能码数据长度数据校验帧尾
0xAA0x110x820x080x01 0x06 0x05 0x00 0x00 0xA0 0x41 0x000xF00xFF

完整帧:

AA 11 82 08 01 06 05 00 00 A0 41 00 F0 FF

发送解析:

字段字节含义
指令11电机参数设置
功能码82写操作臂
数据长度08起始电机、数量、参数地址、参数值、保存标志共 8 字节
起始电机01从 1 号电机开始
电机数量06连续 6 个电机
参数地址05加速度
参数值00 00 A0 4132位浮点数,表示 20
保存标志00不掉电保存

反馈:

帧头指令功能码数据长度数据校验帧尾
0xAA0x110x820x040x01 0x06 0x85 0x010x580xFF

完整帧:

AA 11 82 04 01 06 85 01 58 FF

反馈解析:85 表示加速度地址的反馈,末尾数据 01 表示接收成功。

示例3:把操作臂 1 到 6 号电机减速度改为 20,不掉电保存

帧头指令功能码数据长度数据校验帧尾
0xAA0x110x820x080x01 0x06 0x06 0x00 0x00 0xA0 0x41 0x000x5E0xFF

完整帧:

AA 11 82 08 01 06 06 00 00 A0 41 00 5E FF

发送解析:

字段字节含义
指令11电机参数设置
功能码82写操作臂
数据长度08起始电机、数量、参数地址、参数值、保存标志共 8 字节
起始电机01从 1 号电机开始
电机数量06连续 6 个电机
参数地址06减速度
参数值00 00 A0 4132位浮点数,表示 20
保存标志00不掉电保存

反馈:

帧头指令功能码数据长度数据校验帧尾
0xAA0x110x820x040x01 0x06 0x86 0x010x9B0xFF

完整帧:

AA 11 82 04 01 06 86 01 9B FF

反馈解析:86 表示减速度地址的反馈,末尾数据 01 表示接收成功。

示例4:把操作臂 1 到 6 号电机速度环 Kp 改为 1.0,不掉电保存

帧头指令功能码数据长度数据校验帧尾
0xAA0x110x820x080x01 0x06 0x1A 0x00 0x00 0x80 0x3F 0x000x260xFF

完整帧:

AA 11 82 08 01 06 1A 00 00 80 3F 00 26 FF

发送解析:参数地址 0x1A 表示速度环 Kp,参数值 00 00 80 3F 表示 32位浮点数 1.0。

反馈:

帧头指令功能码数据长度数据校验帧尾
0xAA0x110x820x040x01 0x06 0x9A 0x010xC60xFF

完整帧:

AA 11 82 04 01 06 9A 01 C6 FF

反馈解析:0x9A 表示速度环 Kp 地址的反馈,末尾数据 0x01 表示接收成功。

示例5:把操作臂 1 到 6 号电机速度环 Ki 改为 1.0,不掉电保存

帧头指令功能码数据长度数据校验帧尾
0xAA0x110x820x080x01 0x06 0x1B 0x00 0x00 0x80 0x3F 0x000x830xFF

完整帧:

AA 11 82 08 01 06 1B 00 00 80 3F 00 83 FF

发送解析:参数地址 0x1B 表示速度环 Ki,参数值 00 00 80 3F 表示 32位浮点数 1.0。

反馈:

帧头指令功能码数据长度数据校验帧尾
0xAA0x110x820x040x01 0x06 0x9B 0x010x870xFF

完整帧:

AA 11 82 04 01 06 9B 01 87 FF

反馈解析:0x9B 表示速度环 Ki 地址的反馈,末尾数据 0x01 表示接收成功。

示例6:把操作臂 1 到 6 号电机位置环 Kp 改为 1.0,不掉电保存

帧头指令功能码数据长度数据校验帧尾
0xAA0x110x820x080x01 0x06 0x1C 0x00 0x00 0x80 0x3F 0x000x3B0xFF

完整帧:

AA 11 82 08 01 06 1C 00 00 80 3F 00 3B FF

发送解析:参数地址 0x1C 表示位置环 Kp,参数值 00 00 80 3F 表示 32位浮点数 1.0。

反馈:

帧头指令功能码数据长度数据校验帧尾
0xAA0x110x820x040x01 0x06 0x9C 0x010x400xFF

完整帧:

AA 11 82 04 01 06 9C 01 40 FF

反馈解析:0x9C 表示位置环 Kp 地址的反馈,末尾数据 0x01 表示接收成功。

示例7:把操作臂 1 到 6 号电机位置环 Ki 改为 1.0,不掉电保存

帧头指令功能码数据长度数据校验帧尾
0xAA0x110x820x080x01 0x06 0x1D 0x00 0x00 0x80 0x3F 0x000x9E0xFF

完整帧:

AA 11 82 08 01 06 1D 00 00 80 3F 00 9E FF

发送解析:参数地址 0x1D 表示位置环 Ki,参数值 00 00 80 3F 表示 32位浮点数 1.0。

反馈:

帧头指令功能码数据长度数据校验帧尾
0xAA0x110x820x040x01 0x06 0x9D 0x010x010xFF

完整帧:

AA 11 82 04 01 06 9D 01 01 FF

反馈解析:0x9D 表示位置环 Ki 地址的反馈,末尾数据 0x01 表示接收成功。

示例8:读取操作臂 1 到 2 号电机控制模式

帧头指令功能码数据长度数据校验帧尾
0xAA0x110x020x030x01 0x02 0x0B0x2E0xFF

完整帧:

AA 11 02 03 01 02 0B 2E FF

发送解析:功能码 0x02 表示读取操作臂;数据 01 02 0B 表示从 1 号电机开始读取 2 个电机的控制模式。

示例反馈:两个电机都处于位置速度模式。

帧头指令功能码数据长度数据校验帧尾
0xAA0x110x020x0B0x00 0x00 0x00 0x02 0x00 0x00 0x00 0x02 0x00 0x00 0x000x6E0xFF

完整帧:

AA 11 02 0B 00 00 00 02 00 00 00 02 00 00 00 6E FF

反馈数据前 3 字节可按保留字节处理,后续每 4 字节表示一个电机的模式值。


8. 指令ID 0x15:清除电机错误

指令 0x15 用于清除指定机械臂的电机错误。数据区必须为 0xFE。

示例:清除操作臂错误

帧头指令功能码数据长度数据校验帧尾
0xAA0x150x020x010xFE0x850xFF

完整帧:

AA 15 02 01 FE 85 FF

发送解析:功能码 0x02 表示操作臂,数据 0xFE 是该指令固定字节。

反馈:

帧头指令功能码数据长度数据校验帧尾
0xAA0x150x820x010x010x880xFF

完整帧:

AA 15 82 01 01 88 FF

反馈解析:0x82 表示操作臂清错反馈,数据 0x01 表示接收成功。


9. 指令ID 0x16:控制锁定

指令 0x16 用于把所有关节锁定到当前位置,或解除锁定。

功能码含义
0x80锁定
0x00解锁

锁定后,下位机会拒绝会引起电机运动的控制类指令,直到收到解锁指令。

示例1:进入控制锁定

帧头指令功能码数据长度数据校验帧尾
0xAA0x160x800x000x9B0xFF

完整帧:

AA 16 80 00 9B FF

发送解析:功能码 0x80 表示进入控制锁定,数据长度为 0

反馈:

帧头指令功能码数据长度数据校验帧尾
0xAA0x160x800x010x010x080xFF

完整帧:

AA 16 80 01 01 08 FF

反馈解析:功能码保持 0x80,数据 0x01 表示已接收锁定请求。

示例2:退出控制锁定

帧头指令功能码数据长度数据校验帧尾
0xAA0x160x000x000xD00xFF

完整帧:

AA 16 00 00 D0 FF

发送解析:功能码 0x00 表示退出控制锁定,数据长度为 0

反馈:

帧头指令功能码数据长度数据校验帧尾
0xAA0x160x000x010x010x880xFF

完整帧:

AA 16 00 01 01 88 FF

反馈解析:功能码保持 0x00,数据 0x01 表示已接收解锁请求。


10. 指令ID 0x17:夹爪夹持参数

指令 0x17 用于读取或设置夹爪力矩和力控相关参数。它一次只能选择一条机械臂。 该指令只修改夹爪控制器内部参数,不写 J7 的 ESC 寄存器,也不改变 J7 控制模式。 写入成功后,参数会更新到夹爪控制器运行配置中,并在后续夹爪控制周期内生效。 如需掉电保存,可在写入数据区末尾追加 1 字节保存标志;保存标志非 0 时,设备会保存当前完整夹爪参数配置。

功能码说明:

功能码含义
0x01读取示教臂
0x02读取操作臂
0x81写入示教臂
0x82写入操作臂
掩码位数值参数含义单位或说明范围调整方向
第0位0x01目标夹持力N,夹爪端估算力小夹爪:
[1, 80] N
大夹爪:
[1, 120] N
增大可提高目标夹持力,减小可降低夹持力度
第1位0x02张开前馈力矩N·m,电机侧前馈力矩小夹爪:
[0.2, 3.0] N·m
大夹爪:
[0.2, 5.0] N·m
增大可提高张开辅助力矩,减小可降低张开冲击
第2位0x04闭合前馈力矩N·m,电机侧前馈力矩小夹爪:
[-5.0, -0.2] N·m
大夹爪:
[-8.0, -0.2] N·m
闭合方向为负;增大绝对值可提高闭合辅助力矩,向 0 调整可降低闭合冲击
第3位0x08最大保持力矩N·m,电机侧力矩上限小夹爪:
[0.5, 5.0] N·m
大夹爪:
[0.5, 10.0] N·m
增大可提高保持阶段力矩上限,减小可降低持续夹持力矩
第4位0x10力控比例无量纲[0, 2.0]增大可提高力控响应,减小可降低力控振荡趋势
第5位0x20力控积分1/s[0, 2.0] 1/s增大可提高长期补偿能力,减小可降低积分拖尾
第6位0x40积分限幅N·s[0, 100] N·s增大可提高积分补偿上限,减小可限制长期积分累积
第7位0x80接近闭合时的力矩缩放比例[0, 1]增大可提高接近目标时的闭合辅助力矩,减小可让末端闭合更柔和

读取时,数据区为空表示读取全部参数;数据区为一个非零掩码时,只读取掩码选中的参数。

写入时,数据区第 1 字节为掩码,后面按掩码位从低到高依次放入 32位浮点数。 如需掉电保存,可在所有浮点数之后追加 1 字节保存标志:

数据区长度 = 1 + 参数个数 * 4              // 立即生效
数据区长度 = 1 + 参数个数 * 4 + 1 // 立即生效并按保存标志决定是否掉电保存

保存标志为 0x00 时仅立即生效;保存标志为非 0 时,设备会保存写入后的完整夹爪参数配置。

示例1:读取操作臂全部夹爪参数

帧头指令功能码数据长度数据校验帧尾
0xAA0x170x020x000x650xFF

完整帧:

AA 17 02 00 65 FF

示例反馈(以下数据以小夹爪默认参数为例):

帧头指令功能码数据长度数据校验帧尾
0xAA0x170x820x220x01 0xFF 0x00 0x00 0x0C 0x42 0x00 0x00 0xA0 0x3F 0x00 0x00 0x20 0xC0 0x00 0x00 0x20 0x40 0x9A 0x99 0x19 0x3F 0xCD 0xCC 0xCC 0x3E 0x00 0x00 0xA0 0x41 0x33 0x33 0xB3 0x3E0x8C0xFF

完整帧:

AA 17 82 22 01 FF 00 00 0C 42 00 00 A0 3F 00 00 20 C0 00 00 20 40 9A 99 19 3F CD CC CC 3E 00 00 A0 41 33 33 B3 3E 8C FF

反馈数据前 2 字节含义:

字节含义
0x01操作臂
0xFF返回全部 8 个参数

后续每 4 字节为一个 32位浮点数,顺序与参数掩码表一致。

示例2:设置操作臂目标夹持力为 35 N,最大保持力矩为 2.5 N·m

掩码为 0x09,表示写入第0位和第3位两个参数。

帧头指令功能码数据长度数据校验帧尾
0xAA0x170x820x090x09 0x00 0x00 0x0C 0x42 0x00 0x00 0x20 0x400xB30xFF

完整帧:

AA 17 82 09 09 00 00 0C 42 00 00 20 40 B3 FF

反馈:

帧头指令功能码数据长度数据校验帧尾
0xAA0x170x820x030x01 0x09 0x010x740xFF

完整帧:

AA 17 82 03 01 09 01 74 FF

示例3:设置操作臂目标夹持力为 2 N,并保存

掩码为 0x01,表示只写入第0位目标夹持力。数据区最后 1 字节 0x01 为保存标志,表示保存当前完整夹爪参数配置。

帧头指令功能码数据长度数据校验帧尾
0xAA0x170x820x060x01 0x00 0x00 0x00 0x40 0x010xBD0xFF

完整帧:

AA 17 82 06 01 00 00 00 40 01 BD FF

其中 00 00 00 40 为 32位浮点数 2.0f 的小端格式,最后的 01 表示保存。

反馈:

帧头指令功能码数据长度数据校验帧尾
0xAA0x170x820x030x01 0x01 0x010x7C0xFF

完整帧:

AA 17 82 03 01 01 01 7C FF

11. 指令ID 0xFB:串口帧率统计

指令 0xFB 用于调试串口通讯性能。

功能码含义
0x00开始统计
0x01查询统计结果
0x02停止统计

查询结果共 12 字节,由 3 个 32位浮点数组成:

顺序含义
第1个总有效帧率
第2个0x06 控制成功帧率
第3个相邻帧时间间隔方差

示例1:开始统计

帧头指令功能码数据长度数据校验帧尾
0xAA0xFB0x000x000x230xFF

完整帧:

AA FB 00 00 23 FF

反馈:

帧头指令功能码数据长度数据校验帧尾
0xAA0xFB0x800x010x010xED0xFF

完整帧:

AA FB 80 01 01 ED FF

示例2:查询统计结果

帧头指令功能码数据长度数据校验帧尾
0xAA0xFB0x010x000x620xFF

完整帧:

AA FB 01 00 62 FF

示例反馈:三个统计值均为 0。

帧头指令功能码数据长度数据校验帧尾
0xAA0xFB0x810x0C0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x000x610xFF

完整帧:

AA FB 81 0C 00 00 00 00 00 00 00 00 00 00 00 00 61 FF

示例3:停止统计

帧头指令功能码数据长度数据校验帧尾
0xAA0xFB0x020x000xA10xFF

完整帧:

AA FB 02 00 A1 FF

反馈:

帧头指令功能码数据长度数据校验帧尾
0xAA0xFB0x820x010x010x830xFF

完整帧:

AA FB 82 01 01 83 FF

12. 指令ID 0xEE:错误反馈

指令 0xEE 由下位机返回,用于提示上位机发送的帧无法被正常处理。

错误反馈帧由帧头、0xEE、错误类型、长度 0x01、附加信息、校验和帧尾组成。下面给出两组可直接对照的实际反馈帧。

错误类型含义附加信息
0x00帧头或帧尾错误收到的帧长度
0x01长度错误收到的帧长度
0x02校验错误下位机计算出的校验字节
0x04角度越界越界关节编号
0x05数据长度错误当前数据长度或数量
0x06地址错误非法地址或越界值
0x07当前状态不允许此操作请求功能码
0xEE模式切换被拒绝高 4 位为当前模式,低 4 位为目标模式

当错误类型为 0xEE 时,附加信息是模式标志字节:

当前模式 = (附加信息 & 0xF0) >> 4
目标模式 = 附加信息 & 0x0F

模式码含义:

模式码含义
0x0普通状态
0x1控制协议状态
0x2重力补偿状态
0x3双臂同步状态
0x4固件升级状态
0x5控制锁定状态

常见模式标志示例:

附加信息当前模式目标模式含义
0x310x3 双臂同步状态0x1 控制协议状态当前正在双臂同步,拒绝进入控制协议。
0x510x5 控制锁定状态0x1 控制协议状态当前处于控制锁定,拒绝进入控制协议。

示例1:校验错误

帧头指令功能码数据长度数据校验帧尾
0xAA0xEE0x020x010x120x700xFF

完整帧:

AA EE 02 01 12 70 FF

表示下位机计算出的正确校验字节是 0x12。

示例2:控制锁定期间收到运动控制指令

帧头指令功能码数据长度数据校验帧尾
0xAA0xEE0xEE0x010x510x9E0xFF

完整帧:

AA EE EE 01 51 9E FF

附加信息 0x51 表示:当前处于控制锁定状态,目标操作是控制协议状态。


五、对接流程

  1. 第一步先完成 0x01 查询设备信息、0x06 读取操作臂位置、0x09 使能操作臂三项基础通讯。
  2. 控制关节位置前,先用 0x16 确认设备未处于锁定状态,再用 0x06 写入目标位置和速度。
  3. 如果只想停止线性插补,优先写 0x06 地址 0x05,并把每个关节写为 FF FF
  4. 如果要使用主动上传,请通过 0x02 开启定时上传,并按 0x06 / 0x04 的格式解析主动帧。