Appearance
码垛工艺
1 抓手
1.1 上位机设置抓手参数
说明: 抓手设置就是设置码垛过程中用到的工具手。两个吸盘分别取料(一个吸盘吸完后再切换到另一个吸盘取料),那么要设置成两个抓手;两个吸盘同时取料,则设置成一个抓手;如果两个吸盘分别放料(一个吸盘放完后切换到另一个吸盘放料),此时需要设置两个抓手;两个吸盘同时放料,则设置成一个抓手。
命令字: 0x8000
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| pallet.gripperNum | int | 抓手数目 | [1,4] |
| pallet.gripper | array | 抓手工具号数组,第i个数代表抓手i的工具号 | - |
json
{
"robot": 1,
"craftID": 1,
"pallet": {
"gripperNum": 2,
"gripper": [1, 3, 4, 1]
}
}1.2 上位机查询抓手参数
命令字: 0x8001
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
json
{
"robot": 1,
"craftID": 1
}1.3 控制器返回抓手参数
命令字: 0x8002
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| pallet.gripperNum | int | 抓手数目 | [1,4] |
| pallet.gripper | array | 抓手工具号数组,第i个数代表抓手i的工具号 | - |
json
{
"robot": 1,
"craftID": 1,
"pallet": {
"gripperNum": 2,
"gripper": [1, 3, 4, 1]
}
}2 托盘
2.1 上位机设置托盘参数
命令字: 0x8010
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| pallet.userNum | int | 用户坐标系 | - |
json
{
"robot": 1,
"craftID": 1,
"pallet": {
"userNum": 1
}
}2.2 上位机查询托盘参数
命令字: 0x8011
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
json
{
"robot": 1,
"craftID": 1
}2.3 控制器返回托盘参数
命令字: 0x8012
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| pallet.userNum | int | 用户坐标系 | - |
json
{
"robot": 1,
"craftID": 1,
"pallet": {
"userNum": 1
}
}2.4 上位机下发设置码垛托盘范围参数
命令字: 0x8013
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 表示要操作的机器人编号 | [1,4] |
| craftID | int | 码垛工艺号 | - |
| pallet.tray_preview | bool | 是否打开托盘预览 | true/false |
| pallet.tray_length | double | 托盘长 | (1,50000) |
| pallet.tray_width | double | 托盘宽 | (1,50000) |
json
{
"robot": 1,
"craftID": 1,
"pallet": {
"tray_preview": true,
"tray_length": 1,
"tray_width": 1
}
}2.5 上位机查询码垛托盘范围参数
命令字: 0x8014
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 表示要操作的机器人编号 | [1,4] |
| craftID | int | 码垛工艺号 | - |
json
{
"robot": 1,
"craftID": 1
}2.6 控制器回复托盘范围参数
命令字: 0x8015
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 表示要操作的机器人编号 | [1,4] |
| craftID | int | 码垛工艺号 | - |
| pallet.tray_preview | bool | 是否打开托盘预览 | true/false |
| pallet.tray_length | double | 托盘长 | (1,50000) |
| pallet.tray_width | double | 托盘宽 | (1,50000) |
json
{
"robot": 1,
"craftID": 1,
"pallet": {
"tray_preview": true,
"tray_length": 1,
"tray_width": 1
}
}3 位置
3.1 上位机设置位置参数
说明: 位置设置可以设置码垛工件点、辅助点、入口点,请带抓手设置所选的工具手进行位置标记。
命令字: 0x8020
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| pallet.floorNum | int | 标记原点所在层 | - |
| pallet.enterPos | array | 入口点,double类型,6个元素 | - |
| pallet.realPos | array | 工件点,double类型,6个元素 | - |
| pallet.shiftPos | array | 辅助点,double类型,6个元素 | - |
json
{
"robot": 1,
"craftID": 1,
"pallet": {
"floorNum": 1,
"enterPos": [9999.0, 9999.0, 9999.0, 9999.0, 9999.0, 9999.0],
"realPos": [9999.0, 9999.0, 9999.0, 9999.0, 9999.0, 9999.0],
"shiftPos": [9999.0, 9999.0, 9999.0, 9999.0, 9999.0, 9999.0]
}
}3.2 上位机查询位置参数
命令字: 0x8021
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
json
{
"robot": 1,
"craftID": 1
}3.3 控制器返回位置参数
命令字: 0x8022
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| pallet.floorNum | int | 标记原点所在层 | - |
| pallet.enterPos | array | 入口点,double类型,6个元素 | - |
| pallet.realPos | array | 工件点,double类型,6个元素 | - |
| pallet.shiftPos | array | 辅助点,double类型,6个元素 | - |
json
{
"robot": 1,
"craftID": 1,
"pallet": {
"floorNum": 1,
"enterPos": [9999.0, 9999.0, 9999.0, 9999.0, 9999.0, 9999.0],
"realPos": [9999.0, 9999.0, 9999.0, 9999.0, 9999.0, 9999.0],
"shiftPos": [9999.0, 9999.0, 9999.0, 9999.0, 9999.0, 9999.0]
}
}4 工件参数
4.1 上位机设置工件参数
命令字: 0x8030
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| pallet.workpieceGapX | double | 托盘X方向间隙 | [0,9999]mm |
| pallet.workpieceGapY | double | 托盘Y方向间隙 | [0,9999]mm |
| pallet.workpieceHeight | double | 高(托盘Z方向) | [1,9999]mm |
| pallet.workpieceLength | array | 长(托盘Y方向),double类型 | [1,9999]mm |
| pallet.workpieceWidth | array | 宽(托盘X方向),double类型 | [1,9999]mm |
json
{
"robot": 1,
"craftID": 1,
"pallet": {
"workpieceGapX": 0.0,
"workpieceGapY": 0.0,
"workpieceHeight": 1.0,
"workpieceLength": [1.0],
"workpieceWidth": [1.0]
}
}4.2 上位机查询工件参数
命令字: 0x8031
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
json
{
"robot": 1,
"craftID": 1
}4.3 控制器返回工件参数
命令字: 0x8032
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| pallet.workpieceGapX | double | 托盘X方向间隙 | [0,9999]mm |
| pallet.workpieceGapY | double | 托盘Y方向间隙 | [0,9999]mm |
| pallet.workpieceHeight | double | 高(托盘Z方向) | [1,9999]mm |
| pallet.workpieceLength | array | 长(托盘Y方向),double类型 | [1,9999]mm |
| pallet.workpieceWidth | array | 宽(托盘X方向),double类型 | [1,9999]mm |
json
{
"robot": 1,
"craftID": 1,
"pallet": {
"workpieceGapX": 0.0,
"workpieceGapY": 0.0,
"workpieceHeight": 1.0,
"workpieceLength": [1.0],
"workpieceWidth": [1.0]
}
}5 接近参数
5.1 上位机设置接近参数
命令字: 0x8040
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| pallet.workpieceApproEnable | bool | 接近使能 | true/false |
| pallet.workpieceApproMode | int | 接近方式 | 0:下降接近, 1:接近下降 |
| pallet.workpieceApproLenX | double | 托盘X方向长度 | [0,9999]mm |
| pallet.workpieceApproLenY | double | 托盘Y方向长度 | [0,9999]mm |
| pallet.workpieceApproLenZ | double | 托盘Z方向长度 | [0,9999]mm |
json
{
"robot": 1,
"craftID": 1,
"pallet": {
"workpieceApproEnable": false,
"workpieceApproMode": 0,
"workpieceApproLenX": 0,
"workpieceApproLenY": 0,
"workpieceApproLenZ": 0
}
}5.2 上位机查询接近参数
命令字: 0x8041
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
json
{
"robot": 1,
"craftID": 1
}5.3 控制器返回接近参数
命令字: 0x8042
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| pallet.workpieceApproEnable | bool | 接近使能 | true/false |
| pallet.workpieceApproMode | int | 接近方式 | 0:下降接近, 1:接近下降 |
| pallet.workpieceApproLenX | double | 托盘X方向长度 | [0,9999]mm |
| pallet.workpieceApproLenY | double | 托盘Y方向长度 | [0,9999]mm |
| pallet.workpieceApproLenZ | double | 托盘Z方向长度 | [0,9999]mm |
json
{
"robot": 1,
"craftID": 1,
"pallet": {
"workpieceApproEnable": false,
"workpieceApproMode": 0,
"workpieceApproLenX": 0,
"workpieceApproLenY": 0,
"workpieceApproLenZ": 0
}
}6 重叠模式参数
6.1 设置重叠模式参数
命令字: 0x8050
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| pallet.floorSum | int | 层数 | [1,999] |
| pallet.overlapType | int | 重复关系 | 0:相同, 1:交替, 2:自定义 |
| pallet.layHeightOffset | double | 放货点高度补偿 | - |
| pallet.fixedLayHeight | bool | 固定放货点高度 | true/false |
| pallet.fixedSupHeight | bool | 固定辅助点高度 | true/false |
| pallet.columnLay | bool | 竖直方向排列 | true/false |
| pallet.floorAutoJustified | bool | 层自动对齐 | true/false |
| pallet.poseAutorotation | bool | 姿态自动旋转 | true/false |
| pallet.fixedEnterPoint | bool | 固定入口点位置 | true/false |
| pallet.graphicNum | array | 图形编号 | [0,9] |
| pallet.heightRevise | array | 高度修正 | - |
json
{
"robot": 1,
"craftID": 1,
"pallet": {
"floorSum": 1,
"overlapType": 0,
"layHeightOffset": 0.0,
"fixedLayHeight": false,
"fixedSupHeight": false,
"columnLay": false,
"floorAutoJustified": false,
"poseAutorotation": false,
"fixedEnterPoint": false,
"graphicNum": [1, 2, 1, 2],
"heightRevise": [1.1, -2.2]
}
}6.2 上位机查询重叠模式参数
命令字: 0x8051
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
json
{
"robot": 1,
"craftID": 1
}6.3 控制器返回重叠模式参数
命令字: 0x8052
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| pallet.floorSum | int | 层数 | [1,999] |
| pallet.overlapType | int | 重复关系 | 0:相同, 1:交替, 2:自定义 |
| pallet.layHeightOffset | double | 放货点高度补偿 | - |
| pallet.fixedLayHeight | bool | 固定放货点高度 | true/false |
| pallet.fixedSupHeight | bool | 固定辅助点高度 | true/false |
| pallet.columnLay | bool | 竖直方向排列 | true/false |
| pallet.floorAutoJustified | bool | 层自动对齐 | true/false |
| pallet.poseAutorotation | bool | 姿态自动旋转 | true/false |
| pallet.fixedEnterPoint | bool | 固定入口点位置 | true/false |
| pallet.graphicNum | array | 图形编号 | [0,9] |
| pallet.heightRevise | array | 高度修正 | - |
json
{
"robot": 1,
"craftID": 1,
"pallet": {
"floorSum": 1,
"overlapType": 0,
"layHeightOffset": 0.0,
"fixedLayHeight": false,
"fixedSupHeight": false,
"columnLay": false,
"floorAutoJustified": false,
"poseAutorotation": false,
"fixedEnterPoint": false,
"graphicNum": [1, 2, 1, 2],
"heightRevise": [1.1, -2.2]
}
}7 平面模式参数
7.1 设置平面模式参数
命令字: 0x8060
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| graphic | int | 图形编号 | [1,9] |
| pallet.graphicType | int | 模版选择 | 0:行列, 1:纵横交错, 2:回字型, 3:五花垛, 4:自定义 |
| pallet.transLenX | double | X平移补偿 | [-9999,9999]mm |
| pallet.transLenY | double | Y平移补偿 | [-9999,9999]mm |
| pallet.ranks.numX | int | x方向个数 | [1,999] |
| pallet.ranks.numY | int | y方向个数 | [1,999] |
| pallet.ranks.rotationAngleWhole | int | 整体旋转角度 | 0:0, 1:90, 2:180, 3:-90 |
| pallet.ranks.rotationAngleSingle | int | 工件旋转角度 | 0:0, 1:90, 2:180, 3:-90 |
| pallet.ranks.autoCalculate | bool | 自动计算 | true/false |
| pallet.intertwining.numX | int | x方向个数 | [1,999] |
| pallet.intertwining.numY | int | y方向个数 | [1,999] |
| pallet.intertwining.rotationAngleWhole | int | 整体旋转角度 | 0:0, 1:90, 2:180, 3:-90 |
| pallet.intertwining.rotationAngleSingle | int | 工件旋转角度 | 0:0, 1:90, 2:180, 3:-90 |
| pallet.gearType.rotationAngleWhole | int | 整体旋转角度 | 0:0, 1:90, 2:180, 3:-90 |
| pallet.gearType.rotationAngleSingle | int | 工件旋转角度 | 0:0, 1:90, 2:180, 3:-90 |
| pallet.wideType.A_rows | int | A区行数 | [0,999] |
| pallet.wideType.B_rows | int | B区行数 | [1,999] |
| pallet.wideType.B_columns | int | B区列数 | [1,999] |
| pallet.wideType.C_rows | int | C区行数 | [0,999] |
| pallet.wideType.A_C_columns | int | A区和C区列数 | [0,999] |
| pallet.wideType.rotationAngleWhole | int | 整体旋转角度 | 0:0, 1:90, 2:180, 3:-90 |
| pallet.wideType.rotationAngleSingle | int | 工件旋转角度 | 0:0, 1:90, 2:180, 3:-90 |
| pallet.custom.sum | int | 层工件总数 | - |
| pallet.custom.start | int | 开始发送的工件号 | - |
| pallet.custom.count | int | 发送给控制器的层工件数,每次发送最大为10 | - |
| pallet.custom.eachVec[].X | double | X偏移 | [-9999,9999]mm |
| pallet.custom.eachVec[].Y | double | Y偏移 | [-9999,9999]mm |
| pallet.custom.eachVec[].t | double | 旋转角 | [-180,180] |
| pallet.custom.eachVec[].dir | int | 接近方向 | 0:上, 1:下, 2:左, 3:右, 4:左上, 5:左下, 6:右上, 7:右下 |
| pallet.custom.eachVec[].h | double | 高度修正 | [-9999,9999]mm |
| pallet.custom.eachVec[].EntrySpeed | double | 接近速度 | 0或[1,100]% |
| pallet.custom.eachVec[].LeaveSpeed | double | 离开速度 | 0或[1,100]% |
注意: 每次最多发送十组,若工件总数大于10,则要多次发送,非第一次发送时start需要改变。例如,第一次发送10组,第二次发送时start为11。
json
{
"robot": 1,
"craftID": 1,
"graphic": 1,
"pallet": {
"graphicType": 0,
"transLenX": 2.2,
"transLenY": -3.3,
"ranks": {
"numX": 0,
"numY": 0,
"rotationAngleWhole": 0,
"rotationAngleSingle": 0,
"autoCalculate": true
},
"intertwining": {
"numX": 0,
"numY": 0,
"rotationAngleWhole": 0,
"rotationAngleSingle": 0
},
"gearType": {
"rotationAngleWhole": 0,
"rotationAngleSingle": 0
},
"wideType": {
"A_rows": 1,
"B_rows": 1,
"B_columns": 1,
"C_rows": 1,
"A_C_columns": 1,
"rotationAngleWhole": 0.0,
"rotationAngleSingle": 0.0
},
"custom": {
"sum": 20,
"start": 1,
"count": 10,
"eachVec": [
{
"X": 0,
"Y": 0,
"t": 0,
"dir": 0,
"h": 0,
"EntrySpeed": 60.0,
"LeaveSpeed": 3.0
}
]
}
}
}7.2 上位机查询平面模式参数
命令字: 0x8061
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| graphic | int | 图形编号 | [1,9] |
json
{
"robot": 1,
"craftID": 1,
"graphic": 1
}7.3 控制器返回平面模式参数
命令字: 0x8060
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| graphic | int | 图形编号 | [1,9] |
| pallet.graphicType | int | 模版选择 | 0:行列, 1:纵横交错, 2:回字型, 3:五花垛, 4:自定义 |
| pallet.transLenX | double | X平移补偿 | [-9999,9999]mm |
| pallet.transLenY | double | Y平移补偿 | [-9999,9999]mm |
| pallet.ranks.numX | int | x方向个数 | [1,999] |
| pallet.ranks.numY | int | y方向个数 | [1,999] |
| pallet.ranks.rotationAngleWhole | int | 整体旋转角度 | 0:0, 1:90, 2:180, 3:-90 |
| pallet.ranks.rotationAngleSingle | int | 工件旋转角度 | 0:0, 1:90, 2:180, 3:-90 |
| pallet.ranks.autoCalculate | bool | 自动计算 | true/false |
| pallet.intertwining.numX | int | x方向个数 | [1,999] |
| pallet.intertwining.numY | int | y方向个数 | [1,999] |
| pallet.intertwining.rotationAngleWhole | int | 整体旋转角度 | 0:0, 1:90, 2:180, 3:-90 |
| pallet.intertwining.rotationAngleSingle | int | 工件旋转角度 | 0:0, 1:90, 2:180, 3:-90 |
| pallet.gearType.rotationAngleWhole | int | 整体旋转角度 | 0:0, 1:90, 2:180, 3:-90 |
| pallet.gearType.rotationAngleSingle | int | 工件旋转角度 | 0:0, 1:90, 2:180, 3:-90 |
| pallet.wideType.A_rows | int | A区行数 | [0,999] |
| pallet.wideType.B_rows | int | B区行数 | [1,999] |
| pallet.wideType.B_columns | int | B区列数 | [1,999] |
| pallet.wideType.C_rows | int | C区行数 | [0,999] |
| pallet.wideType.A_C_columns | int | A区和C区列数 | [0,999] |
| pallet.wideType.rotationAngleWhole | int | 整体旋转角度 | 0:0, 1:90, 2:180, 3:-90 |
| pallet.wideType.rotationAngleSingle | int | 工件旋转角度 | 0:0, 1:90, 2:180, 3:-90 |
| pallet.custom.sum | int | 层工件总数 | - |
| pallet.custom.start | int | 开始发送的工件号 | - |
| pallet.custom.count | int | 发送给控制器的层工件数,每次发送最大为10 | - |
| pallet.custom.eachVec[].X | double | X偏移 | [-9999,9999]mm |
| pallet.custom.eachVec[].Y | double | Y偏移 | [-9999,9999]mm |
| pallet.custom.eachVec[].t | double | 旋转角 | [-180,180] |
| pallet.custom.eachVec[].dir | int | 接近方向 | 0:上, 1:下, 2:左, 3:右, 4:左上, 5:左下, 6:右上, 7:右下 |
| pallet.custom.eachVec[].h | double | 高度修正 | [-9999,9999]mm |
| pallet.custom.eachVec[].EntrySpeed | double | 接近速度 | 0或[1,100]% |
| pallet.custom.eachVec[].LeaveSpeed | double | 离开速度 | 0或[1,100]% |
json
{
"robot": 1,
"craftID": 1,
"graphic": 1,
"pallet": {
"graphicType": 0,
"transLenX": 2.2,
"transLenY": -3.3,
"ranks": {
"numX": 0,
"numY": 0,
"rotationAngleWhole": 0,
"rotationAngleSingle": 0,
"autoCalculate": true
},
"intertwining": {
"numX": 0,
"numY": 0,
"rotationAngleWhole": 0,
"rotationAngleSingle": 0
},
"gearType": {
"rotationAngleWhole": 0,
"rotationAngleSingle": 0
},
"wideType": {
"A_rows": 1,
"B_rows": 1,
"B_columns": 1,
"C_rows": 1,
"A_C_columns": 1,
"rotationAngleWhole": 0.0,
"rotationAngleSingle": 0.0
},
"custom": {
"sum": 20,
"start": 1,
"count": 10,
"eachVec": [
{
"X": 0,
"Y": 0,
"t": 0,
"dir": 0,
"h": 0,
"EntrySpeed": 60.0,
"LeaveSpeed": 3.0
}
]
}
}
}7.4 请求转换为平面模式自定义模板
命令字: 0x8063
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| graphic | int | 图形编号 | [1,9] |
json
{
"robot": 1,
"craftID": 1,
"graphic": 1
}7.5 控制器返回转换为平面模式自定义模板后对应参数
命令字: 0x8064
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| graphic | int | 图形编号 | [1,9] |
| pallet.graphicType | int | 模版选择(此处只能取3) | 3:自定义 |
| pallet.transLenX | double | X平移补偿 | [-9999,9999]mm |
| pallet.transLenY | double | Y平移补偿 | [-9999,9999]mm |
| pallet.autoTransLenX | double | X自动平移距离 | - |
| pallet.autoTransLenY | double | Y自动平移距离 | - |
| pallet.custom | object | 自定义参数(同上) | - |
json
{
"robot": 1,
"craftID": 1,
"graphic": 1,
"pallet": {
"graphicType": 3,
"transLenX": 2.2,
"transLenY": -3.3,
"autoTransLenX": 4.4,
"autoTransLenY": 5.5,
"custom": {
"sum": 20,
"start": 1,
"count": 10,
"eachVec": [
{
"X": 0,
"Y": 0,
"t": 0,
"dir": 0,
"h": 0
}
]
}
}
}7.6 上位机请求平面模式预览
命令字: 0x8065
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| graphic | int | 图形编号 | [1,9] |
json
{
"robot": 1,
"craftID": 1,
"graphic": 1
}7.7 控制器返回平面模式预览参数
命令字: 0x8066
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| graphic | int | 图形编号 | [1,9] |
| pallet.workpieceLength | int | 每个工件的长度 | [0,9999]mm |
| pallet.workpieceWidth | int | 每个工件的宽度 | [0,9999]mm |
| pallet.sum | int | 层工件总数 | - |
| pallet.start | int | 开始发送的工件号 | - |
| pallet.count | int | 发送给控制器的层工件数,每次发送最大为10 | - |
| pallet.tray.x | double | 托盘x坐标 | - |
| pallet.tray.y | double | 托盘y坐标 | - |
| pallet.eachVec[].X | double | X偏移 | [-9999,9999]mm |
| pallet.eachVec[].Y | double | Y偏移 | [-9999,9999]mm |
| pallet.eachVec[].t | double | 旋转角 | [-180,180] |
json
{
"robot": 1,
"craftID": 1,
"graphic": 1,
"pallet": {
"workpieceLength": 1,
"workpieceWidth": 1,
"sum": 20,
"start": 1,
"count": 10,
"tray": {
"x": 0.0,
"y": 0.0
},
"eachVec": [
{
"X": 0,
"Y": 0,
"t": 0
}
]
}
}7.8 查询完整码垛平面模式自动计算结果
命令字: 0x806A
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
json
{
"robot": 1,
"craftID": 1
}7.9 控制器返回完整码垛平面模式自动计算结果
命令字: 0x806B
| 参数名 | 类型 | 说明 |
|---|---|---|
| pallet.ranks.numX | int | X方向个数 |
| pallet.ranks.numY | int | Y方向个数 |
json
{
"pallet": {
"ranks": {
"numX": 0,
"numY": 0
}
}
}7.10 平面模式自定义模式预览(不保存参数和结果)
命令字: 0x8067
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| graphic | int | 图形编号 | [1,9] |
| pallet.workpieceLength | int | 每个工件的长度 | [0,9999]mm |
| pallet.workpieceWidth | int | 每个工件的宽度 | [0,9999]mm |
| pallet.sum | int | 层工件总数 | - |
| pallet.start | int | 开始发送的工件号 | - |
| pallet.count | int | 发送给控制器的层工件数,每次发送最大为10 | - |
| pallet.tray.x | double | 托盘x坐标 | - |
| pallet.tray.y | double | 托盘y坐标 | - |
| pallet.eachVec[].X | double | X偏移 | [-9999,9999]mm |
| pallet.eachVec[].Y | double | Y偏移 | [-9999,9999]mm |
| pallet.eachVec[].t | double | 旋转角 | [-180,180] |
json
{
"robot": 1,
"craftID": 1,
"graphic": 1,
"pallet": {
"workpieceLength": 1,
"workpieceWidth": 1,
"sum": 20,
"start": 1,
"count": 10,
"tray": {
"x": 0.0,
"y": 0.0
},
"eachVec": [
{
"X": 0,
"Y": 0,
"t": 0
}
]
}
}7.11 控制器返回平面模式自定义模式预览
命令字: 0x8068
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| graphic | int | 图形编号 | [1,9] |
| pallet.workpieceLength | int | 每个工件的长度 | [0,9999]mm |
| pallet.workpieceWidth | int | 每个工件的宽度 | [0,9999]mm |
| pallet.sum | int | 层工件总数 | - |
| pallet.start | int | 开始发送的工件号 | - |
| pallet.count | int | 发送给控制器的层工件数,每次发送最大为10 | - |
| pallet.tray.x | double | 托盘x坐标 | - |
| pallet.tray.y | double | 托盘y坐标 | - |
| pallet.eachVec[].X | double | X偏移 | [-9999,9999]mm |
| pallet.eachVec[].Y | double | Y偏移 | [-9999,9999]mm |
| pallet.eachVec[].t | double | 旋转角 | [-180,180] |
json
{
"robot": 1,
"craftID": 1,
"graphic": 1,
"pallet": {
"workpieceLength": 1,
"workpieceWidth": 1,
"sum": 20,
"start": 1,
"count": 10,
"tray": {
"x": 0.0,
"y": 0.0
},
"eachVec": [
{
"X": 0,
"Y": 0,
"t": 0
}
]
}
}8 复制层图形参数
8.1 复制层图形参数
命令字: 0x8069
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID_source | int | 要复制的工艺号 | - |
| craftID_target | int | 复制到的工艺号 | - |
| graphic_source | int | 要复制的图形层 | - |
| graphic_target | int | 复制到的图形层 | - |
json
{
"robot": 1,
"craftID_source": 1,
"craftID_target": 2,
"graphic_source": 1,
"graphic_target": 2
}9 码垛状态
9.1 设置码垛状态
命令字: 0x80A0
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| graphic | int | 图形编号 | [1,9] |
| pallet.curLayerNum | int | 当前层数 | - |
| pallet.curLayerPalletedWpNum | int | 当前层已码工件数 | - |
json
{
"robot": 1,
"craftID": 1,
"pallet": {
"curLayerNum": 1,
"curLayerPalletedWpNum": 5
}
}9.2 上位机查询码垛状态
命令字: 0x80A1
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
json
{
"robot": 1,
"craftID": 1
}9.3 控制器返回码垛状态
命令字: 0x80A2
| 参数名 | 类型 | 说明 |
|---|---|---|
| robot | int | 当前机器人 |
| craftID | int | 工艺号 |
| graphic | int | 图形编号 |
| pallet.totalWpNum | int | 总工件数 |
| pallet.totalLayerNum | int | 总层数 |
| pallet.curPalletedWpSum | int | 当前已码总工件数 |
| pallet.curLayerNum | int | 当前层数 |
| pallet.curLayerPalletedWpNum | int | 当前层已码工件数 |
| pallet.curLayerWpSum | int | 当前层总工件数 |
json
{
"robot": 1,
"craftID": 1,
"pallet": {
"totalWpNum": 20,
"totalLayerNum": 2,
"curPalletedWpSum": 5,
"curLayerNum": 1,
"curLayerPalletedWpNum": 5,
"curLayerWpSum": 10
}
}10 码垛类型
10.1 上位机切换使用码垛类型
命令字: 0x80B2
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| usePalletType | int | 码垛类型 | 0:简易, 1:完整, 2:未定义 |
| craftNote | string | 标记 | - |
json
{
"robot": 1,
"craftID": 1,
"usePalletType": 0,
"craftNote": ""
}10.2 上位机查询当前使用码垛类型
命令字: 0x80B3
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
json
{
"robot": 1,
"craftID": 1
}10.3 控制器返回当前使用码垛类型
命令字: 0x80B4
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| usePalletType | int | 码垛类型 | 0:简易, 1:完整, 2:未定义 |
| craftNote | string | 标记 | - |
json
{
"robot": 1,
"craftID": 1,
"usePalletType": 0,
"craftNote": ""
}11 简易码垛
11.1 设置简易码垛位置
命令字: 0x80C0
| 参数名 | 类型 | 说明 |
|---|---|---|
| robot | int | 当前机器人 |
| craftID | int | 工艺号 |
| O | array | 工件起始点,直角坐标系下的末端位姿 |
| X | array | 列末端,直角坐标系下的末端位姿 |
| Y | array | 行末端,直角坐标系下的末端位姿 |
| shift | array | 辅助点,直角坐标系下的末端位姿 |
| enter | array | 入口点,直角坐标系下的末端位姿 |
| numX | int | 行数 |
| numY | int | 列数 |
| numZ | int | 层数 |
| useAcrossCorner | bool | 是否使用对角末端,true:是, false:否 |
json
{
"robot": 1,
"craftID": 1,
"O": [1, 2, 3, 4, 5, 6],
"X": [1, 2, 3, 4, 5, 6],
"Y": [1, 2, 3, 4, 5, 6],
"shift": [1, 2, 3, 4, 5, 6],
"enter": [1, 2, 3, 4, 5, 6],
"numX": 1,
"numY": 1,
"numZ": 1,
"useAcrossCorner": true
}11.2 上位机查询简易码垛位置
命令字: 0x80C1
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
json
{
"robot": 1,
"craftID": 1
}11.3 控制器返回简易码垛位置
命令字: 0x80C2
| 参数名 | 类型 | 说明 |
|---|---|---|
| robot | int | 当前机器人 |
| craftID | int | 工艺号 |
| O | array | 工件起始点(弧度制) |
| ODeg | array | 工件起始点(角度制) |
| X | array | 列末端(弧度制) |
| XDeg | array | 列末端(角度制) |
| Y | array | 行末端(弧度制) |
| YDeg | array | 行末端(角度制) |
| shift | array | 辅助点(弧度制) |
| shiftDeg | array | 辅助点(角度制) |
| enter | array | 入口点(弧度制) |
| enterDeg | array | 入口点(角度制) |
| acrossCorner | array | 对角末端(弧度制) |
| acrossCornerDeg | array | 对角末端(角度制) |
| numX | int | 行数 |
| numY | int | 列数 |
| numZ | int | 层数 |
json
{
"robot": 1,
"craftID": 1,
"O": [1, 2, 3, 4, 5, 6],
"ODeg": [1, 2, 3, 4, 5, 6],
"X": [1, 2, 3, 4, 5, 6],
"XDeg": [1, 2, 3, 4, 5, 6],
"Y": [1, 2, 3, 4, 5, 6],
"YDeg": [1, 2, 3, 4, 5, 6],
"shift": [1, 2, 3, 4, 5, 6],
"shiftDeg": [1, 2, 3, 4, 5, 6],
"enter": [1, 2, 3, 4, 5, 6],
"enterDeg": [1, 2, 3, 4, 5, 6],
"acrossCorner": [1, 2, 3, 4, 5, 6],
"acrossCornerDeg": [1, 2, 3, 4, 5, 6],
"numX": 1,
"numY": 1,
"numZ": 1
}11.4 设置简易码垛抓手参数
命令字: 0x80C3
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| pallet.gripperNum | int | 抓手个数 | [1,4] |
| pallet.gripper | array | 抓手工具号数组 | - |
json
{
"robot": 1,
"craftID": 1,
"pallet": {
"gripperNum": 4,
"gripper": [1, 3, 4, 1]
}
}11.5 上位机查询简易码垛抓手参数
命令字: 0x80C4
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
json
{
"robot": 1,
"craftID": 1
}11.6 控制器返回简易码垛抓手参数
命令字: 0x80C5
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| pallet.gripperNum | int | 抓手个数 | [1,4] |
| pallet.gripper | array | 抓手工具号数组 | - |
json
{
"robot": 1,
"craftID": 1,
"pallet": {
"gripperNum": 4,
"gripper": [1, 3, 4, 1]
}
}12 码垛复位
12.1 码垛复位
命令字: 0x80A3
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| gripper | int | 抓手工具号 | [1,9] |
json
{
"robot": 1,
"craftID": 1
}13 复制与清空
13.1 复制码垛参数
命令字: 0x80B0
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID_source | int | 要复制的工艺号 | - |
| craftID_target | int | 复制到的工艺号 | - |
json
{
"robot": 1,
"craftID_source": 1,
"craftID_target": 2
}13.2 清空码垛参数
命令字: 0x80B1
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
json
{
"robot": 1,
"craftID": 1
}14 点位调试界面
14.1 上位机获取当前层全部工件数据
命令字: 0x8080
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craft | int | 工艺号 | - |
| layer | int | 当前层 | - |
| clear | int | 是否清空缓存,1:清空缓存, 0:不清 | - |
json
{
"robot": 1,
"craft": 1,
"layer": 1,
"clear": 0
}14.2 控制器回复当前层全部工件数据
命令字: 0x8081
| 参数名 | 类型 | 说明 |
|---|---|---|
| robot | int | 当前机器人 |
| craft | int | 工艺号 |
| layer | int | 当前层 |
| sumLayer | int | 总层数 |
| length.L | int | 长 |
| length.W | int | 宽 |
| overLimit.over | int | 0:无超限, 1:入口点超限, 2:辅助点超限, 3:工件点超限 |
| overLimit.layer | int | 超限层 |
| overLimit.num | int | 超限工件号 |
| pallet.sum | int | 层工件总数 |
| pallet.count | int | 发送给控制器的层工件数 |
| pallet.start | int | 开始发送的工件号 |
| pallet.tray_length | double | 托盘长 |
| pallet.tray_width | double | 托盘宽 |
| pallet.tray.x | double | 托盘x坐标 |
| pallet.tray.y | double | 托盘y坐标 |
| pallet.eachVec[].X | double | X坐标 |
| pallet.eachVec[].Y | double | Y坐标 |
| pallet.eachVec[].Z | double | Z坐标 |
| pallet.eachVec[].t | double | 旋转角 |
| pallet.eachVec[].over | int | 0:无超限, 1:入口点不可达, 2:辅助点不可达, 3:工件点不可达 |
json
{
"robot": 1,
"craft": 1,
"layer": 1,
"sumLayer": 10,
"length": {
"L": 10,
"W": 10
},
"overLimit": {
"over": 1,
"layer": 1,
"num": 2
},
"pallet": {
"sum": 25,
"count": 10,
"start": 1,
"tray_length": 5,
"tray_width": 5,
"tray": {
"x": 0,
"y": 0
},
"eachVec": [
{
"X": 0,
"Y": 0,
"Z": 0,
"t": 0,
"over": 0
}
]
}
}14.3 码垛工艺号查询
命令字: 0x8082
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craft | int | 工艺号 | - |
json
{
"robot": 1,
"craft": 1
}14.4 控制器回复码垛工艺号查询结果
命令字: 0x8083
| 参数名 | 类型 | 说明 |
|---|---|---|
| robot | int | 当前机器人 |
| craft | int | 工艺号 |
| _palletNumIsTooMore | bool | 码垛数量是否过多 |
json
{
"robot": 1,
"craft": 1,
"_palletNumIsTooMore": true
}14.5 上位机获取抓手对应工具手
命令字: 0x808B
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craft | int | 工艺号 | - |
| gripper | int | 抓手号 | - |
json
{
"robot": 1,
"craft": 1,
"gripper": 1
}14.6 控制器返回
命令字: 0x808C
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craft | int | 工艺号 | - |
| tool | int | 工具手号 | - |
json
{
"robot": 1,
"craft": 1,
"tool": 1
}14.7 上位机设置整体偏移
命令字: 0x8084
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craft | int | 工艺号 | - |
| layer | int | 当前层 | - |
| transLenX | double | X偏移 | - |
| transLenY | double | Y偏移 | - |
| transLenZ | double | Z偏移 | - |
| rotationAngle | double | 偏移角度 | - |
json
{
"robot": 1,
"craft": 1,
"layer": 1,
"transLenX": 0,
"transLenY": 0,
"transLenZ": 0,
"rotationAngle": 0
}14.8 应用到相同层
命令字: 0x8085
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craft | int | 工艺号 | - |
| layer | int | 层 | - |
json
{
"robot": 1,
"craft": 1,
"layer": 1
}14.9 修改单个工件位置
命令字: 0x8086
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craft | int | 工艺号 | - |
| layer | int | 层 | - |
| num | int | 当前工件 | - |
| mode | int | 设置方式 | 0:直接设置xyz, 1:使用机器人当前位置 |
| X | double | X偏移 | [-9999,9999]mm |
| Y | double | Y偏移 | [-9999,9999]mm |
| Z | double | Z偏移 | [-9999,9999]mm |
| angle | double | 旋转角 | [-180,180] |
json
{
"robot": 1,
"craft": 1,
"layer": 1,
"num": 1,
"mode": 0,
"X": 0.1,
"Y": 0.1,
"Z": 0.1,
"angle": 0
}14.10 获取单个工件位置
命令字: 0x8087
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craft | int | 工艺号 | - |
| layer | int | 层 | - |
| num | int | 当前工件 | - |
json
{
"robot": 1,
"craft": 1,
"layer": 1,
"num": 1
}14.11 控制器回复单个工件位置
命令字: 0x8088
| 参数名 | 类型 | 说明 |
|---|---|---|
| ApproachMode | int | 接近方式 |
| DepartureSpeed | double | 离开速度 |
| EntryConfiguration | int | 入口配置 |
| EntrySpeed | double | 接近速度 |
| RealConfiguration | int | 实际配置 |
| ShiftConfiguration | int | 辅助配置 |
| X | double | X坐标 |
| Y | double | Y坐标 |
| Z | double | Z坐标 |
| craft | int | 工艺号 |
| layer | int | 层 |
| num | int | 当前工件 |
| over | int | 超限标志 |
| overLimit.layer | int | 超限层 |
| overLimit.num | int | 超限工件号 |
| overLimit.over | int | 超限类型 |
| reference | int | 参考点 |
| robot | int | 当前机器人 |
| t | double | 旋转角 |
json
{
"ApproachMode": 0,
"DepartureSpeed": 0.0,
"EntryConfiguration": 0,
"EntrySpeed": 0.0,
"RealConfiguration": 0,
"ShiftConfiguration": 0,
"X": 0.0,
"Y": 0.0,
"Z": 0.0,
"craft": 7,
"layer": 1,
"num": 1,
"over": 3,
"overLimit": {
"layer": 1,
"num": 1,
"over": 3
},
"reference": 1,
"robot": 1,
"t": 0.0
}14.12 将点位调试内容从缓存保存到文件中
命令字: 0x8089
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craft | int | 工艺号 | - |
| gripper | int | 抓手号 | - |
json
{
"robot": 1,
"craft": 1,
"gripper": 1
}14.13 运动到工件点/辅助点/入口点
命令字: 0x808A
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craft | int | 工艺号 | - |
| layer | int | 层 | - |
| num | int | 当前工件 | - |
| tool | int | 工具手 | - |
| type | int | 运动到的点 | 0:入口点, 1:辅助点, 2:工件点 |
json
{
"robot": 1,
"craft": 1,
"layer": 1,
"num": 1,
"tool": 1,
"type": 0
}14.14 设置接近/离开方式
命令字: 0x80C7
| 参数名 | 类型 | 说明 | 取值范围 |
|---|---|---|---|
| robot | int | 当前机器人 | [1,4] |
| craftID | int | 工艺号 | - |
| approMoveType | int | 接近/离开方式 | - |
json
{
"robot": 1,
"craftID": 1,
"approMoveType": 1
}