2.1 状态码与公共类型
Float32 / Float64
头文件: include/common.h
| 名称 | 定义 |
|---|---|
Float32 | float |
Float64 | double |
STATUS_CODE
STATUS_CODE 是 SDK 公共返回值。文档页只列高频状态码;完整枚举以 SDK 头文件为准。
| 状态码 | 数值 | 典型场景 |
|---|---|---|
OK | 0 | 调用成功 |
CONNECTION_TIMEOUT | -3 | 网络连接超时 |
INVALID_IP_ADDRESS | -17 | Arm::Connect() / TopicPubSub::Connect() 输入了非法 IP |
FAILED_TO_DOWNLOAD_SAME_NAME_FILE | -21 | 下载时目标文件已存在且 overwriting=false |
FILE_NOTEXIST | -25 | 控制器文件不存在 |
INVALID_PARAMETER | -27 | 输入参数不符合本地校验规则 |
NOT_FOUND | -28 | 查询不到目标数据 |
LOCAL_PROXY_UNSUPPORTED | -29 | 本地代理模式不支持当前输入环境 |
BUFFER_TOO_SMALL | -30 | C99 out 缓冲区不足 |
NOT_CONNECTED | -35 | 尚未建立连接或连接已断开 |
SUB_PUB_RECEIVE_TIMEOUT | -37 | TopicPubSub::Receive() 在超时时间内没有收到消息 |
CONTROLLER_ERROR | -254 | 控制器返回错误 |
OTHER_ERR | -255 | 通用失败兜底 |
读法建议
- C++17 查询接口通常返回
std::pair<T, STATUS_CODE> STATUS_CODE != OK时,不要继续消费数据位- 某些接口会用 “失败数据位 + 状态码” 双返回,例如:
ControllerInfo::GetSoftMode()失败时返回SoftModeEnum::UNKNOWNControllerInfo::GetOpMode()失败时返回OpModeEnum::UNKNOWNTopicPubSub::Receive()超时时返回空Json::Value+SUB_PUB_RECEIVE_TIMEOUT
RobotType
头文件: include/arm_api.h
| 枚举 | 值 | 说明 |
|---|---|---|
RobotType::UNKNOWN | 0 | 未识别 |
RobotType::COBOT | 1 | 协作机器人 |
RobotType::PUMA | 2 | PUMA 机器人 |
RobotType::SCARA | 3 | SCARA 机器人 |
Arm::Connect() 成功后会回填 robotType 字段。 识别规则:
- 型号包含
GBT-C时识别为COBOT - 型号包含
GBT-S时识别为SCARA - 其他已识别型号默认归到
PUMA
运行状态枚举
| 头文件 | 类型 |
|---|---|
include/ctrl_status_enum.h | CtrlStatusEnum |
include/robot_status_enum.h | RobotStatusEnum |
include/servo_status_enum.h | ServoStatusEnum |
include/soft_mode_enum.h | SoftModeEnum |
include/op_mode_enum.h | OpModeEnum |
这些枚举是 ControllerInfo 查询接口的返回类型,用来把控制器返回的状态码转换成可读状态;无法识别的值会映射到对应的 UNKNOWN 项。
CtrlStatusEnum
用于表示运动控制器运行状态,对应 ControllerInfo::GetCtrlStatus() 。
| 枚举 | 值 | 说明 |
|---|---|---|
CtrlStatusEnum::CTRL_INIT | 0 | 运动控制器初始化 |
CtrlStatusEnum::CTRL_ENGAGED | 1 | 运动控制器已使能 |
CtrlStatusEnum::CTRL_ESTOP | 2 | 运动控制器急停 |
CtrlStatusEnum::CTRL_TERMINATED | 3 | 运动控制器中止 |
CtrlStatusEnum::CTRL_ANY_TO_ESTOP | 101 | 中间状态:其他状态切换到急停 |
CtrlStatusEnum::CTRL_ESTOP_TO_ENGAGED | 102 | 中间状态:急停切换到使能 |
CtrlStatusEnum::CTRL_ESTOP_TO_TERMINATED | 103 | 中间状态:急停切换到中止 |
CtrlStatusEnum::CTRL_UNKNOWN | -1 | 未知状态 |
RobotStatusEnum
用于表示机器人本体运行状态,对应 ControllerInfo::GetRobotStatus() 。
| 枚举 | 值 | 说明 |
|---|---|---|
RobotStatusEnum::ROBOT_IDLE | 0 | 机器人空闲 |
RobotStatusEnum::ROBOT_RUNNING | 1 | 机器人运行中 |
RobotStatusEnum::ROBOT_TEACHING | 2 | 机器人示教中 |
RobotStatusEnum::ROBOT_DRAG | 3 | 机器人拖动中 |
RobotStatusEnum::ROBOT_FORCE_DRAG | 4 | 机器人强制拖动中 |
RobotStatusEnum::ROBOT_IDLE_TO_RUNNING | 101 | 中间状态:空闲切换到运行 |
RobotStatusEnum::ROBOT_IDLE_TO_TEACHING | 102 | 中间状态:空闲切换到示教 |
RobotStatusEnum::ROBOT_RUNNING_TO_IDLE | 103 | 中间状态:运行切换到空闲 |
RobotStatusEnum::ROBOT_TEACHING_TO_IDLE | 104 | 中间状态:示教切换到空闲 |
RobotStatusEnum::ROBOT_UNKNOWN | -1 | 未知状态 |
ServoStatusEnum
用于表示伺服状态,对应 ControllerInfo::GetServoStatus() 。
| 枚举 | 值 | 说明 |
|---|---|---|
ServoStatusEnum::SERVO_IDLE | 1 | 伺服空闲 |
ServoStatusEnum::SERVO_RUNNING | 2 | 伺服运行中 |
ServoStatusEnum::SERVO_DISABLE | 3 | 伺服关闭 |
ServoStatusEnum::SERVO_WAIT_READY | 4 | 伺服等待就绪 |
ServoStatusEnum::SERVO_WAIT_DOWN | 5 | 伺服等待关闭 |
ServoStatusEnum::SERVO_INIT | 10 | 伺服初始化 |
ServoStatusEnum::SERVO_UNKNOWN | -1 | 未知状态 |
SoftModeEnum
用于表示控制器 soft_op_mode ,对应 ControllerInfo::GetSoftMode() / ControllerInfo::SetSoftMode() 。
| 枚举 | 值 | 说明 |
|---|---|---|
SoftModeEnum::UNKNOWN | 0 | 未知模式 |
SoftModeEnum::AUTO | 1 | 自动模式 |
SoftModeEnum::MANUAL_LIMIT | 2 | 手动限速模式 |
SoftModeEnum::MANUAL | 3 | 手动模式 |
OpModeEnum
用于表示控制器 user_op_mode ,对应 ControllerInfo::GetOpMode() / ControllerInfo::SetOpMode() 。
| 枚举 | 值 | 说明 |
|---|---|---|
OpModeEnum::UNKNOWN | 0 | 未知操作模式 |
OpModeEnum::AUTO | 1 | 自动操作模式 |
OpModeEnum::MANUAL_LIMIT | 2 | 手动限速操作模式 |
OpModeEnum::MANUAL | 3 | 手动操作模式 |
LanguageType / RobotAlarm
头文件: include/alarm_types.h
LanguageType
LanguageType 用于选择报警查询返回的语言,当前由 AlarmClient::GetAllActiveAlarms() 使用。SDK 会把枚举转换成报警服务识别的语言参数:中文为 cn ,英文为 en 。
| 枚举值 | 值 | 说明 |
|---|---|---|
LanguageType::Chinese | 0 | 请求中文报警描述 |
LanguageType::English | 1 | 请求英文报警描述 |
RobotAlarm
RobotAlarm 是报警详情结构, AlarmClient::GetAllActiveAlarms() 返回 std::vector<RobotAlarm> , AlarmClient::GetTopAlarm() 返回单个 RobotAlarm 。如果当前没有活动报警,返回结构中的字符串字段通常为空。
| 字段 | 含义 |
|---|---|
user_code | 用户侧报警码 |
inner_code | 控制器侧报警码 |
name | 报警名称 |
reason | 原因 |
suggest | 建议处理方式 |
consequence | 影响 |
ext_desc | 扩展描述 |
SignalType / SignalValue
头文件: include/signal_types.h
SignalType
SignalType 用于区分当前 SDK 支持的 IO 类型。 它覆盖数字量、组信号、远程控制信号、手腕端 IO 和模拟量, 目的是让 IoSignals 接口可以用统一入口表达 “读哪一类 IO、写哪一类 IO”。
| 枚举 | 值 | 类型 | 说明 |
|---|---|---|---|
DI | 1 | 数字输入 | Digital Input |
DO | 2 | 数字输出 | Digital Output |
UI | 3 | 专用输入 | User Input |
UO | 4 | 专用输出 | User Output |
RI | 5 | 远程输入 | Remote Input |
RO | 6 | 远程输出 | Remote Output |
GI | 7 | 组输入 | Group Input |
GO | 8 | 组输出 | Group Output |
TAI | 9 | 手腕模拟输入 | Tool Analog Input |
TDI | 10 | 手腕数字输入 | Tool Digital Input |
TDO | 11 | 手腕数字输出 | Tool Digital Output |
AI | 12 | 模拟输入 | Analog Input |
AO | 13 | 模拟输出 | Analog Output |
SDK 使用口径
IoSignals::Read()支持上述全部SignalType。IoSignals::Write(type, index, int32_t value)只支持DO、RO、GO、TDO。IoSignals::Write(type, index, Float64 value)只支持AO。IoSignals::MultiRead()/MultiWrite()只支持DO。IoSignals的端口号按控制器侧编号传入。
SignalValue
SignalValue 是数字量写入时的可读常量,用来代替直接传 0 或 1 ;例如写 DO 时可用 SignalValue::ON 表示置位、 SignalValue::OFF 表示复位。
| 常量 | 值 | 说明 |
|---|---|---|
SignalValue::OFF | 0 | 关闭、复位或低电平 |
SignalValue::ON | 1 | 打开、置位或高电平 |