#
zjj
2025-05-08 b44b85a4d7512615b8c19c95dc21e537a15a0d5b
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -531,25 +531,24 @@
        }
        // 空桶出库信号
        OperateResultExOne<byte[]> readCall = siemensS7Net.Read("DB102", (short) 4);
        OperateResultExOne<byte[]> readCall = siemensS7Net.Read("DB102.0", (short) 8);
        if (readCall.IsSuccess){
            Integer isNeed = siemensS7Net.getByteTransform().TransInt32(result.Content,  0); // IBC要桶信号
            Integer isFinish = siemensS7Net.getByteTransform().TransInt32(result.Content, 2); // IBC灌装完成信号
            Integer weight = siemensS7Net.getByteTransform().TransInt32(result.Content, 4); // IBC灌装重里
            Integer isAHalf = siemensS7Net.getByteTransform().TransInt32(result.Content, 6); // IBC半桶标记
            int isNeed = siemensS7Net.getByteTransform().TransInt16(readCall.Content,  0); // IBC要桶信号
            int Finish = siemensS7Net.getByteTransform().TransInt16(readCall.Content, 2); // IBC灌装完成信号
            int weight1 = siemensS7Net.getByteTransform().TransInt16(readCall.Content, 4); // IBC灌装重里
            int isAHalf = siemensS7Net.getByteTransform().TransInt16(readCall.Content, 6); // IBC半桶标记
            isCalled = isNeed;
            isFinish = isFinish;
            weight = weight;
            isFinish = Finish;
            weight = weight1;
            isHalf = isAHalf;
        }
        // 完成罐装信号
        OperateResultExOne<byte[]> finish = siemensS7Net.Read("DB105.240", (short) 4);
        if (finish.IsSuccess){
            short amount =  siemensS7Net.getByteTransform().TransInt16(result.Content,  0);
//            isCalled = amount;
        }
//        OperateResultExOne<byte[]> finish = siemensS7Net.Read("DB105.240", (short) 4);
//        if (finish.IsSuccess){
//            short amount =  siemensS7Net.getByteTransform().TransInt16(finish.Content,  0);
////            isCalled = amount;
//        }
//        if (isCalled == 1) {
//            writeIsCalled();
@@ -769,11 +768,11 @@
                boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i*4, 1);
//                short tongType = siemensS7Net.getByteTransform().TransInt16(result.Content, i * 4 + 2);
                short amount = siemensS7Net.getByteTransform().TransInt16(result.Content, i * 4 + 6);
                String batch = siemensS7Net.getByteTransform().TransString(result.Content,i * 4+ 8, 20, "UTF-8");
                String batch = siemensS7Net.getByteTransform().TransString(result.Content,i * 4+ 8, 20, "UTF-8").trim();
                short ban = siemensS7Net.getByteTransform().TransInt16(result.Content, i * 4 + 28);
                Integer w1 = siemensS7Net.getByteTransform().TransInt32(result.Content, i * 4 + 30);
                String orderNo = siemensS7Net.getByteTransform().TransString(result.Content, i * 4 + 34,22, "UTF-8");
                String matnr = siemensS7Net.getByteTransform().TransString(result.Content, i * 4 + 56,22, "UTF-8");
                String matnr = siemensS7Net.getByteTransform().TransString(result.Content, i * 4 + 56,22, "UTF-8").trim();
                StaProtocol staProtocol = station.get(siteId);
@@ -839,9 +838,23 @@
        }
        ArrayList<Integer> staNos = getWriteStaNo();
        int index = staNos.indexOf(staProtocol.getSiteId());
        OperateResult write = siemensS7Net.Write("DB100." + index*6, staProtocol.getWorkNo().intValue());    // 工作号
        Thread.sleep(500);
        OperateResult write1 = siemensS7Net.Write("DB100." + (index*6+4), staProtocol.getStaNo());    // 目标站
        OperateResult write = null;
        OperateResult write1 = null;
        //任务下发次数
        int writeCount = 0;
        do {
            write = siemensS7Net.Write("DB100." + index*6, staProtocol.getWorkNo().intValue());    // 工作号
            Thread.sleep(200);
            write1 = siemensS7Net.Write("DB100." + (index*6+4), staProtocol.getStaNo().shortValue());    // 目标站
            if(write.IsSuccess && write1.IsSuccess){
                log.error("写入输送线命令成功。输送线plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
                break;
            }
            else {
                writeCount++;
                log.error("写入输送线命令失败。输送线plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
            }
        }while (writeCount<5);
        if (!write.IsSuccess || !write1.IsSuccess) {
            staProtocol = station.get(staProtocol.getSiteId());
@@ -865,9 +878,33 @@
        }
        ArrayList<Integer> staNos = getWriteStaNo();
        int index = staNos.indexOf(staProtocol.getSiteId());
        OperateResult write = siemensS7Net.Write("DB100." + index*10, staProtocol.getWorkNo().intValue());    // 工作号
        OperateResult write1 = siemensS7Net.Write("DB100." + (index*10+4), staProtocol.getStaNo());    // 目标站
        OperateResult write2 = siemensS7Net.Write("DB100." + (index*10+6), staProtocol.getMatnr());    // 目标站
        OperateResult write = null;
        OperateResult write1 = null;
        OperateResult write2 = null;
        //任务下发次数
        int writeCount = 0;
        do {
             write = siemensS7Net.Write("DB100." + index*10, staProtocol.getWorkNo().intValue());    // 工作号
            Thread.sleep(100);
             write1 = siemensS7Net.Write("DB100." + (index*10+4), staProtocol.getStaNo());    // 目标站
            Thread.sleep(100);
             write2 = siemensS7Net.Write("DB100." + (index*10+6), staProtocol.getMatnr());    // 目标站
//            write = siemensS7Net.Write("DB100." + index*6, staProtocol.getWorkNo());    // 工作号
//            write1 = siemensS7Net.Write("DB100." + (index*6+4), staProtocol.getStaNo().shortValue());    // 目标站
//            write2 = siemensS7Net.Write("DB100." + (index*10+6), staProtocol.getMatnr());    // 目标站
            if(write.IsSuccess && write1.IsSuccess && write2.IsSuccess){
                log.error("写入输送线命令成功。输送线plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
                break;
            }
            else {
                writeCount++;
                log.error("写入输送线命令失败。输送线plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
            }
        }while (writeCount<5);
        if (!write.IsSuccess || !write1.IsSuccess || !write2.IsSuccess) {
            staProtocol = station.get(staProtocol.getSiteId());
@@ -883,12 +920,12 @@
    }
    private void writeIsCalled() throws InterruptedException {
        OperateResult write = siemensS7Net.Write("DB102.0" ,  0);    // 工作号
        OperateResult write = siemensS7Net.Write("DB102.0" ,  (short) 0);    // 工作号
    }
    private void writeIsFinish() throws InterruptedException {
        OperateResult finish = siemensS7Net.Write("DB102.2" ,  0);    // 工作号
        OperateResult half = siemensS7Net.Write("DB102.6" ,  0);    // 工作号
        OperateResult finish = siemensS7Net.Write("DB102.2" ,  (short)0);    // 工作号
        OperateResult half = siemensS7Net.Write("DB102.6" ,  (short)0);    // 工作号
    }
    /**