| | |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == null)) { |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == null || staProtocol.getWorkNo() == 0)) { |
| | | |
| | | // 判断吊车是否实际已完成,且电脑状态在move中,以备电脑进行更新工作档 |
| | | CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn,crnNo); |
| | |
| | | } |
| | | } |
| | | }else if (conStation==2){ |
| | | if (crnProtocol.statusType != CrnStatusType.IDLE){ |
| | | return false; |
| | | } |
| | | // 查询工作档 |
| | | WrkMast wrkMast = wrkMastMapper.selectPakOutStep2345(staProtocol.getSiteId(),crnProtocol.getTaskNoTwo().intValue()); |
| | | if (wrkMast == null) { |
| | |
| | | crnCommandParam.setDestinationPosX((short)0); // 目标库位排 |
| | | crnCommandParam.setDestinationPosY((short)0); // 目标库位列 |
| | | crnCommandParam.setDestinationPosZ((short)0); // 目标库位层 |
| | | if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(99, crnCommandParam.getCrnNo()-2))) { |
| | | log.error("输送线锁定命令下发失败,堆垛机号={},任务数据={}", wrkMast.getCrnNo(), crnCommandParam.getCrnNo()-2); |
| | | continue; |
| | | } |
| | | if (!MessageQueue.offer(SlaveType.Crn, crnCommandParam.getCrnNo(), new Task(9, crnCommandParam))) { |
| | | log.error("堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkMast.getCrnNo(), JSON.toJSONString(crnCommandParam)); |
| | | } else { |
| | |
| | | int[] sign = new int[]{0,0}; |
| | | // 只有当堆垛机自动时才继续执行 |
| | | if (crnProtocol.getModeType() == CrnModeType.AUTO) { |
| | | //双 |
| | | if (crnProtocol.getStatusType() == CrnStatusType.SEPARATE_IDLE |
| | | && crnProtocol.getTaskNo() == 0 |
| | | && crnProtocol.getLoaded() == 1 |
| | | && crnProtocol.getForkPos() == 0) { |
| | | if (crnProtocol.getStatusTypeTwo() == CrnStatusType.SEPARATE_IDLE |
| | | && crnProtocol.getTaskNoTwo() == 0 |
| | | && crnProtocol.getLoadedTwo() == 1 |
| | | && crnProtocol.getForkPosTwo() == 0){ |
| | | List<WrkMastSplitTwin> wrkMastSplitTwinList1 = wrkMastSplitTwinService.getWrkMastSplitTwin(crn.getId(),1,2,2,0); |
| | | List<WrkMastSplitTwin> wrkMastSplitTwinList2 = wrkMastSplitTwinService.getWrkMastSplitTwin(crn.getId(),2,2,2,0); |
| | | if (!wrkMastSplitTwinList1.isEmpty() && !wrkMastSplitTwinList2.isEmpty() ){ |
| | | if (wrkMastSplitTwinList1.size()>1 || wrkMastSplitTwinList2.size()>1 ){ |
| | | log.error("Pair堆垛机出入库下发异常,堆垛机号={},异常信息={},工位号={},工作类型={}",crn.getId(),"存在多笔可执行作业,请删除无效作业!!!",sign[1],sign[0]); |
| | | return false; |
| | | } |
| | | WrkMastSplitTwin wrkMastSplitTwin1 = wrkMastSplitTwinList1.get(0); |
| | | WrkMastSplitTwin wrkMastSplitTwin2 = wrkMastSplitTwinList2.get(0); |
| | | boolean ack = crnExecutePutFullPair(crn.getId(), wrkMastSplitTwin1,wrkMastSplitTwin2, sign[1]); |
| | | if (ack){ |
| | | wrkMastSplitTwin1.setWrkSts(wrkMastSplitTwin1.getWrkType()==1? 1:3); |
| | | wrkMastSplitTwinService.updateById(wrkMastSplitTwin1); |
| | | wrkMastSplitTwin2.setWrkSts(wrkMastSplitTwin2.getWrkType()==1? 1:3); |
| | | wrkMastSplitTwinService.updateById(wrkMastSplitTwin2); |
| | | }else { |
| | | log.error("堆垛机出入库下发报错,堆垛机号={},异常信息={}",crn.getId(),"下发任务返回值为:"+ack); |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | |
| | | } |
| | | } |
| | | // 只有当堆垛机工位1取货或者有物 并且 工位2无任务时才继续执行 |
| | | switch (i){ |
| | | case 1: |
| | |
| | | continue; |
| | | } |
| | | } else if (steProtocol.getCharge()<80.0F){ |
| | | List<BasJarMast> basJarMastList = basJarMastService.getJarMastByJarIdAndStatusListCharge(steSlave.getId(), new ArrayList<Integer>() {{ |
| | | add(5); |
| | | add(11); |
| | | add(16); |
| | | }}); |
| | | if(!basJarMastList.isEmpty()){ |
| | | continue; |
| | | } |
| | | if (wrkMastExecuteService.selectNoStart(steSlave.getId())!=0){ |
| | | continue; |
| | | } |