Appearance
7000 端口通讯(2207)
控制器为服务端,默认端口号为7000。
本协议所规定的所有数据包均符合本格式定义,采用标准的TLV(Type,Length,Value)格式,有固定起始包头和CRC校验。
数据包格式
| 项目 | 长度(Byte) | 说明 |
|---|---|---|
| SyncByte | 2 | 0x4E66固定包头 |
| Length | 2 | 16进制长度0-0xffff;不包含数据头和命令字,不包含CRC段 |
| Command | 2 | 命令字 |
| data | Length | 数据段(主要为JSON数据格式) |
| CRC | 4 | 对不含包头数据做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"]
}
}
}参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| channel | int | 是 | 最多9个通道 |
| stop | int | 否 | 为1时,停止之前的持续发送,下面的数据可不发 |
| robot | int | 是 | 机器人编号 |
| mode | int | 是 | 0:应答(请求一次回复一次),1:持续(请求一次持续回复) |
| interval | int | 否 | ms,仅mode为持续时有效,范围10-60000 |
| queryType | array | 否 | 查询类型数组,可选值见下表 |
| typeCfg | object | 否 | 查询内容配置,仅需要查询相关类型数据时有效 |
queryType 可选值
| 值 | 说明 |
|---|---|
| realPosACS | 实时坐标位置-关节坐标 |
| realPosMCS | 实时坐标位置-直角坐标 |
| realPosPCS | 实时坐标位置-工具坐标 |
| realPosUCS | 实时坐标位置-用户坐标 |
| axisVel | 轴速度 |
| axisAcc | 轴加速度 |
| torque | 力矩 |
| electric | 电流 |
| numGVar | 数值变量 |
| IO | IO端口 |
| serialNum | 序列号 |
| runControlPosRunNum | 运动控制当前轨迹已运行了点位数 |
| detailedMotionPos | 详细运动点位,该项每个机器人同一时刻仅支持一个通道查询 |
typeCfg 详细说明
| 参数 | 类型 | 说明 |
|---|---|---|
| numGVar | array | 可查询的变量名数组,如["GD001", "GA001", "GI001", "GI333"] |
| IO | array | 可查询的IO名数组,如["DI1", "DI16", "DO1", "DO3", "DO17"],最大数量不应大于IO个数 |
| detailedMotionPos | object | 详细运动点位配置 |
| detailedMotionPos.num | int | 每帧数据回复的点位数目 |
| detailedMotionPos.optional | array | 可选参数: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+外部轴个数
| 参数 | 类型 | 说明 |
|---|---|---|
| channel | int | 通道号 |
| robot | int | 机器人编号 |
| replyData | object | 查询返回的数据对象,未查询的字段不会回复 |
运动控制
命令字: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
}
]
}运动控制参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| robot | int | 机器人编号 |
| clearBuffer | int | 为1时,清空运动轨迹缓存队列;若为0,可不发该字段 |
| end | int | 为1时,停止之前的持续传输;若为0,可不发该字段 |
| targetMode | int | 0:独立点位,1:连续轨迹 |
| sendMode | int | 0:一次传输完全部轨迹点位,1:每次传输部分点位 |
| runMode | int | 仅每次传输部分点位时有效,0:接收完轨迹再运动,1:边接收边运动 |
| sum | int | 仅"接收完轨迹再运动"时有效,总共要发的帧数 |
| count | int | 仅"接收完轨迹再运动"时有效,当前为第几帧 |
cfg 配置参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| coord | string | 坐标类型,如"ACS" |
| extMove | int | 1表示外部轴运动;0或不写表示没有 |
| sync | int | 0或不写表示外部轴不同步,1表示外部轴同步 |
| speed | int | 速度,若不写则使用默认值 |
| acc | int | 加速度,若不写则使用默认值 |
| pl | int | 速度等级,仅"独立点位"、使用"targetVec"节点时有效,默认值5 |
| moveMode | string | 运动模式,可选"TeachSet"、"MOVJ"、"MOVL"、"MOVS",默认值"TeachSet" |
| timeout | int | ms,超时时间,若不写则不检测超时,范围10-10000,仅"接收完轨迹再运动"时有效 |
targetVec 点位参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| pos | array | 坐标数组:机器人(前7个)+ 外部轴(后5个) |
| axisVel | array | 轴速度,仅连续轨迹模式有效 |
| axisAcc | array | 轴加速度,仅连续轨迹模式有效 |
| timeStamp | int | ms,运行到该点位时相对于起始点的时间,仅连续轨迹模式有效 |
注意:
targetPos和targetVec节点同时存在时,仅targetPos节点生效
运动控制的回复
命令字:0x9523
json
{
"robot": 1,
"success": false,
"size": 1,
"cause": "timeout"
}参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| robot | int | 机器人编号 |
| success | bool | 是否成功接收 |
| size | int | 运动轨迹缓存队列的当前轨迹数目,仅当success为true时有该项 |
| cause | string | 失败原因,成功时为空;可选值:busy(当前有未传输完成的数据)、timeout(接收超时)、dataErr(数据错误)、termination(发送端终止了正在传输的数据) |
变量、IO控制
命令字:0x9531
json
{
"numGVar": {
"GA001": true,
"GI033": 6,
"GD666": -2.33
},
"IO": {
"DO1": 1,
"DO13": 0
}
}参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| numGVar | object | 数值变量,键为变量名,值为变量值 |
| IO | object | IO端口,键为IO名,值为IO状态(0或1) |
开关伺服点位运动控制
命令字:0x95A1
该功能和"运动控制"功能不可同时使用
json
{
"robot": 1,
"switch": true
}参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| robot | int | 机器人编号 |
| switch | bool | true:开启,false:关闭 |
开关回复
命令字:0x95A3
json
{
"robot": 1,
"success": false,
"cause": "busy"
}参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| robot | int | 机器人编号 |
| success | bool | 是否成功 |
| cause | string | 失败原因,成功时为空;可选值: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]
]
}参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| robot | int | 机器人编号 |
| end | int | 为1时,停止之前的持续传输,下面的数据可不发;若为0,可不发该字段;在点位未传输完毕时,会清空之前接收到的数据,重新等待新的点位队列 |
| sum | int | 总共要发的帧数 |
| count | int | 当前为第几帧 |
| PosVec | array | 坐标数组,坐标格式:机器人(前7个)+ 外部轴(后5个) |
点位发送的回复
命令字:0x95A6
json
{
"robot": 1,
"success": false,
"cause": "dataErr"
}参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| robot | int | 机器人编号 |
| success | bool | 是否成功接收 |
| cause | string | 失败原因,成功时为空;可选值:notStart(未开启伺服点位运动控制模式)、dataErr(数据错误)、termination(发送端终止了正在传输的数据)、cacheFull(缓存区已满,最大缓存6条轨迹) |