| | |
| | | } |
| | | } |
| | | |
| | | /* |
| | | * 堆垛机取货至工位任务 |
| | | * */ |
| | | public synchronized boolean crnExecuteTakeFullPair(Integer crnNo,WrkMastSplitTwin wrkMastSplitTwinOne,WrkMastSplitTwin wrkMastSplitTwinTwo, Integer crnStation){ |
| | | try{ |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | // 1.堆垛机开始移动 |
| | | CrnCommandParam crnCommandParam = new CrnCommandParam(); |
| | | crnCommandParam.setCrnNo(crnNo); // 堆垛机编号 |
| | | crnCommandParam.setTaskNo(wrkMastSplitTwinOne.getWrkNo().shortValue()); // 工作号 |
| | | crnCommandParam.setAckFinish((short) 0); // 任务完成确认位 |
| | | crnCommandParam.setTaskMode(CrnTaskModeType.SEPARATE_TAKE); // 任务模式: 单取货 |
| | | crnCommandParam.setSourcePosX(wrkMastSplitTwinOne.getStartRow().shortValue()); // 源库位排 |
| | | crnCommandParam.setSourcePosY(wrkMastSplitTwinOne.getStartBay().shortValue()); // 源库位列 |
| | | crnCommandParam.setSourcePosZ(wrkMastSplitTwinOne.getStartLev().shortValue()); // 源库位层 |
| | | crnCommandParam.setDestinationPosX((short)0); // 目标库位排 |
| | | crnCommandParam.setDestinationPosY((short)0); // 目标库位列 |
| | | crnCommandParam.setDestinationPosZ((short)0); // 目标库位层 |
| | | |
| | | crnCommandParam.setTaskNo2(wrkMastSplitTwinTwo.getWrkNo().shortValue()); // 工作号 |
| | | crnCommandParam.setAckFinish2((short) 0); // 任务完成确认位 |
| | | crnCommandParam.setTaskMode2(CrnTaskModeType.SEPARATE_TAKE); // 任务模式: 单取货 |
| | | crnCommandParam.setSourcePosX2(wrkMastSplitTwinTwo.getStartRow().shortValue()); // 源库位排 |
| | | crnCommandParam.setSourcePosY2(wrkMastSplitTwinTwo.getStartBay().shortValue()); // 源库位列 |
| | | crnCommandParam.setSourcePosZ2(wrkMastSplitTwinTwo.getStartLev().shortValue()); // 源库位层 |
| | | crnCommandParam.setDestinationPosX2((short)0); // 目标库位排 |
| | | crnCommandParam.setDestinationPosY2((short)0); // 目标库位列 |
| | | crnCommandParam.setDestinationPosZ2((short)0); // 目标库位层 |
| | | if (!MessageQueue.offer(SlaveType.Crn, crnCommandParam.getCrnNo(), new Task(9, crnCommandParam))) { |
| | | log.error("堆垛机命令下发失败,堆垛机号={},任务数据={}", crnCommandParam.getCrnNo(), JSON.toJSONString(crnCommandParam)); |
| | | return false; |
| | | } else { |
| | | return true; |
| | | } |
| | | }catch (Exception e){ |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | /* |
| | | * 堆垛机放货货至出库站点任务 |
| | | * */ |
| | | public synchronized boolean crnExecutePutFullPair(Integer crnNo,WrkMastSplitTwin wrkMastSplitTwinOne,WrkMastSplitTwin wrkMastSplitTwinTwo, Integer crnStation){ |
| | | try{ |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | // 1.堆垛机开始移动 |
| | | CrnCommandParam crnCommandParam = new CrnCommandParam(); |
| | | crnCommandParam.setCrnNo(crnNo); // 堆垛机编号 |
| | | crnCommandParam.setTaskNo(wrkMastSplitTwinOne.getWrkNo().shortValue()); // 工作号 |
| | | crnCommandParam.setAckFinish((short) 0); // 任务完成确认位 |
| | | crnCommandParam.setTaskMode(CrnTaskModeType.SEPARATE_PUT); // 任务模式: 单放货 |
| | | crnCommandParam.setSourcePosX((short)0); // 源库位排 |
| | | crnCommandParam.setSourcePosY((short)0); // 源库位列 |
| | | crnCommandParam.setSourcePosZ((short)0); // 源库位层 |
| | | crnCommandParam.setDestinationPosX(wrkMastSplitTwinOne.getEndRow().shortValue()); // 目标库位排 |
| | | crnCommandParam.setDestinationPosY(wrkMastSplitTwinOne.getEndBay().shortValue()); // 目标库位列 |
| | | crnCommandParam.setDestinationPosZ(wrkMastSplitTwinOne.getEndLev().shortValue()); // 目标库位层 |
| | | |
| | | crnCommandParam.setTaskNo2(wrkMastSplitTwinTwo.getWrkNo().shortValue()); // 工作号 |
| | | crnCommandParam.setAckFinish2((short) 0); // 任务完成确认位 |
| | | crnCommandParam.setTaskMode2(CrnTaskModeType.SEPARATE_PUT); // 任务模式: 单放货 |
| | | crnCommandParam.setSourcePosX2((short)0); // 源库位排 |
| | | crnCommandParam.setSourcePosY2((short)0); // 源库位列 |
| | | crnCommandParam.setSourcePosZ2((short)0); // 源库位层 |
| | | crnCommandParam.setDestinationPosX2(wrkMastSplitTwinTwo.getEndRow().shortValue()); // 目标库位排 |
| | | crnCommandParam.setDestinationPosY2(wrkMastSplitTwinTwo.getEndBay().shortValue()); // 目标库位列 |
| | | crnCommandParam.setDestinationPosZ2(wrkMastSplitTwinTwo.getEndLev().shortValue()); // 目标库位层 |
| | | if (!MessageQueue.offer(SlaveType.Crn, crnCommandParam.getCrnNo(), new Task(9, crnCommandParam))) { |
| | | log.error("堆垛机命令下发失败,堆垛机号={},任务数据={}", crnCommandParam.getCrnNo(), JSON.toJSONString(crnCommandParam)); |
| | | return false; |
| | | } else { |
| | | return true; |
| | | } |
| | | }catch (Exception e){ |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * Jar任务创建 初始 //完成 |
| | | */ |
| | |
| | | |
| | | BasJarMast jarMastByWrkNo = new BasJarMast(basJar); |
| | | jarMastByWrkNo.setWrkNo(Integer.toUnsignedLong(wrkMastExecute.getWrkNo().intValue()));//工作号 |
| | | jarMastByWrkNo.setJarEnterStaNo(basJar.getEnterRgvNo()); |
| | | jarMastByWrkNo.setEnterStaNo(basJar.getEnterRgvNo()); |
| | | jarMastByWrkNo.setOutStaNo(basJar.getOutRgvNo()); |
| | | //B==>A |
| | | if (!jarWrkMastExecuteGenerateExecute(basJar,jarMastByWrkNo,basJar.getJarNo(),new int[]{basJar.getOutSteNo(),basJar.getOutRgvNo(),11,1})){ |
| | | log.error("JarWrkMastExecute任务创建===>执行异常===》异常数据:BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(jarMastByWrkNo)); |
| | |
| | | |
| | | BasJarMast jarMastByWrkNo = new BasJarMast(basJar); |
| | | jarMastByWrkNo.setWrkNo(Integer.toUnsignedLong(wrkMastExecute.getWrkNo().intValue()));//工作号 |
| | | jarMastByWrkNo.setJarEnterStaNo(basJar.getEnterRgvNo()); |
| | | jarMastByWrkNo.setEnterStaNo(basJar.getEnterRgvNo()); |
| | | jarMastByWrkNo.setOutStaNo(basJar.getOutRgvNo()); |
| | | //C==>B |
| | | if (!jarWrkMastExecuteGenerateExecute(basJar,jarMastByWrkNo,basJar.getJarNo(),new int[]{basJar.getOutSteNo(),basJar.getOutRgvNo(),8,1})){ |
| | | log.error("JarWrkMastExecute任务创建===>执行异常===》异常数据:BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(jarMastByWrkNo)); |
| | |
| | | if (wrkMastExecuteService.selectMoveStart(steSlave.getId())!=0){ |
| | | continue; |
| | | } |
| | | } else { |
| | | continue; |
| | | } |
| | | |
| | | try{ |
| | |
| | | int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(7));//充电工作号 |
| | | BasJarMast basJarMast = new BasJarMast(basJar); |
| | | basJarMast.setWrkNo(Integer.toUnsignedLong(workNo));//工作号 |
| | | basJarMast.setJarEnterStaNo(basJar.getEnterRgvNo()); |
| | | basJarMast.setEnterStaNo(basJar.getEnterRgvNo()); |
| | | basJarMast.setOutStaNo(basJar.getOutRgvNo()); |
| | | if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMast,basJar.getJarNo(),new int[]{basJar.getOutSteNo(),basJar.getOutRgvNo(),100,1})){ |
| | | log.error("JarWrkMastExecute充电任务创建===>执行异常===》异常数据:BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(basJarMast)); |
| | | } |
| | |
| | | int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(7));//充电工作号 |
| | | BasJarMast basJarMast = new BasJarMast(basJar); |
| | | basJarMast.setWrkNo(Integer.toUnsignedLong(workNo));//工作号 |
| | | basJarMast.setJarEnterStaNo(basJar.getEnterRgvNo()); |
| | | basJarMast.setEnterStaNo(basJar.getEnterRgvNo()); |
| | | basJarMast.setOutStaNo(basJar.getOutRgvNo()); |
| | | if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMast,basJar.getJarNo(),new int[]{basJar.getOutSteNo(),basJar.getOutRgvNo(),100,1})){ |
| | | log.error("JarWrkMastExecute充电任务创建===>执行异常===》异常数据:BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(basJarMast)); |
| | | } |
| | |
| | | if (steProtocol == null || steProtocol.getChargeStatus()!=1) { |
| | | continue; |
| | | } |
| | | WrkMastExecute wrkMastExecuteByCharge = wrkMastExecuteService.getWrkMastExecuteByCharge(steSlave.getId()); |
| | | if (!Cools.isEmpty(wrkMastExecuteByCharge)){ |
| | | continue; |
| | | } |
| | | |
| | | if (steProtocol.getCharge()>50.0F){ |
| | | if (wrkMastExecuteService.selectNoStart(steSlave.getId())==0){ |
| | | if (steProtocol.getCharge()>95.0F || steProtocol.getFullCharge()){ |
| | | } else if (steProtocol.getCharge()>50.0F){ |
| | | if (wrkMastExecuteService.selectNoStartCharge(steSlave.getId())==0){ |
| | | if (wrkMastExecuteService.selectMoveStart(steSlave.getId())==0){ |
| | | continue; |
| | | } |
| | | } |
| | | } else if (steProtocol.getCharge()>95.0F || steProtocol.getFullCharge()){ |
| | | } else { |
| | | continue; |
| | | } |
| | | |
| | | WrkMastExecute wrkMastExecuteByCharge = wrkMastExecuteService.getWrkMastExecuteByCharge(steSlave.getId()); |
| | | if (Cools.isEmpty(wrkMastExecuteByCharge)){ |
| | | BasJar basJar = basJarMapper.selectById(steSlave.getId()==1? 1:3); |
| | | int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(7));//充电工作号 |
| | | BasJarMast basJarMast = new BasJarMast(basJar); |
| | | basJarMast.setWrkNo(Integer.toUnsignedLong(workNo));//工作号 |
| | | basJarMast.setJarEnterStaNo(basJar.getEnterRgvNo()); |
| | | basJarMast.setEnterStaNo(basJar.getEnterRgvNo()); |
| | | basJarMast.setOutStaNo(basJar.getOutRgvNo()); |
| | | wrkMastExecuteByCharge = new WrkMastExecute(basJarMast); |
| | | wrkMastExecuteByCharge.setJarId(basJar.getJarNo()); |
| | | wrkMastExecuteByCharge.setSteId(steSlave.getId());//穿梭板ID |
| | | wrkMastExecuteByCharge.setRgvId(basJar.getEnterRgvNo());//RGV ID enter |
| | | wrkMastExecuteByCharge.setRgvEndId(basJar.getOutRgvNo());//RGV ID out |
| | | wrkMastExecuteByCharge.setIoType(100);//任务类型 0: 未知 1: 开进料门 2: 关进料门 3: 开出料门 4: 关出料门 5: 入硫化罐 6: 入冷却槽 7: 穿梭车进冷却槽 8: 穿梭车离开冷却槽 9: 出冷却槽 10:A=>B 11:B=>A 100:小车充电任务 |
| | | wrkMastExecuteByCharge.setType(1);//设备 0: 未知 1: 硫化罐 2: 冷却槽 3: 硫化罐==>冷却槽 |
| | | } |
| | | |
| | | try{ |
| | | if (jarWrkMastExecuteGenerateSteStatusCharge(steSlave.getId(),1,SteStatusType.MOVING,true)){ |
| | | if (jarWrkMastExecuteGenerateSteStatusCharge(steSlave.getId(),1,SteStatusType.CHARGE,true)){ |
| | | //完成充电任务 |
| | | //调车 == > 断开充电 |
| | | if (!jarSteTake(wrkMastExecuteByCharge,SteLocaType.POINT20.id,SteLocaType.POINT20.id,SteTaskModeType.CLOSE_CHARGE,false,wrkMastExecuteByCharge.getJarId())){ |
| | | if (!jarSteTake(wrkMastExecuteByCharge,SteLocaType.POINT20.id,SteLocaType.POINT20.id,SteTaskModeType.CLOSE_CHARGE,true,wrkMastExecuteByCharge.getJarId())){ |
| | | log.error("穿梭板Ste命令下发失败,ste号={},任务数据={}", |
| | | wrkMastExecuteByCharge.getSteId(), JSON.toJSONString(wrkMastExecuteByCharge)); |
| | | } |