*
L
2026-04-23 d074cb16f7b3ba11363766dd78802da60f4ec07d
src/main/java/com/zy/core/thread/RgvThread.java
@@ -5,7 +5,7 @@
import HslCommunication.Profinet.Siemens.SiemensPLCS;
import HslCommunication.Profinet.Siemens.SiemensS7Net;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.core.common.DateUtils;
import com.core.common.SpringUtils;
import com.zy.asrs.entity.BasCircularShuttle;
@@ -57,6 +57,7 @@
    private boolean resetFlag2 = false;
    private boolean connectRgv = false;
    private boolean alarmChangeSign = false;
    private boolean csSign = true;//测试标记
    public RgvThread(RgvSlave slave) {
        this.slave = slave;
@@ -156,7 +157,7 @@
                    try {
                        // 根据实时信息更新数据库
                        BasCircularShuttleService basCircularShuttleService = SpringUtils.getBean(BasCircularShuttleService.class);
                        BasCircularShuttle basCircularShuttle = basCircularShuttleService.selectOne(new EntityWrapper<BasCircularShuttle>().eq("rgv_no",  slave.getId()));
                        BasCircularShuttle basCircularShuttle = basCircularShuttleService.getOne(new QueryWrapper<BasCircularShuttle>().eq("rgv_no",  slave.getId()));
                        if (basCircularShuttle.getStatus() != 0){
                            continue;
                        }
@@ -192,8 +193,8 @@
                    continue;
                }
                Thread.sleep(40);
                readStatus();
//                readStatus();
                initRgv();
            } catch (Exception e) {
                log.error("RGV读线程异常"+e.getMessage());
@@ -210,6 +211,17 @@
     * 初始化RGV状态
     */
    private void initRgv() {
       if (csSign){
           initRgvCS();
       } else {
           initRgvT();
       }
    }
    /**
     * 初始化RGV状态
     */
    private void initRgvT() {
        if (null == rgvProtocol) {
            rgvProtocol = new RgvProtocol();
        }
@@ -229,6 +241,47 @@
        rgvProtocol.setxDistance((short) 0);
        rgvProtocol.setxDuration((short) 0);
        log.error("连接中断:RGV号:"+slave.getId());
        try {
            // 根据实时信息更新数据库
            BasRgvService basRgvService = SpringUtils.getBean(BasRgvService.class);
            BasRgv basRgv = new BasRgv();
            basRgv.setRgvNo(slave.getId());
            basRgv.setRgvSts((int)rgvProtocol.getMode());
            basRgv.setLoaded2(rgvProtocol.getLoaded2().intValue());
            if (!basRgvService.updateById(rgvProtocol.toSqlModel(basRgv))){
                log.error("RGV plc数据库更新失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
            }
        } catch (Exception ignore) {
        }
    }
    /**
     * 初始化RGV状态
     */
    private void initRgvCS() {
        if (null == rgvProtocol) {
            rgvProtocol = new RgvProtocol();
            rgvProtocol.setRgvNo(slave.getId());
            rgvProtocol.setMode((short) 3);
            rgvProtocol.setStatus((short)0);
            rgvProtocol.setTaskNo1((short)0);
            rgvProtocol.setStatus1((short)0);
            rgvProtocol.setLoaded1((short)0);
            rgvProtocol.setWalkPos((short)0);
            if (rgvProtocol.getRgvPos()==null ||  rgvProtocol.getRgvPos()==0){
                rgvProtocol.setRgvPos(1L+rgvProtocol.getRgvNo()*10000);
            }
//        rgvProtocol.setRgvPos(rgvProtocol.getRgvPos()+1000);
            rgvProtocol.setRgvPos(rgvProtocol.getRgvPos());
            rgvProtocol.setTaskNo2((short)0);
            rgvProtocol.setStatus2((short)-1);
            rgvProtocol.setLoaded2((short)0);
            rgvProtocol.setAlarm((short)0);
            rgvProtocol.setxSpeed((short) 0);
            rgvProtocol.setxDistance((short) 0);
            rgvProtocol.setxDuration((short) 0);
        }
//        log.error("连接中断:RGV号:"+slave.getId());
        try {
            // 根据实时信息更新数据库
            BasRgvService basRgvService = SpringUtils.getBean(BasRgvService.class);
@@ -323,7 +376,7 @@
                        if (!alarmChangeSign && !alarmList.isEmpty()){
                            BasRgvErrLogService basRgvErrLogService = SpringUtils.getBean(BasRgvErrLogService.class);
                            BasRgvErrLog basRgvErrLog = new BasRgvErrLog(rgvProtocol.getAlarmList(), rgvProtocol.getTaskNo1(), rgvProtocol.getRgvNo());
                            basRgvErrLogService.insert(basRgvErrLog);
                            basRgvErrLogService.save(basRgvErrLog);
                        }
                    } catch (Exception e){
                        log.error("RGV异常信息保存失败!!");
@@ -354,7 +407,7 @@
            BasRgvOptService basRgvOptService = SpringUtils.getBean(BasRgvOptService.class);
            BasRgvOpt basRgvOpt = new BasRgvOpt(rgvProtocol.getTaskNo1().intValue(), rgvProtocol.getRgvNo(), rgvProtocol.getRgvPosInt(), command);
            log.info(rgvProtocol.getRgvNo()+"号小车写入命令定位值:"+rgvProtocol.getRgvPosInt());
            basRgvOptService.insert(basRgvOpt);
            basRgvOptService.save(basRgvOpt);
        }catch (Exception e){
            log.error("RGV写入命令保存失败!!");
        }
@@ -363,7 +416,7 @@
        try{
            BasRgvOptService basRgvOptService = SpringUtils.getBean(BasRgvOptService.class);
            BasRgvOpt basRgvOpt = new BasRgvOpt(rgvProtocol.getTaskNo1().intValue(), rgvProtocol.getRgvNo(), rgvProtocol.getRgvPosI(), command);
            basRgvOptService.insert(basRgvOpt);
            basRgvOptService.save(basRgvOpt);
        }catch (Exception e){
            log.error("RGV写入命令保存失败!!");
        }
@@ -415,7 +468,7 @@
                    new Date(),
                    null
            );
            bean.insert(basRgvOpt);
            bean.save(basRgvOpt);
        } catch (Exception ignore) {}
        if (result != null && result.IsSuccess) {
@@ -477,7 +530,7 @@
                    new Date(),
                    null
            );
            bean.insert(basRgvOpt);
            bean.save(basRgvOpt);
        } catch (Exception ignore) {}
        if (result != null && result.IsSuccess) {
@@ -562,7 +615,7 @@
                    new Date(),
                    null
            );
            bean.insert(basRgvOpt);
            bean.save(basRgvOpt);
        } catch (Exception ignore) {}
        if (result != null && result.IsSuccess) {