|
|
|
@ -4,63 +4,53 @@ const demoLocList = ['rack1/0/1/0', 'rack1/1/1/0', 'rack1/2/1/0', 'rack1/3/1/0'] |
|
|
|
const demoLocList2 = [ ...demoLocList ].reverse() |
|
|
|
|
|
|
|
while (true) { |
|
|
|
|
|
|
|
const [carInv] = (await LCC.queryInv({ rack: agvId, bay: 0, level: 0, cell: 0 })).data |
|
|
|
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; |
|
|
|
} |
|
|
|
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 { |
|
|
|
// 地上没有托盘位, 找个位置拖过去
|
|
|
|
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('货架没有空托盘,无法执行') |
|
|
|
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 freeLoc(){ |
|
|
|
async function findFreeLoc(){ |
|
|
|
for (const loc of demoLocList) { |
|
|
|
const [rack, bay, level] = loc.split('/') |
|
|
|
if (!rack) { |
|
|
|
@ -74,7 +64,7 @@ async function freeLoc(){ |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
async function invLoc(){ |
|
|
|
async function findRackInvLoc(){ |
|
|
|
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 |
|
|
|
|