跳到主要内容

V2.0报错代码&SDO读取

本文说明通过 CANopen SDO 读取 JxServo 模组告警和故障信息的方法。V2.0 版本的所有模组报错代码采用统一编码规则,因此同一个报错代码在不同模组上表示相同故障类型。不同产品或定制版本可能会根据功能配置屏蔽部分报错,或增加少量定制报错项,但已定义的报错代码含义保持一致。

本文以 R68LITE 项目故障表为例说明解析方式。该示例用于说明 V2.0 通用编码规则,实际使用时应以对应产品发布资料为准。

important

0x603F 读取的是厂家兼容性报错,用于兼容旧版主站、旧版客户软件或通用 CANopen 错误码显示。

0x4500 读取的是新版完整诊断 ID 的后 2 字节,也就是低 16 位 [故障域][子项],更适合用于 V2.0 以后精确定位故障来源。

读取对象

SDO 对象名称数据长度返回内容推荐用途
0x603F:00errorCode2 字节厂家兼容性报错兼容旧版上位机、客户已有解析逻辑或只需要粗略故障分类的场景
0x4500:00currentErrorID2 字节新版诊断 ID 的低 16 位 [故障域][子项]V2.0 新软件、售后诊断、日志记录和精确故障定位

两个对象都返回最近一次告警或故障记录;若当前没有可读取的告警或故障,返回值为 0x0000。其中 0x603F 还会经过兼容映射,同一个兼容码可能对应多个新版故障项,因此不要用 0x603F 做精确故障区分。

SDO 帧格式

以下示例以节点 ID 为 1 的设备为例:

  • 主站发送 COB-ID:0x600 + NodeID,即 0x601
  • 设备响应 COB-ID:0x580 + NodeID,即 0x581
  • SDO 读取命令字:0x40
  • 2 字节读取响应命令字:0x4B

读取厂家兼容性报错 0x603F

主站发送:

ID: 0x601
DLC: 8
Data: 40 3F 60 00 00 00 00 00

设备响应:

ID: 0x581
DLC: 8
Data: 4B 3F 60 00 LL HH 00 00

解析方式:

兼容错误码 = 0xHHLL

示例:

4B 3F 60 00 04 00 00 00

表示 0x603F = 0x0004。该值是厂家兼容性报错,例如可用于兼容显示“过温”类故障,但它不是 V2.0 的完整故障分类。

读取新版错误 ID 低 16 位 0x4500

主站发送:

ID: 0x601
DLC: 8
Data: 40 00 45 00 00 00 00 00

设备响应:

ID: 0x581
DLC: 8
Data: 4B 00 45 00 LL HH 00 00

解析方式:

新版错误 ID 低 16 位 = 0xHHLL
高字节 HH = 故障域
低字节 LL = 子项

示例:

4B 00 45 00 05 02 00 00

表示 0x4500 = 0x0205,其中:

  • 0x02 表示驱动类故障。
  • 0x05 表示该故障域下的第 0x05 个子项。
  • 按 R68LITE 示例故障表解析,该值对应“驱动过温故障”。

V2.0 错误 ID 结构

设备内部使用 32 位诊断 ID:

[严重度][预留ID][故障域][子项]
1B 1B 1B 1B

0x4500 只返回后 2 字节:

[故障域][子项]
1B 1B

这意味着 0x4500 不直接返回严重度字段。对于上位机显示和售后排查,通常用 0x4500 的故障域和子项即可定位问题类型;如需区分告警、故障或跳闸等级,应结合设备状态、日志或对应产品的诊断说明。

故障域定义

故障域名称说明
0x00系统参数、配置、内部状态等系统类问题
0x01电源母线电压、电源输入和母线硬件保护
0x02驱动功率驱动、驱动温度、相电流和驱动侧保护
0x03电机电机温度、电机观测和电机侧状态
0x04传感器编码器、电流采样、母线采样等传感器状态
0x05控制位置、速度、轨迹、设定点和运动控制状态
0x06通信心跳、指令流、CAN 通信等链路状态
0x07安全软件限制、限位、状态机安全保护
0x08应用标定、应用流程和应用层安全检查

R68LITE 示例故障表

以下列出 R68LITE 示例配置中的 0x4500 返回值与完整 32 位故障 ID,不包含具体触发阈值。不同模组或不同固件版本可能启用不同条目,应以对应产品发布资料为准。

完整 32 位故障 ID 可直接用于查询严重度;0x4500 只返回同一 ID 的低 16 位。

序号0x4500 返回值完整 32 位故障 ID严重度故障域说明
10x01000x02000100故障电源母线电压过高
20x01010x02000101故障电源母线电压过低
30x01020x03000102跳闸电源母线硬件过压跳闸
40x01030x03000103跳闸电源母线硬件过流跳闸
50x02000x02000200故障驱动软件过流
60x02010x03000201跳闸驱动U 相硬件过流跳闸
70x02030x03000203跳闸驱动V 相硬件过流跳闸
80x02040x01000204告警驱动驱动过温告警
90x02050x02000205故障驱动驱动过温故障
100x02060x03000206跳闸驱动U 相软件过流
110x02070x03000207跳闸驱动V 相软件过流
120x03020x01000302告警电机电机过温告警
130x03030x02000303故障电机电机过温故障
140x04000x03000400跳闸传感器编码器超时未更新
150x04010x01000401告警传感器编码器读取失败
160x04060x01000406告警传感器编码器状态告警
170x04070x02000407故障传感器编码器状态错误
180x04080x02000408故障传感器电流偏置校准失败
190x05000x02000500故障控制位置跟踪误差过大
200x05070x02000507故障控制速度跟踪误差过大
210x05080x02000508故障控制软件堵转
220x05090x01000509告警控制速度指令超出上限
230x050A0x0200050A故障控制飞车或超速保护
240x06000x02000600故障通信通信心跳丢失
250x06030x01000603告警通信CAN 通信 BusOff
260x07050x02000705故障安全正向光电限位超出
270x07060x02000706故障安全负向光电限位超出
280x07070x02000707故障安全正向软件限位超出
290x07080x02000708故障安全负向软件限位超出

兼容码与新版码的关系

0x603F 是兼容输出,适合旧软件继续使用。例如某些兼容协议会把多个新版故障项折叠成同一个传统分类:

新版 0x4500 示例新版含义0x603F 兼容分类示例
0x0100母线电压过高0x0001 母线过压
0x0101母线电压过低0x0002 母线欠压
0x0205 / 0x0303驱动或电机过温故障0x0004 过温
0x0508软件堵转0x0008 堵转
0x0507速度跟踪误差过大0x0020 速度误差
0x0400 / 0x0401编码器相关异常0x0100 编码器异常
0x0500位置跟踪误差过大0x1000 位置误差

兼容码的具体覆盖范围可能随客户协议或产品线调整。新项目或新软件建议优先读取 0x4500,并仅把 0x603F 作为兼容显示字段。

上位机解析建议

  1. 新版上位机或自研主站建议优先读取 0x4500:00
  2. 若需要兼容旧版故障码或客户已有逻辑,再读取 0x603F:00
  3. 0x0000 表示当前无可读取的告警或故障;读取 0x603F 时也可能表示该故障未配置兼容映射。
  4. 报文中的多字节数值均为小端,响应 LL HH 需要还原为 0xHHLL
  5. 不建议只依赖 0x603F 做精确定位;需要区分具体故障来源时,应使用 0x4500