Skip to content

2.1 状态码与公共类型

Float32 / Float64

头文件: include/common.h

名称定义
Float32float
Float64double

STATUS_CODE

STATUS_CODE 是 SDK 公共返回值。文档页只列高频状态码;完整枚举以 SDK 头文件为准。

状态码数值典型场景
OK0调用成功
CONNECTION_TIMEOUT-3网络连接超时
INVALID_IP_ADDRESS-17Arm::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-30C99 out 缓冲区不足
NOT_CONNECTED-35尚未建立连接或连接已断开
SUB_PUB_RECEIVE_TIMEOUT-37TopicPubSub::Receive() 在超时时间内没有收到消息
CONTROLLER_ERROR-254控制器返回错误
OTHER_ERR-255通用失败兜底

读法建议

  • C++17 查询接口通常返回 std::pair<T, STATUS_CODE>
  • STATUS_CODE != OK 时,不要继续消费数据位
  • 某些接口会用 “失败数据位 + 状态码” 双返回,例如:
    • ControllerInfo::GetSoftMode() 失败时返回 SoftModeEnum::UNKNOWN
    • ControllerInfo::GetOpMode() 失败时返回 OpModeEnum::UNKNOWN
    • TopicPubSub::Receive() 超时时返回空 Json::Value + SUB_PUB_RECEIVE_TIMEOUT

RobotType

头文件: include/arm_api.h

枚举说明
RobotType::UNKNOWN0未识别
RobotType::COBOT1协作机器人
RobotType::PUMA2PUMA 机器人
RobotType::SCARA3SCARA 机器人

Arm::Connect() 成功后会回填 robotType 字段。 识别规则:

  • 型号包含 GBT-C 时识别为 COBOT
  • 型号包含 GBT-S 时识别为 SCARA
  • 其他已识别型号默认归到 PUMA

运行状态枚举

头文件类型
include/ctrl_status_enum.hCtrlStatusEnum
include/robot_status_enum.hRobotStatusEnum
include/servo_status_enum.hServoStatusEnum
include/soft_mode_enum.hSoftModeEnum
include/op_mode_enum.hOpModeEnum

这些枚举是 ControllerInfo 查询接口的返回类型,用来把控制器返回的状态码转换成可读状态;无法识别的值会映射到对应的 UNKNOWN 项。

CtrlStatusEnum

用于表示运动控制器运行状态,对应 ControllerInfo::GetCtrlStatus()

枚举说明
CtrlStatusEnum::CTRL_INIT0运动控制器初始化
CtrlStatusEnum::CTRL_ENGAGED1运动控制器已使能
CtrlStatusEnum::CTRL_ESTOP2运动控制器急停
CtrlStatusEnum::CTRL_TERMINATED3运动控制器中止
CtrlStatusEnum::CTRL_ANY_TO_ESTOP101中间状态:其他状态切换到急停
CtrlStatusEnum::CTRL_ESTOP_TO_ENGAGED102中间状态:急停切换到使能
CtrlStatusEnum::CTRL_ESTOP_TO_TERMINATED103中间状态:急停切换到中止
CtrlStatusEnum::CTRL_UNKNOWN-1未知状态

RobotStatusEnum

用于表示机器人本体运行状态,对应 ControllerInfo::GetRobotStatus()

枚举说明
RobotStatusEnum::ROBOT_IDLE0机器人空闲
RobotStatusEnum::ROBOT_RUNNING1机器人运行中
RobotStatusEnum::ROBOT_TEACHING2机器人示教中
RobotStatusEnum::ROBOT_DRAG3机器人拖动中
RobotStatusEnum::ROBOT_FORCE_DRAG4机器人强制拖动中
RobotStatusEnum::ROBOT_IDLE_TO_RUNNING101中间状态:空闲切换到运行
RobotStatusEnum::ROBOT_IDLE_TO_TEACHING102中间状态:空闲切换到示教
RobotStatusEnum::ROBOT_RUNNING_TO_IDLE103中间状态:运行切换到空闲
RobotStatusEnum::ROBOT_TEACHING_TO_IDLE104中间状态:示教切换到空闲
RobotStatusEnum::ROBOT_UNKNOWN-1未知状态

ServoStatusEnum

用于表示伺服状态,对应 ControllerInfo::GetServoStatus()

枚举说明
ServoStatusEnum::SERVO_IDLE1伺服空闲
ServoStatusEnum::SERVO_RUNNING2伺服运行中
ServoStatusEnum::SERVO_DISABLE3伺服关闭
ServoStatusEnum::SERVO_WAIT_READY4伺服等待就绪
ServoStatusEnum::SERVO_WAIT_DOWN5伺服等待关闭
ServoStatusEnum::SERVO_INIT10伺服初始化
ServoStatusEnum::SERVO_UNKNOWN-1未知状态

SoftModeEnum

用于表示控制器 soft_op_mode ,对应 ControllerInfo::GetSoftMode() / ControllerInfo::SetSoftMode()

枚举说明
SoftModeEnum::UNKNOWN0未知模式
SoftModeEnum::AUTO1自动模式
SoftModeEnum::MANUAL_LIMIT2手动限速模式
SoftModeEnum::MANUAL3手动模式

OpModeEnum

用于表示控制器 user_op_mode ,对应 ControllerInfo::GetOpMode() / ControllerInfo::SetOpMode()

枚举说明
OpModeEnum::UNKNOWN0未知操作模式
OpModeEnum::AUTO1自动操作模式
OpModeEnum::MANUAL_LIMIT2手动限速操作模式
OpModeEnum::MANUAL3手动操作模式

LanguageType / RobotAlarm

头文件: include/alarm_types.h

LanguageType

LanguageType 用于选择报警查询返回的语言,当前由 AlarmClient::GetAllActiveAlarms() 使用。SDK 会把枚举转换成报警服务识别的语言参数:中文为 cn ,英文为 en

枚举值说明
LanguageType::Chinese0请求中文报警描述
LanguageType::English1请求英文报警描述

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”。

枚举类型说明
DI1数字输入Digital Input
DO2数字输出Digital Output
UI3专用输入User Input
UO4专用输出User Output
RI5远程输入Remote Input
RO6远程输出Remote Output
GI7组输入Group Input
GO8组输出Group Output
TAI9手腕模拟输入Tool Analog Input
TDI10手腕数字输入Tool Digital Input
TDO11手腕数字输出Tool Digital Output
AI12模拟输入Analog Input
AO13模拟输出Analog Output

SDK 使用口径

  • IoSignals::Read() 支持上述全部 SignalType
  • IoSignals::Write(type, index, int32_t value) 只支持 DOROGOTDO
  • IoSignals::Write(type, index, Float64 value) 只支持 AO
  • IoSignals::MultiRead() / MultiWrite() 只支持 DO
  • IoSignals 的端口号按控制器侧编号传入。

SignalValue

SignalValue 是数字量写入时的可读常量,用来代替直接传 01 ;例如写 DO 时可用 SignalValue::ON 表示置位、 SignalValue::OFF 表示复位。

常量说明
SignalValue::OFF0关闭、复位或低电平
SignalValue::ON1打开、置位或高电平