#
1
2025-05-14 abb914f4761cedcfc89eb3dcdd2cf377490d09bc
src/main/java/com/zy/core/thread/RgvThread.java
@@ -14,6 +14,7 @@
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;
@@ -25,6 +26,7 @@
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;
@@ -63,6 +65,8 @@
     */
    private boolean resetFlag2 = false;
    private boolean connectRgv = false;
    public RgvThread(RgvSlave slave) {
        this.slave = slave;
    }
@@ -70,21 +74,48 @@
    @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();
            }
        }
    }
@@ -265,6 +296,20 @@
                        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());
@@ -618,6 +663,7 @@
            } 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());
            }