#
LSH
2024-06-08 a4fdbb852841fcc9bcc78676e4551efcff384494
src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -48,6 +48,7 @@
     * 堆垛机是否在回原点运动中标记
     */
    private boolean backHpFlag = false;
    private boolean backHpFlagTwo = false;
    public SiemensCrnThread(CrnSlave slave) {
        this.slave = slave;
@@ -135,6 +136,7 @@
        crnProtocol.setMode((short) -1);
//        crnProtocol.setTaskNo((short)0);
        crnProtocol.setStatus((short)-1);
        crnProtocol.setStatusTwo((short)-1);
        crnProtocol.setBay((short)0);
        crnProtocol.setLevel((short)0);
        crnProtocol.setForkPos((short) -1);
@@ -149,6 +151,16 @@
        crnProtocol.setyDistance((short) 0);
        crnProtocol.setxDuration((short) 0);
        crnProtocol.setyDuration((short) 0);
        // 根据实时信息更新数据库
        BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class);
        BasCrnp basCrnp = basCrnpService.selectById(slave.getId());
        basCrnp.setCrnSts((int)crnProtocol.getMode());
        basCrnp.setCrnStatusOne(-1);
        basCrnp.setCrnStatusTwo(-1);
        if (!basCrnpService.updateById(basCrnp)){
            log.error("堆垛机plc数据库更新失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
        }
    }
    @Override
@@ -178,9 +190,9 @@
        try {
            OperateResultExOne<byte[]> result = new OperateResultExOne<byte[]>();
            if (slave.getId()>2 && slave.getId()<6){
                result = siemensNet.Read("DB101.0", (short) 62);
                result = siemensNet.Read("DB101.0", (short) 66);
            } else {
                result = siemensNet.Read("DB101.0", (short) 52);
                result = siemensNet.Read("DB101.0", (short) 56);
            }
            if (result.IsSuccess) {
                if (null == crnProtocol) {
@@ -194,7 +206,7 @@
                crnProtocol.setLevel(siemensNet.getByteTransform().TransInt16(result.Content, 8));
                crnProtocol.setForkPos(siemensNet.getByteTransform().TransInt16(result.Content, 10));
                if (slave.getId()>2 && slave.getId()<6){
                if (slave.getId()<3 || slave.getId()>5){
                    crnProtocol.setLiftPos(siemensNet.getByteTransform().TransInt16(result.Content, 12));
                    crnProtocol.setWalkPos(siemensNet.getByteTransform().TransInt16(result.Content, 14));
                    crnProtocol.setLoaded(siemensNet.getByteTransform().TransInt16(result.Content, 16));
@@ -220,6 +232,12 @@
                    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));
@@ -230,19 +248,13 @@
                    crnProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 58));
                    crnProtocol.setyDuration(siemensNet.getByteTransform().TransInt16(result.Content, 62));
                }
                //工位2数据  无则无需理会
                try{
                }catch (Exception e){
                }
                OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId()));
                // 复位信号
                if (!Cools.isEmpty(crnProtocol.getStatusType()) && crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) {
                    log.error("-------------------------------------------第一步、[堆垛机号:{}, 工作号:{}, 载货台:{}]==>> 状态为10,等待确认!!",
                            slave.getId(),crnProtocol.getTaskNo(), crnProtocol.getLoaded()==1 ? "有物" : "无物");
                if (!Cools.isEmpty(crnProtocol.getStatusType()) && (crnProtocol.getStatusType().equals(CrnStatusType.WAITING) || crnProtocol.getStatusType().equals(CrnStatusType.SEPARATE_WAITING))) {
                    log.error("-------------------------工位1-------------------------第一步、[堆垛机号:{}, 工作号:{}, 载货台:{}]==>> 状态为{},等待确认!!",
                            slave.getId(),crnProtocol.getTaskNo(), crnProtocol.getLoaded()==1 ? "有物" : "无物",crnProtocol.getStatusType());
                    if (resetFlag) {
                        if(crnProtocol.getTaskNo()==9999){
                            backHpFlag = false;
@@ -253,14 +265,20 @@
                            resetFlag = false;
                        }
                    }
                }
                // 复位信号
                if (!Cools.isEmpty(crnProtocol.getStatusTypeTwo()) && (crnProtocol.getStatusTypeTwo().equals(CrnStatusType.WAITING) || crnProtocol.getStatusTypeTwo().equals(CrnStatusType.SEPARATE_WAITING))) {
                    log.error("-------------------------工位2-------------------------第一步、[堆垛机号:{}, 工作号:{}, 载货台:{}]==>> 状态为{},等待确认!!",
                            slave.getId(),crnProtocol.getTaskNoTwo(), crnProtocol.getLoadedTwo()==1 ? "有物" : "无物",crnProtocol.getStatusTypeTwo());
                    if (resetFlagTwo) {
                        if(crnProtocol.getTaskNo()==9999){
                            backHpFlag = false;
                        if(crnProtocol.getTaskNoTwo()==9999){
                            backHpFlagTwo = false;
                        }
                        CrnCommand crnCommand = new CrnCommand();
                        crnCommand.setAckFinish((short)1);
                        if (write5(crnCommand)) {
                            resetFlag = false;
                            resetFlagTwo = false;
                        }
                    }
                }