跳到主要内容

10.4 外部通信

10.4.1 概述

xCore 系统提供了基于 TCP Socket 的外部通信接口,支持服务端和客户端,上位系统(PLC、MES 等)可以通过该接口向机器人发送控制指令,或者获取机器人状态。

10.4.2 配置

在使用各项交互指令之前,需要先配置 Socket 通信相关参数,并启用该功能。配置界面位于 HMI-“通信”→“外部通信”,如下图所示:

10.4.2
10.4.2 2

注意:Socket 通信接口支持机器人作为客户端或服务端,但同一时刻仅能作为一种状态使用。

当机器人作为客户端使用时,需要配置参数如下:

配置参数 说明

IP

服务端 IP,比如连接的 PLC、MES 系统 IP 地址。

端口

服务端监听端口。

后缀

服务端向机器人发送控制指令或者监控指令时,指令结束处需要附加的后缀字符。通常使用简单结束符 \r 或者 \n 或者 \t。注意此处可以使用组合后缀且长度不限制,例如 \r\n\r\t\r\n\t;也可以使用可见字符,例如字母等。

当机器人作为服务端使用时,支持多连接,如果使用多连接需要客户端注意处理控制时序冲突。需要配置参数如下:

配置参数 说明

端口

服务端监听端口。

后缀

服务端向机器人发送控制指令或者监控指令时,指令结束处需要附加的后缀字符。通常使用简单结束符 \r 或者 \n 或者 \t。注意此处可以使用组合后缀且长度不限制,例如 \r\n\r\t\r\n\t;也可以使用可见字符,例如字母等。

10.4.3 交互指令

交互命令包括控制指令和监控指令。
下表给出了具体的指令内容和格式。(假设用户使用 \r 作为指定的命令结束符,\r 是转义字符,表示回车,十进制值是 13)。

控制命令:

指令名称 发送的字符串 返回值 备注

关闭 socket 接口

xCore::SocketInterface::Disable + \r

无返回值

启动 socket 接口

xCore::SocketInterface::Enable + \r

无返回值

启动程序

start + \r

成功返回 true,失败返回 false

当有绑定了暂停功能的寄存器或系统 IO 没有复位时不允许启动;触发功能码后,若示教器报警提示“程序未同步至控制器,启动失败”,请同步程序后,再次触发该功能码。

停止程序

stop + \r

成功返回 true,失败返回 false

清除伺服报警

clear_alarm + \r

成功返回 true,失败返回 false

程序指针到 main

pp_to_main + \r

成功返回 true,失败返回 false

电机上电指令

motor_on + \r

成功返回 true,失败返回 false

电机下电指令

motor_off + \r

成功返回 true,失败返回 false

切换至手动模式

switch_mode:manual + \r

成功返回 true,失败返回 false

切换至自动模式

switch_mode:auto + \r

成功返回 true,失败返回 false

打开拖动

open_drag + \r

成功返回 true,失败返回 false

仅协作机器人

关闭拖动

close_drag + \r

成功返回 true,失败返回 false

仅协作机器人

获取工程列表

list_prog + \r

返回工程列表;无工程返回 null

获取当前工程

current_prog + \r

返回当前加载工程;无工程返回 null

切换工程

load_prog + (工程名) + \r

成功返回 true,失败返回 false

设置 DO 的值

setdo: + IO 名称,IO 的值 + \r

设置成功返回 true\r,找不到则返回 false\r

示例:setdo:DO0-0,true\r(注意英文标点)

修改控制器和示教器的时间

set_robot_time:time + \r(时间格式:YYYY-MM-DD hh:mm:ss)

成功返回 true,失败返回 false

急停复位

estop_reset + \r

成功返回 true,失败返回 false

RSC 专用,mini 板无效

急停复位并清除报警

estopreset_and_clearalarm + \r

成功返回 true,失败返回 false

依次执行上电、程序指针到 main、启动程序

motoron_pptomain_start + \r

成功返回 true,失败返回 false

触发功能码后,若示教器报警提示“程序未同步至控制器,启动失败”,请同步程序后,再次触发该功能码。

依次执行上电、启动程序

motoron_start + \r

成功返回 true,失败返回 false

触发功能码后,若示教器报警提示“程序未同步至控制器,启动失败”,请同步程序后,再次触发该功能码。

依次执行暂停程序、下电

pause_motoroff + \r

成功返回 true,失败返回 false

设置程序运行速率

set_program_speed: + 程序速度 + \r

成功返回 true,失败返回 false

触发和取消机器人软急停

set_soft_estop:true/false + \r

成功返回 true,失败返回 false

依次执行切换自动模式、上电

switch_auto_motoron + \r

成功返回 true,失败返回 false

打开对应的安全区域

open_safe_region: + 安全区域索引号 + \r

成功返回 true,失败返回 false

区域索引范围 [1-10]

关闭对应的安全区域

close_safe_region: + 安全区域索引号 + \r

成功返回 true,失败返回 false

区域索引范围 [1-10]

开启缩减模式

open_reduced_mode + \r

成功返回 true,失败返回 false

关闭缩减模式

close_reduced_mode + \r

成功返回 true,失败返回 false

监控指令:

指令名称 发送的字符串 返回值 备注

电机上电状态

motor_on_state + \r

成功返回 true(电机上电),失败返回 false(电机下电)

程序运行状态

robot_running_state + \r

成功返回 true(运行状态),失败返回 false(非运行状态)

急停状态

estop_state + \r

当急停触发电平类型设置为高时:true(急停状态),false(非急停状态);当急停触发电平类型设置为低时:true(非急停状态),false(急停状态)

此状态的返回值受急停触发电平类型设置的影响,当设置为高电平时,触发软急停时输出有效,未触发时输出无效;当设置为低电平时,触发软急停输出无效,未触发时输出有效

故障状态

fault_state + \r

成功返回 true(故障状态),失败返回 false(非故障状态)

工作模式

operating_mode + \r

成功返回 true(自动模式),失败返回 false(手动模式/等待模式)

获取笛卡尔位置

cart_pos + \r

笛卡尔位置字符串 + \r

获取笛卡尔位置

cart_pos_name + \r

cart_pos : + 笛卡尔位置字符串 + \r

获取轴位置

jnt_pos + \r

轴位置字符串 + \r

获取轴位置

jnt_pos_name + \r

jnt_pos : + 轴位置字符串 + \r

获取轴速度

jnt_vel + \r

轴速度字符串 + \r

单位:rad/s

获取轴速度

jnt_vel_name + \r

Jnt_vel : + 轴速度字符串 + \r

单位:rad/s

获取轴力矩

jnt_trq + \r

轴力矩字符串 + \r

单位:N·m

获取轴力矩

jnt_trq_name + \r

Jnt_trq : + 轴力矩字符串 + \r

单位:N·m

Home 状态输出

home_state + \r

有输出返回 true,无输出返回 false

碰撞检测状态

collision_state + \r

触发碰撞返回 true,无碰撞返回 false

仅协作机器人

获取机器人任务状态

task_state + \r

机器人当前在进行的任务。包括:
ready:就绪;
jog :Jog;
load_identify:负载辨识;
dynamic_identify:动力学辨识;
drag:拖动打开;
program:程序运行中;
demo :Demo;
rci :RCI;
debug:调试;

详见“HMI简介章节”中关于机器人当前状态的图标和描述

获取报警状态

alarm_state + \r

有报警返回 true,无报警返回 false

获取碰撞检测报警状态

collision_alarm_state + \r

有报警返回 true,无报警返回 false

获取碰撞检测开启状态

collision_open_state + \r

碰撞检测开关开启返回 true,没开启返回 false

判断控制器是否开机

controller_is_running + \r

机器人已开机返回 true,没开机返回 false

编码器低电压报警状态

encoder_low_battery_state + \r

有低电压报警返回 true,没低电压报警返回 false

获取机器人错误码

robot_error_code + \r

有错误时返回机器的错误码,没有错误码时返回 0

获取 RL 的暂停状态

program_full + \r

RL的暂停状态,包括:
0:初始化状态;
1:RL运行中;
2:HMI暂停;
3:系统IO暂停;
4:寄存器功能码暂停;
5:外部通讯暂停;
6:SDK暂停;
7:Pause指令暂停;
10:急停;
11:安全门;
12:其他因素暂停。

获取程序复位状态

program_reset_state + \r

当程序指针在 main 函数第一行,且程序未开始时,输出 true;否则输出 false

获取机器人当前程序运行的实际速度

program_speed + \r

当前程序运行的实际速度 范围:1~100

获取程序忙碌状态

robot_is_busy + \r

如果是正在 pptomain,则返回 true;否则返回 false

获取机器人是否在执行 pptomain 等耗时操作

获取机器人是否在运行(这里不是指程序运行)

robot_is_moving + \r

如果机器人正在动,则返回 true;否则返回 false

获取安全门状态

safe_door_state + \r

如果安全门打开返回 true;否则返回 false

获取软急停的触发状态

soft_estop_state + \r

如果触发软急停,则返回 true;否则返回 false

获取笛卡尔速度

cart_vel + \r

笛卡尔速度 + \r

获取机器人 TCP 的位姿

tcp_pose + \r

机器人 TCP 的位姿 + \r

获取机器人 TCP 的速度

tcp_vel + \r

机器人 TCP 的速度 + \r

获取机器人 TCP 的合成线速度

tcp_vel_mag + \r

机器人 TCP 的合成线速度 + \r

获取外部急停状态

ext_estop_state + \r

外部急停触发返回 true;未触发返回 false

安全板为 mini 板,且固件版本不低于 1.0.8.7

获取手持急停状态

hand_estop_state + \r

手持急停触发返回 true;非手持急停触发返回 false

安全板为 mini 板,且固件版本不低于 1.0.8.7

获取协作模式状态

collaboration_state + \r

协作模式触发返回 true;非协作模式触发返回 false

获取缩减开启模式状态

reduced_mode_state + \r

开启返回 true,未开启返回 false

获取 IO 状态

io_state: + IO 名称(多个 IO 用逗号分隔)+ \r

返回 IO 的值,用 true 和 false 表示,如果没找到对应的 IO,则返回 null

是否在路径上

sta_on_path + \r

在路径上返回 true,不在路径上返回 false

详细使用见寄存器功能码 sta_on_path

是否在路径点附近

sta_near_path + \r

在路径点附近返回 true,不在路径点附近返回 false

详细使用见寄存器功能码 sta_near_path

获取控制器时间

get_robot_time + \r

返回当前控制器时间,失败则返回 false

拖动状态

drag_state + \r

拖动开关打开返回 true,拖动开关关闭返回 false

只在协作机型生效

拖动按钮 1 状态

drag_button1 + \r

按下拖动按钮 1 时返回 true,未按下拖动按钮1时返回 false

只在协作机型生效

拖动按钮 2 状态

drag_button2 + \r

按下拖动按钮 2 时返回 true,未按下拖动按钮2时返回 false

只在非SR的协作机型生效;对于只有一个拖动按钮的CR机型,按下按钮后,drag_button1和drag_button2都返回 true

获取 TCP 相对机器人基坐标系的合成线速度

tcp_ref_base_vel_mag + \r

TCP 相对机器人基坐标系的合成线速度 + \r

float 类型,单位 mm/s

获取 TCP 相对世界坐标系的合成线速度

tcp_ref_world_vel_mag + \r

TCP 相对世界坐标系的合成线速度 + \r

float,单位 mm/s

获取 TCP 相对机器人基坐标系的位姿

tcp_ref_base_pose + \r

TCP 相对机器人基坐标系的位姿 + \r

float 数组,数组长度 7(位置 mm、四元数)

获取 TCP 相对机器人世界坐标系的位姿

tcp_ref_world_pose + \r

TCP 相对机器人世界坐标系的位姿 + \r

float 数组,数组长度 7(位置 mm、四元数)

获取机器人关节位置

robot_jnt_pos + \r

机器人关节位置 + \r

float 数组,数组长度 7,单位 rad 或 mm

获取机器人关节速度

robot_jnt_vel + \r

机器人关节速度 + \r

float 数组,数组长度 7,单位 rad/s 或 mm/s

获取机器人关节转矩

robot_jnt_trq + \r

机器人关节转矩 + \r

float 数组,数组长度 7,单位 N·mm

获取附加轴关节位置

ext_jnt_pos + \r

附加轴关节位置 + \r

float 数组,数组长度 6,单位 rad 或 mm

获取附加轴关节速度

ext_jnt_vel + \r

附加轴关节速度 + \r

float 数组,数组长度 6,单位 rad/s 或 mm/s

获取附加轴关节转矩

ext_jnt_trq + \r

附加轴关节转矩 + \r

float 数组,数组长度 7,单位 N·mm

备注:

字符串格式 单位

笛卡尔位置

x、y、z、a、b、c、q1、q2、q3、q4

x、y、z 单位 mm;
a、b、c 单位为度;
q1~q4 是姿态四元数

轴位置

j1、j2、j3、j4、j5、j6、j7

机器人轴角度单位 rad;
附加轴位置单位 m 或 rad

轴速度

vj1、vj2、vj3、vj4、vj5、vj6、vj7

机器人轴速度单位 rad/s;
附加轴速度单位 m/s 或 rad/s

轴力矩

tj1、tj2、tj3、tj4、tj5、tj6、tj7

机器人轴与附加轴力矩的单位都是电机额定力矩的千分比