| | |
| | | back = true; |
| | | } |
| | | if (staProtocol.isFrontErr()) { |
| | | errMsg = "前超限"; |
| | | if (!back){ |
| | | errMsg = "前超限"; |
| | | } else { |
| | | errMsg = errMsg+"---"+"前超限"; |
| | | } |
| | | back = true; |
| | | } |
| | | if (!back && staProtocol.isBackErr()) { |
| | | errMsg = "后超限"; |
| | | if (staProtocol.isBackErr()) { |
| | | if (!back){ |
| | | errMsg = "后超限"; |
| | | } else { |
| | | errMsg = errMsg+"---"+"后超限"; |
| | | } |
| | | back = true; |
| | | } |
| | | if (!back && staProtocol.isHighErr()) { |
| | | errMsg = "高超限"; |
| | | if (staProtocol.isHighErr()) { |
| | | if (!back){ |
| | | errMsg = "高超限"; |
| | | } else { |
| | | errMsg = errMsg+"---"+"高超限"; |
| | | } |
| | | back = true; |
| | | } |
| | | if (!back && staProtocol.isLeftErr()) { |
| | | errMsg = "左超限"; |
| | | if (staProtocol.isLeftErr()) { |
| | | if (!back){ |
| | | errMsg = "左超限"; |
| | | } else { |
| | | errMsg = errMsg+"---"+"左超限"; |
| | | } |
| | | back = true; |
| | | } |
| | | if (!back && staProtocol.isRightErr()) { |
| | | errMsg = "右超限"; |
| | | if (staProtocol.isRightErr()) { |
| | | if (!back){ |
| | | errMsg = "右超限"; |
| | | } else { |
| | | errMsg = errMsg+"---"+"右超限"; |
| | | } |
| | | back = true; |
| | | } |
| | | // if (!back && staProtocol.isWeightErr()) { |
| | | // errMsg = "超重"; |
| | | // back = true; |
| | | // } |
| | | if (!back && staProtocol.isBarcodeErr()) { |
| | | errMsg = "扫码失败"; |
| | | if (staProtocol.isBarcodeErr()) { |
| | | if (!back){ |
| | | errMsg = "扫码失败"; |
| | | } else { |
| | | errMsg = errMsg+"---"+"扫码失败"; |
| | | } |
| | | back = true; |
| | | } |
| | | // 退回 |
| | |
| | | staProtocol.setWorkNo(9999); |
| | | staProtocol.setStaNo(inSta.getBackSta()); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | devpThread.setPakMkRun(staProtocol.getSiteId(), false); |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), errMsg); |
| | | MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | TaskWrk taskWrk = taskWrkMapper.selectByWrkNo(Integer.valueOf(workNo)); |
| | |
| | | } |
| | | |
| | | CrnSlave crnSlave = new CrnSlave(crn); |
| | | if (Cools.isEmpty(crnProtocol.getLaneNo()) || crnProtocol.getLaneNo()==0){ |
| | | continue; |
| | | } |
| | | |
| | | if (!crn.getId().equals(crnProtocol.getLaneNo())) { |
| | | for (CrnSlave crnOther : slaveProperties.getCrn()) { |
| | |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | CrnCommand crnCommand = new CrnCommand(); |
| | | crnCommand.setCrnNo(crnProtocol.getCrnNo()); // 堆垛机编号 |
| | | crnCommand.setCrnNo(crnProtocol.getLaneNo()); // 堆垛机巷道编号 |
| | | crnCommand.setLaneNo(crnProtocol.getLaneNo()); // 堆垛机巷道编号 |
| | | crnCommand.setTaskNo((short)999); // 工作号 |
| | | crnCommand.setAckFinish((short) 0); // 任务完成确认位 |
| | | crnCommand.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 任务模式: 库位移转 |
| | |
| | | } |
| | | |
| | | CrnSlave crn = new CrnSlave(crnSlave); |
| | | if (Cools.isEmpty(crnProtocol.getLaneNo()) || crnProtocol.getLaneNo()==0){ |
| | | continue; |
| | | } |
| | | |
| | | if (!crnSlave.getId().equals(crnProtocol.getLaneNo())) { |
| | | for (CrnSlave crnOther : slaveProperties.getCrn()) { |
| | |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | CrnCommand crnCommand = new CrnCommand(); |
| | | crnCommand.setCrnNo(slave.getId()); // 堆垛机编号 |
| | | crnCommand.setCrnNo(crnProtocol.getLaneNo()); // 堆垛机巷道编号 |
| | | crnCommand.setLaneNo(crnProtocol.getLaneNo()); // 堆垛机巷道编号 |
| | | crnCommand.setTaskNo(taskWrk.getWrkNo().shortValue()); // 工作号 |
| | | crnCommand.setAckFinish((short) 0); // 任务完成确认位 |
| | | crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 任务模式: 库位移转 |
| | |
| | | } |
| | | |
| | | CrnSlave crn = new CrnSlave(crnSlave); |
| | | if (Cools.isEmpty(crnProtocol.getLaneNo()) || crnProtocol.getLaneNo()==0){ |
| | | continue; |
| | | } |
| | | |
| | | if (!crnSlave.getId().equals(crnProtocol.getLaneNo())) { |
| | | for (CrnSlave crnOther : slaveProperties.getCrn()) { |
| | |
| | | } |
| | | // Thread.sleep(300); |
| | | //确认完成信号 |
| | | CrnOperatorParam crnOperatorParam = new CrnOperatorParam(); |
| | | crnOperatorParam.setCrnNo(crn.getId()); |
| | | // CrnOperatorParam crnOperatorParam = new CrnOperatorParam(); |
| | | // crnOperatorParam.setCrnNo(crn.getId()); |
| | | Date now = new Date(); |
| | | |
| | | crnController.crnTaskComplete(crnOperatorParam); |
| | | // crnController.crnTaskComplete(crnOperatorParam); |
| | | // MessageQueue.offer(SlaveType.Crn, crn.getId(), new Task(2, command)) |
| | | crnThread.setResetFlag(true); |
| | | |
| | | if (!Cools.isEmpty(taskWrk)) { |
| | | if (taskWrk.getIoType() == 1 && taskWrk.getWrkSts() == 3) { |
| | | taskWrk.setWrkSts(4);//入库完成 |
| | |
| | | null, // 结束时间 |
| | | taskWrk.getWrkSts().longValue(), // 工作状态 |
| | | taskWrk.getIoType(), // 入出库类型 |
| | | crn.getId(), // 堆垛机 |
| | | null, // plc |
| | | taskWrk.getCrnNo(), // 巷道号 |
| | | crn.getId(), // 堆垛机号 |
| | | taskWrk.getTargetPoint(), // 目标库位 |
| | | 0, // 目标站 |
| | | 0, // 源站 |
| | |
| | | null, // 结束时间 |
| | | null, // 工作状态 |
| | | null, // 入出库类型 |
| | | crn.getId(), // 堆垛机 |
| | | null, // plc |
| | | crnProtocol.getLaneNo(), // 堆垛机 |
| | | crn.getId(), // plc |
| | | null, // 目标库位 |
| | | null, // 目标站 |
| | | null, // 源站 |
| | |
| | | return null; |
| | | } |
| | | // 判断是否满足取货条件 |
| | | if (!staProtocol.isPakMkTask()) { |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), "任务已下发等待小车取"); |
| | | return null; |
| | | } |
| | | // 判断是否满足取货条件 |
| | | if (staProtocol.isAutoing() |
| | | // && staProtocol.isLoading() |
| | | // && staProtocol.isStaOk() |
| | |
| | | if (taskWrk != null) { |
| | | Integer stano = staProtocol.getStaNo(); |
| | | if (staProtocol.getSiteId() == 1004 || staProtocol.getSiteId()==1020){ |
| | | // 判断是否满足取货条件 |
| | | if (!staProtocol.isPakMkRun()) { |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), "异常回退标记,需要回退"); |
| | | return null; |
| | | } |
| | | if (!staProtocol.isLoading()) { |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), "无物"); |
| | | return null; |
| | | } |
| | | if (!staProtocol.isInEnable()) { |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), "等待可入信号"); |
| | | return null; |
| | | } |
| | | if (!staProtocol.isStaOk()) { |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), "等待链条就绪"); |
| | | return null; |
| | | } |
| | | // 尺寸检测异常 |
| | |
| | | back = true; |
| | | } |
| | | if (staProtocol.isFrontErr()) { |
| | | errMsg = "前超限"; |
| | | if (!back){ |
| | | errMsg = "前超限"; |
| | | } else { |
| | | errMsg = errMsg+"---"+"前超限"; |
| | | } |
| | | back = true; |
| | | } |
| | | if (!back && staProtocol.isBackErr()) { |
| | | errMsg = "后超限"; |
| | | if (staProtocol.isBackErr()) { |
| | | if (!back){ |
| | | errMsg = "后超限"; |
| | | } else { |
| | | errMsg = errMsg+"---"+"后超限"; |
| | | } |
| | | back = true; |
| | | } |
| | | if (!back && staProtocol.isHighErr()) { |
| | | errMsg = "高超限"; |
| | | if (staProtocol.isHighErr()) { |
| | | if (!back){ |
| | | errMsg = "高超限"; |
| | | } else { |
| | | errMsg = errMsg+"---"+"高超限"; |
| | | } |
| | | back = true; |
| | | } |
| | | if (!back && staProtocol.isLeftErr()) { |
| | | errMsg = "左超限"; |
| | | if (staProtocol.isLeftErr()) { |
| | | if (!back){ |
| | | errMsg = "左超限"; |
| | | } else { |
| | | errMsg = errMsg+"---"+"左超限"; |
| | | } |
| | | back = true; |
| | | } |
| | | if (!back && staProtocol.isRightErr()) { |
| | | errMsg = "右超限"; |
| | | if (staProtocol.isRightErr()) { |
| | | if (!back){ |
| | | errMsg = "右超限"; |
| | | } else { |
| | | errMsg = errMsg+"---"+"右超限"; |
| | | } |
| | | back = true; |
| | | } |
| | | // if (!back && staProtocol.isWeightErr()) { |
| | | // errMsg = "超重"; |
| | | // back = true; |
| | | // } |
| | | if (!back && staProtocol.isBarcodeErr()) { |
| | | errMsg = "扫码失败"; |
| | | if (staProtocol.isBarcodeErr()) { |
| | | if (!back){ |
| | | errMsg = "扫码失败"; |
| | | } else { |
| | | errMsg = errMsg+"---"+"扫码失败"; |
| | | } |
| | | back = true; |
| | | } |
| | | // 退回 |
| | |
| | | staProtocol.setWorkNo(9999); |
| | | staProtocol.setStaNo(staProtocol.getStaNo()+1); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | devpThread.setPakMkRun(staProtocol.getSiteId(), false); |
| | | devpThread.setPakMkTask(staProtocol.getSiteId(), false); |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), errMsg); |
| | | MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol)); |
| | | try{ |
| | |
| | | boolean itSmall = new TrackRangeUtils().IsItSmall(rgvSlave); |
| | | if (basDevpPositions.isEmpty()) { |
| | | log.error("获取所有站点信息异常"); |
| | | try{ |
| | | DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); |
| | | deviceErrorService.addDeviceError("rgvErr", rgvSlave.getId(), "指令生成:获取所有站点信息异常"); |
| | | } catch (Exception e2){ |
| | | } |
| | | continue; |
| | | } |
| | | List<TaskWrk> taskWrkList = new ArrayList<>(); |
| | |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("任务生成失败===》异常信息:{}", e.getMessage()); |
| | | try{ |
| | | DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); |
| | | deviceErrorService.addDeviceError("rgvErr", rgvSlave.getId(), "指令生成失败"); |
| | | } catch (Exception e2){ |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | try { |
| | | RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); |
| | | TaskProtocolCache taskProtocolCache = rgvThread.getTaskProtocolCache(); |
| | | DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId()); |
| | | |
| | | TaskProtocol issuedTake = new TaskProtocol(); |
| | | TaskProtocol issuedPut = new TaskProtocol(); |
| | |
| | | return false; |
| | | } |
| | | } |
| | | try{ |
| | | devpThread.setPakMkTask(rgvStn.getStaNo(), false); |
| | | } catch (Exception e2){ |
| | | RgvErrCache.updateRgvErr(rgvSlave.getId(),rgvStn.getStaNo()+"小车任务下发标记更新失败"); |
| | | } |
| | | |
| | | |
| | | BasDevpPosition basDevpPositionSou = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", rgvStn.getStaNo())); |
| | | BasDevpPosition basDevpPositionEnd = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", targetPointConvert)); |
| | |
| | | log.error("任务生成失败issued1===》异常信息:{}", e.getMessage()); |
| | | RgvErrCache.updateRgvErr(rgvSlave.getId(),rgvStn.getStaNo()+"站点任务生成失败issued1"); |
| | | |
| | | try{ |
| | | DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); |
| | | deviceErrorService.addDeviceError("rgvErr", rgvSlave.getId(), "任务生成失败issued1"); |
| | | } catch (Exception e2){ |
| | | } |
| | | return false; |
| | | } |
| | | |
| | |
| | | } catch (Exception e) { |
| | | log.error("任务生成失败issued2===》异常信息:{}", e.getMessage()); |
| | | RgvErrCache.updateRgvErr(rgvSlave.getId(),rgvStn.getStaNo()+"站点任务生成失败issued2"); |
| | | |
| | | try{ |
| | | DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); |
| | | deviceErrorService.addDeviceError("rgvErr", rgvSlave.getId(), "站点任务生成失败issued2"); |
| | | } catch (Exception e2){ |
| | | } |
| | | } |
| | | return true; |
| | | } |