Palletizing Process
1 Gripper
1.1 Upper Computer Sets Gripper Parameters
Description: Gripper setting configures the tool hands used during palletizing. If two suction cups pick parts separately (one picks, then switches to the other), two grippers must be configured; if two suction cups pick parts simultaneously, one gripper is configured. If two suction cups place parts separately (one places, then switches to the other), two grippers must be configured; if two suction cups place parts simultaneously, one gripper is configured.
Command: 0x8000
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| pallet.gripperNum | int | Number of grippers | [1,4] |
| pallet.gripper | array | Gripper tool number array, the i-th element represents the tool number of gripper i | - |
{
"robot": 1,
"craftID": 1,
"pallet": {
"gripperNum": 2,
"gripper": [1, 3, 4, 1]
}
}1.2 Upper Computer Queries Gripper Parameters
Command: 0x8001
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
{
"robot": 1,
"craftID": 1
}1.3 Controller Returns Gripper Parameters
Command: 0x8002
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| pallet.gripperNum | int | Number of grippers | [1,4] |
| pallet.gripper | array | Gripper tool number array, the i-th element represents the tool number of gripper i | - |
{
"robot": 1,
"craftID": 1,
"pallet": {
"gripperNum": 2,
"gripper": [1, 3, 4, 1]
}
}2 Pallet
2.1 Upper Computer Sets Pallet Parameters
Command: 0x8010
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| pallet.userNum | int | User coordinate frame | - |
{
"robot": 1,
"craftID": 1,
"pallet": {
"userNum": 1
}
}2.2 Upper Computer Queries Pallet Parameters
Command: 0x8011
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
{
"robot": 1,
"craftID": 1
}2.3 Controller Returns Pallet Parameters
Command: 0x8012
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| pallet.userNum | int | User coordinate frame | - |
{
"robot": 1,
"craftID": 1,
"pallet": {
"userNum": 1
}
}2.4 Upper Computer Sets Palletizing Pallet Range Parameters
Command: 0x8013
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Robot number to operate | [1,4] |
| craftID | int | Palletizing process number | - |
| pallet.tray_preview | bool | Whether to enable tray preview | true/false |
| pallet.tray_length | double | Tray length | (1,50000) |
| pallet.tray_width | double | Tray width | (1,50000) |
{
"robot": 1,
"craftID": 1,
"pallet": {
"tray_preview": true,
"tray_length": 1,
"tray_width": 1
}
}2.5 Upper Computer Queries Palletizing Pallet Range Parameters
Command: 0x8014
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Robot number to operate | [1,4] |
| craftID | int | Palletizing process number | - |
{
"robot": 1,
"craftID": 1
}2.6 Controller Returns Pallet Range Parameters
Command: 0x8015
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Robot number to operate | [1,4] |
| craftID | int | Palletizing process number | - |
| pallet.tray_preview | bool | Whether to enable tray preview | true/false |
| pallet.tray_length | double | Tray length | (1,50000) |
| pallet.tray_width | double | Tray width | (1,50000) |
{
"robot": 1,
"craftID": 1,
"pallet": {
"tray_preview": true,
"tray_length": 1,
"tray_width": 1
}
}3 Position
3.1 Upper Computer Sets Position Parameters
Description: Position setting configures palletizing workpiece points, auxiliary points, and entry points. Please set the selected tool hand with the gripper for position marking.
Command: 0x8020
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| pallet.floorNum | int | Layer where the origin is marked | - |
| pallet.enterPos | array | Entry point, double type, 6 elements | - |
| pallet.realPos | array | Workpiece point, double type, 6 elements | - |
| pallet.shiftPos | array | Auxiliary point, double type, 6 elements | - |
{
"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 Upper Computer Queries Position Parameters
Command: 0x8021
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
{
"robot": 1,
"craftID": 1
}3.3 Controller Returns Position Parameters
Command: 0x8022
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| pallet.floorNum | int | Layer where the origin is marked | - |
| pallet.enterPos | array | Entry point, double type, 6 elements | - |
| pallet.realPos | array | Workpiece point, double type, 6 elements | - |
| pallet.shiftPos | array | Auxiliary point, double type, 6 elements | - |
{
"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 Workpiece Parameters
4.1 Upper Computer Sets Workpiece Parameters
Command: 0x8030
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| pallet.workpieceGapX | double | Gap in tray X direction | [0,9999]mm |
| pallet.workpieceGapY | double | Gap in tray Y direction | [0,9999]mm |
| pallet.workpieceHeight | double | Height (tray Z direction) | [1,9999]mm |
| pallet.workpieceLength | array | Length (tray Y direction), double type | [1,9999]mm |
| pallet.workpieceWidth | array | Width (tray X direction), double type | [1,9999]mm |
{
"robot": 1,
"craftID": 1,
"pallet": {
"workpieceGapX": 0.0,
"workpieceGapY": 0.0,
"workpieceHeight": 1.0,
"workpieceLength": [1.0],
"workpieceWidth": [1.0]
}
}4.2 Upper Computer Queries Workpiece Parameters
Command: 0x8031
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
{
"robot": 1,
"craftID": 1
}4.3 Controller Returns Workpiece Parameters
Command: 0x8032
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| pallet.workpieceGapX | double | Gap in tray X direction | [0,9999]mm |
| pallet.workpieceGapY | double | Gap in tray Y direction | [0,9999]mm |
| pallet.workpieceHeight | double | Height (tray Z direction) | [1,9999]mm |
| pallet.workpieceLength | array | Length (tray Y direction), double type | [1,9999]mm |
| pallet.workpieceWidth | array | Width (tray X direction), double type | [1,9999]mm |
{
"robot": 1,
"craftID": 1,
"pallet": {
"workpieceGapX": 0.0,
"workpieceGapY": 0.0,
"workpieceHeight": 1.0,
"workpieceLength": [1.0],
"workpieceWidth": [1.0]
}
}5 Approach Parameters
5.1 Upper Computer Sets Approach Parameters
Command: 0x8040
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| pallet.workpieceApproEnable | bool | Approach enable | true/false |
| pallet.workpieceApproMode | int | Approach mode | 0: Descent-then-approach, 1: Approach-then-descent |
| pallet.workpieceApproLenX | double | Length in tray X direction | [0,9999]mm |
| pallet.workpieceApproLenY | double | Length in tray Y direction | [0,9999]mm |
| pallet.workpieceApproLenZ | double | Length in tray Z direction | [0,9999]mm |
{
"robot": 1,
"craftID": 1,
"pallet": {
"workpieceApproEnable": false,
"workpieceApproMode": 0,
"workpieceApproLenX": 0,
"workpieceApproLenY": 0,
"workpieceApproLenZ": 0
}
}5.2 Upper Computer Queries Approach Parameters
Command: 0x8041
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
{
"robot": 1,
"craftID": 1
}5.3 Controller Returns Approach Parameters
Command: 0x8042
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| pallet.workpieceApproEnable | bool | Approach enable | true/false |
| pallet.workpieceApproMode | int | Approach mode | 0: Descent-then-approach, 1: Approach-then-descent |
| pallet.workpieceApproLenX | double | Length in tray X direction | [0,9999]mm |
| pallet.workpieceApproLenY | double | Length in tray Y direction | [0,9999]mm |
| pallet.workpieceApproLenZ | double | Length in tray Z direction | [0,9999]mm |
{
"robot": 1,
"craftID": 1,
"pallet": {
"workpieceApproEnable": false,
"workpieceApproMode": 0,
"workpieceApproLenX": 0,
"workpieceApproLenY": 0,
"workpieceApproLenZ": 0
}
}6 Overlap Mode Parameters
6.1 Set Overlap Mode Parameters
Command: 0x8050
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| pallet.floorSum | int | Number of layers | [1,999] |
| pallet.overlapType | int | Repeat pattern | 0: Identical, 1: Alternating, 2: Custom |
| pallet.layHeightOffset | double | Place point height compensation | - |
| pallet.fixedLayHeight | bool | Fixed place point height | true/false |
| pallet.fixedSupHeight | bool | Fixed auxiliary point height | true/false |
| pallet.columnLay | bool | Vertical arrangement | true/false |
| pallet.floorAutoJustified | bool | Layer auto-alignment | true/false |
| pallet.poseAutorotation | bool | Pose auto-rotation | true/false |
| pallet.fixedEnterPoint | bool | Fixed entry point position | true/false |
| pallet.graphicNum | array | Graphic number | [0,9] |
| pallet.heightRevise | array | Height correction | - |
{
"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 Upper Computer Queries Overlap Mode Parameters
Command: 0x8051
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
{
"robot": 1,
"craftID": 1
}6.3 Controller Returns Overlap Mode Parameters
Command: 0x8052
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| pallet.floorSum | int | Number of layers | [1,999] |
| pallet.overlapType | int | Repeat pattern | 0: Identical, 1: Alternating, 2: Custom |
| pallet.layHeightOffset | double | Place point height compensation | - |
| pallet.fixedLayHeight | bool | Fixed place point height | true/false |
| pallet.fixedSupHeight | bool | Fixed auxiliary point height | true/false |
| pallet.columnLay | bool | Vertical arrangement | true/false |
| pallet.floorAutoJustified | bool | Layer auto-alignment | true/false |
| pallet.poseAutorotation | bool | Pose auto-rotation | true/false |
| pallet.fixedEnterPoint | bool | Fixed entry point position | true/false |
| pallet.graphicNum | array | Graphic number | [0,9] |
| pallet.heightRevise | array | Height correction | - |
{
"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 Plane Mode Parameters
7.1 Set Plane Mode Parameters
Command: 0x8060
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| graphic | int | Graphic number | [1,9] |
| pallet.graphicType | int | Template selection | 0: Row-column, 1: Interlaced, 2: Spiral, 3: Five-pattern, 4: Custom |
| pallet.transLenX | double | X translation compensation | [-9999,9999]mm |
| pallet.transLenY | double | Y translation compensation | [-9999,9999]mm |
| pallet.ranks.numX | int | Count in X direction | [1,999] |
| pallet.ranks.numY | int | Count in Y direction | [1,999] |
| pallet.ranks.rotationAngleWhole | int | Overall rotation angle | 0:0, 1:90, 2:180, 3:-90 |
| pallet.ranks.rotationAngleSingle | int | Workpiece rotation angle | 0:0, 1:90, 2:180, 3:-90 |
| pallet.ranks.autoCalculate | bool | Auto-calculate | true/false |
| pallet.intertwining.numX | int | Count in X direction | [1,999] |
| pallet.intertwining.numY | int | Count in Y direction | [1,999] |
| pallet.intertwining.rotationAngleWhole | int | Overall rotation angle | 0:0, 1:90, 2:180, 3:-90 |
| pallet.intertwining.rotationAngleSingle | int | Workpiece rotation angle | 0:0, 1:90, 2:180, 3:-90 |
| pallet.gearType.rotationAngleWhole | int | Overall rotation angle | 0:0, 1:90, 2:180, 3:-90 |
| pallet.gearType.rotationAngleSingle | int | Workpiece rotation angle | 0:0, 1:90, 2:180, 3:-90 |
| pallet.wideType.A_rows | int | Rows in zone A | [0,999] |
| pallet.wideType.B_rows | int | Rows in zone B | [1,999] |
| pallet.wideType.B_columns | int | Columns in zone B | [1,999] |
| pallet.wideType.C_rows | int | Rows in zone C | [0,999] |
| pallet.wideType.A_C_columns | int | Columns in zones A and C | [0,999] |
| pallet.wideType.rotationAngleWhole | int | Overall rotation angle | 0:0, 1:90, 2:180, 3:-90 |
| pallet.wideType.rotationAngleSingle | int | Workpiece rotation angle | 0:0, 1:90, 2:180, 3:-90 |
| pallet.custom.sum | int | Total workpieces per layer | - |
| pallet.custom.start | int | Starting workpiece number to send | - |
| pallet.custom.count | int | Number of layer workpieces sent to controller, max 10 per send | - |
| pallet.custom.eachVec[].X | double | X offset | [-9999,9999]mm |
| pallet.custom.eachVec[].Y | double | Y offset | [-9999,9999]mm |
| pallet.custom.eachVec[].t | double | Rotation angle | [-180,180] |
| pallet.custom.eachVec[].dir | int | Approach direction | 0: Up, 1: Down, 2: Left, 3: Right, 4: Upper-left, 5: Lower-left, 6: Upper-right, 7: Lower-right |
| pallet.custom.eachVec[].h | double | Height correction | [-9999,9999]mm |
| pallet.custom.eachVec[].EntrySpeed | double | Approach speed | 0 or [1,100]% |
| pallet.custom.eachVec[].LeaveSpeed | double | Departure speed | 0 or [1,100]% |
Note: A maximum of 10 sets can be sent per transmission. If the total workpiece count exceeds 10, multiple transmissions are required. For non-first transmissions, the start value must change. For example, if 10 sets are sent the first time, start should be 11 for the second transmission.
{
"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 Upper Computer Queries Plane Mode Parameters
Command: 0x8061
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| graphic | int | Graphic number | [1,9] |
{
"robot": 1,
"craftID": 1,
"graphic": 1
}7.3 Controller Returns Plane Mode Parameters
Command: 0x8060
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| graphic | int | Graphic number | [1,9] |
| pallet.graphicType | int | Template selection | 0: Row-column, 1: Interlaced, 2: Spiral, 3: Five-pattern, 4: Custom |
| pallet.transLenX | double | X translation compensation | [-9999,9999]mm |
| pallet.transLenY | double | Y translation compensation | [-9999,9999]mm |
| pallet.ranks.numX | int | Count in X direction | [1,999] |
| pallet.ranks.numY | int | Count in Y direction | [1,999] |
| pallet.ranks.rotationAngleWhole | int | Overall rotation angle | 0:0, 1:90, 2:180, 3:-90 |
| pallet.ranks.rotationAngleSingle | int | Workpiece rotation angle | 0:0, 1:90, 2:180, 3:-90 |
| pallet.ranks.autoCalculate | bool | Auto-calculate | true/false |
| pallet.intertwining.numX | int | Count in X direction | [1,999] |
| pallet.intertwining.numY | int | Count in Y direction | [1,999] |
| pallet.intertwining.rotationAngleWhole | int | Overall rotation angle | 0:0, 1:90, 2:180, 3:-90 |
| pallet.intertwining.rotationAngleSingle | int | Workpiece rotation angle | 0:0, 1:90, 2:180, 3:-90 |
| pallet.gearType.rotationAngleWhole | int | Overall rotation angle | 0:0, 1:90, 2:180, 3:-90 |
| pallet.gearType.rotationAngleSingle | int | Workpiece rotation angle | 0:0, 1:90, 2:180, 3:-90 |
| pallet.wideType.A_rows | int | Rows in zone A | [0,999] |
| pallet.wideType.B_rows | int | Rows in zone B | [1,999] |
| pallet.wideType.B_columns | int | Columns in zone B | [1,999] |
| pallet.wideType.C_rows | int | Rows in zone C | [0,999] |
| pallet.wideType.A_C_columns | int | Columns in zones A and C | [0,999] |
| pallet.wideType.rotationAngleWhole | int | Overall rotation angle | 0:0, 1:90, 2:180, 3:-90 |
| pallet.wideType.rotationAngleSingle | int | Workpiece rotation angle | 0:0, 1:90, 2:180, 3:-90 |
| pallet.custom.sum | int | Total workpieces per layer | - |
| pallet.custom.start | int | Starting workpiece number to send | - |
| pallet.custom.count | int | Number of layer workpieces sent to controller, max 10 per send | - |
| pallet.custom.eachVec[].X | double | X offset | [-9999,9999]mm |
| pallet.custom.eachVec[].Y | double | Y offset | [-9999,9999]mm |
| pallet.custom.eachVec[].t | double | Rotation angle | [-180,180] |
| pallet.custom.eachVec[].dir | int | Approach direction | 0: Up, 1: Down, 2: Left, 3: Right, 4: Upper-left, 5: Lower-left, 6: Upper-right, 7: Lower-right |
| pallet.custom.eachVec[].h | double | Height correction | [-9999,9999]mm |
| pallet.custom.eachVec[].EntrySpeed | double | Approach speed | 0 or [1,100]% |
| pallet.custom.eachVec[].LeaveSpeed | double | Departure speed | 0 or [1,100]% |
{
"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 Request Conversion to Plane Mode Custom Template
Command: 0x8063
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| graphic | int | Graphic number | [1,9] |
{
"robot": 1,
"craftID": 1,
"graphic": 1
}7.5 Controller Returns Parameters After Converting to Plane Mode Custom Template
Command: 0x8064
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| graphic | int | Graphic number | [1,9] |
| pallet.graphicType | int | Template selection (can only be 3 here) | 3: Custom |
| pallet.transLenX | double | X translation compensation | [-9999,9999]mm |
| pallet.transLenY | double | Y translation compensation | [-9999,9999]mm |
| pallet.autoTransLenX | double | X auto-translation distance | - |
| pallet.autoTransLenY | double | Y auto-translation distance | - |
| pallet.custom | object | Custom parameters (same as above) | - |
{
"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 Upper Computer Requests Plane Mode Preview
Command: 0x8065
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| graphic | int | Graphic number | [1,9] |
{
"robot": 1,
"craftID": 1,
"graphic": 1
}7.7 Controller Returns Plane Mode Preview Parameters
Command: 0x8066
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| graphic | int | Graphic number | [1,9] |
| pallet.workpieceLength | int | Length of each workpiece | [0,9999]mm |
| pallet.workpieceWidth | int | Width of each workpiece | [0,9999]mm |
| pallet.sum | int | Total workpieces per layer | - |
| pallet.start | int | Starting workpiece number to send | - |
| pallet.count | int | Number of layer workpieces sent to controller, max 10 per send | - |
| pallet.tray.x | double | Tray x coordinate | - |
| pallet.tray.y | double | Tray y coordinate | - |
| pallet.eachVec[].X | double | X offset | [-9999,9999]mm |
| pallet.eachVec[].Y | double | Y offset | [-9999,9999]mm |
| pallet.eachVec[].t | double | Rotation angle | [-180,180] |
{
"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 Query Complete Palletizing Plane Mode Auto-Calculation Result
Command: 0x806A
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
{
"robot": 1,
"craftID": 1
}7.9 Controller Returns Complete Palletizing Plane Mode Auto-Calculation Result
Command: 0x806B
| Parameter Name | Type | Description |
|---|---|---|
| pallet.ranks.numX | int | Count in X direction |
| pallet.ranks.numY | int | Count in Y direction |
{
"pallet": {
"ranks": {
"numX": 0,
"numY": 0
}
}
}7.10 Plane Mode Custom Mode Preview (Does Not Save Parameters and Results)
Command: 0x8067
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| graphic | int | Graphic number | [1,9] |
| pallet.workpieceLength | int | Length of each workpiece | [0,9999]mm |
| pallet.workpieceWidth | int | Width of each workpiece | [0,9999]mm |
| pallet.sum | int | Total workpieces per layer | - |
| pallet.start | int | Starting workpiece number to send | - |
| pallet.count | int | Number of layer workpieces sent to controller, max 10 per send | - |
| pallet.tray.x | double | Tray x coordinate | - |
| pallet.tray.y | double | Tray y coordinate | - |
| pallet.eachVec[].X | double | X offset | [-9999,9999]mm |
| pallet.eachVec[].Y | double | Y offset | [-9999,9999]mm |
| pallet.eachVec[].t | double | Rotation angle | [-180,180] |
{
"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 Controller Returns Plane Mode Custom Mode Preview
Command: 0x8068
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| graphic | int | Graphic number | [1,9] |
| pallet.workpieceLength | int | Length of each workpiece | [0,9999]mm |
| pallet.workpieceWidth | int | Width of each workpiece | [0,9999]mm |
| pallet.sum | int | Total workpieces per layer | - |
| pallet.start | int | Starting workpiece number to send | - |
| pallet.count | int | Number of layer workpieces sent to controller, max 10 per send | - |
| pallet.tray.x | double | Tray x coordinate | - |
| pallet.tray.y | double | Tray y coordinate | - |
| pallet.eachVec[].X | double | X offset | [-9999,9999]mm |
| pallet.eachVec[].Y | double | Y offset | [-9999,9999]mm |
| pallet.eachVec[].t | double | Rotation angle | [-180,180] |
{
"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 Copy Layer Graphic Parameters
8.1 Copy Layer Graphic Parameters
Command: 0x8069
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID_source | int | Process number to copy from | - |
| craftID_target | int | Process number to copy to | - |
| graphic_source | int | Graphic layer to copy from | - |
| graphic_target | int | Graphic layer to copy to | - |
{
"robot": 1,
"craftID_source": 1,
"craftID_target": 2,
"graphic_source": 1,
"graphic_target": 2
}9 Palletizing Status
9.1 Set Palletizing Status
Command: 0x80A0
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| graphic | int | Graphic number | [1,9] |
| pallet.curLayerNum | int | Current layer number | - |
| pallet.curLayerPalletedWpNum | int | Workpieces palletized in current layer | - |
{
"robot": 1,
"craftID": 1,
"pallet": {
"curLayerNum": 1,
"curLayerPalletedWpNum": 5
}
}9.2 Upper Computer Queries Palletizing Status
Command: 0x80A1
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
{
"robot": 1,
"craftID": 1
}9.3 Controller Returns Palletizing Status
Command: 0x80A2
| Parameter Name | Type | Description |
|---|---|---|
| robot | int | Current robot |
| craftID | int | Process number |
| graphic | int | Graphic number |
| pallet.totalWpNum | int | Total workpieces |
| pallet.totalLayerNum | int | Total layers |
| pallet.curPalletedWpSum | int | Total workpieces palletized so far |
| pallet.curLayerNum | int | Current layer number |
| pallet.curLayerPalletedWpNum | int | Workpieces palletized in current layer |
| pallet.curLayerWpSum | int | Total workpieces in current layer |
{
"robot": 1,
"craftID": 1,
"pallet": {
"totalWpNum": 20,
"totalLayerNum": 2,
"curPalletedWpSum": 5,
"curLayerNum": 1,
"curLayerPalletedWpNum": 5,
"curLayerWpSum": 10
}
}10 Palletizing Type
10.1 Upper Computer Switches Palletizing Type
Command: 0x80B2
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| usePalletType | int | Palletizing type | 0: Simple, 1: Complete, 2: Undefined |
| craftNote | string | Note | - |
{
"robot": 1,
"craftID": 1,
"usePalletType": 0,
"craftNote": ""
}10.2 Upper Computer Queries Current Palletizing Type
Command: 0x80B3
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
{
"robot": 1,
"craftID": 1
}10.3 Controller Returns Current Palletizing Type
Command: 0x80B4
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| usePalletType | int | Palletizing type | 0: Simple, 1: Complete, 2: Undefined |
| craftNote | string | Note | - |
{
"robot": 1,
"craftID": 1,
"usePalletType": 0,
"craftNote": ""
}11 Simple Palletizing
11.1 Set Simple Palletizing Position
Command: 0x80C0
| Parameter Name | Type | Description |
|---|---|---|
| robot | int | Current robot |
| craftID | int | Process number |
| O | array | Workpiece start point, end pose in Cartesian coordinates |
| X | array | Column end point, end pose in Cartesian coordinates |
| Y | array | Row end point, end pose in Cartesian coordinates |
| shift | array | Auxiliary point, end pose in Cartesian coordinates |
| enter | array | Entry point, end pose in Cartesian coordinates |
| numX | int | Number of rows |
| numY | int | Number of columns |
| numZ | int | Number of layers |
| useAcrossCorner | bool | Whether to use diagonal end point, true: Yes, false: No |
{
"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 Upper Computer Queries Simple Palletizing Position
Command: 0x80C1
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
{
"robot": 1,
"craftID": 1
}11.3 Controller Returns Simple Palletizing Position
Command: 0x80C2
| Parameter Name | Type | Description |
|---|---|---|
| robot | int | Current robot |
| craftID | int | Process number |
| O | array | Workpiece start point (radians) |
| ODeg | array | Workpiece start point (degrees) |
| X | array | Column end point (radians) |
| XDeg | array | Column end point (degrees) |
| Y | array | Row end point (radians) |
| YDeg | array | Row end point (degrees) |
| shift | array | Auxiliary point (radians) |
| shiftDeg | array | Auxiliary point (degrees) |
| enter | array | Entry point (radians) |
| enterDeg | array | Entry point (degrees) |
| acrossCorner | array | Diagonal end point (radians) |
| acrossCornerDeg | array | Diagonal end point (degrees) |
| numX | int | Number of rows |
| numY | int | Number of columns |
| numZ | int | Number of layers |
{
"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 Set Simple Palletizing Gripper Parameters
Command: 0x80C3
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| pallet.gripperNum | int | Number of grippers | [1,4] |
| pallet.gripper | array | Gripper tool number array | - |
{
"robot": 1,
"craftID": 1,
"pallet": {
"gripperNum": 4,
"gripper": [1, 3, 4, 1]
}
}11.5 Upper Computer Queries Simple Palletizing Gripper Parameters
Command: 0x80C4
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
{
"robot": 1,
"craftID": 1
}11.6 Controller Returns Simple Palletizing Gripper Parameters
Command: 0x80C5
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| pallet.gripperNum | int | Number of grippers | [1,4] |
| pallet.gripper | array | Gripper tool number array | - |
{
"robot": 1,
"craftID": 1,
"pallet": {
"gripperNum": 4,
"gripper": [1, 3, 4, 1]
}
}12 Palletizing Reset
12.1 Palletizing Reset
Command: 0x80A3
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| gripper | int | Gripper tool number | [1,9] |
{
"robot": 1,
"craftID": 1
}13 Copy and Clear
13.1 Copy Palletizing Parameters
Command: 0x80B0
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID_source | int | Process number to copy from | - |
| craftID_target | int | Process number to copy to | - |
{
"robot": 1,
"craftID_source": 1,
"craftID_target": 2
}13.2 Clear Palletizing Parameters
Command: 0x80B1
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
{
"robot": 1,
"craftID": 1
}14 Point Debug Interface
14.1 Upper Computer Gets All Workpiece Data for Current Layer
Command: 0x8080
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craft | int | Process number | - |
| layer | int | Current layer | - |
| clear | int | Whether to clear cache, 1: Clear cache, 0: Do not clear | - |
{
"robot": 1,
"craft": 1,
"layer": 1,
"clear": 0
}14.2 Controller Returns All Workpiece Data for Current Layer
Command: 0x8081
| Parameter Name | Type | Description |
|---|---|---|
| robot | int | Current robot |
| craft | int | Process number |
| layer | int | Current layer |
| sumLayer | int | Total layers |
| length.L | int | Length |
| length.W | int | Width |
| overLimit.over | int | 0: No overrun, 1: Entry point overrun, 2: Auxiliary point overrun, 3: Workpiece point overrun |
| overLimit.layer | int | Overrun layer |
| overLimit.num | int | Overrun workpiece number |
| pallet.sum | int | Total workpieces per layer |
| pallet.count | int | Number of layer workpieces sent to controller |
| pallet.start | int | Starting workpiece number to send |
| pallet.tray_length | double | Tray length |
| pallet.tray_width | double | Tray width |
| pallet.tray.x | double | Tray x coordinate |
| pallet.tray.y | double | Tray y coordinate |
| pallet.eachVec[].X | double | X coordinate |
| pallet.eachVec[].Y | double | Y coordinate |
| pallet.eachVec[].Z | double | Z coordinate |
| pallet.eachVec[].t | double | Rotation angle |
| pallet.eachVec[].over | int | 0: No overrun, 1: Entry point unreachable, 2: Auxiliary point unreachable, 3: Workpiece point unreachable |
{
"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 Palletizing Process Number Query
Command: 0x8082
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craft | int | Process number | - |
{
"robot": 1,
"craft": 1
}14.4 Controller Returns Palletizing Process Number Query Result
Command: 0x8083
| Parameter Name | Type | Description |
|---|---|---|
| robot | int | Current robot |
| craft | int | Process number |
| _palletNumIsTooMore | bool | Whether palletizing quantity is too large |
{
"robot": 1,
"craft": 1,
"_palletNumIsTooMore": true
}14.5 Upper Computer Gets Tool Hand Corresponding to Gripper
Command: 0x808B
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craft | int | Process number | - |
| gripper | int | Gripper number | - |
{
"robot": 1,
"craft": 1,
"gripper": 1
}14.6 Controller Returns
Command: 0x808C
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craft | int | Process number | - |
| tool | int | Tool hand number | - |
{
"robot": 1,
"craft": 1,
"tool": 1
}14.7 Upper Computer Sets Overall Offset
Command: 0x8084
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craft | int | Process number | - |
| layer | int | Current layer | - |
| transLenX | double | X offset | - |
| transLenY | double | Y offset | - |
| transLenZ | double | Z offset | - |
| rotationAngle | double | Offset angle | - |
{
"robot": 1,
"craft": 1,
"layer": 1,
"transLenX": 0,
"transLenY": 0,
"transLenZ": 0,
"rotationAngle": 0
}14.8 Apply to Same Layer
Command: 0x8085
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craft | int | Process number | - |
| layer | int | Layer | - |
{
"robot": 1,
"craft": 1,
"layer": 1
}14.9 Modify Single Workpiece Position
Command: 0x8086
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craft | int | Process number | - |
| layer | int | Layer | - |
| num | int | Current workpiece | - |
| mode | int | Setting mode | 0: Direct set xyz, 1: Use robot current position |
| X | double | X offset | [-9999,9999]mm |
| Y | double | Y offset | [-9999,9999]mm |
| Z | double | Z offset | [-9999,9999]mm |
| angle | double | Rotation angle | [-180,180] |
{
"robot": 1,
"craft": 1,
"layer": 1,
"num": 1,
"mode": 0,
"X": 0.1,
"Y": 0.1,
"Z": 0.1,
"angle": 0
}14.10 Get Single Workpiece Position
Command: 0x8087
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craft | int | Process number | - |
| layer | int | Layer | - |
| num | int | Current workpiece | - |
{
"robot": 1,
"craft": 1,
"layer": 1,
"num": 1
}14.11 Controller Returns Single Workpiece Position
Command: 0x8088
| Parameter Name | Type | Description |
|---|---|---|
| ApproachMode | int | Approach mode |
| DepartureSpeed | double | Departure speed |
| EntryConfiguration | int | Entry configuration |
| EntrySpeed | double | Approach speed |
| RealConfiguration | int | Actual configuration |
| ShiftConfiguration | int | Auxiliary configuration |
| X | double | X coordinate |
| Y | double | Y coordinate |
| Z | double | Z coordinate |
| craft | int | Process number |
| layer | int | Layer |
| num | int | Current workpiece |
| over | int | Overrun flag |
| overLimit.layer | int | Overrun layer |
| overLimit.num | int | Overrun workpiece number |
| overLimit.over | int | Overrun type |
| reference | int | Reference point |
| robot | int | Current robot |
| t | double | Rotation angle |
{
"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 Save Point Debug Content from Cache to File
Command: 0x8089
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craft | int | Process number | - |
| gripper | int | Gripper number | - |
{
"robot": 1,
"craft": 1,
"gripper": 1
}14.13 Move to Workpiece Point / Auxiliary Point / Entry Point
Command: 0x808A
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craft | int | Process number | - |
| layer | int | Layer | - |
| num | int | Current workpiece | - |
| tool | int | Tool hand | - |
| type | int | Point to move to | 0: Entry point, 1: Auxiliary point, 2: Workpiece point |
{
"robot": 1,
"craft": 1,
"layer": 1,
"num": 1,
"tool": 1,
"type": 0
}14.14 Set Approach / Departure Mode
Command: 0x80C7
| Parameter Name | Type | Description | Value Range |
|---|---|---|---|
| robot | int | Current robot | [1,4] |
| craftID | int | Process number | - |
| approMoveType | int | Approach / departure mode | - |
{
"robot": 1,
"craftID": 1,
"approMoveType": 1
}