| | |
| | | // // 入出库模式判断 |
| | | // if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; } |
| | | |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) { |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk() && staProtocol.getWorkNo()!=0) { |
| | | // WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode); |
| | | WrkMast wrkMast = wrkMastMapper.selectPakInStep5(staProtocol.getSiteId(),"7"); |
| | | // WrkMast wrkMast = wrkMastMapper.selectPakInStep5(staProtocol.getSiteId(),"7"); |
| | | WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo()); |
| | | if (wrkMast == null) { |
| | | // 无拣料数据 |
| | | continue; |
| | |
| | | staProtocol.setStaNo(dto.getStaNo()); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | // ledThread.errorReset(); |
| | | boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(5, staProtocol)); |
| | | if (!result) { |
| | | log.error("发布命令至输送线队列失败!!! [plc编号:{}]", devp.getId()); |
| | | } |
| | |
| | | if (basDevp135.getReportSign()!=0){ |
| | | continue; |
| | | } |
| | | BasDevp basDevp121 = basDevpService.selectById(121); |
| | | if (basDevp121.getReportSign()!=0){ |
| | | continue; |
| | | } |
| | | BasDevp basDevp120 = basDevpService.selectById(120); |
| | | if (basDevp120.getReportSign()!=0){ |
| | | continue; |
| | | } |
| | | WrkMast wrkMast131 = wrkMastMapper.selectWrkMastUnstackingOne202Two(131); |
| | | if (Cools.isEmpty(wrkMast131)){ |
| | | continue; |
| | |
| | | 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; |
| | | } |
| | | } |
| | | 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 = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); |
| | |
| | | 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);//拆盘 |
| | |
| | | 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 = rgvPutEmptyFull(rgvProtocol.getRgvNo(),wrkMastSta); |
| | |
| | | } |
| | | } |
| | | 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; |
| | | } |
| | | if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){ |
| | | if (!staProtocol.isEmptyMk()){ |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | log.info(date+"叠盘任务下发:小车工作档:"+wrkMastSta); |
| | | log.info(date+"叠盘任务下发:目标站状态:"+basDevp); |
| | | sign = rgvTakeEmpty(rgvProtocol.getRgvNo(),wrkMastSta);//叠盘 |
| | |
| | | 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 = rgvTakeEmptyFull(rgvProtocol.getRgvNo(),wrkMastSta); |
| | |
| | | * */ |
| | | public synchronized void rgvRunWrkMastEmptyStaAvoidance() { |
| | | try{ |
| | | Integer integer = wrkMastStaMapper.selectAllWrkStsCount(null,0);//查询状态为0的任务 |
| | | if (integer==0){ |
| | | // Integer integer = wrkMastStaMapper.selectAllWrkStsCount(null,0);//查询状态为0的任务 |
| | | // if (integer==0){ |
| | | // return; |
| | | // } |
| | | WrkMastSta wrkMastSta = wrkMastStaMapper.selectAllWrkStsCountWrkMastSta(null, 0); |
| | | if (Cools.isEmpty(wrkMastSta)){ |
| | | return; |
| | | } |
| | | boolean signRgv = true; |
| | | boolean signRgv1 = true; |
| | | boolean signRgv2 = true; |
| | | for (RgvSlave rgvSlave:slaveProperties.getRgv()) { |
| | | RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); |
| | | RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); |
| | |
| | | && rgvProtocol.getStatusType1() == RgvStatusType.IDLE |
| | | && rgvProtocol.getStatusType2() == RgvStatusType.IDLE |
| | | ) { |
| | | |
| | | BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); |
| | | Integer fallMerge = RouteUtils.RouteIndexFarMas(basRgvMap.getRgvNo(), basRgvMap.getEndRoute()); //获取合并干涉项 |
| | | List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(),fallMerge); |
| | | List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route ,route); |
| | | if (!wrkMastStaList.isEmpty()){ |
| | | log.info("小车存在可执行任务,跳过避让!!4214"); |
| | | return; |
| | | } |
| | | if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){ |
| | | continue; |
| | | // if (!RouteUtils.RgvRunStaSign(rgvProtocol.getRgvPosI(),RouteUtils.RouteIndexFarMas(rgvProtocol.getRgvNo(),rgvRunSta[rgvProtocol.getRgvNo()-1]),rgvProtocol.getRgvNo())){ |
| | | // if (!RouteUtils.RgvRunStaSign(rgvProtocol.getRgvPosI(),rgvRunSta[rgvProtocol.getRgvNo()-1],rgvProtocol.getRgvNo())){ |
| | | if (rgvProtocol.getRgvNo()==1){ |
| | | signRgv1 = false; |
| | | }else { |
| | | signRgv2 = false; |
| | | } |
| | | } |
| | | if (rgvProtocol.getRgvNo()==1 && (rgvProtocol.getRgvPosI().equals(101) || rgvProtocol.getRgvPosI().equals(102) )){ |
| | | signRgv1 = false; |
| | | continue; |
| | | } else if (rgvProtocol.getRgvNo()==2 && (rgvProtocol.getRgvPosI().equals(116) || rgvProtocol.getRgvPosI().equals(117) ) ){ |
| | | signRgv2 = false; |
| | | continue; |
| | | } |
| | | rgvAvoidanceXY(rgvProtocol.getRgvNo()); |
| | | rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute()); |
| | | }else { |
| | | signRgv = false; |
| | | break; |
| | | } |
| | | } |
| | | if (signRgv && (signRgv1 || signRgv2)){ |
| | | for (RgvSlave rgvSlave:slaveProperties.getRgv()) { |
| | | RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); |
| | | RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); |
| | | if (rgvProtocol == null) { |
| | | continue; |
| | | } |
| | | |
| | | // 只有当RGV空闲、自动,工位一无物//rgv可用 |
| | | if (rgvProtocol.getStatusType() == RgvStatusType.IDLE |
| | | && rgvProtocol.getModeType() == RgvModeType.AUTO |
| | | && rgvProtocol.getLoaded1()==0 //现场修改:叠盘机,不满都算无物,怎么判断需要跟电控对接 |
| | | && rgvProtocol.getTaskNo1()==0 |
| | | && rgvProtocol.getTaskNo2()==0 |
| | | && rgvProtocol.getStatusType1() == RgvStatusType.IDLE |
| | | && rgvProtocol.getStatusType2() == RgvStatusType.IDLE |
| | | ) { |
| | | if (rgvProtocol.getRgvNo()==1 && (rgvProtocol.getRgvPosI().equals(101) || rgvProtocol.getRgvPosI().equals(102) )){ |
| | | continue; |
| | | } else if (rgvProtocol.getRgvNo()==2 && (rgvProtocol.getRgvPosI().equals(116) || rgvProtocol.getRgvPosI().equals(117) ) ){ |
| | | continue; |
| | | } |
| | | BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); |
| | | rgvAvoidanceXY(rgvProtocol.getRgvNo()); |
| | | rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute()); |
| | | |
| | | } |
| | | } |
| | | } |
| | | }catch (Exception e){ |
| | |
| | | // List<Integer> integers = RouteUtils.RouteMapCurrentFar(basRgvMapCurrent.getNowRoute(),staStart,staEnd, basRgvMapCurrent.getLockStartRoute()); |
| | | //更新当前小车锁 |
| | | try{ |
| | | // Integer farCurrentStaNo = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getNowRoute(), staStart, staEnd, basRgvMapCurrent.getLockStartRoute());//获取最远站点 |
| | | Integer farCurrentStaNo = RouteUtils.RouteIndexFarMas(staEnd, staStart, staEnd, basRgvMapCurrent.getLockStartRoute());//获取最远站点 |
| | | Integer farCurrentStaNo = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getNowRoute(), staStart, staEnd, basRgvMapCurrent.getLockStartRoute());//获取最远站点 |
| | | // Integer farCurrentStaNo = RouteUtils.RouteIndexFarMas(staEnd, staStart, staEnd, basRgvMapCurrent.getLockStartRoute());//获取最远站点 |
| | | Integer fallMerge = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getRgvNo(), farCurrentStaNo); //获取合并干涉项 |
| | | basRgvMapCurrent.setLockEndRoute(fallMerge); |
| | | basRgvMapMapper.updateById(basRgvMapCurrent); |