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 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 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 } } }