| | |
| | | |
| | | // 已经存在吊车执行任务时,则过滤 |
| | | if (taskWrkMapper.selectCrnWorking(crnProtocol.getLaneNo()) != null) { |
| | | TaskWrk taskWrkNow3 = taskWrkMapper.selectCrnWorking(crnProtocol.getLaneNo()); |
| | | if (taskWrkNow3.getWrkSts() == 3){ |
| | | try{ |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | CrnCommand crnCommand = new CrnCommand(); |
| | | crnCommand.setCrnNo(slave.getId()); // 堆垛机编号 |
| | | crnCommand.setLaneNo(crnProtocol.getLaneNo()); // 堆垛机巷道编号 |
| | | crnCommand.setTaskNo(taskWrkNow3.getWrkNo().shortValue()); // 工作号 |
| | | crnCommand.setAckFinish((short) 0); // 任务完成确认位 |
| | | crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 任务模式: 库位移转 |
| | | crnCommand.setSourcePosX(crnStn.getRow().shortValue()); // 源库位排 |
| | | crnCommand.setSourcePosY(crnStn.getBay().shortValue()); // 源库位列 |
| | | crnCommand.setSourcePosZ(crnStn.getLev().shortValue()); // 源库位层 |
| | | crnCommand.setDestinationPosX(Utils.getRowShort(taskWrkNow3.getTargetPoint())); // 目标库位列 |
| | | int bay1 = Utils.getBayShort(taskWrkNow3.getTargetPoint()) + 1; |
| | | crnCommand.setDestinationPosY((short)bay1); // 目标库位层 |
| | | crnCommand.setDestinationPosZ(Utils.getLevShort(taskWrkNow3.getTargetPoint())); // 目标库位排 |
| | | // crnCommand.setCommand((short) 1); |
| | | try{ |
| | | DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); |
| | | deviceErrorService.addDeviceError("CrnErr", slave.getId(), "巷道号"+crnCommand.getLaneNo()+";堆垛机命令地址补丁重新写入:"+JSON.toJSONString(crnCommand.getNowTask())); |
| | | } catch (Exception e2){ |
| | | } |
| | | if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand))) { |
| | | log.error("堆垛机命令生成失败,堆垛机号={},任务数据={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand)); |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"巷道堆垛机命令生成失败"); |
| | | CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "运行命令下发失败"); |
| | | |
| | | throw new CoolException("堆垛机命令生成失败"); |
| | | } |
| | | } catch (Exception eNow3){ |
| | | |
| | | } |
| | | } |
| | | |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"巷道堆垛机存在吊车任务"); |
| | | CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "堆垛机存在执行中吊车任务"); |
| | | continue; |
| | |
| | | } |
| | | |
| | | // 判断堆垛机出库站状态 |
| | | if (staProtocol.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) { |
| | | // if (staProtocol.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) { |
| | | |
| | | // // 判断堆垛机出库站状态 |
| | | // if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y") |
| | | // && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) { |
| | | if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y") |
| | | && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) { |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | |
| | | // 堆垛机控制过滤 |
| | |
| | | |
| | | // 已经存在吊车执行任务时,则过滤 |
| | | if (taskWrkMapper.selectCrnWorking(crnProtocol.getLaneNo()) != null) { |
| | | |
| | | TaskWrk taskWrkNow3 = taskWrkMapper.selectCrnWorking(crnProtocol.getLaneNo()); |
| | | if (taskWrkNow3.getWrkSts() == 12){ |
| | | try{ |
| | | CrnCommand command = new CrnCommand(); |
| | | command.setCrnNo(slave.getId()); // 堆垛机编号 |
| | | command.setLaneNo(crnProtocol.getLaneNo()); // 堆垛机编号 |
| | | command.setTaskNo(taskWrkNow3.getWrkNo().shortValue()); // 工作号 |
| | | command.setAckFinish((short) 0); // 任务完成确认位 |
| | | command.setTaskMode(CrnTaskModeType.PAKIN); // 任务模式 |
| | | command.setSourcePosX(Utils.getRowShort(taskWrkNow3.getStartPoint())); // 源库位排 |
| | | int bayS = Utils.getBayShort(taskWrkNow3.getStartPoint()) + 1; |
| | | command.setSourcePosY((short)bayS); // 源库位列 |
| | | command.setSourcePosZ(Utils.getLevShort(taskWrkNow3.getStartPoint())); // 源库位层 |
| | | command.setDestinationPosX(crnStn.getRow().shortValue()); // 目标库位排 |
| | | command.setDestinationPosY(crnStn.getBay().shortValue()); // 目标库位列 |
| | | command.setDestinationPosZ(crnStn.getLev().shortValue()); // 目标库位层 |
| | | // command.setCommand((short) 1); |
| | | try{ |
| | | DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); |
| | | deviceErrorService.addDeviceError("CrnErr", slave.getId(), "巷道号"+command.getLaneNo()+";堆垛机命令地址补丁重新写入:"+JSON.toJSONString(command.getNowTask())); |
| | | } catch (Exception e2){ |
| | | } |
| | | if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, command))) { |
| | | log.error("堆垛机命令生成失败,堆垛机号={},巷道={},任务数据={}", slave.getId(), taskWrk.getCrnNo(), JSON.toJSON(command)); |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"巷道堆垛机命令生成失败"); |
| | | CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "运行命令下发失败"); |
| | | throw new CoolException("堆垛机命令生成失败"); |
| | | } |
| | | } catch (Exception eNow3){ |
| | | |
| | | } |
| | | } |
| | | devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"巷道堆垛机存在吊车任务"); |
| | | CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "堆垛机存在执行中吊车任务"); |
| | | break; |
| | |
| | | if (staProtocol.isOutEnable()){ |
| | | CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "没有可出"); |
| | | } |
| | | if (staProtocol.isLoading()){ |
| | | CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "出库站有物"); |
| | | } |
| | | } else { |
| | | CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "出库站点:非自动"); |
| | | } |