| | |
| | | @Autowired |
| | | private WrkMastStaMapper wrkMastStaMapper; |
| | | @Autowired |
| | | private BasRgvMapMapper basRgvMapMapper; |
| | | @Autowired |
| | | private RgvOneSignMapper rgvOneSignMapper; |
| | | @Autowired |
| | | private BasRgvMapService basRgvMapService; |
| | | |
| | | @Value("${wms.url}") |
| | | private String wmsUrl; |
| | |
| | | log.error("入库 ===>> 堆垛机站点在数据库不存在, 站点编号={}", crnStn.getStaNo()); |
| | | continue; |
| | | } |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable() |
| | | // if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable() |
| | | // && staDetl.getCanining() != null && staDetl.getCanining().equals("Y") && staDetl.getWrkNo().equals(wrkMast.getWrkNo())) { |
| | | // flag = true; |
| | | // } |
| | | if (staProtocol.isAutoing() && staProtocol.getWorkNo() > 0 |
| | | && staDetl.getCanining() != null && staDetl.getCanining().equals("Y") && staDetl.getWrkNo().equals(wrkMast.getWrkNo())) { |
| | | flag = true; |
| | | } |
| | |
| | | */ |
| | | public synchronized void locToCrnStn1(CrnSlave slave, CrnProtocol crnProtocol) { |
| | | List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep12(slave.getId()); |
| | | Double pri = 0.0; |
| | | for (WrkMast wrkMast : wrkMasts) { |
| | | if (wrkMast.getIoType() != 110){ |
| | | if (wrkMast.getIoPri()>=pri){ |
| | | pri = wrkMast.getIoPri(); |
| | | } else { |
| | | continue; |
| | | } |
| | | } |
| | | if (wrkMast == null) { |
| | | continue; |
| | | } |
| | |
| | | log.error("{}库位异常,未检索到相应工作档!", shallowLocNo); |
| | | } else { |
| | | if (waitWrkMast.getWrkSts() == 11) { |
| | | waitWrkMast.setIoPri(15D); |
| | | if (waitWrkMast.getIoPri() + 100000D < 999999999D) { |
| | | waitWrkMast.setIoPri(waitWrkMast.getIoPri()+100000D); |
| | | } else { |
| | | waitWrkMast.setIoPri(999999999D); |
| | | } |
| | | waitWrkMast.setModiTime(new Date()); |
| | | if (wrkMastMapper.updateById(waitWrkMast) == 0) { |
| | | log.error("调整工作档优先级失败!工作号={}", waitWrkMast.getWrkNo()); |
| | |
| | | if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) { |
| | | continue; |
| | | } |
| | | } else if (!shallowLoc.getLocSts().equals("O") ){ |
| | | log.error("{}任务出库失败,浅库位堵塞!浅库位号:{},浅库位状态:{}", wrkMast.getWrkNo(), shallowLocNo,shallowLoc.getLocSts()); |
| | | continue; |
| | | } |
| | | } |
| | | |
| | |
| | | && rgvProtocol.getModeType() == RgvModeType.AUTO |
| | | && rgvProtocol.getStatusType1() == RgvStatusType.IDLE |
| | | && rgvProtocol.getStatusType2() == RgvStatusType.IDLE |
| | | && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0 |
| | | //现场修改:叠盘机,不满都算无物,怎么判断需要跟电控对接 |
| | | && ((rgvProtocol.getTaskNo1()==0 && rgvProtocol.getLoaded1()==0) |
| | | || (rgvProtocol.getTaskNo1()>0 && rgvProtocol.getLoaded1()==1)) |
| | | && rgvProtocol.getTaskNo2()==0 |
| | | // && (rgvProtocol.getLoaded2()==2 || rgvProtocol.getLoaded2()==3 ) ////0 无物;1 一层无物二层有物 ;2一层有物二层无物 (只能满放);3 1、2层都有物 4:()只允许拆盘 |
| | | && rgvProtocol.getLoaded2()==3 ////0 无物;1 一层无物二层有物 ;2一层有物二层无物 (只能满放);3 1、2层都有物 4:()只允许拆盘 |
| | | ) { |
| | |
| | | if (Cools.isEmpty(wrkDetls)){ |
| | | continue; |
| | | } |
| | | Integer count1 = wrkDetlService.count1(); |
| | | Integer count11 = wrkDetlService.count11(); |
| | | // Integer count1 = wrkDetlService.count1(); |
| | | Integer count111 = wrkDetlService.count111(); |
| | | // Integer count11 = wrkDetlService.count11(); |
| | | Integer count2 = wrkDetlService.count2(wrkDetls.get(0).getOrderNo()); |
| | | Integer count3 = wrkDetlService.count3(); |
| | | wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl,count1+count11,count2,count3))); |
| | | wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl,count111,count2,count3))); |
| | | } |
| | | commands.add(ledCommand); |
| | | } |
| | |
| | | if (staProtocol == null) { |
| | | continue; |
| | | } |
| | | if (staProtocol.getWorkNo() != 0 && staProtocol.isLoading()) { |
| | | if (staProtocol.getWorkNo() != 0 || staProtocol.isLoading()) { |
| | | reset = false; |
| | | break; |
| | | } |
| | |
| | | LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId()); |
| | | // led显示默认内容 |
| | | if (reset && !ledThread.isLedMk()) { |
| | | if (led.getId() == 7) { |
| | | ledThread.setLedMk(true); |
| | | if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(4, new ArrayList<>()))) { |
| | | log.error("{}号LED命令下发失败!!![ip:{}] [port:{}]", led.getId(), led.getIp(), led.getPort()); |
| | | } else { |
| | | |
| | | } |
| | | } else { |
| | | // if (led.getId() == 7) { |
| | | // ledThread.setLedMk(true); |
| | | // if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(4, new ArrayList<>()))) { |
| | | // log.error("{}号LED命令下发失败!!![ip:{}] [port:{}]", led.getId(), led.getIp(), led.getPort()); |
| | | // } else { |
| | | // |
| | | // } |
| | | // } else { |
| | | ledThread.setLedMk(true); |
| | | if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) { |
| | | log.error("{}号LED命令下发失败!!![ip:{}] [port:{}]", led.getId(), led.getIp(), led.getPort()); |
| | | } else { |
| | | |
| | | } |
| | | } |
| | | // } |
| | | } |
| | | } |
| | | } |
| | |
| | | if (Cools.isEmpty(basDevp) || basDevp.getReportSign()!=1){ |
| | | continue; |
| | | } |
| | | if (basDevp.getWrkNo()!=0 && (basDevp.getWrkNo()<9900 || basDevp.getWrkNo()>9999)){ |
| | | continue; |
| | | } |
| | | // if (basDevp.getWrkNo()!=0 && (basDevp.getWrkNo()<9900 || basDevp.getWrkNo()>9999)){ |
| | | // continue; |
| | | // } |
| | | WrkMast wrkMast = wrkMastMapper.selectWrkMastUnstackingOne202(staNo); |
| | | if (Cools.isEmpty(wrkMast)){ |
| | | continue; |
| | |
| | | // if (inSta.getStaNo() == 203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) { |
| | | // continue; |
| | | // } |
| | | |
| | | if (staProtocol.isEmptyMk()){ |
| | | log.info("{}站点无物,异常!",staNo); |
| | | continue; |
| | | } |
| | | if (!staProtocol.isLoading()){ |
| | | log.info("{}站点无物,异常!",staNo); |
| | | continue; |
| | | } |
| | | // 判断是否满足入库条件 |
| | | if (staProtocol.isAutoing() |
| | | && staProtocol.isLoading() |
| | | && staProtocol.isInEnable() |
| | | && (staProtocol.getWorkNo() == 0 || (staProtocol.getWorkNo()>9899 && staProtocol.getWorkNo()<10000)) |
| | | ) {//&& staProtocol.isPakMk() && !Cools.isEmpty(barcode)) { |
| | | |
| | | if (staProtocol.isAutoing() && staProtocol.getWorkNo() == 0) {//&& staProtocol.isPakMk() && !Cools.isEmpty(barcode)) { |
| | | // && staProtocol.isInEnable() |
| | | //任务完成 |
| | | boolean result1 = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(3, staProtocol)); |
| | | Thread.sleep(100); |
| | | |
| | | staProtocol.setWorkNo(wrkMast.getWrkNo()); |
| | | staProtocol.setStaNo(144); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | boolean result = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(2, staProtocol)); |
| | | // boolean result1 = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(3, staProtocol)); |
| | | // Thread.sleep(100); |
| | | StaProtocol staProtocolnew = new StaProtocol(); |
| | | staProtocolnew.setSiteId(staProtocol.getSiteId()); |
| | | staProtocolnew.setWorkNo(wrkMast.getWrkNo()); |
| | | staProtocolnew.setStaNo(144); |
| | | devpThread.setPakMk(staProtocolnew.getSiteId(), false); |
| | | devpThread.setReportSign(staProtocolnew.getSiteId(), true); |
| | | boolean result = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(2, staProtocolnew)); |
| | | if (!result) { |
| | | throw new CoolException("更新plc站点信息失败==>驱动码垛位托盘前进失败!"); |
| | | } |
| | | wrkMast.setWrkSts(52L); |
| | | wrkMastMapper.updateById(wrkMast); |
| | | Thread.sleep(100); |
| | | // Thread.sleep(100); |
| | | |
| | | //任务完成 |
| | | boolean result2 = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(4, staProtocol)); |
| | | // boolean result2 = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(4, staProtocol)); |
| | | |
| | | } |
| | | } |
| | |
| | | for (int staNo : staNos){ |
| | | BasDevp basDevp = basDevpService.selectById(staNo); |
| | | BasDevp basDevp135 = basDevpService.selectById(135); |
| | | if (basDevp.getWrkNo()==0 || (basDevp.getWrkNo()<10000 && basDevp.getWrkNo()>9899) ){ |
| | | if (basDevp.getWrkNo()==0){ |
| | | continue; |
| | | } |
| | | if (basDevp135.getReportSign()!=0){ |
| | |
| | | } else { |
| | | staProtocol135 = staProtocol135.clone(); |
| | | } |
| | | if (staProtocol135.getWorkNo()<9900 || staProtocol135.getWorkNo()>9999 || staProtocol135.getWorkNo()==0 |
| | | || !staProtocol135.isLoading() || !staProtocol135.isAutoing()){ |
| | | if ( staProtocol135.getWorkNo()!=0 |
| | | || !staProtocol135.isLoading() || !staProtocol135.isAutoing() || !staProtocol135.isEmptyMk()){ |
| | | continue; |
| | | } |
| | | StaProtocol staProtocol = devpThread.getStation().get(staNo); |
| | |
| | | // } |
| | | |
| | | //任务完成 |
| | | boolean result1 = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(3, staProtocol135)); |
| | | try{ |
| | | Thread.sleep(100); |
| | | }catch (Exception e){ } |
| | | // boolean result1 = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(3, staProtocol135)); |
| | | // try{ |
| | | // Thread.sleep(100); |
| | | // }catch (Exception e){ } |
| | | basDevp135.setReportSign(2); |
| | | basDevpService.updateById(basDevp135); |
| | | int workNo = commonService.getWorkNo(5); |
| | | staProtocol135.setWorkNo(workNo); |
| | | staProtocol135.setStaNo(144); |
| | | devpThread.setPakMk(staProtocol135.getSiteId(), false); |
| | | boolean result = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(2, staProtocol135)); |
| | | |
| | | StaProtocol staProtocolnew = new StaProtocol(); |
| | | staProtocolnew.setSiteId(staProtocol135.getSiteId()); |
| | | staProtocolnew.setWorkNo(workNo); |
| | | staProtocolnew.setStaNo(144); |
| | | |
| | | devpThread.setPakMk(staProtocolnew.getSiteId(), false); |
| | | boolean result = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(2, staProtocolnew)); |
| | | if (!result) { |
| | | throw new CoolException("更新plc站点信息失败==>驱动码垛位托盘前进失败!"); |
| | | } |
| | | boolean result2 = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(4, staProtocol135)); |
| | | // boolean result2 = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(4, staProtocol135)); |
| | | |
| | | } |
| | | } |
| | |
| | | if (!rgvComplete){ |
| | | log.error("小车复位失败,小车号{}!",rgvProtocol.getRgvNo()); |
| | | } |
| | | BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); |
| | | |
| | | RgvOneSign rgvSignTwo = rgvOneSignMapper.selectOneSign("rgvTwo"); |
| | | int rgvSignTwoType = 0; |
| | | if (!Cools.isEmpty(rgvSignTwo)){ |
| | | rgvSignTwoType = rgvSignTwo.getRgvOneSign(); |
| | | } |
| | | BasRgvMap basRgvMap = basRgvMapService.selectByIdSignTwo(rgvProtocol.getRgvNo(),rgvSignTwoType); |
| | | basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); |
| | | rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute()); |
| | | break; |
| | | } |
| | | WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().longValue()); |
| | | if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getType()!=1 || wrkMastSta.getWrkSts()!=1){ |
| | | if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getType()!=1){ |
| | | log.error("未查到小车执行任务或者执行任务状态不符合!"+wrkMastSta); |
| | | continue; |
| | | } |
| | | if (wrkMastSta.getWrkSts()!=1){ |
| | | if (wrkMastSta.getWrkType()==3 && wrkMastSta.getWrkSts()==2 && rgvProtocol.getLoaded1()==1){ |
| | | // boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1()); |
| | | // if (!rgvComplete){ |
| | | // log.error("小车复位失败,小车号{}!",rgvProtocol.getRgvNo()); |
| | | // break; |
| | | // } |
| | | rgvAvoidanceXYWrkMast(rgvProtocol.getRgvNo(),wrkMastSta.getWrkNo().shortValue()); |
| | | continue; |
| | | } |
| | | if (wrkMastSta.getWrkType()==6){ |
| | | boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo()); |
| | | wrkMastSta.setWrkSts(3); |
| | | wrkMastStaMapper.updateById(wrkMastSta); |
| | | continue; |
| | | } |
| | | continue; |
| | | } |
| | | if (wrkMastSta.getWrkType()==5){ |
| | | boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1()); |
| | | wrkMastSta.setWrkSts(3); |
| | | wrkMastStaMapper.updateById(wrkMastSta); |
| | | continue; |
| | | } |
| | | /* WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue()); |
| | |
| | | } |
| | | wrkMastSta.setWrkSts(3); |
| | | wrkMastStaMapper.updateById(wrkMastSta); |
| | | BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); |
| | | |
| | | RgvOneSign rgvSignTwo = rgvOneSignMapper.selectOneSign("rgvTwo"); |
| | | int rgvSignTwoType = 0; |
| | | if (!Cools.isEmpty(rgvSignTwo)){ |
| | | rgvSignTwoType = rgvSignTwo.getRgvOneSign(); |
| | | } |
| | | BasRgvMap basRgvMap = basRgvMapService.selectByIdSignTwo(rgvProtocol.getRgvNo(),rgvSignTwoType); |
| | | basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); |
| | | rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute()); |
| | | }else if (rgvProtocol.getTaskNo2()!=0 && (rgvProtocol.getStatusType2()==RgvStatusType.WAITING || rgvProtocol.getStatusType2()==RgvStatusType.FETCHWAITING)){ |
| | | if (rgvProtocol.getTaskNo2()==(short)32222){ |
| | | boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo()); |
| | | boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1()); |
| | | if (!rgvComplete){ |
| | | log.error("小车复位失败,小车号{}!",rgvProtocol.getRgvNo()); |
| | | } |
| | | BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); |
| | | |
| | | RgvOneSign rgvSignTwo = rgvOneSignMapper.selectOneSign("rgvTwo"); |
| | | int rgvSignTwoType = 0; |
| | | if (!Cools.isEmpty(rgvSignTwo)){ |
| | | rgvSignTwoType = rgvSignTwo.getRgvOneSign(); |
| | | } |
| | | BasRgvMap basRgvMap = basRgvMapService.selectByIdSignTwo(rgvProtocol.getRgvNo(),rgvSignTwoType); |
| | | basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); |
| | | rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute()); |
| | | break; |
| | |
| | | // |
| | | // } |
| | | }*/ |
| | | boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo()); |
| | | boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1()); |
| | | if (!rgvComplete){ |
| | | log.error("小车复位失败,小车号{}!",rgvProtocol.getRgvNo()); |
| | | break; |
| | | } |
| | | wrkMastSta.setWrkSts(3); |
| | | wrkMastStaMapper.updateById(wrkMastSta); |
| | | BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); |
| | | |
| | | RgvOneSign rgvSignTwo = rgvOneSignMapper.selectOneSign("rgvTwo"); |
| | | int rgvSignTwoType = 0; |
| | | if (!Cools.isEmpty(rgvSignTwo)){ |
| | | rgvSignTwoType = rgvSignTwo.getRgvOneSign(); |
| | | } |
| | | BasRgvMap basRgvMap = basRgvMapService.selectByIdSignTwo(rgvProtocol.getRgvNo(),rgvSignTwoType); |
| | | basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); |
| | | rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute()); |
| | | }else { |
| | |
| | | // 只有当RGV空闲、自动,工位一无物//rgv可用 |
| | | if (rgvProtocol.getStatusType() == RgvStatusType.IDLE |
| | | && rgvProtocol.getStatusType1() == RgvStatusType.IDLE |
| | | && rgvProtocol.getStatusType2() == RgvStatusType.IDLE |
| | | && (rgvProtocol.getStatusType2() == RgvStatusType.IDLE || (rgvProtocol.getStatusType2() == RgvStatusType.SOS100 && rgvProtocol.getTaskNo2()==0)) |
| | | && rgvProtocol.getModeType() == RgvModeType.AUTO |
| | | && rgvProtocol.getLoaded1()==0 |
| | | && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0 |
| | | //现场修改:叠盘机,不满都算无物,怎么判断需要跟电控对接 |
| | | && ((rgvProtocol.getTaskNo1()==0 && rgvProtocol.getLoaded1()==0) |
| | | || (rgvProtocol.getTaskNo1()>0 && rgvProtocol.getLoaded1()==1)) |
| | | && rgvProtocol.getTaskNo2()==0 |
| | | ) { |
| | | switch (sign){ |
| | | //执行小车货物搬运任务 |
| | | case 1: |
| | | signWork = rgvRunWrkMastFullSta(rgvSlave); |
| | | if (!signWork){ |
| | | signWork = rgvRunWrkMastFullStaPutOrTake(rgvSlave); |
| | | } |
| | | break; |
| | | //执行小车空板搬运任务 |
| | | case 2://放//拆盘 |
| | | signWork = rgvRunWrkMastEmptyStaPut(rgvSlave); |
| | | if (!signWork){ |
| | | signWork = rgvRunWrkMastFullStaPut(rgvSlave); |
| | | } |
| | | break; |
| | | case 3://满放 |
| | | signWork = rgvRunWrkMastEmptyStaPutFull(rgvSlave); |
| | | if (!signWork){ |
| | | signWork = rgvRunWrkMastFullStaTake(rgvSlave); |
| | | } |
| | | break; |
| | | case 4://取叠盘 |
| | | signWork = rgvRunWrkMastEmptyStaTake(rgvSlave); |
| | |
| | | break; |
| | | case 6:////提升 |
| | | // signWork = qwe(); |
| | | signWork = rgvRunWrkMastMove(rgvSlave); |
| | | break; |
| | | default: |
| | | break; |
| | |
| | | switch (signCount){ |
| | | case 1://执行小车货物搬运任务 |
| | | signWork = rgvRunWrkMastFullSta(rgvSlave); |
| | | if (!signWork){ |
| | | signWork = rgvRunWrkMastFullStaPutOrTake(rgvSlave); |
| | | } |
| | | break; |
| | | case 2://放//拆盘 |
| | | signWork = rgvRunWrkMastEmptyStaPut(rgvSlave); |
| | | if (!signWork){ |
| | | signWork = rgvRunWrkMastFullStaPut(rgvSlave); |
| | | } |
| | | break; |
| | | case 3://满放 |
| | | signWork = rgvRunWrkMastEmptyStaPutFull(rgvSlave); |
| | | if (!signWork){ |
| | | signWork = rgvRunWrkMastFullStaTake(rgvSlave); |
| | | } |
| | | break; |
| | | case 4://取叠盘 |
| | | signWork = rgvRunWrkMastEmptyStaTake(rgvSlave); |
| | |
| | | // 只有当RGV空闲、自动,工位一无物//rgv可用 |
| | | if (rgvProtocol.getStatusType() == RgvStatusType.IDLE |
| | | && rgvProtocol.getStatusType1() == RgvStatusType.IDLE |
| | | && rgvProtocol.getStatusType2() == RgvStatusType.IDLE |
| | | && (rgvProtocol.getStatusType2() == RgvStatusType.IDLE |
| | | || (rgvProtocol.getStatusType2() == RgvStatusType.SOS100 && rgvProtocol.getTaskNo2()==0)) |
| | | && rgvProtocol.getModeType() == RgvModeType.AUTO |
| | | && rgvProtocol.getLoaded1()==0 |
| | | && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0 |
| | | ) { |
| | | BasRgvMap basRgvMap = basRgvMapMapper.selectById(basRgv.getRgvNo()); |
| | | |
| | | RgvOneSign rgvSignTwo = rgvOneSignMapper.selectOneSign("rgvTwo"); |
| | | int rgvSignTwoType = 0; |
| | | if (!Cools.isEmpty(rgvSignTwo)){ |
| | | rgvSignTwoType = rgvSignTwo.getRgvOneSign(); |
| | | } |
| | | BasRgvMap basRgvMap = basRgvMapService.selectByIdSignTwo(basRgv.getRgvNo(),rgvSignTwoType); |
| | | if (basRgvMap == null) { |
| | | log.error("{}号RGV尚未在数据库地图中进行维护!", rgvProtocol.getRgvNo()); |
| | | return false; |
| | |
| | | return false; |
| | | } |
| | | /** |
| | | * 执行小车搬运任务 |
| | | */ |
| | | public synchronized boolean rgvRunWrkMastFullStaPutOrTake(RgvSlave rgvSlave) { |
| | | try{ |
| | | RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); |
| | | RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); |
| | | if (rgvProtocol == null) { |
| | | return false; |
| | | } |
| | | BasRgv basRgv = basRgvService.selectById(rgvSlave.getId()); |
| | | if (basRgv == null) { |
| | | log.error("{}号RGV尚未在数据库进行维护!", rgvSlave.getId()); |
| | | return false; |
| | | } |
| | | |
| | | // 只有当RGV空闲、自动,工位一无物//rgv可用 |
| | | if (rgvProtocol.getStatusType() == RgvStatusType.IDLE |
| | | && rgvProtocol.getStatusType1() == RgvStatusType.IDLE |
| | | && (rgvProtocol.getStatusType2() == RgvStatusType.IDLE |
| | | || (rgvProtocol.getStatusType2() == RgvStatusType.SOS100 && rgvProtocol.getTaskNo2()==0)) |
| | | && rgvProtocol.getModeType() == RgvModeType.AUTO |
| | | && rgvProtocol.getLoaded1()==0 |
| | | && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0 |
| | | ) { |
| | | |
| | | RgvOneSign rgvSignTwo = rgvOneSignMapper.selectOneSign("rgvTwo"); |
| | | int rgvSignTwoType = 0; |
| | | if (!Cools.isEmpty(rgvSignTwo)){ |
| | | rgvSignTwoType = rgvSignTwo.getRgvOneSign(); |
| | | } |
| | | BasRgvMap basRgvMap = basRgvMapService.selectByIdSignTwo(basRgv.getRgvNo(),rgvSignTwoType); |
| | | if (basRgvMap == null) { |
| | | log.error("{}号RGV尚未在数据库地图中进行维护!", rgvProtocol.getRgvNo()); |
| | | return false; |
| | | } |
| | | List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); |
| | | basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //更新小车当前位置站点号 |
| | | List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route); |
| | | for (WrkMastSta wrkMastSta : wrkMastStaList){ |
| | | if (wrkMastSta.getType()!=1 || wrkMastSta.getWrkType()!=3){//1:满版 3:取放 |
| | | continue; |
| | | } |
| | | BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaEnd()); |
| | | if (!basDevp.getAutoing().equals("Y")){ |
| | | continue; |
| | | } |
| | | if (basDevp.getDevNo()>117 && basDevp.getDevNo()<124){ |
| | | if (basDevp.getEmptyMk().equals("Y")){ |
| | | continue; |
| | | } |
| | | if (basDevp.getLoading().equals("Y") && basDevp.getWrkNo()!=0){ |
| | | Date date = new Date(); |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, rgvSlave.getDevpPlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo()); |
| | | if (staProtocol == null) { |
| | | log.info(date+"取放任务下发:未查询到站点信息:"+wrkMastSta); |
| | | continue; |
| | | } |
| | | if (!staProtocol.isAutoing()){ |
| | | continue; |
| | | } |
| | | if (staProtocol.isLoading() && staProtocol.getWorkNo() != 0){ |
| | | WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo()); |
| | | if (Cools.isEmpty(wrkMast) || wrkMast.getIoType()!=101 || Cools.isEmpty(wrkMast.getSheetNo()) || wrkMast.getSheetNo().equals("0")){ |
| | | continue; |
| | | } |
| | | BasDevp basDevpS = basDevpService.selectById(wrkMastSta.getStaStart()); |
| | | if (!basDevpS.getAutoing().equals("Y") || !basDevpS.getLoading().equals("Y") || basDevpS.getWrkNo()!=wrkMastSta.getWrkNo().intValue()){ |
| | | continue; |
| | | } |
| | | StaProtocol staProtocols = devpThread.getStation().get(basDevpS.getDevNo()); |
| | | if (staProtocols == null) { |
| | | log.info(date+"取放任务下发:未查询到站点信息:"+wrkMastSta); |
| | | continue; |
| | | } |
| | | if (!staProtocols.isAutoing() || !staProtocols.isLoading() || staProtocols.getWorkNo() != wrkMastSta.getWrkNo().intValue()){ |
| | | continue; |
| | | } |
| | | |
| | | |
| | | log.info(date+"取货任务下发:小车工作档:"+wrkMastSta); |
| | | log.info(date+"取货任务下发:目标站状态:"+basDevp); |
| | | boolean sign = rgvTakeFull(basRgvMap.getRgvNo(), wrkMastSta); |
| | | if (sign){ |
| | | boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd()); |
| | | if (signMap){ |
| | | wrkMastSta.setWrkSts(2); |
| | | try{ |
| | | wrkMastStaMapper.updateById(wrkMastSta); |
| | | }catch (Exception e){ |
| | | log.error("更新小车任务失败"); |
| | | } |
| | | return true; |
| | | }else { |
| | | log.error("3978行,货物搬运单取任务:工作号{}所属任务下发后地图同步失败",wrkMastSta.getWrkNo()); |
| | | } |
| | | }else { |
| | | log.error("工作号{}所属任务下发失败",wrkMastSta.getWrkNo()); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } else if (rgvProtocol.getStatusType() == RgvStatusType.IDLE |
| | | && rgvProtocol.getStatusType1() == RgvStatusType.IDLE |
| | | && (rgvProtocol.getStatusType2() == RgvStatusType.IDLE |
| | | || (rgvProtocol.getStatusType2() == RgvStatusType.SOS100 && rgvProtocol.getTaskNo2()==0)) |
| | | && rgvProtocol.getModeType() == RgvModeType.AUTO |
| | | && rgvProtocol.getLoaded1()==1 |
| | | && rgvProtocol.getTaskNo1()!=0 && rgvProtocol.getTaskNo2()==0 |
| | | ) {// 只有当RGV空闲、自动,工位一有物 有工作号//rgv可用 |
| | | |
| | | RgvOneSign rgvSignTwo = rgvOneSignMapper.selectOneSign("rgvTwo"); |
| | | int rgvSignTwoType = 0; |
| | | if (!Cools.isEmpty(rgvSignTwo)){ |
| | | rgvSignTwoType = rgvSignTwo.getRgvOneSign(); |
| | | } |
| | | BasRgvMap basRgvMap = basRgvMapService.selectByIdSignTwo(basRgv.getRgvNo(),rgvSignTwoType); |
| | | if (basRgvMap == null) { |
| | | log.error("{}号RGV尚未在数据库地图中进行维护!", rgvProtocol.getRgvNo()); |
| | | return false; |
| | | } |
| | | basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //更新小车当前位置站点号 |
| | | WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().longValue()); |
| | | if (Cools.isEmpty(wrkMastSta)){ |
| | | return false; |
| | | } |
| | | if (wrkMastSta.getType()!=1 || wrkMastSta.getWrkType()!=3){//1:满版 3:取放 |
| | | return false; |
| | | } |
| | | BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaEnd()); |
| | | if (!basDevp.getAutoing().equals("Y")){ |
| | | return false; |
| | | } |
| | | if (!basDevp.getLoading().equals("Y") && basDevp.getWrkNo()==0){ |
| | | Date date = new Date(); |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, rgvSlave.getDevpPlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo()); |
| | | if (staProtocol == null) { |
| | | log.info(date+"取放任务下发:未查询到站点信息:"+wrkMastSta); |
| | | return false; |
| | | } |
| | | if (!staProtocol.isAutoing()){ |
| | | return false; |
| | | } |
| | | if (!staProtocol.isLoading() && staProtocol.getWorkNo() == 0){ |
| | | log.info(date+"取货任务下发:小车工作档:"+wrkMastSta); |
| | | log.info(date+"取货任务下发:目标站状态:"+basDevp); |
| | | boolean sign = rgvPutFull(basRgvMap.getRgvNo(), wrkMastSta); |
| | | if (sign){ |
| | | boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd()); |
| | | if (signMap){ |
| | | wrkMastSta.setWrkSts(1); |
| | | try{ |
| | | wrkMastStaMapper.updateById(wrkMastSta); |
| | | }catch (Exception e){ |
| | | log.error("更新小车任务失败"); |
| | | } |
| | | return true; |
| | | }else { |
| | | log.error("3978行,货物搬运单取任务:工作号{}所属任务下发后地图同步失败",wrkMastSta.getWrkNo()); |
| | | } |
| | | }else { |
| | | log.error("工作号{}所属任务下发失败",wrkMastSta.getWrkNo()); |
| | | } |
| | | return true; |
| | | } |
| | | } |
| | | } |
| | | // } |
| | | }catch (Exception e){ |
| | | log.error("3978行执行小车搬运任务下发失败"); |
| | | log.error("3978行"+e); |
| | | } |
| | | return false; |
| | | } |
| | | /** |
| | | * 执行小车搬运任务//拆盘 |
| | | */ |
| | | public synchronized boolean rgvRunWrkMastEmptyStaPut(RgvSlave rgvSlave) {//拆盘 |
| | |
| | | && rgvProtocol.getStatusType1() == RgvStatusType.IDLE |
| | | && rgvProtocol.getStatusType2() == RgvStatusType.IDLE |
| | | && rgvProtocol.getModeType() == RgvModeType.AUTO |
| | | && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0 |
| | | //现场修改:叠盘机,不满都算无物,怎么判断需要跟电控对接 |
| | | && ((rgvProtocol.getTaskNo1()==0 && rgvProtocol.getLoaded1()==0) |
| | | || (rgvProtocol.getTaskNo1()>0 && rgvProtocol.getLoaded1()==1)) |
| | | && rgvProtocol.getTaskNo2()==0 |
| | | && (rgvProtocol.getLoaded2()==3 || rgvProtocol.getLoaded2()==1 || rgvProtocol.getLoaded2()==4)////0 无物;1 一层无物二层有物 (只能拆叠) ;2一层有物二层无物() ;3 1、2层都有物 4:()只允许拆盘 |
| | | ) { |
| | | BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); |
| | | |
| | | RgvOneSign rgvSignTwo = rgvOneSignMapper.selectOneSign("rgvTwo"); |
| | | int rgvSignTwoType = 0; |
| | | if (!Cools.isEmpty(rgvSignTwo)){ |
| | | rgvSignTwoType = rgvSignTwo.getRgvOneSign(); |
| | | } |
| | | BasRgvMap basRgvMap = basRgvMapService.selectByIdSignTwo(basRgv.getRgvNo(),rgvSignTwoType); |
| | | if (basRgvMap == null) { |
| | | log.error("{}号RGV尚未在数据库地图中进行维护!", rgvProtocol.getRgvNo()); |
| | | return false; |
| | |
| | | } |
| | | return false; |
| | | } |
| | | /** |
| | | * 执行小车搬运任务//拆盘 |
| | | */ |
| | | public synchronized boolean rgvRunWrkMastFullStaPut(RgvSlave rgvSlave) {//拆盘 |
| | | try{ |
| | | // for (RgvSlave rgvSlave:slaveProperties.getRgv()) { |
| | | RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); |
| | | RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); |
| | | if (rgvProtocol == null) { |
| | | return false; |
| | | } |
| | | BasRgv basRgv = basRgvService.selectById(rgvSlave.getId()); |
| | | if (basRgv == null) { |
| | | log.error("{}号RGV尚未在数据库进行维护!", rgvSlave.getId()); |
| | | return false; |
| | | } |
| | | |
| | | // 只有当RGV空闲、自动,工位二有物//rgv可用//拆盘 |
| | | if (rgvProtocol.getStatusType() == RgvStatusType.IDLE |
| | | && rgvProtocol.getStatusType1() == RgvStatusType.IDLE |
| | | && (rgvProtocol.getStatusType2() == RgvStatusType.IDLE |
| | | || (rgvProtocol.getStatusType2() == RgvStatusType.SOS100 && rgvProtocol.getTaskNo2()==0)) |
| | | && rgvProtocol.getModeType() == RgvModeType.AUTO |
| | | && rgvProtocol.getLoaded1()==1 |
| | | && rgvProtocol.getTaskNo1()!=0 && rgvProtocol.getTaskNo2()==0 |
| | | ) { |
| | | |
| | | RgvOneSign rgvSignTwo = rgvOneSignMapper.selectOneSign("rgvTwo"); |
| | | int rgvSignTwoType = 0; |
| | | if (!Cools.isEmpty(rgvSignTwo)){ |
| | | rgvSignTwoType = rgvSignTwo.getRgvOneSign(); |
| | | } |
| | | BasRgvMap basRgvMap = basRgvMapService.selectByIdSignTwo(rgvProtocol.getRgvNo(),rgvSignTwoType); |
| | | if (basRgvMap == null) { |
| | | log.error("{}号RGV尚未在数据库地图中进行维护!", rgvProtocol.getRgvNo()); |
| | | return false; |
| | | } |
| | | basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //更新小车当前位置站点号 |
| | | List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());//获取活动范围 |
| | | List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);//查询可执行任务 |
| | | for (WrkMastSta wrkMastSta : wrkMastStaList){ |
| | | if (wrkMastSta.getType()!=1 || wrkMastSta.getWrkType()!=6){// 1:满板 || 工作类型 1:取(叠盘) 2:拆盘 5:满取 6:满放 |
| | | continue; |
| | | } |
| | | boolean sign = false; |
| | | if ( wrkMastSta.getStaEnd()!=0){//放 |
| | | BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaEnd()); |
| | | if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y") || basDevp.getWrkNo()!=0){ |
| | | continue; |
| | | } |
| | | if (basDevp.getDevNo()>117 && basDevp.getDevNo()<124){ |
| | | if (basDevp.getLoadingSuper().equals("Y")){ |
| | | continue; |
| | | } |
| | | } |
| | | if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){ |
| | | if (!basDevp.getEmptyMk().equals("Y")){ |
| | | continue; |
| | | } |
| | | } |
| | | Date date = new Date(); |
| | | |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, rgvSlave.getDevpPlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo()); |
| | | if (staProtocol == null) { |
| | | log.info(date+"拆盘任务下发:未查询到站点信息:"+wrkMastSta); |
| | | continue; |
| | | } |
| | | if (!staProtocol.isAutoing() || staProtocol.isLoading() || staProtocol.getWorkNo() != 0){ |
| | | continue; |
| | | } |
| | | if (basDevp.getDevNo()>117 && basDevp.getDevNo()<124){ |
| | | if (staProtocol.isLoadingSuper()){ |
| | | continue; |
| | | } |
| | | } |
| | | if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){ |
| | | if (!staProtocol.isEmptyMk()){ |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | log.info(date+"拆盘任务下发:小车工作档:"+wrkMastSta); |
| | | log.info(date+"拆盘任务下发:目标站状态:"+basDevp); |
| | | // sign = rgvPutEmpty(rgvProtocol.getRgvNo(),wrkMastSta);//拆盘 |
| | | sign = rgvPutFull(basRgvMap.getRgvNo(), wrkMastSta); |
| | | |
| | | }else { |
| | | continue; |
| | | } |
| | | if (sign){ |
| | | boolean signMap = rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), wrkMastSta.getStaEnd()); |
| | | if (signMap){ |
| | | wrkMastSta.setWrkSts(2); |
| | | try{ |
| | | wrkMastStaMapper.updateById(wrkMastSta); |
| | | }catch (Exception e){ |
| | | log.error("更新小车任务失败"); |
| | | } |
| | | return true; |
| | | }else { |
| | | log.error("3857行,货物搬运任务:工作号{}所属任务下发后地图同步失败",wrkMastSta.getWrkNo()); |
| | | } |
| | | }else { |
| | | log.error("工作号{}所属任务下发失败",wrkMastSta.getWrkNo()); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | // } |
| | | }catch (Exception e){ |
| | | log.error("3933行执行小车放空板任务下发失败"); |
| | | log.error("3933行"+e); |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * 执行小车搬运任务 |
| | |
| | | && rgvProtocol.getStatusType1() == RgvStatusType.IDLE |
| | | && rgvProtocol.getStatusType2() == RgvStatusType.IDLE |
| | | && rgvProtocol.getModeType() == RgvModeType.AUTO |
| | | && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0 |
| | | //现场修改:叠盘机,不满都算无物,怎么判断需要跟电控对接 |
| | | && ((rgvProtocol.getTaskNo1()==0 && rgvProtocol.getLoaded1()==0) |
| | | || (rgvProtocol.getTaskNo1()>0 && rgvProtocol.getLoaded1()==1)) |
| | | && rgvProtocol.getTaskNo2()==0 |
| | | && (rgvProtocol.getLoaded2()==2 || rgvProtocol.getLoaded2()==3 ) ////0 无物;1 一层无物二层有物 ;2一层有物二层无物 (只能满放);3 1、2层都有物 4:()只允许拆盘 |
| | | ) { |
| | | BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); |
| | | |
| | | RgvOneSign rgvSignTwo = rgvOneSignMapper.selectOneSign("rgvTwo"); |
| | | int rgvSignTwoType = 0; |
| | | if (!Cools.isEmpty(rgvSignTwo)){ |
| | | rgvSignTwoType = rgvSignTwo.getRgvOneSign(); |
| | | } |
| | | BasRgvMap basRgvMap = basRgvMapService.selectByIdSignTwo(rgvProtocol.getRgvNo(),rgvSignTwoType); |
| | | if (basRgvMap == null) { |
| | | log.error("{}号RGV尚未在数据库地图中进行维护!", rgvProtocol.getRgvNo()); |
| | | return false; |
| | |
| | | && rgvProtocol.getStatusType1() == RgvStatusType.IDLE |
| | | && rgvProtocol.getStatusType2() == RgvStatusType.IDLE |
| | | && rgvProtocol.getModeType() == RgvModeType.AUTO |
| | | && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0 |
| | | //现场修改:叠盘机,不满都算无物,怎么判断需要跟电控对接 |
| | | && ((rgvProtocol.getTaskNo1()==0 && rgvProtocol.getLoaded1()==0) |
| | | || (rgvProtocol.getTaskNo1()>0 && rgvProtocol.getLoaded1()==1)) |
| | | && rgvProtocol.getTaskNo2()==0 |
| | | && (rgvProtocol.getLoaded2()==0 || rgvProtocol.getLoaded2()==1 ) //现场修改:叠盘机,////0 无物;1 一层无物二层有物(只能拆叠) ;2一层有物二层无物 (只能满放);3 1、2层都有物 4:()只允许拆盘 |
| | | ) { |
| | | BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); |
| | | |
| | | RgvOneSign rgvSignTwo = rgvOneSignMapper.selectOneSign("rgvTwo"); |
| | | int rgvSignTwoType = 0; |
| | | if (!Cools.isEmpty(rgvSignTwo)){ |
| | | rgvSignTwoType = rgvSignTwo.getRgvOneSign(); |
| | | } |
| | | BasRgvMap basRgvMap = basRgvMapService.selectByIdSignTwo(rgvProtocol.getRgvNo(),rgvSignTwoType); |
| | | if (basRgvMap == null) { |
| | | log.error("{}号RGV尚未在数据库地图中进行维护!", rgvProtocol.getRgvNo()); |
| | | return false; |
| | |
| | | return false; |
| | | } |
| | | |
| | | public synchronized boolean rgvRunWrkMastFullStaTake(RgvSlave rgvSlave) {//叠盘 |
| | | try{ |
| | | // for (RgvSlave rgvSlave:slaveProperties.getRgv()) { |
| | | RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); |
| | | RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); |
| | | if (rgvProtocol == null) { |
| | | return false; |
| | | } |
| | | BasRgv basRgv = basRgvService.selectById(rgvSlave.getId()); |
| | | if (basRgv == null) { |
| | | log.error("{}号RGV尚未在数据库进行维护!", rgvSlave.getId()); |
| | | return false; |
| | | } |
| | | |
| | | // 只有当RGV空闲、自动,工位二无物//rgv可用 |
| | | if (rgvProtocol.getStatusType() == RgvStatusType.IDLE |
| | | && rgvProtocol.getStatusType1() == RgvStatusType.IDLE |
| | | && (rgvProtocol.getStatusType2() == RgvStatusType.IDLE |
| | | || (rgvProtocol.getStatusType2() == RgvStatusType.SOS100 && rgvProtocol.getTaskNo2()==0)) |
| | | && rgvProtocol.getModeType() == RgvModeType.AUTO |
| | | && rgvProtocol.getLoaded1() == 0 |
| | | && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0 |
| | | ) { |
| | | |
| | | RgvOneSign rgvSignTwo = rgvOneSignMapper.selectOneSign("rgvTwo"); |
| | | int rgvSignTwoType = 0; |
| | | if (!Cools.isEmpty(rgvSignTwo)){ |
| | | rgvSignTwoType = rgvSignTwo.getRgvOneSign(); |
| | | } |
| | | BasRgvMap basRgvMap = basRgvMapService.selectByIdSignTwo(rgvProtocol.getRgvNo(),rgvSignTwoType); |
| | | if (basRgvMap == null) { |
| | | log.error("{}号RGV尚未在数据库地图中进行维护!", rgvProtocol.getRgvNo()); |
| | | return false; |
| | | } |
| | | List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); |
| | | basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //更新小车当前位置站点号 |
| | | List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route); |
| | | for (WrkMastSta wrkMastSta : wrkMastStaList){ |
| | | if (wrkMastSta.getType()!=1 || wrkMastSta.getWrkType()!=5){// 1:满板 || 工作类型 1:取(叠盘) 2:拆盘 5:满取 6:满放 |
| | | continue; |
| | | } |
| | | boolean sign = false; |
| | | if ( wrkMastSta.getStaStart()!=0){//取 |
| | | BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaStart()); |
| | | if (!basDevp.getAutoing().equals("Y") || !basDevp.getLoading().equals("Y")){ |
| | | continue; |
| | | } |
| | | Date date = new Date(); |
| | | |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, rgvSlave.getDevpPlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo()); |
| | | if (staProtocol == null) { |
| | | log.info(date+"叠盘任务下发:未查询到站点信息:"+wrkMastSta); |
| | | continue; |
| | | } |
| | | if (!staProtocol.isAutoing() || !staProtocol.isLoading()){ |
| | | continue; |
| | | } |
| | | |
| | | log.info(date+"叠盘任务下发:小车工作档:"+wrkMastSta); |
| | | log.info(date+"叠盘任务下发:目标站状态:"+basDevp); |
| | | // sign = rgvTakeEmpty(rgvProtocol.getRgvNo(),wrkMastSta);//叠盘 |
| | | sign = rgvTakeFull(rgvProtocol.getRgvNo(),wrkMastSta);//叠盘 |
| | | }else { |
| | | continue; |
| | | } |
| | | if (sign){ |
| | | boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), basRgvMap.getStartRoute()); |
| | | if (signMap){ |
| | | wrkMastSta.setWrkSts(1); |
| | | try{ |
| | | wrkMastStaMapper.updateById(wrkMastSta); |
| | | }catch (Exception e){ |
| | | log.error("更新小车任务失败"); |
| | | } |
| | | return true; |
| | | }else { |
| | | log.error("3879行,货物搬运任务:工作号{}所属任务下发后地图同步失败",wrkMastSta.getWrkNo()); |
| | | } |
| | | }else { |
| | | log.error("工作号{}所属任务下发失败",wrkMastSta.getWrkNo()); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | // } |
| | | }catch (Exception e){ |
| | | log.error("3989行执行小车取空板任务下发失败"); |
| | | log.error("3989行"+e); |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | public synchronized boolean rgvRunWrkMastEmptyStaTakeFull(RgvSlave rgvSlave) {//满取 |
| | | try{ |
| | | // for (RgvSlave rgvSlave:slaveProperties.getRgv()) { |
| | |
| | | && rgvProtocol.getStatusType1() == RgvStatusType.IDLE |
| | | && rgvProtocol.getStatusType2() == RgvStatusType.IDLE |
| | | && rgvProtocol.getModeType() == RgvModeType.AUTO |
| | | && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0 |
| | | //现场修改:叠盘机,不满都算无物,怎么判断需要跟电控对接 |
| | | && ((rgvProtocol.getTaskNo1()==0 && rgvProtocol.getLoaded1()==0) |
| | | || (rgvProtocol.getTaskNo1()>0 && rgvProtocol.getLoaded1()==1)) |
| | | && rgvProtocol.getTaskNo2()==0 |
| | | && rgvProtocol.getLoaded2()==0 //现场修改:叠盘机,////0 无物;1 一层无物二层有物(只能拆叠) ;2一层有物二层无物 (只能满放);3 1、2层都有物 4:()只允许拆盘 |
| | | ) { |
| | | BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); |
| | | |
| | | RgvOneSign rgvSignTwo = rgvOneSignMapper.selectOneSign("rgvTwo"); |
| | | int rgvSignTwoType = 0; |
| | | if (!Cools.isEmpty(rgvSignTwo)){ |
| | | rgvSignTwoType = rgvSignTwo.getRgvOneSign(); |
| | | } |
| | | BasRgvMap basRgvMap = basRgvMapService.selectByIdSignTwo(rgvProtocol.getRgvNo(),rgvSignTwoType); |
| | | if (basRgvMap == null) { |
| | | log.error("{}号RGV尚未在数据库地图中进行维护!", rgvProtocol.getRgvNo()); |
| | | return false; |
| | |
| | | log.info(date+"满取任务下发:未查询到站点信息:"+wrkMastSta); |
| | | continue; |
| | | } |
| | | if (!staProtocol.isAutoing() || staProtocol.isLoading()){ |
| | | if (!staProtocol.isAutoing() || !staProtocol.isLoading()){ |
| | | continue; |
| | | } |
| | | |
| | |
| | | return true; |
| | | }else { |
| | | log.error("3879行,货物搬运任务:工作号{}所属任务下发后地图同步失败",wrkMastSta.getWrkNo()); |
| | | } |
| | | }else { |
| | | log.error("工作号{}所属任务下发失败",wrkMastSta.getWrkNo()); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | // } |
| | | }catch (Exception e){ |
| | | log.error("3989行执行小车取空板任务下发失败"); |
| | | log.error("3989行"+e); |
| | | } |
| | | return false; |
| | | } |
| | | public synchronized boolean rgvRunWrkMastMove(RgvSlave rgvSlave) {//满取 |
| | | try{ |
| | | // for (RgvSlave rgvSlave:slaveProperties.getRgv()) { |
| | | RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); |
| | | RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); |
| | | if (rgvProtocol == null) { |
| | | return false; |
| | | } |
| | | BasRgv basRgv = basRgvService.selectById(rgvSlave.getId()); |
| | | if (basRgv == null) { |
| | | log.error("{}号RGV尚未在数据库进行维护!", rgvSlave.getId()); |
| | | return false; |
| | | } |
| | | |
| | | // 只有当RGV空闲、自动,工位二无物//rgv可用 |
| | | if (rgvProtocol.getStatusType() == RgvStatusType.IDLE |
| | | && rgvProtocol.getStatusType1() == RgvStatusType.IDLE |
| | | && (rgvProtocol.getStatusType2() == RgvStatusType.IDLE |
| | | || (rgvProtocol.getStatusType2() == RgvStatusType.SOS100 && rgvProtocol.getTaskNo2()==0)) |
| | | && rgvProtocol.getModeType() == RgvModeType.AUTO |
| | | //现场修改:叠盘机,不满都算无物,怎么判断需要跟电控对接 |
| | | && ((rgvProtocol.getTaskNo1()==0 && rgvProtocol.getLoaded1()==0) |
| | | || (rgvProtocol.getTaskNo1()>0 && rgvProtocol.getLoaded1()==1)) |
| | | && rgvProtocol.getTaskNo2()==0 |
| | | ) { |
| | | |
| | | RgvOneSign rgvSignTwo = rgvOneSignMapper.selectOneSign("rgvTwo"); |
| | | int rgvSignTwoType = 0; |
| | | if (!Cools.isEmpty(rgvSignTwo)){ |
| | | rgvSignTwoType = rgvSignTwo.getRgvOneSign(); |
| | | } |
| | | BasRgvMap basRgvMap = basRgvMapService.selectByIdSignTwo(rgvProtocol.getRgvNo(),rgvSignTwoType); |
| | | if (basRgvMap == null) { |
| | | log.error("{}号RGV尚未在数据库地图中进行维护!", rgvProtocol.getRgvNo()); |
| | | return false; |
| | | } |
| | | List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); |
| | | basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //更新小车当前位置站点号 |
| | | List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route); |
| | | for (WrkMastSta wrkMastSta : wrkMastStaList){ |
| | | if (wrkMastSta.getWrkType()!=4){// 2:空板 || 工作类型 1:取(叠盘) 2:拆盘 5:满取 6:满放 4 移动 |
| | | continue; |
| | | } |
| | | boolean sign = false; |
| | | if ( wrkMastSta.getStaEnd()!=0){//放 |
| | | sign = rgvAvoidanceXY(rgvProtocol.getRgvNo(),wrkMastSta);//拆盘 |
| | | }else { |
| | | continue; |
| | | } |
| | | if (sign){ |
| | | boolean signMap = rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), wrkMastSta.getStaEnd()); |
| | | if (signMap){ |
| | | wrkMastSta.setWrkSts(3); |
| | | try{ |
| | | wrkMastStaMapper.updateById(wrkMastSta); |
| | | }catch (Exception e){ |
| | | log.error("更新小车任务失败"); |
| | | } |
| | | return true; |
| | | }else { |
| | | log.error("3857行,货物搬运任务:工作号{}所属任务下发后地图同步失败",wrkMastSta.getWrkNo()); |
| | | } |
| | | }else { |
| | | log.error("工作号{}所属任务下发失败",wrkMastSta.getWrkNo()); |
| | |
| | | // 只有当RGV空闲、自动,工位一无物//rgv可用 |
| | | if (rgvProtocol.getStatusType() == RgvStatusType.IDLE |
| | | && rgvProtocol.getModeType() == RgvModeType.AUTO |
| | | && rgvProtocol.getLoaded1()==0 //现场修改:叠盘机,不满都算无物,怎么判断需要跟电控对接 |
| | | && rgvProtocol.getTaskNo1()==0 |
| | | //现场修改:叠盘机,不满都算无物,怎么判断需要跟电控对接 |
| | | && ((rgvProtocol.getTaskNo1()==0 && rgvProtocol.getLoaded1()==0) |
| | | || (rgvProtocol.getTaskNo1()>0 && rgvProtocol.getLoaded1()==1)) |
| | | && rgvProtocol.getTaskNo2()==0 |
| | | && rgvProtocol.getStatusType1() == RgvStatusType.IDLE |
| | | && rgvProtocol.getStatusType2() == RgvStatusType.IDLE |
| | |
| | | // 只有当RGV空闲、自动,工位一无物//rgv可用 |
| | | if (rgvProtocol.getStatusType() == RgvStatusType.IDLE |
| | | && rgvProtocol.getModeType() == RgvModeType.AUTO |
| | | && rgvProtocol.getLoaded1()==0 //现场修改:叠盘机,不满都算无物,怎么判断需要跟电控对接 |
| | | && rgvProtocol.getTaskNo1()==0 |
| | | //现场修改:叠盘机,不满都算无物,怎么判断需要跟电控对接 |
| | | && ((rgvProtocol.getTaskNo1()==0 && rgvProtocol.getLoaded1()==0) |
| | | || (rgvProtocol.getTaskNo1()>0 && rgvProtocol.getLoaded1()==1)) |
| | | && rgvProtocol.getTaskNo2()==0 |
| | | ) { |
| | | BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvSlave.getId()); |
| | | |
| | | RgvOneSign rgvSignTwo = rgvOneSignMapper.selectOneSign("rgvTwo"); |
| | | int rgvSignTwoType = 0; |
| | | if (!Cools.isEmpty(rgvSignTwo)){ |
| | | rgvSignTwoType = rgvSignTwo.getRgvOneSign(); |
| | | } |
| | | BasRgvMap basRgvMap = basRgvMapService.selectByIdSignTwo(rgvSlave.getId(),rgvSignTwoType); |
| | | basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); |
| | | rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute()); |
| | | } |
| | |
| | | * 小车XY移动 避让 |
| | | * */ |
| | | public synchronized boolean rgvAvoidanceXY(Integer rgvId){ |
| | | if (rgvId>20){ |
| | | rgvId = rgvId-20; |
| | | } |
| | | if (rgvId==1){ |
| | | try{ |
| | | BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvId); |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | RgvCommand rgvCommand = new RgvCommand(); |
| | | rgvCommand.setRgvNo(rgvId); // RGV编号 |
| | |
| | | } |
| | | }else { |
| | | try{ |
| | | BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvId); |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | RgvCommand rgvCommand = new RgvCommand(); |
| | | rgvCommand.setRgvNo(rgvId); // RGV编号 |
| | |
| | | } |
| | | } |
| | | |
| | | /* |
| | | * 小车XY移动 避让 |
| | | * */ |
| | | public synchronized boolean rgvAvoidanceXYWrkMast(Integer rgvId,short wrkNo1){ |
| | | if (rgvId>20){ |
| | | rgvId = rgvId-20; |
| | | } |
| | | if (rgvId==2){ |
| | | try{ |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | RgvCommand rgvCommand = new RgvCommand(); |
| | | rgvCommand.setRgvNo(rgvId); // RGV编号 |
| | | rgvCommand.setTaskNo1(wrkNo1); // 工作号 |
| | | rgvCommand.setAckFinish1((short) 1); // 任务完成确认位 |
| | | rgvCommand.setTaskMode1(RgvTaskModeType.NONE); // 任务模式 |
| | | rgvCommand.setSourceStaNo1((short)0); // 源站 |
| | | rgvCommand.setDestinationStaNo1((short)0); // 目标站 |
| | | rgvCommand.setAckFinish2((short) 0); // 工位2任务完成确认位 |
| | | rgvCommand.setTaskNo2((short)32222); // 工位2工作号 |
| | | rgvCommand.setTaskMode2(RgvTaskModeType.X_MOVE); // 工位2任务模式: 回原点 |
| | | rgvCommand.setSourceStaNo2((short)121); |
| | | rgvCommand.setCommand((short) 2); //工位2任务确认 |
| | | if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(10, rgvCommand))) { |
| | | //step=2,工位1、2写任务; step=4,工位1写任务; step=5,工位2写任务 step=9,回原点 9999任务号 |
| | | log.error("RGV命令下发失败,RGV号={},任务数据={}", rgvId, JSON.toJSON(rgvCommand)); |
| | | return false; |
| | | } else { |
| | | return true; |
| | | } |
| | | }catch (Exception e){ |
| | | return false; |
| | | |
| | | } |
| | | }else { |
| | | try{ |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | RgvCommand rgvCommand = new RgvCommand(); |
| | | rgvCommand.setRgvNo(rgvId); // RGV编号 |
| | | rgvCommand.setTaskNo1(wrkNo1); // 工作号 |
| | | rgvCommand.setAckFinish1((short) 1); // 任务完成确认位 |
| | | rgvCommand.setTaskMode1(RgvTaskModeType.NONE); // 任务模式 |
| | | rgvCommand.setSourceStaNo1((short)0); // 源站 |
| | | rgvCommand.setDestinationStaNo1((short)0); // 目标站 |
| | | rgvCommand.setAckFinish2((short) 0); // 工位2任务完成确认位 |
| | | rgvCommand.setTaskNo2((short)32222); // 工位2工作号 |
| | | rgvCommand.setTaskMode2(RgvTaskModeType.X_MOVE); // 工位2任务模式: 回原点 |
| | | rgvCommand.setSourceStaNo2((short)118); |
| | | rgvCommand.setCommand((short) 2); //工位2任务确认 |
| | | if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(10, rgvCommand))) { |
| | | //step=2,工位1、2写任务; step=4,工位1写任务; step=5,工位2写任务 step=9,回原点 9999任务号 |
| | | log.error("RGV命令下发失败,RGV号={},任务数据={}", rgvId, JSON.toJSON(rgvCommand)); |
| | | return false; |
| | | } else { |
| | | return true; |
| | | } |
| | | }catch (Exception e){ |
| | | return false; |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | /* |
| | | * 小车XY移动 避让 |
| | | * */ |
| | | public synchronized boolean rgvAvoidanceXY(Integer rgvId,WrkMastSta wrkMastSta){ |
| | | if (rgvId>20){ |
| | | rgvId = rgvId-20; |
| | | } |
| | | if (rgvId==1){ |
| | | try{ |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | RgvCommand rgvCommand = new RgvCommand(); |
| | | rgvCommand.setRgvNo(rgvId); // RGV编号 |
| | | rgvCommand.setAckFinish1((short) 0); // 工位1任务完成确认位 |
| | | rgvCommand.setTaskNo1((short)32222); // 工位1工作号 |
| | | rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 工位1任务模式: 回原点 |
| | | //basRgvMap.getLockStartRoute().shortValue() |
| | | rgvCommand.setSourceStaNo1( wrkMastSta.getStaEnd().shortValue()); |
| | | rgvCommand.setCommand((short) 1); //工位1任务确认 |
| | | if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) { |
| | | //step=2,工位1、2写任务; step=4,工位1写任务; step=5,工位2写任务 step=9,回原点 9999任务号 |
| | | log.error("RGV命令下发失败,RGV号={},任务数据={}", rgvId, JSON.toJSON(rgvCommand)); |
| | | return false; |
| | | } else { |
| | | return true; |
| | | } |
| | | }catch (Exception e){ |
| | | return false; |
| | | |
| | | } |
| | | }else { |
| | | try{ |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | RgvCommand rgvCommand = new RgvCommand(); |
| | | rgvCommand.setRgvNo(rgvId); // RGV编号 |
| | | rgvCommand.setAckFinish2((short) 0); // 工位2任务完成确认位 |
| | | rgvCommand.setTaskNo2((short)32222); // 工位2工作号 |
| | | rgvCommand.setTaskMode2(RgvTaskModeType.X_MOVE); // 工位2任务模式: 回原点 |
| | | rgvCommand.setSourceStaNo2( wrkMastSta.getStaEnd().shortValue()); |
| | | rgvCommand.setCommand((short) 2); //工位2任务确认 |
| | | if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, rgvCommand))) { |
| | | //step=2,工位1、2写任务; step=4,工位1写任务; step=5,工位2写任务 step=9,回原点 9999任务号 |
| | | log.error("RGV命令下发失败,RGV号={},任务数据={}", rgvId, JSON.toJSON(rgvCommand)); |
| | | return false; |
| | | } else { |
| | | return true; |
| | | } |
| | | }catch (Exception e){ |
| | | return false; |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | /* |
| | | * 小车取货至工位任务 |
| | | * */ |
| | | public synchronized boolean rgvTakeFullAll(Integer rgvId,WrkMastSta wrkMastSta){ |
| | | if (rgvId>20){ |
| | | rgvId = rgvId-20; |
| | | } |
| | | try{ |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | RgvCommand rgvCommand = new RgvCommand(); |
| | |
| | | * 小车取货至工位任务 |
| | | * */ |
| | | public synchronized boolean rgvTakeFull(Integer rgvId,WrkMastSta wrkMastSta){ |
| | | if (rgvId>20){ |
| | | rgvId = rgvId-20; |
| | | } |
| | | try{ |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | RgvCommand rgvCommand = new RgvCommand(); |
| | |
| | | * 小车放货至输送线任务 |
| | | * */ |
| | | public synchronized boolean rgvPutFull(Integer rgvId,WrkMastSta wrkMastSta){ |
| | | if (rgvId>20){ |
| | | rgvId = rgvId-20; |
| | | } |
| | | try{ |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | RgvCommand rgvCommand = new RgvCommand(); |
| | |
| | | * 小车取空板至工位任务 叠盘 |
| | | * */ |
| | | public synchronized boolean rgvTakeEmpty(Integer rgvId,WrkMastSta wrkMastSta){ |
| | | if (rgvId>20){ |
| | | rgvId = rgvId-20; |
| | | } |
| | | try{ |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | RgvCommand rgvCommand = new RgvCommand(); |
| | |
| | | * 小车放空板至输送线任务 //拆盘 |
| | | * */ |
| | | public synchronized boolean rgvPutEmpty(Integer rgvId,WrkMastSta wrkMastSta){ |
| | | if (rgvId>20){ |
| | | rgvId = rgvId-20; |
| | | } |
| | | try{ |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | RgvCommand rgvCommand = new RgvCommand(); |
| | |
| | | * 小车取空板至工位任务 满取 |
| | | * */ |
| | | public synchronized boolean rgvTakeEmptyFull(Integer rgvId,WrkMastSta wrkMastSta){ |
| | | if (rgvId>20){ |
| | | rgvId = rgvId-20; |
| | | } |
| | | try{ |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | RgvCommand rgvCommand = new RgvCommand(); |
| | |
| | | * 小车放空板至输送线任务 //满放 |
| | | * */ |
| | | public synchronized boolean rgvPutEmptyFull(Integer rgvId,WrkMastSta wrkMastSta){ |
| | | if (rgvId>20){ |
| | | rgvId = rgvId-20; |
| | | } |
| | | try{ |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | RgvCommand rgvCommand = new RgvCommand(); |
| | |
| | | * 小车复位 |
| | | * */ |
| | | public synchronized boolean rgvComplete(Integer rgvId){ |
| | | if (rgvId>20){ |
| | | rgvId = rgvId-20; |
| | | } |
| | | try{ |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(3, new RgvCommand()))) { |
| | | //step=2,工位1、2写任务; step=4,工位1写任务; step=5,工位2写任务 |
| | | log.error("RGV命令下发失败,RGV号={}",rgvId); |
| | | return false; |
| | | } else { |
| | | log.info("RGV命令下发成功,RGV号={}",rgvId); |
| | | return true; |
| | | } |
| | | }catch (Exception e){ |
| | | log.error("RGV命令下发失败,RGV号={}。异常:"+e,rgvId); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | /* |
| | | * 小车复位 |
| | | * */ |
| | | public synchronized boolean rgvComplete(Integer rgvId,Short taskNo1){ |
| | | if (rgvId>20){ |
| | | rgvId = rgvId-20; |
| | | } |
| | | try{ |
| | | RgvCommand rgvCommand = new RgvCommand(); |
| | | rgvCommand.setTaskNo1(taskNo1); |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(8, rgvCommand))) { |
| | | //step=2,工位1、2写任务; step=4,工位1写任务; step=5,工位2写任务 |
| | | log.error("RGV命令下发失败,RGV号={}",rgvId); |
| | | return false; |
| | |
| | | if (rgvOpen){ |
| | | return true; |
| | | } |
| | | |
| | | if (basRgvMapCurrent.getRgvNo()>2){ |
| | | return true; |
| | | } |
| | | // List<Integer> integers = RouteUtils.RouteMapCurrentFar(basRgvMapCurrent.getNowRoute(),staStart,staEnd, basRgvMapCurrent.getLockStartRoute()); |
| | | //更新当前小车锁 |
| | | try{ |
| | |
| | | // Integer farCurrentStaNo = RouteUtils.RouteIndexFarMas(staEnd, staStart, staEnd, basRgvMapCurrent.getLockStartRoute());//获取最远站点 |
| | | Integer fallMerge = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getRgvNo(), farCurrentStaNo); //获取合并干涉项 |
| | | basRgvMapCurrent.setLockEndRoute(fallMerge); |
| | | basRgvMapMapper.updateById(basRgvMapCurrent); |
| | | |
| | | basRgvMapService.updateById(basRgvMapCurrent); |
| | | |
| | | //更新另一台小车地图 |
| | | Integer rgvNoOther = basRgvMapCurrent.getRgvNoOther(); |
| | | BasRgvMap basRgvMapOther = basRgvMapMapper.selectById(rgvNoOther); |
| | | BasRgvMap basRgvMapOther = basRgvMapService.selectById(rgvNoOther); |
| | | List<Integer> integers = RouteUtils.RouteMapCurrentFar(fallMerge, basRgvMapCurrent.getLockStartRoute()); |
| | | Integer lockEndRoute = RouteUtils.RouteMapOtherFarStnNo(integers, basRgvMapCurrent.getLockStartRoute());//另一台小车可活动最远位置 |
| | | Integer lockEndRouteL = RouteUtils.RouteIndexFarMasL(rgvNoOther, lockEndRoute);//另一台小车可活动最远位置 |
| | | basRgvMapOther.setEndRoute(lockEndRouteL); |
| | | basRgvMapMapper.updateById(basRgvMapOther); |
| | | basRgvMapService.updateById(basRgvMapOther); |
| | | return true; |
| | | }catch (Exception e){ |
| | | log.error("小车地图更新出错!"); |