Compare commits
24 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
f88ee66c64 | 5 months ago |
|
|
2b882a7fc6 | 5 months ago |
|
|
160739361b | 5 months ago |
|
|
a72eeab1f8 | 5 months ago |
|
|
0282fc8728 | 5 months ago |
|
|
7196077c80 | 5 months ago |
|
|
cabfac61f9 | 5 months ago |
|
|
bcb5358df9 | 5 months ago |
|
|
64ca6f7a5a | 5 months ago |
|
|
66ab1e9ccc | 5 months ago |
|
|
ffcb5fa612 | 5 months ago |
|
|
c097a59460 | 5 months ago |
|
|
cd99c80489 | 5 months ago |
|
|
d724e2d523 | 5 months ago |
|
|
fb2ca57b3a | 5 months ago |
|
|
2fee40e357 | 5 months ago |
|
|
96fd9e7501 | 5 months ago |
|
|
f11fe5c99b | 5 months ago |
|
|
9930eccbde | 5 months ago |
|
|
97ddb4e597 | 5 months ago |
|
|
85df99d7e6 | 5 months ago |
|
|
b334db41f5 | 5 months ago |
|
|
a438a0f519 | 5 months ago |
|
|
c071be1dca | 5 months ago |
17 changed files with 45487 additions and 9 deletions
@ -0,0 +1,24 @@ |
|||||
|
{ |
||||
|
"envId": 20, |
||||
|
"envName": "嘉兴物理环境", |
||||
|
"isVirtual": false, |
||||
|
"envConfig": { |
||||
|
"mqtt": { |
||||
|
"brokerUrl": "tcp://10.10.9.58:1885", |
||||
|
"username": "admin", |
||||
|
"password": "admin", |
||||
|
"websocket": "mqtt://10.10.9.58:7885" |
||||
|
}, |
||||
|
"mysql": { |
||||
|
"jdbcUrl": "jdbc:p6spy:mysql://10.10.9.58:3306/rcs2_tw_zhanghui", |
||||
|
"username": "admin", |
||||
|
"password": "admin123456" |
||||
|
}, |
||||
|
"redis": { |
||||
|
"host": "10.10.9.58", |
||||
|
"port": 6379, |
||||
|
"database": 0, |
||||
|
"password": "admin123456" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,24 @@ |
|||||
|
{ |
||||
|
"envId": 23, |
||||
|
"envName": "嘉兴测试1", |
||||
|
"isVirtual": true, |
||||
|
"envConfig": { |
||||
|
"mqtt": { |
||||
|
"brokerUrl": "tcp://10.10.9.58:1886", |
||||
|
"username": "admin", |
||||
|
"password": "admin", |
||||
|
"websocket": "mqtt://10.10.9.58:7886" |
||||
|
}, |
||||
|
"mysql": { |
||||
|
"jdbcUrl": "jdbc:p6spy:mysql://10.10.9.58:3306/rcs2_tw_zhanghui", |
||||
|
"username": "admin", |
||||
|
"password": "admin123456" |
||||
|
}, |
||||
|
"redis": { |
||||
|
"host": "10.10.9.58", |
||||
|
"port": 6379, |
||||
|
"database": 3, |
||||
|
"password": "admin123456" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
File diff suppressed because it is too large
File diff suppressed because it is too large
File diff suppressed because it is too large
File diff suppressed because it is too large
@ -0,0 +1,53 @@ |
|||||
|
{ |
||||
|
"projectUuid" : "jx_test", |
||||
|
"projectLabel" : "嘉兴测试场地", |
||||
|
"subSystemList" : [ "RCS" ], |
||||
|
"projectFileLocation" : "", |
||||
|
"directoryData" : [ { |
||||
|
"label" : "仓库楼层", |
||||
|
"items" : [ { |
||||
|
"catalogCode" : "f1", |
||||
|
"label" : "一楼 (f1)" |
||||
|
} ] |
||||
|
} ], |
||||
|
"otherData" : { |
||||
|
"Tool" : { |
||||
|
"Group" : [ ], |
||||
|
"GlobalVariables" : [ ], |
||||
|
"UserCommand" : [ ], |
||||
|
"Dashboard" : [ ], |
||||
|
"DataTable" : [ ], |
||||
|
"Trigger" : [ { |
||||
|
"name" : "OnOpen", |
||||
|
"fn" : "" |
||||
|
}, { |
||||
|
"name" : "OnReset", |
||||
|
"fn" : "" |
||||
|
}, { |
||||
|
"name" : "OnStart", |
||||
|
"fn" : "" |
||||
|
}, { |
||||
|
"name" : "OnStop", |
||||
|
"fn" : "" |
||||
|
} ], |
||||
|
"gridHelper" : { |
||||
|
"axesEnabled" : true, |
||||
|
"axesSize" : 5, |
||||
|
"axesColor" : 11184810, |
||||
|
"axesWidth" : 2, |
||||
|
"groundColor" : 16777215, |
||||
|
"gridEnabled" : true, |
||||
|
"gridSize" : 1000, |
||||
|
"gridDivisions" : 1000, |
||||
|
"gridColor" : 14540253, |
||||
|
"gridOpacity" : 1, |
||||
|
"backgroundColor" : 16119285, |
||||
|
"snapEnabled" : true, |
||||
|
"snapDistance" : 0.25 |
||||
|
} |
||||
|
}, |
||||
|
"elevator" : [ ], |
||||
|
"wall" : [ ], |
||||
|
"pillar" : [ ] |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,61 @@ |
|||||
|
const gstore = '105_105' |
||||
|
const agvId = '3' |
||||
|
const demoLocList = ['rack1/1/1/0', 'rack2/0/1/0', 'rack2/1/1/0'] |
||||
|
const demoLocList2 = [ 'rack1/1/1/0', 'rack2/0/1/0', 'rack2/1/1/0' ].reverse() |
||||
|
|
||||
|
while (true) { |
||||
|
|
||||
|
const [dd] = (await LCC.queryInv({ rack: gstore })).data |
||||
|
if (dd) { |
||||
|
// 地堆上有托盘, 找一个空货位放过去
|
||||
|
LCC.log('地堆上有托盘') |
||||
|
for (const loc of demoLocList) { |
||||
|
const [rack, bay, level] = loc.split('/') |
||||
|
if (!rack) { |
||||
|
continue; |
||||
|
} |
||||
|
const [emptyLoc] = (await LCC.queryInv({ rack, bay: parseInt(bay), level: parseInt(level) })).data |
||||
|
if (!emptyLoc) { |
||||
|
// 这是一个好位置
|
||||
|
LCC.log(`RCS.agvCarry('${agvId}', '${gstore}', '${loc}')`) |
||||
|
await RCS.agvCarry(agvId, gstore, loc) |
||||
|
await RCS.waitTaskFinish(agvId) |
||||
|
await LCC.sleep(1000) |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} else { |
||||
|
// 地上没有托盘位, 找个位置拖过去
|
||||
|
const [carInv] = (await LCC.queryInv({ rack: agvId, bay: 0, level: 0, cell: 0 })).data |
||||
|
if (carInv) { |
||||
|
LCC.log('托盘在车上') |
||||
|
LCC.log(`RCS.agvUnload('${agvId}', '${gstore}')`) |
||||
|
await RCS.agvUnload(agvId, gstore) |
||||
|
await RCS.waitTaskFinish(agvId) |
||||
|
await LCC.sleep(1000) |
||||
|
continue; |
||||
|
} else { |
||||
|
LCC.log('托盘在货架') |
||||
|
} |
||||
|
|
||||
|
let has = false |
||||
|
for (const loc of demoLocList2) { |
||||
|
const [rack, bay, level, cell] = loc.split('/') |
||||
|
const [palletLoc] = (await LCC.queryInv({ rack, bay: parseInt(bay), level: parseInt(level) })).data |
||||
|
if (palletLoc) { |
||||
|
has = true |
||||
|
LCC.log(`RCS.agvCarry('${agvId}', '${loc}', '${gstore}')`) |
||||
|
await RCS.agvCarry(agvId, loc, gstore) |
||||
|
await RCS.waitTaskFinish(agvId) |
||||
|
await LCC.sleep(1000) |
||||
|
break |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
if (!has) { |
||||
|
LCC.log('货架没有空托盘,无法执行') |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,61 @@ |
|||||
|
const gstore = '108_108' |
||||
|
const agvId = '4' |
||||
|
const demoLocList = ['rack3/0/1/0', 'rack3/1/1/0', 'rack3/0/2/0', 'rack3/1/2/0'] |
||||
|
const demoLocList2 = ['rack3/0/1/0', 'rack3/1/1/0', 'rack3/0/2/0', 'rack3/1/2/0'].reverse() |
||||
|
|
||||
|
while (true) { |
||||
|
await LCC.sleep(3000) |
||||
|
const [dd] = (await LCC.queryInv({ rack: gstore })).data |
||||
|
if (dd) { |
||||
|
// 地堆上有托盘, 找一个空货位放过去
|
||||
|
for (const loc of demoLocList) { |
||||
|
const [rack, bay, level] = loc.split('/') |
||||
|
if (!rack) { |
||||
|
continue; |
||||
|
} |
||||
|
const [emptyLoc] = (await LCC.queryInv({ rack, bay: parseInt(bay), level: parseInt(level) })).data |
||||
|
if (!emptyLoc) { |
||||
|
// 这是一个好位置
|
||||
|
LCC.log('agvCarry', gstore, loc) |
||||
|
await RCS.agvCarry(agvId, gstore, loc) |
||||
|
await RCS.waitTaskFinish(agvId) |
||||
|
await LCC.sleep(1000) |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} else { |
||||
|
// 地上没有托盘位, 找个位置拖过去
|
||||
|
const [carInv] = (await LCC.queryInv({ rack: agvId, bay: 0, level: 0, cell: 0 })).data |
||||
|
if (carInv) { |
||||
|
LCC.log('托盘在车上') |
||||
|
LCC.log(`RCS.agvUnload('${agvId}', '${gstore}')`) |
||||
|
await RCS.agvUnload(agvId, gstore) |
||||
|
await RCS.waitTaskFinish(agvId) |
||||
|
await LCC.sleep(1000) |
||||
|
continue; |
||||
|
} else { |
||||
|
LCC.log('托盘在货架') |
||||
|
} |
||||
|
|
||||
|
let has = false |
||||
|
for (const loc of demoLocList2) { |
||||
|
const [rack, bay, level, cell] = loc.split('/') |
||||
|
const [palletLoc] = (await LCC.queryInv({ rack, bay: parseInt(bay), level: parseInt(level) })).data |
||||
|
if (palletLoc) { |
||||
|
has = true |
||||
|
|
||||
|
LCC.log(`RCS.agvCarry('${agvId}', '${loc}', '${gstore}')`) |
||||
|
await RCS.agvCarry(agvId, loc, gstore) |
||||
|
await RCS.waitTaskFinish(agvId) |
||||
|
await LCC.sleep(1000) |
||||
|
break |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
if (!has) { |
||||
|
LCC.log('货架没有空托盘,无法执行') |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,4 @@ |
|||||
|
await RCS.agvCarry("1001", "141_0_0_0", "141_0_1_0") |
||||
|
// await RCS.waitTaskFinish("1001");
|
||||
|
// await RCS.agvCarry("1001", "141_0_1_0", "141_0_2_0")
|
||||
|
// await RCS.waitTaskFinish("1001");
|
||||
@ -0,0 +1,85 @@ |
|||||
|
const gstore = '504_501' |
||||
|
const agvId = '1' |
||||
|
const demoLocList = ['rack1/0/1/0', 'rack1/1/1/0', 'rack1/2/1/0', 'rack1/3/1/0'] |
||||
|
|
||||
|
while (true) { |
||||
|
const [carInv] = (await LCC.queryInv({ rack: agvId, bay: 0, level: 0, cell: 0 })).data |
||||
|
const [dd] = (await LCC.queryInv({ rack: gstore })).data |
||||
|
// demoLocList.reverse()
|
||||
|
|
||||
|
|
||||
|
if (dd) { |
||||
|
// 地堆上有托盘, 找一个空货位放过去
|
||||
|
LCC.log('地堆上有托盘') |
||||
|
const freeLoc = await findFreeLoc() |
||||
|
if (carInv) { |
||||
|
// 托盘在车上
|
||||
|
LCC.log('托盘在车上') |
||||
|
LCC.log(`RCS.agvUnload('${agvId}', '${freeLoc}')`) |
||||
|
await RCS.agvUnload(agvId, freeLoc) |
||||
|
await RCS.waitTaskFinish(agvId) |
||||
|
await LCC.sleep(1000) |
||||
|
continue |
||||
|
} |
||||
|
|
||||
|
LCC.log(`RCS.agvCarry('${agvId}', '${gstore}', '${freeLoc}')`) |
||||
|
await RCS.agvCarry(agvId, gstore, freeLoc) |
||||
|
await RCS.waitTaskFinish(agvId) |
||||
|
|
||||
|
} else { |
||||
|
// 地上没有托盘位, 找个位置拖过去
|
||||
|
if (carInv) { |
||||
|
// 托盘在车上
|
||||
|
LCC.log('托盘在车上') |
||||
|
LCC.log(`RCS.agvUnload('${agvId}', '${gstore}')`) |
||||
|
await RCS.agvUnload(agvId, gstore) |
||||
|
await RCS.waitTaskFinish(agvId) |
||||
|
await LCC.sleep(1000) |
||||
|
continue |
||||
|
} |
||||
|
|
||||
|
const invLoc = await findRackInvLoc() |
||||
|
if (!invLoc) { |
||||
|
LCC.log('货架没有托盘,无法执行') |
||||
|
} else { |
||||
|
LCC.log(`RCS.agvCarry('${agvId}', '${invLoc}', '${gstore}')`) |
||||
|
await RCS.agvCarry(agvId, invLoc, gstore) |
||||
|
await RCS.waitTaskFinish(agvId) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
await LCC.sleep(1000) |
||||
|
} |
||||
|
|
||||
|
async function findFreeLoc() { |
||||
|
for (const loc of shuffleArray(demoLocList)) { |
||||
|
const [rack, bay, level] = loc.split('/') |
||||
|
if (!rack) { |
||||
|
continue |
||||
|
} |
||||
|
const [emptyLoc] = (await LCC.queryInv({ rack, bay: parseInt(bay), level: parseInt(level) })).data |
||||
|
if (!emptyLoc) { |
||||
|
// 这是一个好位置
|
||||
|
return loc |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
async function findRackInvLoc() { |
||||
|
for (const loc of shuffleArray(demoLocList)) { |
||||
|
const [rack, bay, level, cell] = loc.split('/') |
||||
|
const [palletLoc] = (await LCC.queryInv({ rack, bay: parseInt(bay), level: parseInt(level) })).data |
||||
|
if (palletLoc) { |
||||
|
return loc |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 打乱数组顺序的函数
|
||||
|
function shuffleArray(array) { |
||||
|
for (let i = array.length - 1; i > 0; i--) { |
||||
|
const j = Math.floor(Math.random() * (i + 1)); // 随机选择一个位置 j
|
||||
|
[array[i], array[j]] = [array[j], array[i]] // 交换元素
|
||||
|
} |
||||
|
return array |
||||
|
} |
||||
@ -0,0 +1,85 @@ |
|||||
|
const gstore = '500_500' |
||||
|
const agvId = '2' |
||||
|
const demoLocList = ['rack1/0/2/0', 'rack1/1/2/0', 'rack1/2/2/0', 'rack1/3/2/0'] |
||||
|
|
||||
|
while (true) { |
||||
|
const [carInv] = (await LCC.queryInv({ rack: agvId, bay: 0, level: 0, cell: 0 })).data |
||||
|
const [dd] = (await LCC.queryInv({ rack: gstore })).data |
||||
|
// demoLocList.reverse()
|
||||
|
|
||||
|
|
||||
|
if (dd) { |
||||
|
// 地堆上有托盘, 找一个空货位放过去
|
||||
|
LCC.log('地堆上有托盘') |
||||
|
const freeLoc = await findFreeLoc() |
||||
|
if (carInv) { |
||||
|
// 托盘在车上
|
||||
|
LCC.log('托盘在车上') |
||||
|
LCC.log(`RCS.agvUnload('${agvId}', '${freeLoc}')`) |
||||
|
await RCS.agvUnload(agvId, freeLoc) |
||||
|
await RCS.waitTaskFinish(agvId) |
||||
|
await LCC.sleep(1000) |
||||
|
continue |
||||
|
} |
||||
|
|
||||
|
LCC.log(`RCS.agvCarry('${agvId}', '${gstore}', '${freeLoc}')`) |
||||
|
await RCS.agvCarry(agvId, gstore, freeLoc) |
||||
|
await RCS.waitTaskFinish(agvId) |
||||
|
|
||||
|
} else { |
||||
|
// 地上没有托盘位, 找个位置拖过去
|
||||
|
if (carInv) { |
||||
|
// 托盘在车上
|
||||
|
LCC.log('托盘在车上') |
||||
|
LCC.log(`RCS.agvUnload('${agvId}', '${gstore}')`) |
||||
|
await RCS.agvUnload(agvId, gstore) |
||||
|
await RCS.waitTaskFinish(agvId) |
||||
|
await LCC.sleep(1000) |
||||
|
continue |
||||
|
} |
||||
|
|
||||
|
const invLoc = await findRackInvLoc() |
||||
|
if (!invLoc) { |
||||
|
LCC.log('货架没有托盘,无法执行') |
||||
|
} else { |
||||
|
LCC.log(`RCS.agvCarry('${agvId}', '${invLoc}', '${gstore}')`) |
||||
|
await RCS.agvCarry(agvId, invLoc, gstore) |
||||
|
await RCS.waitTaskFinish(agvId) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
await LCC.sleep(1000) |
||||
|
} |
||||
|
|
||||
|
async function findFreeLoc() { |
||||
|
for (const loc of shuffleArray(demoLocList)) { |
||||
|
const [rack, bay, level] = loc.split('/') |
||||
|
if (!rack) { |
||||
|
continue |
||||
|
} |
||||
|
const [emptyLoc] = (await LCC.queryInv({ rack, bay: parseInt(bay), level: parseInt(level) })).data |
||||
|
if (!emptyLoc) { |
||||
|
// 这是一个好位置
|
||||
|
return loc |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
async function findRackInvLoc() { |
||||
|
for (const loc of shuffleArray(demoLocList)) { |
||||
|
const [rack, bay, level, cell] = loc.split('/') |
||||
|
const [palletLoc] = (await LCC.queryInv({ rack, bay: parseInt(bay), level: parseInt(level) })).data |
||||
|
if (palletLoc) { |
||||
|
return loc |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 打乱数组顺序的函数
|
||||
|
function shuffleArray(array) { |
||||
|
for (let i = array.length - 1; i > 0; i--) { |
||||
|
const j = Math.floor(Math.random() * (i + 1)); // 随机选择一个位置 j
|
||||
|
[array[i], array[j]] = [array[j], array[i]] // 交换元素
|
||||
|
} |
||||
|
return array |
||||
|
} |
||||
@ -0,0 +1,35 @@ |
|||||
|
// 初始 6_2 的右姿态,转到 6_2 的左姿态
|
||||
|
await RCS.cancelTasks('3'); |
||||
|
await RCS.agvMove('3', '4_2', '', { priority: 1, forceStartWayPointId: '6_2', forceStartDirection: 'RIGHT' }) |
||||
|
|
||||
|
/* 立刻载货 */ |
||||
|
await RCS.cancelTasks('3'); |
||||
|
await RCS.agvLoad('3', '105_105', { priority: 1, forceStartWayPointId: '4_2', forceStartDirection: 'LEFT' }) |
||||
|
|
||||
|
/* 立刻卸货 */ |
||||
|
await RCS.cancelTasks('3'); |
||||
|
await RCS.agvUnload('3', '105_105', { priority: 1, forceStartWayPointId: '4_2', forceStartDirection: 'LEFT' }) |
||||
|
|
||||
|
/* 3_2 -> 2_2 -> 1_2 */ |
||||
|
await RCS.cancelTasks('3'); |
||||
|
await RCS.agvMove('3', '1_2', '', { priority: 1, forceStartWayPointId: '4_2', forceStartDirection: 'LEFT' }) |
||||
|
|
||||
|
/* 5_2 -> 4_2 -> 3_2 -> 2_2 -> 1_2 -> load -> 2_2 -> unload */ |
||||
|
await RCS.cancelTasks('3'); |
||||
|
await RCS.agvCarry('3', 'rack1/0/0/0', 'rack1/1/0/0', { priority: 1, forceStartWayPointId: '6_2', forceStartDirection: 'RIGHT' }) |
||||
|
|
||||
|
/* 5_2 -> 4_2 -> 3_2 -> 2_2 -> 1_2 -> load -> 2_2 -> 3_2 -> 4_2 -> 5_2 -> 6_2 -> Rotation180 -> 5_2 -> 4_2 -> unload */ |
||||
|
await RCS.cancelTasks('3'); |
||||
|
await RCS.agvCarry('3', 'rack1/0/0/0', '105_105', { priority: 1, forceStartWayPointId: '6_2', forceStartDirection: 'RIGHT' }) |
||||
|
|
||||
|
/* 5_2 -> 4_2 -> 3_2 -> 2_2 -> 1_2 -> load */ |
||||
|
await RCS.cancelTasks('3'); |
||||
|
await RCS.agvLoad('3', 'rack1/0/0/0', { priority: 1, forceStartWayPointId: '6_2', forceStartDirection: 'RIGHT' }) |
||||
|
|
||||
|
/* 4_2 -> 5_2 -> 6_2 -> Rotation180 -> 5_2 -> 4_2 -> load */ |
||||
|
await RCS.cancelTasks('3'); |
||||
|
await RCS.agvLoad('3', '105_105', { priority: 1, forceStartWayPointId: '3_2', forceStartDirection: 'RIGHT' }) |
||||
|
|
||||
|
/* Rotation180 -> 5_2 -> 4_2 -> unload */ |
||||
|
await RCS.cancelTasks('3'); |
||||
|
await RCS.agvUnload('3', '105_105', { priority: 1, forceStartWayPointId: '6_2', forceStartDirection: 'RIGHT' }) |
||||
@ -0,0 +1,3 @@ |
|||||
|
await RCS.cancelTasks('3') |
||||
|
await RCS.agvToCharger('3', 'charger1') |
||||
|
// await RCS.agvInfo('4');
|
||||
@ -0,0 +1,26 @@ |
|||||
|
// const v = await RCS.agvCarry('3', 'rack1/1/1/0', 'rack2/1/1/0', { priority: 1 })
|
||||
|
// await RCS.agvCarry('3', 'rack2/0/1/0', 'rack2/1/1/0')
|
||||
|
// await RCS.agvCarry('3', 'rack2/1/1/0', 'rack2/0/1/0')
|
||||
|
// await RCS.cancelTasks('3')
|
||||
|
// await RCS.agvUnload('3', 'rack2/0/1/0')
|
||||
|
// const v = await RCS.agvCarry('3', 'rack1/0/1/0', '105_105', { priority: 1 })
|
||||
|
// const v = await RCS.agvCarry('3','rack2/0/0/0', '105_105', { priority: 1 })
|
||||
|
// await RCS.agvCarry('3', 'rack2/0/1/0', '105_105', { priority: 1 })
|
||||
|
// await RCS.agvCarry('3', '105_105', 'rack1/1/1/0', { priority: 1 })
|
||||
|
// await RCS.agvCarry('3','rack1/1/1/0','105_105', { priority: 1 })
|
||||
|
// const v = await RCS.agvMove('3', '6_4', 'LEFT')
|
||||
|
// const v = await RCS.agvMove('4', '5_4', 'LEFT')
|
||||
|
// await RCS.cancelTasks('3')
|
||||
|
// await RCS.agvMove('3', '10_4', 'RIGHT')
|
||||
|
// const v = await RCS.agvMove('3', '8_4', 'LEFT')
|
||||
|
// await RCS.agvInfo('4')
|
||||
|
// await RCS.cancelTasks("4")
|
||||
|
// await RCS.agvMove('4', '1_4', 'RIGHT')
|
||||
|
// const v = await RCS.agvCarry('4', '108_108/0/0/0', 'rack3/0/1/0', { priority: 1 })
|
||||
|
const v = await RCS.agvUnload('4', '108_108/0/0/0', { priority: 1 }) |
||||
|
|
||||
|
// const v = await RCS.agvCarry('4', 'rack3/0/1/0', 'rack3/1/2/0', { priority: 1 })
|
||||
|
|
||||
|
// await LCC.moveInv('TP001', 'AGV_3')
|
||||
|
|
||||
|
|
||||
Loading…
Reference in new issue