报错
概述
控制器通过 JSON 协议向上位机上报各类错误、警告和消息提示。上位机也可以通过协议命令清除伺服错误。本章详细说明错误码的分类体系、上报机制和处理流程。
错误码分类
系统错误码按照功能域和严重程度进行分类,便于快速定位和处理问题。
按严重程度分类
| 种类 | kind 值 | 说明 | 典型场景 |
|---|---|---|---|
| 消息 | 0 | 普通信息提示,不影响系统运行 | 日志记录、操作成功提示、状态变更通知 |
| 警告 | 1 | 警告信息,系统可继续运行但需关注 | 参数配置缺失、备份提醒、接近限位 |
| 报错 | 2 | 严重错误,通常需要人工干预才能恢复 | 伺服故障、急停触发、碰撞检测、通信中断 |
按功能域分类
| 错误域 | 错误码范围 | 说明 |
|---|---|---|
| 系统错误 | 0x0000 - 0x0FFF | 系统初始化、配置、版本相关的错误 |
| 伺服错误 | 0x1000 - 0x1FFF | 伺服驱动、编码器、电机相关的错误 |
| 运动控制错误 | 0x2000 - 0x3FFF | 运动规划、插补、轨迹相关的错误 |
| 程序执行错误 | 0x4000 - 0x5FFF | 作业程序解析、执行、变量操作相关的错误 |
| 通信错误 | 0x6000 - 0x6FFF | 网络通信、协议解析、端口连接相关的错误 |
| 安全错误 | 0x7000 - 0x7FFF | 安全门、急停、光幕等安全设备相关的错误 |
| IO 错误 | 0x8000 - 0x8FFF | 数字/模拟输入输出相关的错误 |
| 工艺错误 | 0x9000 - 0x9FFF | 焊接、码垛、切割等工艺相关的错误 |
常见错误码
| 错误码 | 说明 | 种类 | 处理建议 |
|---|---|---|---|
| 16385 | 机器人参数配置文件不存在 | 警告(1) | 检查配置文件,系统已自动创建默认配置 |
| 21764 | 自动备份成功 | 消息(0) | 无需处理,仅为通知 |
| 28680 | 指令不存在 | 报错(2) | 检查发送的命令字是否正确 |
错误上报机制
上报方式
控制器通过以下命令字主动向上位机推送提示信息:
| 命令字 | 功能 | 方向 |
|---|---|---|
0x1110 | 错误提示上报 | 控制器 → 上位机 |
0x1111 | 警告提示上报 | 控制器 → 上位机 |
0x1112 | 消息提示上报 | 控制器 → 上位机 |
0x1113 | 弹窗提示上报 | 控制器 → 上位机 |
错误信息字段说明
每个错误/警告/消息都包含以下核心字段:
| 字段 | 类型 | 说明 |
|---|---|---|
robot | int | 产生错误的机器人编号。0 表示与特定机器人无关(系统级错误) |
kind | int | 严重程度:0=消息,1=警告,2=报错 |
code | int | 错误编码,用于唯一标识错误类型 |
data | string | 人类可读的错误描述信息 |
param | int[] | 错误附带的参数,根据具体错误码有不同含义(如轴号、指令字等) |
清错
清除伺服错误时使用。
清除伺服错误
命令字: 0x1100
| 字段 | 类型 | 说明 |
|---|---|---|
| robot | int | 要操作的机器人编号,取值范围 [1, 4] |
json
{
"robot": 1
}控制器回复
命令字: 0x1101
| 字段 | 类型 | 说明 |
|---|---|---|
| robot | int | 机器人编号,取值范围 [1, 4] |
| clearErrorFlag | bool | 是否清除成功,true 清除伺服错误成功,false 清除失败 |
json
{
"robot": 1,
"clearErrorFlag": true
}错误处理流程
典型的错误处理流程如下:
- 错误发生:控制器检测到异常,通过
0x1110/0x1111/0x1112上报错误/警告/消息 - 错误识别:上位机收到上报后解析
code和kind字段,确定错误类型和严重程度 - 错误分类处理:
- 消息(kind=0):记录日志,无需特殊处理
- 警告(kind=1):提示用户注意,记录日志
- 报错(kind=2):
- 显示错误弹窗或提示
- 判断是否需要停机或停止当前运动
- 如为伺服错误,可发送
0x1100清错命令
- 清错操作:上位机发送
0x1100清除伺服错误,控制器回复0x1101告知清除结果 - 恢复运行:错误清除后,上位机可重新使能并继续执行
注意: 并非所有错误都可以通过
0x1100清除。部分硬件故障、安全联锁错误需要物理排除故障后才能恢复。
信息提示
控制器向上位机发送错误提示/警告提示/消息提示/弹窗提示。
错误提示
命令字: 0x1110
| 字段 | 类型 | 说明 |
|---|---|---|
| robot | int | 机器人编号,取值范围 [0, 4],等于 0 时表示未选择机器人类型或者错误内容与机器人无关 |
| kind | int | 弹窗提示种类:0 消息,1 警告,2 报错 |
| data | string | 消息条内容,不同的错误对应不同的内容 |
| code | int | 消息编码 |
| param | int[] | 消息内容参数,根据具体编码的不同会有不同个数,预留 5 个 |
json
{
"code": 28680,
"data": "指令[0x5743]不存在",
"kind": 2,
"param": [22339, 3],
"robot": 0
}警告提示
命令字: 0x1111
| 字段 | 类型 | 说明 |
|---|---|---|
| robot | int | 机器人编号,取值范围 [0, 4],等于 0 时表示未选择机器人类型或者警告内容与机器人无关 |
| kind | int | 弹窗提示种类:0 消息,1 警告,2 报错 |
| data | string | 消息条内容,不同的警告对应不同的内容 |
| code | int | 消息编码 |
| param | int[] | 消息内容参数,根据具体编码的不同会有不同个数,预留 5 个 |
json
{
"code": 16385,
"data": "机器人1参数配置文件不存在,已创建,请配置参数",
"kind": 1,
"param": [1],
"robot": 1
}消息提示
命令字: 0x1112
| 字段 | 类型 | 说明 |
|---|---|---|
| robot | int | 机器人编号,取值范围 [0, 4],等于 0 时表示未选择机器人类型或者消息内容与机器人无关 |
| kind | int | 弹窗提示种类:0 消息,1 警告,2 报错 |
| data | string | 消息条内容,不同的消息对应不同的内容 |
| code | int | 消息编码 |
json
{
"code": 21764,
"data": "自动备份成功",
"kind": 0,
"robot": 0
}弹窗提示
命令字: 0x1113
| 字段 | 类型 | 说明 |
|---|---|---|
| count | int | 弹窗按钮数量,最大为 3 |
| text1 | string | 弹窗居中显示的主文本 |
| text2 | string | 按钮 1 的文本 |
| text3 | string | 按钮 2 的文本 |
| text4 | string | 按钮 3 的文本 |
| kind | int | 弹窗提示种类:0 消息,1 警告,2 报错 |
| node | int | 机器人序号,取值范围 [1, 4] |
| Tips | bool | 弹窗呼出,true 表示呼出 |
json
{
"count": 1,
"text1": "示例",
"text2": "示例",
"text3": "示例",
"text4": "示例",
"kind": 1,
"node": 1,
"Tips": true
}弹窗交互反馈
根据用户对弹窗的操作进行相应设置。
命令字: 0x1114
| 字段 | 类型 | 说明 |
|---|---|---|
| node | int | 机器人序号,取值范围 [1, 4] |
| option | int | 对应弹窗选项 1-3 的内容,取值范围 [1, 3] |
json
{
"node": 1,
"option": 1
}