| | |
| | | new Thread(this::taskIssued).start(); |
| | | |
| | | // 启动漫游线程 |
| | | new Thread(this::taskWalkIssued).start(); |
| | | new Thread(this::taskWalkIssued2).start(); |
| | | // new Thread(this::taskWalkIssued).start(); |
| | | // new Thread(this::taskWalkIssued2).start(); |
| | | |
| | | // 启动任务完成线程 |
| | | new Thread(this::taskComplete).start(); |
| | |
| | | private void readStatusRgv() { |
| | | while (true) { |
| | | try { |
| | | Thread.sleep(100); |
| | | Thread.sleep(20); |
| | | |
| | | readStatus(); |
| | | |
| | |
| | | rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId()); |
| | | rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId()); |
| | | } |
| | | if (rgvTaskProtocol.getAvoid() != 0) { |
| | | continue; |
| | | } |
| | | if (!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE)){ |
| | | continue; |
| | | } |
| | | if (rgvProtocol.getLoaded() == -1){ |
| | | continue; |
| | | } |
| | | if (rgvTaskProtocol.getAvoid() != 0) { |
| | | if (rgvTaskProtocol.getAvoid() == 1) { |
| | | TaskProtocol issued = new TaskProtocol(); |
| | | issued.setTaskNo(32222L); |
| | | issued.setTargetPosition(rgvTaskProtocol.getAvoidingTheDestination()); |
| | | issued.setTaskStatus(1); |
| | | issued.setDirection(true); |
| | | write(issued); |
| | | rgvTaskProtocol.setAvoid(0); |
| | | |
| | | Thread.sleep(200); |
| | | RgvTaskCache.updateRgvStatus(rgvTaskProtocol); |
| | | } |
| | | continue; |
| | | } |
| | | |
| | | List<TaskProtocol> allTakeTaskProtocol = taskProtocolCache.getTakeOrPutTaskProtocol(rgvProtocol.getLoaded()); |
| | | for (TaskProtocol taskProtocol : allTakeTaskProtocol) { |
| | | if (taskProtocol.getIsRunning() == 1) {//准备下发 |
| | | if (allTakeTaskProtocol.isEmpty()){ |
| | | allTakeTaskProtocol = taskProtocolCache.getAllWalkTaskProtocol(); |
| | | for (TaskProtocol taskProtocol : allTakeTaskProtocol) { |
| | | if (taskProtocol.getIsRunning() == 1) {//准备下发 |
| | | // 双车 |
| | | if (rgvOtherStatusEnable()) { |
| | | //另一台车是否允许此台车执行 |
| | | if (!otherRgvAvoid(taskProtocol.getTargetPosition())) { |
| | | continue; |
| | | } |
| | | } |
| | | if (taskProtocol.getTargetPosition()<=rgvProtocol.getRgvPos()+50 |
| | | && taskProtocol.getTargetPosition()>=rgvProtocol.getRgvPos()-50){ |
| | | taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection()); |
| | | break; |
| | | } else { |
| | | TaskProtocol issued = new TaskProtocol(taskProtocol,true); |
| | | write(issued); |
| | | taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection()); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } else { |
| | | for (TaskProtocol taskProtocol : allTakeTaskProtocol) { |
| | | if (taskProtocol.getIsRunning() == 1) {//准备下发 |
| | | // RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId()); |
| | | if (taskProtocol.getTaskStatus()==3){ |
| | | DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, taskProtocol.getTargetPositionStaNoPlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(taskProtocol.getTargetPositionStaNo()); |
| | | if (staProtocol == null ) { |
| | | continue; |
| | | } |
| | | // 判断是否满足入库条件 |
| | | if (!staProtocol.isAutoing() || staProtocol.isLoading() |
| | | || staProtocol.getWorkNo() != 0 |
| | | ){ |
| | | Thread.sleep(500); |
| | | // System.out.println("<放货目标站>" + taskProtocol.getTargetPositionStaNo() + "<非自动或者有物或者存在工作号!!!>"); |
| | | // continue; |
| | | } |
| | | } |
| | | //双车 |
| | | if (rgvOtherStatusEnable()) { |
| | | //另一台车是否允许此台车执行 |
| | | if (!otherRgvAvoid(taskProtocol.getTargetPosition())) { |
| | | continue; |
| | | } |
| | | } |
| | | if (taskProtocol.getTargetPosition()<=rgvProtocol.getRgvPos()+50 |
| | | && taskProtocol.getTargetPosition()>=rgvProtocol.getRgvPos()-50){ |
| | | if (taskProtocol.getTaskStatus()==3){ |
| | | DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, taskProtocol.getTargetPositionStaNoPlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(taskProtocol.getTargetPositionStaNo()); |
| | |
| | | ){ |
| | | Thread.sleep(500); |
| | | // System.out.println("<放货目标站>" + taskProtocol.getTargetPositionStaNo() + "<非自动或者有物或者存在工作号!!!>"); |
| | | // continue; |
| | | } |
| | | } |
| | | //双车 |
| | | if (rgvOtherStatusEnable()) { |
| | | //另一台车是否允许此台车执行 |
| | | if (!otherRgvAvoid(taskProtocol.getTargetPosition())) { |
| | | continue; |
| | | } |
| | | } |
| | | TaskProtocol issued = new TaskProtocol(taskProtocol); |
| | | write(issued); |
| | | taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection()); |
| | | break; |
| | | } else { |
| | | TaskProtocol issued = new TaskProtocol(taskProtocol,true); |
| | | write(issued); |
| | | break; |
| | | if (taskProtocol.getTargetPosition()<=rgvProtocol.getRgvPos()+50 |
| | | && taskProtocol.getTargetPosition()>=rgvProtocol.getRgvPos()-50){ |
| | | if (taskProtocol.getTaskStatus()==3){ |
| | | DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, taskProtocol.getTargetPositionStaNoPlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(taskProtocol.getTargetPositionStaNo()); |
| | | if (staProtocol == null ) { |
| | | continue; |
| | | } |
| | | // 判断是否满足入库条件 |
| | | if (!staProtocol.isAutoing() || staProtocol.isLoading() |
| | | || staProtocol.getWorkNo() != 0 |
| | | ){ |
| | | Thread.sleep(500); |
| | | // System.out.println("<放货目标站>" + taskProtocol.getTargetPositionStaNo() + "<非自动或者有物或者存在工作号!!!>"); |
| | | continue; |
| | | } |
| | | } |
| | | TaskProtocol issued = new TaskProtocol(taskProtocol); |
| | | write(issued); |
| | | taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection()); |
| | | break; |
| | | } else { |
| | | TaskProtocol issued = new TaskProtocol(taskProtocol,true); |
| | | write(issued); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |