#1
dubin
2025-11-26 0a857fe7ecfab78e085d1890014f664771fbe37d
src/main/java/com/zy/core/thread/RgvThread.java
@@ -144,88 +144,88 @@
     * 读取状态
     */
    private void readStatus(){
        try {
            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 30);
            if (result.IsSuccess) {
                if (null == rgvProtocol || rgvProtocol.getRgvNo() == null) {
                    rgvProtocol = new RgvProtocol();
                    rgvProtocol.setRgvNo(slave.getId());
                }
                rgvProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 0));
                rgvProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 2));
                rgvProtocol.setTaskNo1(siemensNet.getByteTransform().TransInt16(result.Content, 4));
                rgvProtocol.setStatus1(siemensNet.getByteTransform().TransInt16(result.Content, 6));
                rgvProtocol.setLoaded1(siemensNet.getByteTransform().TransInt16(result.Content, 8));
                rgvProtocol.setRgvPos(siemensNet.getByteTransform().TransInt16(result.Content, 10));
                rgvProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 12));
                rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 14));
//                rgvProtocol.setStatus2(siemensNet.getByteTransform().TransInt16(result.Content, 16));
                rgvProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 18));
//                rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 20));
                rgvProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 22));
//                rgvProtocol.setTemp1(siemensNet.getByteTransform().TransInt16(result.Content, 24));
                rgvProtocol.setTemp2(siemensNet.getByteTransform().TransInt16(result.Content, 26));
//                rgvProtocol.setTemp3(siemensNet.getByteTransform().TransInt16(result.Content, 28));
//                rgvProtocol.setTemp4(siemensNet.getByteTransform().TransInt16(result.Content, 30));
//                rgvProtocol.setTemp5(siemensNet.getByteTransform().TransInt16(result.Content, 32));
//                rgvProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 28));
//                rgvProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 40));
//                rgvProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 48));
                OutputQueue.RGV.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功", DateUtils.convert(new Date()), slave.getId()));
                // 工位1复位信号
                if (rgvProtocol.getStatusType1().equals(RgvStatusType.WAITING)
                        || rgvProtocol.getStatusType1().equals(RgvStatusType.FETCHWAITING)) {
                    if (resetFlag1) {
                        RgvCommand rgvCommand = new RgvCommand();
                        rgvCommand.setAckFinish1((short)1);
                        if (write(rgvCommand)) {
                            resetFlag1 = false;
                        }
                    }
                }
                if (System.currentTimeMillis() - rgvProtocol.getDeviceDataLog() > 1000 * 5) {
                    //采集时间超过5s,保存一次数据记录
                    //保存数据记录
                    DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class);
                    DeviceDataLog deviceDataLog = new DeviceDataLog();
                    deviceDataLog.setOriginData(Base64.getEncoder().encodeToString(result.Content));
                    deviceDataLog.setWcsData(JSON.toJSONString(rgvProtocol));
                    deviceDataLog.setType("rgv");
                    deviceDataLog.setDeviceNo(rgvProtocol.getRgvNo());
                    deviceDataLog.setCreateTime(new Date());
                    deviceDataLogService.insert(deviceDataLog);
                    //更新采集时间
                    rgvProtocol.setDeviceDataLog(System.currentTimeMillis());
                }
                try {
                    // 根据实时信息更新数据库
                    BasRgvService basRgvService = SpringUtils.getBean(BasRgvService.class);
                    BasRgv basRgv = new BasRgv();
                    basRgv.setRgvNo(slave.getId());
                    basRgv.setRgvSts((int)rgvProtocol.getMode());
                    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){
                    System.out.println(ignore);
                }
            } else {
                initRgv();
                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());
            }
        } catch (Exception e) {
            e.printStackTrace();
            OutputQueue.RGV.offer(MessageFormat.format("【{0}】读取RGV plc状态信息失败 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
//            log.error("读取RGV plc状态信息失败 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
            initRgv();
        }
//        try {
//            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 30);
//            if (result.IsSuccess) {
//                if (null == rgvProtocol || rgvProtocol.getRgvNo() == null) {
//                    rgvProtocol = new RgvProtocol();
//                    rgvProtocol.setRgvNo(slave.getId());
//                }
//                rgvProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 0));
//                rgvProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 2));
//                rgvProtocol.setTaskNo1(siemensNet.getByteTransform().TransInt16(result.Content, 4));
//                rgvProtocol.setStatus1(siemensNet.getByteTransform().TransInt16(result.Content, 6));
//                rgvProtocol.setLoaded1(siemensNet.getByteTransform().TransInt16(result.Content, 8));
//                rgvProtocol.setRgvPos(siemensNet.getByteTransform().TransInt16(result.Content, 10));
//                rgvProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 12));
//                rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 14));
////                rgvProtocol.setStatus2(siemensNet.getByteTransform().TransInt16(result.Content, 16));
//                rgvProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 18));
////                rgvProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 20));
//                rgvProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 22));
////                rgvProtocol.setTemp1(siemensNet.getByteTransform().TransInt16(result.Content, 24));
//                rgvProtocol.setTemp2(siemensNet.getByteTransform().TransInt16(result.Content, 26));
////                rgvProtocol.setTemp3(siemensNet.getByteTransform().TransInt16(result.Content, 28));
////                rgvProtocol.setTemp4(siemensNet.getByteTransform().TransInt16(result.Content, 30));
////                rgvProtocol.setTemp5(siemensNet.getByteTransform().TransInt16(result.Content, 32));
////                rgvProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 28));
////                rgvProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 40));
////                rgvProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 48));
//
//                OutputQueue.RGV.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功", DateUtils.convert(new Date()), slave.getId()));
//
//                // 工位1复位信号
//                if (rgvProtocol.getStatusType1().equals(RgvStatusType.WAITING)
//                        || rgvProtocol.getStatusType1().equals(RgvStatusType.FETCHWAITING)) {
//                    if (resetFlag1) {
//                        RgvCommand rgvCommand = new RgvCommand();
//                        rgvCommand.setAckFinish1((short)1);
//                        if (write(rgvCommand)) {
//                            resetFlag1 = false;
//                        }
//                    }
//                }
//
//                if (System.currentTimeMillis() - rgvProtocol.getDeviceDataLog() > 1000 * 5) {
//                    //采集时间超过5s,保存一次数据记录
//                    //保存数据记录
//                    DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class);
//                    DeviceDataLog deviceDataLog = new DeviceDataLog();
//                    deviceDataLog.setOriginData(Base64.getEncoder().encodeToString(result.Content));
//                    deviceDataLog.setWcsData(JSON.toJSONString(rgvProtocol));
//                    deviceDataLog.setType("rgv");
//                    deviceDataLog.setDeviceNo(rgvProtocol.getRgvNo());
//                    deviceDataLog.setCreateTime(new Date());
//                    deviceDataLogService.insert(deviceDataLog);
//
//                    //更新采集时间
//                    rgvProtocol.setDeviceDataLog(System.currentTimeMillis());
//                }
//
//                try {
//                    // 根据实时信息更新数据库
//                    BasRgvService basRgvService = SpringUtils.getBean(BasRgvService.class);
//                    BasRgv basRgv = new BasRgv();
//                    basRgv.setRgvNo(slave.getId());
//                    basRgv.setRgvSts((int)rgvProtocol.getMode());
//                    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){
//                    System.out.println(ignore);
//                }
//
//            } else {
//                initRgv();
//                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());
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//            OutputQueue.RGV.offer(MessageFormat.format("【{0}】读取RGV plc状态信息失败 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
////            log.error("读取RGV plc状态信息失败 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
//            initRgv();
//        }
    }
    /**