#
lsh
2024-06-26 8f93d32b15cff5287a07649da92bd5b6276c14e2
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -200,6 +200,9 @@
                    case 9:
                        write9((StaProtocol)task.getData());
                        break;
                    case 10:
                        write10((StaProtocol)task.getData());
                        break;
                    default:
                        break;
                }
@@ -292,6 +295,7 @@
                staProtocol.setBarcodeErr(status[6]);// 扫码失败
            }
        }
        if (slave.getId()==2){
            Thread.sleep(200);
            int[] staNosRgv = {623,624,625,626};
@@ -305,20 +309,25 @@
                        staProtocol.setSiteId(siteId);
                        station.put(siteId, staProtocol);
                    }
                    staProtocol.setEndRow(siemensS7Net.getByteTransform().TransInt16(result.Content, 0));     // 小车目标位
                    try{
                        staProtocol.setEndRow(siemensS7Net.getByteTransform().TransInt16(resultRgv.Content, 0));     // 小车目标位
                    staProtocol.setNowRow(siemensS7Net.getByteTransform().TransInt16(result.Content, 2));   // 目标站
                        staProtocol.setNowRow(siemensS7Net.getByteTransform().TransInt16(resultRgv.Content, 2));   // 目标站
                    boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, 4, 1);
                    staProtocol.setRGV1(status[0]);  // 自动
                    staProtocol.setRGV2(status[1]);  // 有物
                    staProtocol.setRGV3(status[2]); // 可入
                    staProtocol.setRGV4(status[3]);//
                    staProtocol.setRGV5(status[4]);  //
                    staProtocol.setRGV6(status[5]);  // 满托盘
                        boolean[] status = siemensS7Net.getByteTransform().TransBool(resultRgv.Content, 4, 1);
                        staProtocol.setRGV1(status[0]);  // 自动
                        staProtocol.setRGV2(status[1]);  // 有物
                        staProtocol.setRGV3(status[2]); // 可入
                        staProtocol.setRGV4(status[3]);//
                        staProtocol.setRGV5(status[4]);  //
                        staProtocol.setRGV6(status[5]);  // 满托盘
                    }catch (Exception e){
                        System.out.println(e.getMessage());
                    }
                }
            }
        }
        //条码扫描器
        Thread.sleep(200);
@@ -548,30 +557,28 @@
        boolean rgv4 = staProtocol.isRGV4();
        boolean rgv5 = staProtocol.isRGV5();
        OperateResult result1 = null;
        OperateResult result2 = null;
        String resultV1 = "";
        String resultV2 = "";
        switch (staProtocol.getSiteId()){
            case 623:
                resultV1 = "1804";
                resultV2 = "1804";
                resultV1 = "DB100.1804";
                break;
            case 624:
                resultV1 = "1810";
                resultV2 = "1810";
                resultV1 = "DB100.1810";
                break;
            case 625:
                resultV1 = "1816";
                resultV2 = "1816";
                resultV1 = "DB100.1816";
                break;
            case 626:
                resultV1 = "1822";
                resultV2 = "1822";
                resultV1 = "DB100.1822";
                break;
            default:
                return;
        }
        result1 = siemensS7Net.Write(rgv4?resultV1+".4":resultV1+".3", rgv4?rgv5:rgv4);
        if (rgv4){
            result1 = siemensS7Net.Write(resultV1+".3", rgv4);
        } else {
            result1 = siemensS7Net.Write(resultV1+".4", rgv5);
        }
        //硫化罐任务写入后,回读一次,看是否成功
        try {
            Thread.sleep(200);
@@ -584,7 +591,11 @@
            try{
                if(!result1.IsSuccess){
                    log.error("写入RGV数据失败,重新下发任务  写入直接失败 ===>> [id:{}],{},[写入次数:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount);
                    result1 = siemensS7Net.Write(rgv4?resultV1+".4":resultV1+".3", rgv4?rgv5:rgv4);
                    if (rgv4){
                        result1 = siemensS7Net.Write(resultV1+".3", rgv4);
                    } else {
                        result1 = siemensS7Net.Write(resultV1+".4", rgv5);
                    }
                    Thread.sleep(100);
                    writeCount++;
                    continue;
@@ -592,56 +603,26 @@
                OperateResultExOne<byte[]> resultRead1 = siemensS7Net.Read(resultV1, (short) 2);
                if (resultRead1.IsSuccess) {
                    boolean[] status = siemensS7Net.getByteTransform().TransBool(resultRead1.Content, 0, 1);
                    boolean status1 = status[rgv4? 4:3];
                    if (status1 == rgv4?rgv5:rgv4){
                    if (status[rgv4? 3:4]){
                        break;
                    } else {
                        log.error("写入RGV数据失败,重新下发任务  写入直接失败 ===>> [id:{}],{},[写入次数:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount);
                        result1 = siemensS7Net.Write(rgv4?resultV1+".4":resultV1+".3", rgv4?rgv5:rgv4);
                        if (rgv4){
                            result1 = siemensS7Net.Write(resultV1+".3", rgv4);
                        } else {
                            result1 = siemensS7Net.Write(resultV1+".4", rgv5);
                        }
                        Thread.sleep(100);
                        writeCount++;
                        continue;
                    }
                } else {
                    log.error("写入RGV数据失败,重新下发任务  写入直接失败 ===>> [id:{}],{},[写入次数:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount);
                    result1 = siemensS7Net.Write(rgv4?resultV1+".4":resultV1+".3", rgv4?rgv5:rgv4);
                    Thread.sleep(100);
                    writeCount++;
                    continue;
                }
            }catch (Exception e){
                log.error("写入RGV数据后回读出错,异常:"+e);
            }
            writeCount++;
        } while (writeCount<6);
        result2 = siemensS7Net.Write(rgv4?resultV2+".3":resultV2+".4", rgv4?rgv4:rgv5);
        writeCount = 1;
        do {
            try{
                if(!result2.IsSuccess){
                    log.error("写入RGV数据失败,重新下发任务  写入直接失败 ===>> [id:{}],{},[写入次数:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount);
                    result2 = siemensS7Net.Write(rgv4?resultV2+".3":resultV2+".4", rgv4?rgv4:rgv5);
                    Thread.sleep(100);
                    writeCount++;
                    continue;
                }
                OperateResultExOne<byte[]> resultRead2 = siemensS7Net.Read(resultV2, (short) 1);
                if (resultRead2.IsSuccess) {
                    boolean[] status = siemensS7Net.getByteTransform().TransBool(resultRead2.Content, 0, 1);
                    boolean status1 = status[rgv4? 3:4];
                    if (status1 ==  rgv4?rgv4:rgv5){
                        break;
                    if (rgv4){
                        result1 = siemensS7Net.Write(resultV1+".3", rgv4);
                    } else {
                        log.error("写入RGV数据失败,重新下发任务  写入直接失败 ===>> [id:{}],{},[写入次数:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount);
                        result2 = siemensS7Net.Write(rgv4?resultV2+".3":resultV2+".4", rgv4?rgv4:rgv5);
                        Thread.sleep(100);
                        writeCount++;
                        continue;
                        result1 = siemensS7Net.Write(resultV1+".4", rgv5);
                    }
                } else {
                    log.error("写入RGV数据失败,重新下发任务  写入直接失败 ===>> [id:{}],{},[写入次数:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount);
                    result2 = siemensS7Net.Write(rgv4?resultV2+".3":resultV2+".4", rgv4?rgv4:rgv5);
                    Thread.sleep(100);
                    writeCount++;
                    continue;