Skip to content

7000端口协议

7000端口设置

项目长度(Byte)说明
SyncByte20x4E66 固定包头
Length216进制长度 0-0xffff,不包含数据头和命令字,不包含 CRC 段
Command2命令字
dataLength数据段(主要为 JSON 数据格式)
CRC4对不含包头数据做 CRC 校验 (CRC32)

说明

  • 7000端口可以选择"TCP"和"UDP"两种通讯协议。可以通过进入控制器后台修改控制器配置选择哪种通讯协议。
  • 在控制器配置文件 config/controller.json 中,hostComputerService 节点下:
    • socketType 节点表示 socket 类型,可选择 "TCP" 和 "UDP",默认为 "TCP"
    • checkCRC 节点表示是否进行 CRC 检测,选择 false 时不检测 CRC,但注意 CRC 所占用的 4 个字节的数据仍要发送;默认为 true,检测 CRC
  • 查询状态可以设置为"UDP"通讯进行数据获取,最小周期可以达到 1ms

查询状态

命令字: 0x1E00

字段类型说明
channelint通道,最多 9 个通道,默认为 1
stopint停止发送,为 1 时停止之前的持续发送,下面的数据可不发
robotint机器人编号,取值范围 [1, 4]
modeint请求回复模式:0 应答(请求一次回复一次),1 持续(请求一次持续回复)
intervalint持续回复间隔时间,单位 ms,仅 mode 为持续时有效,范围 [1, 60000]
queryTypestring[]查询运行参数,无需查询的不写即可
typeCfgobject查询内容配置,仅需要查询相关类型数据时有效

queryType 可选值

说明
realPosACS实时坐标位置(关节坐标系)
realPosMCS实时坐标位置(直角坐标系)
realPosPCS实时坐标位置(工具坐标系)
realPosUCS实时坐标位置(用户坐标系)
axisVel轴速度
axisAcc轴加速度
torque力矩
electric电流
numGVar数值变量
IOIO 端口
serialNum序列号
runControlPosRunNum运动控制当前轨迹已运行了点位个数
detailedMotionPos详细运动点位,该项每个机器人同一时刻仅支持一个通道查询

typeCfg 配置

字段类型说明
numGVarstring[]查询全局变量,如 ["GD001", "GA001", "GI001", "GI333"]
IOstring[]查询 IO,如 ["DI1", "DI16", "DO1", "DO3", "DO17"],若查询的 IO 不存在返回 -1
detailedMotionPosobject查询更详细的运行参数
detailedMotionPos.numint每帧数据回复的点位数目
detailedMotionPos.optionalstring[]可选参数:ACS 关节坐标,MCS 直角坐标,time 时间戳,reset 重置点位记录
json
{
  "channel": 1,
  "stop": 1,
  "robot": 1,
  "mode": 0,
  "interval": 10,
  "queryType": [
    "realPosACS",
    "realPosMCS",
    "realPosPCS",
    "realPosUCS",
    "axisVel",
    "axisAcc",
    "torque",
    "electric",
    "numGVar",
    "IO",
    "serialNum",
    "runControlPosRunNum",
    "detailedMotionPos"
  ],
  "typeCfg": {
    "numGVar": ["GD001", "GA001", "GI001", "GI333"],
    "IO": ["DI1", "DI16", "DO1", "DO3", "DO17"],
    "detailedMotionPos": {
      "num": 10,
      "optional": ["ACS", "MCS", "time", "reset"]
    }
  }
}

控制器回复

命令字: 0x1E01

字段类型说明
channelint通道,最多 9 个通道
robotint机器人编号,取值范围 [1, 4]
replyDataobject回复查询的结果,未查询的不会回复

replyData 字段说明

坐标:机器人(前 7 个)+ 外部轴(后 5 个),无外部轴时坐标个数为轴数,有外部轴时坐标个数为 7 + 外部轴个数

字段类型说明
realPosACSdouble[]实时坐标位置(关节坐标系)
realPosMCSdouble[]实时坐标位置(直角坐标系)
realPosPCSdouble[]实时坐标位置(工具坐标系)
realPosUCSdouble[]实时坐标位置(用户坐标系)
axisVeldouble[]轴速度
axisAccdouble[]轴加速度
torquedouble[]力矩
electricdouble[]电流
numGVarobject查询的全局变量,如
IOobject查询的 IO,如 {"DI1": 1, "DI16": 0, "DO1": 0, "DO3": 1, "DO17": -1},若查询的 IO 不存在返回 -1
runControlPosRunNumint运动控制当前轨迹已运行了点位个数
serialNumint序列号,每次回复加 1,每个通道互相独立
detailedMotionPosobject更详细的运行参数
detailedMotionPos.numint每帧数据回复的点位数目
detailedMotionPos.dataarray点位数据数组
detailedMotionPos.data[].timeint[]时间戳,第一个数为秒,第二个数为纳秒
detailedMotionPos.data[].ACSdouble[]关节坐标
detailedMotionPos.data[].MCSdouble[]直角坐标
json
{
  "channel": 1,
  "robot": 1,
  "replyData": {
    "realPosACS": [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5],
    "realPosMCS": [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5],
    "realPosPCS": [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5],
    "realPosUCS": [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5],
    "axisVel": [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5],
    "axisAcc": [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5],
    "torque": [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5],
    "electric": [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5],
    "numGVar": {"GD001": 0.1, "GA001": true, "GI001": 33, "GI333": -55},
    "IO": {"DI1": 1, "DI16": 0, "DO1": 0, "DO3": 1, "DO17": -1},
    "runControlPosRunNum": 0,
    "serialNum": 1,
    "detailedMotionPos": {
      "num": 10,
      "data": [
        {
          "time": [123456, 654321],
          "ACS": [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5],
          "MCS": [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5]
        }
      ]
    }
  }
}

运动控制

命令字: 0x1E02

字段类型说明
robotint机器人编号,取值范围 [1, 4]
clearBufferint清空运动轨迹缓存队列,为 1 时清空,清空时不影响当前正在传输的数据,若为 0 可不发
targetModeint运动模式:0 独立点位,1 连续轨迹
extMoveint是否有外部轴运动:0 或不写 无外部轴运动,1 有外部轴运动
syncint外部轴是否同步:0 或不写 不同步,1 同步
speedint速度设定,若不写则使用默认值
accint加速度设定,若不写则使用默认值
plint速度平滑参数,若不写则使用默认值 5,仅"独立点位"、使用"targetVec"节点时有效
moveModestring运动模式,可选 "TeachSet"、"MOVJ"、"MOVL"、"MOVS",默认为 "TeachSet",仅"独立点位"、使用"targetVec"节点时有效
targetPosdouble[]目标点,若使用该节点则只会走一个目标点,格式:机器人(前 7 个)+ 外部轴(后 5 个)
targetVecarray多目标点,若使用该节点则会按顺序走完所有点位

targetVec 数组元素

字段类型说明
posdouble[]其中一个目标点,格式:机器人(前 7 个)+ 外部轴(后 5 个)

注意:"targetPos" 和 "targetVec" 节点同时存在时,仅 "targetPos" 节点生效

独立点位,单次传输:

json
{
  "robot": 1,
  "clearBuffer": 1,
  "targetMode": 0,
  "cfg": {
    "coord": "ACS",
    "extMove": 0,
    "sync": 0,
    "speed": 100,
    "acc": 100,
    "pl": 5,
    "moveMode": "TeachSet"
  },
  "targetPos": [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5],
  "targetVec": [
    {"pos": [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5]},
    {"pos": [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5]},
    {"pos": [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5]},
    {"pos": [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5]}
  ]
}

独立点位,分次传输,接收完轨迹再运动:

json
{
  "robot": 1,
  "clearBuffer": 1,
  "end": 0,
  "targetMode": 0,
  "sendMode": 1,
  "runMode": 0,
  "sum": 10,
  "count": 1,
  "cfg": {
    "coord": "ACS",
    "extMove": 0,
    "sync": 0,
    "speed": 100,
    "acc": 100,
    "pl": 5,
    "moveMode": "TeachSet",
    "timeout": 100
  },
  "targetVec": [
    {"pos": [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5]},
    {"pos": [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5]},
    {"pos": [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5]},
    {"pos": [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5]}
  ]
}

字段说明

字段类型说明
endint为 1 时停止之前的持续传输,若为 0 可不发 end
sendModeint0 一次传输完全部轨迹点位,1 每次传输部分点位
runModeint仅每次传输部分点位时有效:0 接收完轨迹再运动,1 边接收边运动
sumint仅"接收完轨迹再运动"时有效,总共要发的帧数
countint仅"接收完轨迹再运动"时有效,当前为第几帧
cfg.timeoutint超时时间,单位 ms,范围 [10-10000],仅"接收完轨迹再运动"时有效

连续轨迹,单次传输:

json
{
  "robot": 1,
  "clearBuffer": 1,
  "targetMode": 1,
  "sendMode": 0,
  "cfg": {
    "coord": "ACS",
    "extMove": 0,
    "sync": 0,
    "speed": 100,
    "acc": 100
  },
  "targetVec": [
    {
      "pos": [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5],
      "axisVel": [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5],
      "axisAcc": [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5],
      "timeStamp": 10
    }
  ]
}

targetVec 元素扩展字段

字段类型说明
axisVeldouble[]轴速度
axisAccdouble[]轴加速度
timeStampint运行到该点位时相对于起始点的时间,单位 ms

连续轨迹,分次传输,接收完轨迹再运动:

json
{
  "robot": 1,
  "clearBuffer": 1,
  "end": 0,
  "targetMode": 1,
  "sendMode": 1,
  "runMode": 0,
  "sum": 10,
  "count": 1,
  "cfg": {
    "coord": "ACS",
    "extMove": 0,
    "sync": 0,
    "speed": 100,
    "acc": 100,
    "timeout": 100
  },
  "targetVec": [
    {
      "pos": [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5],
      "axisVel": [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5],
      "axisAcc": [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5],
      "timeStamp": 10
    }
  ]
}

运动控制的回复

命令字: 0x1E03

字段类型说明
robotint机器人编号,取值范围 [1, 4]
successbool判断是否成功,true 成功,false 失败
sizeint运动轨迹缓存队列的当前轨迹数目,仅当 success 为 true 时有该项
causestring接收失败的原因,接收成功时为空:busy 当前有未传输完成的数据,timeout 接收超时,dataErr 数据错误,termination 发送端终止了正在传输的数据
json
{
  "robot": 1,
  "success": false,
  "size": 1,
  "cause": "timeout"
}

变量、IO控制

命令字: 0x1E04

字段类型说明
numGVarobject查询变量,键为变量名,值为变量值;GA 为 bool 型变量,GI 为 int 型变量,GD 为 Double 型变量
IOobject查询 IO 口,键为 IO 口名,值为状态(1 或 0)
json
{
  "numGVar": {"GA001": true, "GI033": 6, "GD666": -2.33},
  "IO": {"DO1": 1, "DO13": 0}
}

开关伺服点位运动控制

该功能和"运动控制"功能不可同时使用

命令字: 0x1E10

字段类型说明
robotint机器人编号,取值范围 [1, 4]
switchbool是否开启,true 开启,false 关闭
json
{
  "robot": 1,
  "switch": true
}

回复

命令字: 0x1E11

字段类型说明
successbool判断是否成功,true 成功,false 失败
causestring接收失败的原因,接收成功时为空:busy 当前通道被占用,dataErr 数据错误,startupErr 启动失败
json
{
  "success": false,
  "cause": "busy"
}

点位发送

命令字: 0x1E12

字段类型说明
robotint机器人编号,取值范围 [1, 4]
endint停止传输,为 1 时停止之前的持续传输,若为 0 可不发;在点位未传输完毕时,会清空之前接收到的数据
sumint总共要发的帧数
countint当前的帧数
PosVecdouble[][]发送的点位坐标,机器人(前 7 个)+ 外部轴(后 5 个)
json
{
  "robot": 1,
  "end": 1,
  "sum": 10,
  "count": 1,
  "PosVec": [
    [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5],
    [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5],
    [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 2.1, 2.2, 2.3, 2.4, 2.5]
  ]
}

点位发送的回复

命令字: 0x1E13

字段类型说明
robotint机器人编号,取值范围 [1, 4]
successbool是否接收成功,true 接收成功,false 接收失败
causestring接收失败的原因,接收成功时为空:notStart 未开启伺服点位运动控制模式,dataErr 数据错误,termination 发送端终止了正在传输的数据,cacheFull 缓存区已满(最大缓存 6 条轨迹)
json
{
  "robot": 1,
  "success": false,
  "cause": "dataErr"
}