USM - User Socket Message
概述
USM 是捷勃特(Agilebot)机器人 Socket 控制插件,基于 Agilebot.Robot.SDK.A-2.0.0.0 开发。
通过 TCP 字符串命令调用 Python SDK,实现对机器人寄存器、IO、程序、运动、报警、伺服等控制。
兼容 SDK 版本说明
本插件使用 SDK 版本 Agilebot.Robot.SDK.A-2.0.0.0 开发,请确保您的机器人系统环境与此版本兼容。
打包说明
插件开发完毕后,需要使用捷勃特插件打包工具进行打包。详细的打包与安装说明请参考:
版本信息
- 插件版本:
v1.0 - SDK 版本:
Agilebot.Robot.SDK.A-2.0.0.0
注意事项
- 协议:TCP,UTF-8
- 命令格式:
command,arg1,arg2,... - 返回格式:成功
OK[,data],失败NG,error[,detail] - 命令名:不区分大小写
- 唯一大小写敏感参数:
program_start/stop/pause/resume的程序名 - 字段分隔:除特殊说明外均为逗号分隔
连接与响应
- 默认端口:
7000 - 单客户端模式:已有连接时拒绝新连接(返回
busy)
常见错误码:
not_connectedinvalid_argssdk_errorinternal_errorunknown_commandbusy
功能命令示例
寄存器
read_R— 读 R 浮点寄存器。 例:发送read_R,5→ 回复OK,8.6write_R— 写 R 寄存器。 例:发送write_R,5,10.5→ 回复OKdelete_R— 删 R 寄存器。 例:发送delete_R,5→ 回复OKread_MR— 读 MR 整型寄存器。 例:发送read_MR,1→ 回复OK,100write_MR— 写 MR 整型寄存器。 例:发送write_MR,1,200→ 回复OKdelete_MR— 删 MR 整型寄存器。 例:发送delete_MR,1→ 回复OKread_SR— 读 SR 字符串寄存器。 例:发送read_SR,1→ 回复OK,hellowrite_SR— 写 SR 字符串寄存器。 例:发送write_SR,1,hello→ 回复OKdelete_SR— 删 SR 字符串寄存器。 例:发送delete_SR,1→ 回复OKread_MH— 读 MH 保持型寄存器。 例:发送read_MH,1→ 回复OK,100write_MH— 写 MH 保持型寄存器。 例:发送write_MH,1,50→ 回复OKread_MI— 读 MI 输入型寄存器。 例:发送read_MI,1→ 回复OK,50write_MI— 写 MI 输入型寄存器。 例:发送write_MI,1,75→ 回复OKread_PR— 读 PR 位姿(逗号分隔,格式:OK,id,C/J,六个数)。 例:发送read_PR,5→ 回复OK,5,C,100.000,200.000,300.000,0.000,0.000,0.000write_PR— 写 PR:id,J/C,六个数。 例:发送write_PR,5,C,100,200,300,0,0,0→ 回复OKdelete_PR— 删 PR。 例:发送delete_PR,5→ 回复OK
IO
read_DO— 读 DO(ON/OFF)。 例:发送read_DO,1→ 回复OK,ONwrite_DO— 写 DO。 例:发送write_DO,1,OFF→ 回复OKread_DI— 读 DI。 例:发送read_DI,3→ 回复OK,OFFread_AO— 读 AO(部分机型支持) 例:发送read_AO,2→ 回复OK,2048write_AO— 写 AO(部分机型支持) 例:发送write_AO,2,1→ 回复OKread_AI— 读 AI(部分机型支持) 例:发送read_AI,1→ 回复OK,3276
程序与操作权
program_start— 启动程序(程序名区分大小写)。 例:发送program_start,test→ 回复OKprogram_stop— 停止程序(程序名区分大小写)。 例:发送program_stop,test→ 回复OKprogram_pause— 暂停程序(程序名区分大小写)。 例:发送program_pause,test→ 回复OKprogram_resume— 恢复程序(程序名区分大小写)。 例:发送program_resume,test→ 回复OKprogram_list— 列运行中程序(仅返回程序名称,多个用逗号分隔)。 例:发送program_list→ 回复OK,test,tprogram_prepare— 程序启动前状态确认。 例:发送program_prepare→ 回复OK,soft_mode=okacquire_access— 获取 PC 操作权。 例:发送acquire_access→ 回复OKrelease_access— 释放 PC 操作权。 例:发送release_access→ 回复OK
运动
move_joint— 关节运动。 写法:move_joint,J,j1,j2,j3,j4,j5,j6,vel,acc/move_joint,C,x,y,z,a,b,c,vel,acc/move_joint,PR,id[,vel,acc]。 说明:vel必须xx%(0-100%),acc必须xx%(1-120%)。 例:发送move_joint,J,0,0,60,60,0,0,50%,100%→ 回复OK例:发送move_joint,C,0,0,60,60,0,0,50%,100%→ 回复OK例:发送move_joint,PR,1,50%,100%→ 回复OKmove_line— 直线运动。 写法:move_line,J,j1,j2,j3,j4,j5,j6,vel,acc/move_line,C,x,y,z,a,b,c,vel,acc/move_line,PR,id[,vel,acc]。 说明:vel单位 mm/s,acc必须xx%(1-120%)。 例:发送move_line,J,-63,127,-106,36,0,0,500,60%→ 回复OK例:发送move_line,C,0,0,60,60,0,0,500,60%→ 回复OK例:发送move_line,PR,1,500,60%→ 回复OKget_current_pose— 当前位姿 J/C(逗号分隔)。 例:发送get_current_pose,J→ 回复OK,J,0.000,0.000,60.000,60.000,0.000,0.000
点动 / 速度 / 坐标系
jog_step— 步进点动:(1代表+,2代表-)。 例:发送jog_step,1,1,0.5→ 回复OKget_ovc/set_ovc— 全局速度倍率(百分比)。 例:发送get_ovc→ 回复OK,100%;发送set_ovc,30%→ 回复OKget_oac/set_oac— 全局加速度倍率。 例:发送get_oac→ 回复OK,100%get_tf/set_tf— 工具坐标系编号(0-50)。 例:发送set_tf,2→ 回复OKget_uf/set_uf— 用户坐标系编号(0-50)。 例:发送set_uf,1→ 回复OKget_tcs/set_tcs— 参考坐标系。set_tcs支持:JOINT/BASE/WORLD/UF/TF/RTCP_UF/RTCP_TF(不区分大小写)。 例:发送set_tcs,WORLD→ 回复OK
状态
robot_status— 机器人运行状态。 例:发送robot_status→ 回复OK,Robot idlectrl_status— 控制器状态。 例:发送ctrl_status→ 回复OK,Controller enabledservo_status— 伺服状态。 例:发送servo_status→ 回复OK,Servo controller idleready_check— 启动前一键检查(alarm/robot/ctrl/servo/op/soft)。 例:发送ready_check→ 回复OK,alarm=none,robot=...,ctrl=...,servo=...,op=...,soft=...
报警
get_alarms— 活动报警列表 例:发送get_alarms→ 依次回复:OK,示教器急停按钮触发、OK,双通道安全板信号有不一致get_top_alarm— 最高优先级报警 例:发送get_top_alarm→ 回复OK,示教器急停按钮触发
伺服与急停
servo_on— 上使能。 例:发送servo_on→ 回复OKservo_off— 下使能。 例:发送servo_off→ 回复OKservo_reset— 伺服复位。 例:发送servo_reset→ 回复OKestop— 急停。 例:发送estop→ 回复OK
负载
get_payload— 当前负载,格式mass,x,y,z(逗号分隔,三位小数)。 例:发送get_payload→ 回复OK,2.500,0.000,0.000,50.000
常见现场问题
- 示教器提示 “没有操作权”:检查是否已
acquire_access,需要时release_access - NetAssist 乱码:接收编码改为 UTF-8
program_start报启动条件错误:先发program_prepare