| | |
| | | private BasCrnErrorMapper basCrnErrorMapper; |
| | | @Autowired |
| | | private EmptyBarrelInService emptyBarrelInService; |
| | | @Autowired |
| | | private WrkMastStaService wrkMastStaService; |
| | | |
| | | @Value("${wms.url}") |
| | | private String wmsUrl; |
| | |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()) { |
| | | // if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()) { |
| | | // 查询工作档 |
| | | WrkMast wrkMast = wrkMastMapper.selectPakOutStep2(crnStn.getStaNo()); |
| | | if (wrkMast == null) { |
| | |
| | | |
| | | } |
| | | |
| | | } |
| | | // } |
| | | } |
| | | } |
| | | } |
| | |
| | | for (RgvSlave rgvSlave:slaveProperties.getRgv()){ |
| | | ZyRgvThread rgvThread = (ZyRgvThread)SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); |
| | | RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); |
| | | if (rgvProtocol.getModeType() != RgvModeType.AUTO){ |
| | | if (Cools.isEmpty(rgvProtocol)){ |
| | | continue; |
| | | } |
| | | |
| | | |
| | | int workNo1 = 0; |
| | | int workNo2 = 0; |
| | | short souSta1 = 0; |
| | | short sta1 = 0; |
| | | short souSta2 = 0; |
| | | short sta2 = 0; |
| | | |
| | | //工位一任务 |
| | | for (RgvSlave.Sta inStn : rgvSlave.getInStn()){ |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo()); |
| | | if (staProtocol == null) { |
| | | break; |
| | | // continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | if (staProtocol.isLoading() && staProtocol.isLoading() && staProtocol.isInEnable()){ |
| | | if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() <9900){ |
| | | WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo()); |
| | | if (Cools.isEmpty(wrkMast)){ |
| | | log.error("未找到工作档"); |
| | | continue; |
| | | } |
| | | workNo1 = wrkMast.getWrkNo(); |
| | | souSta1 = inStn.getSourceStaNo().shortValue(); |
| | | sta1 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo()); |
| | | break; |
| | | } |
| | | workNo1 = workNo++; |
| | | souSta1 = inStn.getSourceStaNo().shortValue(); |
| | | sta1 = inStn.getStaNo().shortValue(); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | |
| | | //工位二任务 |
| | | for (RgvSlave.Sta inStn : rgvSlave.getInStn()){ |
| | | if (souSta1 == inStn.getSourceStaNo()){ |
| | | continue; |
| | | } |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo()); |
| | | if (staProtocol == null) { |
| | | break; |
| | | // continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | if (staProtocol.isLoading() && staProtocol.isLoading() && staProtocol.isInEnable()){ |
| | | if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() <9900){ |
| | | WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo()); |
| | | if (Cools.isEmpty(wrkMast)){ |
| | | log.error("未找到工作档"); |
| | | continue; |
| | | } |
| | | workNo2 = wrkMast.getWrkNo(); |
| | | souSta2 = inStn.getSourceStaNo().shortValue(); |
| | | sta2 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo()); |
| | | break; |
| | | } |
| | | workNo2 = workNo++; |
| | | souSta2 = inStn.getSourceStaNo().shortValue(); |
| | | sta2 = inStn.getStaNo().shortValue(); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | //rgv任务下发-------------------------------------------------------------- |
| | | RgvCommand command = new RgvCommand(); |
| | | command.setRgvNo(rgvSlave.getId()); // RGV编号 |
| | | //工位1 |
| | | command.setTaskNo1(workNo1); // 工作号 |
| | | command.setSourceStaNo1(souSta1); // 源站 |
| | | command.setDestinationStaNo1(sta1); // 目标站 |
| | | command.setAckFinish1(false); // 任务完成确认位 |
| | | |
| | | //工位2 |
| | | command.setTaskNo2(workNo2); // 工作号 |
| | | command.setSourceStaNo2(souSta2); // 源站 |
| | | command.setDestinationStaNo2(sta2); // 目标站 |
| | | command.setAckFinish2(false); // 任务完成确认位 |
| | | |
| | | if (workNo1 != 0 && workNo2 ==0){ |
| | | command.setTaskMode(RgvTaskModeType.FETCH_PUT2); // 任务模式: 取放货 |
| | | } else if (workNo1 == 0 && workNo2 !=0) { |
| | | command.setTaskMode(RgvTaskModeType.FETCH_PUT1); // 任务模式: 取放货 |
| | | }else { |
| | | command.setTaskMode(RgvTaskModeType.FETCH_PUT_ALL); // 任务模式: 取放货 |
| | | rgvProtocol = rgvProtocol.clone(); |
| | | } |
| | | command.setCommand(false); |
| | | MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(2, command)); |
| | | log.info("rgv任务下发:"+JSON.toJSONString(command)); |
| | | if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.IDLE && rgvProtocol.getLoaded1() == 0){ |
| | | boolean work1 = false; |
| | | boolean work2 = false; |
| | | int workNo1 = 0; |
| | | int workNo2 = 0; |
| | | short souSta1 = 0; |
| | | short sta1 = 0; |
| | | short souSta2 = 0; |
| | | short sta2 = 0; |
| | | |
| | | //工位一任务 |
| | | for (RgvSlave.Sta inStn : rgvSlave.getInStn()){ |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo()); |
| | | if (staProtocol == null) { |
| | | break; |
| | | // continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()){ |
| | | if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() <9900){ |
| | | WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo()); |
| | | if (Cools.isEmpty(wrkMast)){ |
| | | log.error("未找到工作档"); |
| | | continue; |
| | | } |
| | | workNo1 = wrkMast.getWrkNo(); |
| | | souSta1 = Utils.getRgvStaNo(rgvSlave.getId(),wrkMast.getSourceStaNo()); |
| | | sta1 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo()); |
| | | work1 = true; |
| | | devpThread.setPakMk(inStn.getSourceStaNo(),false); |
| | | break; |
| | | } |
| | | workNo1 = workNo++; |
| | | souSta1 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getSourceStaNo()); |
| | | sta1 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getStaNo()); |
| | | work1 = true; |
| | | devpThread.setPakMk(inStn.getSourceStaNo(),false); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | |
| | | //工位二任务 |
| | | for (RgvSlave.Sta inStn : rgvSlave.getInStn()){ |
| | | if (souSta1 == inStn.getSourceStaNo()){ |
| | | continue; |
| | | } |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo()); |
| | | if (staProtocol == null) { |
| | | break; |
| | | // continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()&& staProtocol.isPakMk()){ |
| | | if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() <9900){ |
| | | WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo()); |
| | | if (Cools.isEmpty(wrkMast)){ |
| | | log.error("未找到工作档"); |
| | | continue; |
| | | } |
| | | workNo2 = wrkMast.getWrkNo(); |
| | | souSta2 = inStn.getSourceStaNo().shortValue(); |
| | | sta2 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo()); |
| | | work2 = true; |
| | | devpThread.setPakMk(inStn.getSourceStaNo(),false); |
| | | break; |
| | | } |
| | | workNo2 = workNo++; |
| | | souSta2 = inStn.getSourceStaNo().shortValue(); |
| | | sta2 = inStn.getStaNo().shortValue(); |
| | | work2 = true; |
| | | devpThread.setPakMk(inStn.getSourceStaNo(),false); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | if (work1 || work2){ |
| | | //rgv任务下发-------------------------------------------------------------- |
| | | RgvCommand command = new RgvCommand(); |
| | | command.setRgvNo(rgvSlave.getId()); // RGV编号 |
| | | //工位1 |
| | | command.setTaskNo1(workNo1); // 工作号 |
| | | command.setSourceStaNo1(souSta1); // 源站 |
| | | command.setDestinationStaNo1(sta1); // 目标站 |
| | | command.setAckFinish1(false); // 任务完成确认位 |
| | | |
| | | //工位2 |
| | | command.setTaskNo2(workNo2); // 工作号 |
| | | command.setSourceStaNo2(souSta2); // 源站 |
| | | command.setDestinationStaNo2(sta2); // 目标站 |
| | | command.setAckFinish2(false); // 任务完成确认位 |
| | | |
| | | if (workNo1 == 0 && workNo2 !=0){ |
| | | command.setTaskMode(RgvTaskModeType.FETCH_PUT2); // 任务模式: 取放货 |
| | | } else if (workNo1 != 0 && workNo2 ==0) { |
| | | command.setTaskMode(RgvTaskModeType.FETCH_PUT1); // 任务模式: 取放货 |
| | | }else { |
| | | command.setTaskMode(RgvTaskModeType.FETCH_PUT_ALL); // 任务模式: 取放货 |
| | | } |
| | | command.setCommand(false); |
| | | rgvTaskSave(command); |
| | | MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(2, command)); |
| | | log.info("rgv任务下发:"+JSON.toJSONString(command)); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | public synchronized void RGVTaskOver() { |
| | | for (RgvSlave rgvSlave:slaveProperties.getRgv()) { |
| | | ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); |
| | | RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); |
| | | if (Cools.isEmpty(rgvProtocol)){ |
| | | continue; |
| | | }else { |
| | | rgvProtocol = rgvProtocol.clone(); |
| | | } |
| | | |
| | | //工位一任务完成 |
| | | if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING && rgvProtocol.getLoaded1() == 1) { |
| | | WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo1()); |
| | | if (Cools.isEmpty(wrkMastSta)){ |
| | | log.error("未查询到rgv工作任务,rgv编号{},工作号{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1()); |
| | | continue; |
| | | } |
| | | for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){ |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getSourcePlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(outStn.getSourceStaNo()); |
| | | if (staProtocol == null) { |
| | | continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isPakMk()){ |
| | | // staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); |
| | | // staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); |
| | | if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) { |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(3,new RgvCommand())); |
| | | log.info("{}号rgv工位一工作完成复位,工作号:{}",rgvSlave.getId(),wrkMastSta.getWrkNo()); |
| | | } |
| | | |
| | | //工位二任务完成 |
| | | if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING2 && rgvProtocol.getLoaded1() == 1) { |
| | | WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo2()); |
| | | if (Cools.isEmpty(wrkMastSta)){ |
| | | log.error("未查询到rgv工作任务,rgv编号{},工作号{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo2()); |
| | | continue; |
| | | } |
| | | for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){ |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getSourcePlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(outStn.getSourceStaNo()); |
| | | if (staProtocol == null) { |
| | | continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isPakMk()){ |
| | | // staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); |
| | | // staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); |
| | | if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) { |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(4,new RgvCommand())); |
| | | log.info("{}号rgv工位二工作完成复位,工作号:{}",rgvSlave.getId(),wrkMastSta.getWrkNo2()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | public boolean rgvTaskSave(RgvCommand command){ |
| | | Wrapper<WrkMastSta> wrkMastStaWrapper = new EntityWrapper<WrkMastSta>().eq("wrk_crn", command.getRgvNo()).eq("wrk_no", command.getTaskNo1()); |
| | | WrkMastSta wrkMastSta1 = wrkMastStaService.selectOne(wrkMastStaWrapper); |
| | | if (!Cools.isEmpty(wrkMastSta1)){ |
| | | wrkMastStaService.delete(wrkMastStaWrapper); |
| | | } |
| | | WrkMastSta wrkMastSta = new WrkMastSta(); |
| | | wrkMastSta.setWrkNo(Long.valueOf(command.getTaskNo1())); |
| | | wrkMastSta.setWrkNo2(Long.valueOf(command.getTaskNo2())); |
| | | wrkMastSta.setWrkStart(command.getSourceStaNo1().intValue()); |
| | | wrkMastSta.setWrkEnd(command.getDestinationStaNo1().intValue()); |
| | | wrkMastSta.setStaStart(command.getSourceStaNo2().intValue()); |
| | | wrkMastSta.setStaEnd(command.getDestinationStaNo2().intValue()); |
| | | wrkMastSta.setWrkSts(1); |
| | | Date now = new Date(); |
| | | wrkMastSta.setCreateTime(now); |
| | | wrkMastSta.setUpdateTime(now); |
| | | wrkMastSta.setWrkCrn(command.getRgvNo()); |
| | | wrkMastSta.setWrkType(command.getTaskMode().intValue()); |
| | | return wrkMastStaService.insert(wrkMastSta); |
| | | } |
| | | |
| | | } |