Skip to content

7000 端口通讯(2207)

控制器为服务端,默认端口号为7000。

本协议所规定的所有数据包均符合本格式定义,采用标准的TLV(Type,Length,Value)格式,有固定起始包头和CRC校验。

数据包格式

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

配置文件设置

在配置文件controller.json中,hostComputerService节点下:

  • socketType:socket类型,可选择"TCP"和"UDP",默认为"TCP"
  • checkCRC:是否进行CRC检测,选择false时,不检测CRC,但注意CRC所占用的4个字节的数据仍要发送;默认为true,检测CRC

查询状态

命令字:0x9512

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"]
        }
    }
}

参数说明

参数类型必填说明
channelint最多9个通道
stopint为1时,停止之前的持续发送,下面的数据可不发
robotint机器人编号
modeint0:应答(请求一次回复一次),1:持续(请求一次持续回复)
intervalintms,仅mode为持续时有效,范围10-60000
queryTypearray查询类型数组,可选值见下表
typeCfgobject查询内容配置,仅需要查询相关类型数据时有效

queryType 可选值

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

typeCfg 详细说明

参数类型说明
numGVararray可查询的变量名数组,如["GD001", "GA001", "GI001", "GI333"]
IOarray可查询的IO名数组,如["DI1", "DI16", "DO1", "DO3", "DO17"],最大数量不应大于IO个数
detailedMotionPosobject详细运动点位配置
detailedMotionPos.numint每帧数据回复的点位数目
detailedMotionPos.optionalarray可选参数:ACS(关节坐标)、MCS(直角坐标)、time(时间戳)、reset(重置点位记录)

查询返回

命令字:0x9513

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]
                }
            ]
        }
    }
}

参数说明

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

参数类型说明
channelint通道号
robotint机器人编号
replyDataobject查询返回的数据对象,未查询的字段不会回复

运动控制

命令字:0x9521

模式1:独立点位

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]}
    ]
}

模式2:独立点位 - 每次传输部分点位(接收完轨迹再运动)

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]}
    ]
}

模式3:连续轨迹 - 一次传输完全部轨迹点位

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
        },
        {
            "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
        }
    ]
}

模式4:连续轨迹 - 每次传输部分点位(接收完轨迹再运动)

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
        }
    ]
}

运动控制参数说明

参数类型说明
robotint机器人编号
clearBufferint为1时,清空运动轨迹缓存队列;若为0,可不发该字段
endint为1时,停止之前的持续传输;若为0,可不发该字段
targetModeint0:独立点位,1:连续轨迹
sendModeint0:一次传输完全部轨迹点位,1:每次传输部分点位
runModeint仅每次传输部分点位时有效,0:接收完轨迹再运动,1:边接收边运动
sumint仅"接收完轨迹再运动"时有效,总共要发的帧数
countint仅"接收完轨迹再运动"时有效,当前为第几帧

cfg 配置参数说明

参数类型说明
coordstring坐标类型,如"ACS"
extMoveint1表示外部轴运动;0或不写表示没有
syncint0或不写表示外部轴不同步,1表示外部轴同步
speedint速度,若不写则使用默认值
accint加速度,若不写则使用默认值
plint速度等级,仅"独立点位"、使用"targetVec"节点时有效,默认值5
moveModestring运动模式,可选"TeachSet"、"MOVJ"、"MOVL"、"MOVS",默认值"TeachSet"
timeoutintms,超时时间,若不写则不检测超时,范围10-10000,仅"接收完轨迹再运动"时有效

targetVec 点位参数说明

参数类型说明
posarray坐标数组:机器人(前7个)+ 外部轴(后5个)
axisVelarray轴速度,仅连续轨迹模式有效
axisAccarray轴加速度,仅连续轨迹模式有效
timeStampintms,运行到该点位时相对于起始点的时间,仅连续轨迹模式有效

注意targetPostargetVec节点同时存在时,仅targetPos节点生效


运动控制的回复

命令字:0x9523

json
{
    "robot": 1,
    "success": false,
    "size": 1,
    "cause": "timeout"
}

参数说明

参数类型说明
robotint机器人编号
successbool是否成功接收
sizeint运动轨迹缓存队列的当前轨迹数目,仅当success为true时有该项
causestring失败原因,成功时为空;可选值:busy(当前有未传输完成的数据)、timeout(接收超时)、dataErr(数据错误)、termination(发送端终止了正在传输的数据)

变量、IO控制

命令字:0x9531

json
{
    "numGVar": {
        "GA001": true,
        "GI033": 6,
        "GD666": -2.33
    },
    "IO": {
        "DO1": 1,
        "DO13": 0
    }
}

参数说明

参数类型说明
numGVarobject数值变量,键为变量名,值为变量值
IOobjectIO端口,键为IO名,值为IO状态(0或1)

开关伺服点位运动控制

命令字:0x95A1

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

json
{
    "robot": 1,
    "switch": true
}

参数说明

参数类型说明
robotint机器人编号
switchbooltrue:开启,false:关闭

开关回复

命令字:0x95A3

json
{
    "robot": 1,
    "success": false,
    "cause": "busy"
}

参数说明

参数类型说明
robotint机器人编号
successbool是否成功
causestring失败原因,成功时为空;可选值:dataErr(接收到的数据错误)、startupErr(启动失败)、busy(当前通道被占用)

点位发送

命令字:0x95A4

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]
    ]
}

参数说明

参数类型说明
robotint机器人编号
endint为1时,停止之前的持续传输,下面的数据可不发;若为0,可不发该字段;在点位未传输完毕时,会清空之前接收到的数据,重新等待新的点位队列
sumint总共要发的帧数
countint当前为第几帧
PosVecarray坐标数组,坐标格式:机器人(前7个)+ 外部轴(后5个)

点位发送的回复

命令字:0x95A6

json
{
    "robot": 1,
    "success": false,
    "cause": "dataErr"
}

参数说明

参数类型说明
robotint机器人编号
successbool是否成功接收
causestring失败原因,成功时为空;可选值:notStart(未开启伺服点位运动控制模式)、dataErr(数据错误)、termination(发送端终止了正在传输的数据)、cacheFull(缓存区已满,最大缓存6条轨迹)