| | |
| | | import com.zy.asrs.service.BasRgvService; |
| | | import com.zy.asrs.utils.RouteUtils; |
| | | import com.zy.asrs.utils.TrackRangeUtils; |
| | | import com.zy.core.DevpThread; |
| | | import com.zy.core.ThreadHandler; |
| | | import com.zy.core.cache.*; |
| | | import com.zy.core.enums.RgvModeType; |
| | |
| | | import com.zy.core.model.command.RgvCommand; |
| | | import com.zy.core.model.protocol.RgvProtocol; |
| | | import com.zy.core.model.protocol.RgvTaskProtocol; |
| | | import com.zy.core.model.protocol.StaProtocol; |
| | | import com.zy.core.model.protocol.TaskProtocol; |
| | | import lombok.Data; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | */ |
| | | private boolean resetFlag2 = false; |
| | | |
| | | private boolean connectRgv = false; |
| | | |
| | | public RgvThread(RgvSlave slave) { |
| | | this.slave = slave; |
| | | } |
| | |
| | | @Override |
| | | @SuppressWarnings("InfiniteLoopStatement") |
| | | public void run() { |
| | | boolean connect = this.connect(); |
| | | if (connect) { |
| | | connectRgv = this.connect(); |
| | | while(!connectRgv){ |
| | | try { |
| | | connectRgv = this.connect(); |
| | | Thread.sleep(100); |
| | | } catch (Exception e){ |
| | | |
| | | // 启动读数据线程 |
| | | new Thread(this::readStatusRgv).start(); |
| | | } |
| | | } |
| | | |
| | | // 启动任务下发线程 |
| | | new Thread(this::taskIssued).start(); |
| | | // 启动读数据线程 |
| | | new Thread(this::rgvConnect).start(); |
| | | |
| | | // 启动漫游线程 |
| | | new Thread(this::taskWalkIssued).start(); |
| | | new Thread(this::taskWalkIssued2).start(); |
| | | new Thread(this::readStatusRgv).start(); |
| | | |
| | | // 启动任务完成线程 |
| | | new Thread(this::taskComplete).start(); |
| | | // 启动任务下发线程 |
| | | new Thread(this::taskIssued).start(); |
| | | |
| | | // 启动漫游线程 |
| | | new Thread(this::taskWalkIssued).start(); |
| | | new Thread(this::taskWalkIssued2).start(); |
| | | |
| | | // 启动任务完成线程 |
| | | new Thread(this::taskComplete).start(); |
| | | } |
| | | |
| | | private void rgvConnect() { |
| | | while (true) { |
| | | try { |
| | | if(!connectRgv){ |
| | | try { |
| | | connectRgv = this.connect(); |
| | | Thread.sleep(100); |
| | | } catch (Exception e){ |
| | | |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("RGV数据读取线程异常!!!" + e.getMessage()); |
| | | initRgv(); |
| | | // e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | if (taskProtocol.getTargetPosition()<=rgvProtocol.getRgvPos()+50 |
| | | && taskProtocol.getTargetPosition()>=rgvProtocol.getRgvPos()-50){ |
| | | Thread.sleep(100); |
| | | 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 |
| | | ){ |
| | | System.out.println("<放货目标站>" + taskProtocol.getTargetPositionStaNo() + "<非自动或者有物或者存在工作号!!!>"); |
| | | continue; |
| | | } |
| | | } |
| | | TaskProtocol issued = new TaskProtocol(taskProtocol); |
| | | write(issued); |
| | | taskProtocolCache.removeTaskProtocol(taskProtocol.getTaskNoDirection()); |
| | |
| | | |
| | | } else { |
| | | initRgv(); |
| | | connectRgv = false; |
| | | // OutputQueue.RGV.offer(MessageFormat.format("【{0}】读取RGV plc状态信息失败 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); |
| | | log.error("读取RGV plc状态信息失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); |
| | | } |