zhangchao
2024-08-28 3b4a9b32f9e024db78f700ffe777977a7ecabed5
src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -134,10 +134,10 @@
        if(connect.IsSuccess){
            result = true;
            OutputQueue.CRN.offer(MessageFormat.format( "【{0}】堆垛机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()));
            News.info("堆垛机plc连接成功 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
            News.info("SiemensCrn"+" - 1"+" - 堆垛机plc连接成功 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
        } else {
            OutputQueue.CRN.offer(MessageFormat.format("【{0}】堆垛机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()));
            News.error("堆垛机plc连接失败!!! ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
            News.error("SiemensCrn"+" - 2"+" - 堆垛机plc连接失败!!! ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
            initCrn();
        }
//        siemensNet.ConnectClose();
@@ -149,33 +149,41 @@
     */
    private void readStatus(){
        try {
            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 56);
            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 66);
            if (result.IsSuccess) {
                if (null == crnProtocol) {
                    crnProtocol = new CrnProtocol();
                    crnProtocol.setCrnNo(slave.getId());
                }
                crnProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 0));
                //工位1
                crnProtocol.setTaskNo(siemensNet.getByteTransform().TransInt16(result.Content, 2));
                crnProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 4));
                crnProtocol.setBay(siemensNet.getByteTransform().TransInt16(result.Content, 6));
                crnProtocol.setLevel(siemensNet.getByteTransform().TransInt16(result.Content, 8));
                crnProtocol.setForkPos(siemensNet.getByteTransform().TransInt16(result.Content, 10));
                crnProtocol.setLiftPos(siemensNet.getByteTransform().TransInt16(result.Content, 12));
                crnProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 14));
                crnProtocol.setLoaded(siemensNet.getByteTransform().TransInt16(result.Content, 16));
                crnProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 18));
                crnProtocol.setTemp1(siemensNet.getByteTransform().TransInt16(result.Content, 20));
                crnProtocol.setTemp2(siemensNet.getByteTransform().TransInt16(result.Content, 22));
                crnProtocol.setTemp3(siemensNet.getByteTransform().TransInt16(result.Content, 24));
                crnProtocol.setTemp4(siemensNet.getByteTransform().TransInt16(result.Content, 26));
                crnProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 28));
                crnProtocol.setySpeed(siemensNet.getByteTransform().TransInt16(result.Content, 32));
                crnProtocol.setzSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 36));
                crnProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 40));
                crnProtocol.setyDistance(siemensNet.getByteTransform().TransInt16(result.Content, 44));
                crnProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 48));
                crnProtocol.setyDuration(siemensNet.getByteTransform().TransInt16(result.Content, 52));
                crnProtocol.setLoaded(siemensNet.getByteTransform().TransInt16(result.Content, 12));
                //工位2
                crnProtocol.setTaskNoTwo(siemensNet.getByteTransform().TransInt16(result.Content, 14));
                crnProtocol.setStatusTwo(siemensNet.getByteTransform().TransInt16(result.Content, 16));
                crnProtocol.setBayTwo(siemensNet.getByteTransform().TransInt16(result.Content, 18));
                crnProtocol.setLevelTwo(siemensNet.getByteTransform().TransInt16(result.Content, 20));
                crnProtocol.setForkPosTwo(siemensNet.getByteTransform().TransInt16(result.Content, 22));
                crnProtocol.setLoadedTwo(siemensNet.getByteTransform().TransInt16(result.Content, 24));
                crnProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 26));
                crnProtocol.setWalkPosTwo(siemensNet.getByteTransform().TransInt16(result.Content, 28));
                crnProtocol.setLiftPos(siemensNet.getByteTransform().TransInt16(result.Content, 30));
                crnProtocol.setAlarm(siemensNet.getByteTransform().TransInt16(result.Content, 32));
                crnProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 34));
                crnProtocol.setySpeed(siemensNet.getByteTransform().TransInt16(result.Content, 38));
                crnProtocol.setzSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 42));
                crnProtocol.setzSpeedTwo(siemensNet.getByteTransform().TransInt16(result.Content, 46));
                crnProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 50));
                crnProtocol.setyDistance(siemensNet.getByteTransform().TransInt16(result.Content, 54));
                crnProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 58));
                crnProtocol.setyDuration(siemensNet.getByteTransform().TransInt16(result.Content, 62));
                OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId()));
@@ -200,19 +208,19 @@
                    basCrnp.setCrnNo(slave.getId());
                    basCrnp.setCrnSts((int)crnProtocol.getMode());
                    if (!basCrnpService.updateById(crnProtocol.toSqlModel(basCrnp))){
                        log.error("堆垛机plc数据库更新失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
                        News.error("SiemensCrn"+" - 3"+" - 堆垛机plc数据库更新失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
                    }
                } catch (Exception ignore){}
            } else {
                initCrn();
                OutputQueue.CRN.offer(MessageFormat.format("【{0}】读取堆垛机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("读取堆垛机plc状态信息失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
                News.error("SiemensCrn"+" - 4"+" - 读取堆垛机plc状态信息失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
            }
        } catch (Exception e) {
            e.printStackTrace();
            OutputQueue.CRN.offer(MessageFormat.format("【{0}】读取堆垛机plc状态信息失败 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
            log.error("读取堆垛机plc状态信息失败 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
            News.error("SiemensCrn"+" - 5"+" - 读取堆垛机plc状态信息失败 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
            initCrn();
        }
    }
@@ -231,7 +239,7 @@
     */
    private boolean write(CrnCommand command) throws InterruptedException {
        if (null == command) {
            log.error("堆垛机写入命令为空");
            News.error("SiemensCrn"+" - 6"+" - 堆垛机写入命令为空");
            return false;
        }
//        convertRow(command);
@@ -277,18 +285,18 @@
                    null,    // 修改时间
                    null    // 修改人员
            );
            bean.insert(basCrnOpt);
            bean.save(basCrnOpt);
        } catch (Exception ignore) {}
        if (result != null && result.IsSuccess) {
            Thread.sleep(200);
            this.readStatus();
            News.info("堆垛机命令下发[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
            News.info("SiemensCrn"+" - 7"+" - 堆垛机命令下发[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
            OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] >>>>> 命令下发: {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
            return true;
        } else {
            OutputQueue.CRN.offer(MessageFormat.format("【{0}】写入堆垛机plc数据失败 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
            log.error("写入堆垛机plc数据失败 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
            News.error("SiemensCrn"+" - 8"+" - 写入堆垛机plc数据失败 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
            return false;
        }
    }