跳到主要内容

PR0001 JxServo Studio USB 通信协议

项目信息
文档编号PR0001
文档版本Rev. 1.0
适用产品JxServo Studio / JxServo 伺服设备
语言简体中文
最后更新2026-05-11

JxServo Studio 提供面向伺服设备调试、系统集成和二次开发的开放 USB 通信接口。开发者可以基于本协议接入自研测试软件、自动化测试平台、数据采集系统或上层业务应用,在不依赖 JxServo Studio 图形界面的情况下完成设备识别、参数管理、命令触发、日志接收和实时运行数据采集。

本协议采用统一帧格式和动态能力发现机制。参数列表、命令列表和设备信息均由设备侧返回,上位应用无需固化完整功能清单,可随不同产品型号和版本自动适配。JxServo Studio 同样基于该接口与设备通信,因此本文档也可作为第三方工具接入 JxServo 设备的公开参考。

开放接口能力

能力开放能力
设备识别读取设备地址、版本信息和设备名称,便于软件自动识别连接对象
参数管理动态读取参数数量、类型、名称、说明和值,支持上位应用完成参数查看与配置
命令发现动态读取设备当前开放的命令集合,避免上位应用维护固定命令表
命令执行按设备返回的命令描述组装执行帧,支持自动化调试和应用集成
日志接收接收设备侧状态、错误和提示信息,便于集成软件给出清晰反馈
实时遥测获取位置、速度、电流、电压、温度、控制环状态和总线原始数据等运行信息

本文聚焦可直接对接的公开 USB 接口。不同产品型号的参数内容、命令内容和遥测启用策略可能不同,上位应用应优先采用动态读取结果构建界面和业务逻辑。

协议基础

USB 链路使用 CDC 字节流承载协议帧。每一帧都包含源地址、目标地址、功能码、数据长度、数据载荷和双字节校验,便于上位应用在连续字节流中稳定恢复帧边界并校验数据完整性。

所有报文使用如下帧格式:

0xAB | S_ADDR | D_ADDR | ID | LEN_L | LEN_H | DATA... | SUM_CHECK | ADD_CHECK
字段长度说明
0xAB1帧头固定值
S_ADDR1源地址
D_ADDR1目标地址
ID1帧功能码
LEN2DATA 字节数,小端
DATAN载荷数据
SUM_CHECK1和校验
ADD_CHECK1附加校验

公开地址定义如下:

地址含义
0x01伺服设备默认地址
0xFEJxServo Studio
0xFF广播地址

多字节整数和 float 均采用小端传输。float 为 IEEE 754 binary32。设备接收单帧 DATA 长度必须小于 128 字节;上位应用解析设备发送数据时,建议按 DATA <= 120 字节设计接收缓冲。

校验从帧头开始,到 DATA 最后一个字节结束:

uint8_t sum = 0;
uint8_t add = 0;
for (uint16_t i = 0; i < 6 + len; ++i) {
sum = (uint8_t)(sum + frame[i]);
add = (uint8_t)(add + sum);
}
frame[6 + len] = sum;
frame[7 + len] = add;

读取设备信息示例:

AB FE 01 E0 01 00 00 8B 2B

接口帧概览

公开 USB 接口由少量基础帧组成。上位应用通常先读取设备信息,再动态读取参数列表和命令列表,最后按业务需要读写参数、执行命令或开启遥测。

ID方向名称说明
0x00设备 -> Studio应答校验对参数写入、命令执行等需要确认的帧返回处理应答
0xA0设备 -> Studio日志字符串输出状态、错误和提示文本
0xC0Studio -> 设备命令执行执行通过命令发现流程读取到的命令
0xC1双向命令数量/读取命令信息Studio 查询命令数量或指定命令描述
0xC2设备 -> Studio命令信息返回命令描述、参数类型、名称和说明
0xE0双向参数命令读取设备信息、参数数量、参数值或参数信息
0xE1双向参数值Studio 写入参数值,或设备返回参数值
0xE2设备 -> Studio参数信息返回参数类型、名称和说明
0xE3设备 -> Studio设备信息返回设备地址、版本号和设备名称
0xF1 - 0xF8设备 -> Studio遥测数据实时波形和运行数据

应答校验 0x00

需要确认的写入类或执行类操作会收到 0x00 应答帧。上位应用应使用该帧确认设备已经收到并处理了对应报文。

DATA 固定 3 字节:

偏移类型名称说明
0uint8ID_GET被确认帧的 ID
1uint8SC_GET被确认帧的 SUM_CHECK
2uint8AC_GET被确认帧的 ADD_CHECK

上位应用应同时匹配 ID_GETSC_GETAC_GET,确认应答对应当前发送帧。参数写入类帧收到应答表示设备已处理该帧;若设备同时输出错误日志,应以日志和重新读取结果判断参数是否实际生效。

日志字符串 0xA0

设备可通过日志帧向上位应用输出状态、告警和操作结果。集成软件可将不同颜色编码映射为普通提示、错误提示、成功提示或调试信息。

DATA 格式:

偏移类型名称说明
0uint8COLOR0 默认,1 红色,2 绿色,3 蓝色
1..NbytesTEXT文本字节,不包含结尾 0x00

设备单条日志文本最长按 100 字节处理。

参数读写

参数接口用于构建设备配置页、调试面板或自动化配置流程。上位应用不需要预置参数表,应通过 0xE00xE2 动态读取参数元信息,再根据类型读写参数值。

参数类型编码:

编码类型长度
0uint81
1int81
2uint162
3int162
4uint324
5int324
8float4

参数命令 0xE0

参数命令用于读取设备信息、参数数量、参数值和参数说明。推荐上位应用在连接设备后先读取设备信息和参数数量,再按参数 ID 顺序读取参数信息。

Studio 发送:

偏移类型名称说明
0uint8CMD参数命令
1..2uint16VAL命令参数;无参数命令可省略或填 0
CMDVAL返回说明
0x000xE3读取设备信息
0x010xE0读取参数数量
0x02参数 ID0xE1读取参数值
0x03参数 ID0xE2读取参数信息

设备返回参数数量时,DATA 为:

偏移类型名称说明
0uint8CMD固定 0x01
1..2uint16COUNT当前参数数量

参数 ID 从 0 开始,最大有效值为 COUNT - 1

参数值 0xE1

参数值帧既用于 Studio 写入参数,也用于设备返回参数当前值。上位应用写入前应使用参数信息中的类型和取值范围约束用户输入。

Studio 写入参数值:

偏移类型名称说明
0..1uint16PAR_ID参数 ID
2..N按参数类型PAR_VAL参数值

设备收到后返回 0x00 应答校验。写入会进行 ID、读写属性、长度和范围检查;失败时设备会通过 0xA0 输出原因。

设备返回参数值:

偏移类型名称说明
0..1uint16PAR_ID参数 ID
2..N按参数类型PAR_VAL参数当前值

参数信息 0xE2

参数信息由设备维护,包含参数 ID、类型、名称和说明。集成软件应以该信息作为界面显示和数据解析依据。

偏移类型名称说明
0..1uint16PAR_ID参数 ID
2uint8PAR_TYPE参数类型编码
3..22bytes[20]PAR_NAME参数名称,不足部分为 0x00
23..NbytesPAR_INFO参数说明文本

设备信息 0xE3

设备信息用于确认当前连接对象和版本信息。上位应用可将其用于设备选择、兼容性提示和日志记录。

偏移类型名称说明
0uint8DEV_ID设备地址
1..2uint16HW_VER硬件版本
3..4uint16SW_VER软件版本
5..6uint16BL_VERBootloader 版本
7..8uint16PT_VER协议版本
9..NbytesDEV_NAME设备名称,最长 20 字节

命令发现与执行

命令接口采用动态发现方式,适合开放集成和二次开发。设备返回当前可用命令的标识、参数类型、命令名称和说明,上位应用据此生成按钮、表单或自动化动作。

推荐流程:

  1. Studio 发送 0xC1CMD=0,读取命令数量。
  2. 设备返回 0xC1,给出当前命令数量。
  3. Studio 按命令序号发送 0xC1CMD=1,读取每条命令信息。
  4. 设备返回 0xC2,包含命令三字节标识、参数类型、名称和说明。
  5. Studio 根据 0xC2 描述组装 0xC0 执行帧。

命令读取 0xC1

命令读取帧用于查询命令数量或读取指定命令的元信息。上位应用应以设备返回的命令数量为准,逐条读取完整命令描述。

Studio 发送:

偏移类型名称说明
0uint8CMD0 读取数量,1 读取命令信息
1..2uint16VALCMD=1 时为命令序号

设备返回命令数量:

偏移类型名称说明
0uint8CMD固定 0
1..2uint16COUNT当前命令数量

命令信息 0xC2

命令信息帧描述一条可执行命令。上位应用应按 VAL0..VAL7 的参数类型顺序组织输入参数,并按小端格式写入执行帧。

偏移类型名称说明
0..1uint16CMD_ID命令序号
2uint8CMD0命令模块标识
3uint8CMD1命令动作标识
4uint8CMD2命令功能标识
5..12uint8[8]VAL0..VAL7命令参数类型
13..32bytes[20]CMD_NAME命令名称,不足部分为 0x00
33..NbytesCMD_INFO命令说明文本

命令参数类型编码:

编码类型长度
0x00无参数0
0x01uint81
0x02int81
0x03uint162
0x04int162
0x05uint324
0x06int324
0x09float4

命令执行 0xC0

命令执行帧用于触发设备侧开放的操作。命令含义由 0xC2 返回的信息定义,公开文档不要求上位应用提前维护完整命令清单。

Studio 发送:

偏移类型名称说明
0uint8CMD0来自 0xC2
1uint8CMD1来自 0xC2
2uint8CMD2来自 0xC2
3..NVAL0..VAL7ARGS命令参数,按顺序紧凑排列

设备匹配到命令后返回 0x00 应答校验,并执行对应操作。若命令参数不合法,设备会通过 0xA0 输出原因。

遥测数据

遥测接口用于实时观察设备运行状态,可接入波形显示、数据记录、性能分析或自研监控系统。帧 0xF10xF8 可由命令层启停或调整发送分频;遥测帧不需要上位应用返回应答。

0xF1 位置、速度与电流

DATA 长度 40 字节,全部为 float

序号名称单位
1目标位置deg
2反馈位置deg
3位置误差deg
4目标速度rpm
5反馈速度rpm
6速度误差rpm
7Iq 目标A
8Iq 反馈A
9Id 目标A
10Id 反馈A

0xF2 母线、关节与温度

DATA 长度 32 字节,全部为 float

序号名称单位
1母线电流A
2母线电压V
3关节速度rpm
4关节角度deg
5电机速度rpm
6Iq 反馈A
7功率器件温度degC
8电机温度degC

0xF3 采样与编码器原始量

DATA 长度 24 字节:

偏移类型名称单位
0floatU 相电流A
4floatV 相电流A
8uint32电机侧定向计数counts
12uint32关节侧定向计数counts
16uint32电机编码器原始值counts
20uint32FOC 最近周期数cycles

0xF4 速度环与转矩状态

DATA 长度 44 字节:

偏移类型名称单位
0float速度目标rad/s
4float速度反馈rad/s
8float速度环比例项Nm
12float速度环积分项Nm
16float控制器转矩命令Nm
20float扰动估计Nm
24float扰动补偿Nm
28float转矩前馈Nm
32float输出转矩命令Nm
36float滤波后转矩命令Nm
40uint8转矩限幅标志0/1
41uint8电压限幅标志0/1
42uint8[2]保留固定补零

0xF5 位置环状态

DATA 长度 64 字节:

偏移类型名称单位
0float目标位置deg
4float反馈位置deg
8float反馈速度rad/s
12float位置误差rad
16float抱闸占空比pu
20float位置环比例项-
24float位置环积分项-
28float位置环微分项-
32float积分累计值-
36float保留固定 0
40float限幅前输出-
44float限幅后输出-
48float速度前馈rad/s
52float速度命令rad/s
56float保留固定 0
60uint8振动滤波使能0/1
61uint8输出限幅标志0/1
62uint8积分限幅标志0/1
63uint8到位标志0/1

0xF6 轨迹状态

DATA 长度 40 字节:

偏移类型名称单位
0float目标位置deg
4float反馈位置deg
8float位置误差deg
12float速度命令rpm
16float电机速度rpm
20float目标位置rad
24float轨迹位置rad
28float速度命令rad/s
32float保留固定 0
36uint8到位标志0/1
37uint8轨迹结果4 未就绪,5 完成
38uint8轨迹完成标志0/1
39uint8保留固定 0

0xF7 保留遥测

DATA 长度 4 字节,当前为 float 0.0

0xF8 CAN FIFO0 原始帧透传

DATA 长度为 4 + N,其中 1 <= N <= 64

偏移类型名称说明
0..1uint16CAN_IDCAN 标识符低 16 位
2uint8BUS_FORMAT总线数据格式
3uint8PAYLOAD_LEN后续原始数据长度 N
4..NbytesPAYLOAD原始数据

接入建议

为保证集成软件具备良好的兼容性和现场稳定性,建议按以下方式实现:

  • 接收端应按字节流状态机查找 0xAB,读取 LEN 后再等待完整帧和校验字节。
  • 校验失败的帧直接丢弃,不要尝试解析 DATA
  • 参数和命令流程应设置超时重试;重试时以 0x00 应答中的校验字段确认对应关系。
  • 上位应用应动态读取设备信息、参数数量和命令数量,不建议把具体参数表或命令表写死在软件中。
  • 遥测字段可能随产品系列和版本扩展,上位应用应保留未知字段的兼容处理能力。