#
lty
2025-09-25 70cbbaabbde30cb8d2ea3ded4b481d7eb87c4b11
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -60,11 +60,11 @@
        add(1032);add(1033);add(1035);
        add(1036);add(1037);add(1038);
        add(1039);add(1041);
//        add(1042);add(1043);add(1044);add(1045);add(1046);add(1047);add(1048);add(1050);add(1051);add(1052);add(1053);add(1054);add(1055);add(1056);add(1057);
//        add(1058);add(1059);add(1060);add(1061);add(1062);add(1063);add(1064);add(1065);add(1066);add(1067);add(1068);add(1069);add(1070);add(1071);add(1072);
//        add(1073);add(1074);add(1075);add(1076);add(1077);add(1078);add(1079);add(1080);add(1081);add(1082);add(1083);add(1084);add(1085);add(1086);add(1087);
//        add(1088);add(1089);add(1090);add(1091);add(1092);add(1093);add(1094);add(1095);add(1096);add(1097);add(1098);add(1099);add(1100);add(1101);add(1102);
//        add(1103);add(1104);add(1105);add(1106);add(1107);add(1108);add(1109);
        add(1042);add(1043);add(1044);add(1045);add(1046);add(1047);add(1048);add(1050);add(1051);add(1052);add(1053);add(1054);add(1055);add(1056);add(1057);
        add(1058);add(1059);add(1060);add(1061);add(1062);add(1063);add(1064);add(1065);add(1066);add(1067);add(1068);add(1069);add(1070);add(1071);add(1072);
        add(1073);add(1074);add(1075);add(1076);add(1077);add(1078);add(1079);add(1080);add(1081);add(1082);add(1083);add(1084);add(1085);add(1086);add(1087);
        add(1088);add(1089);add(1090);add(1091);add(1092);add(1093);add(1094);add(1095);add(1096);add(1097);add(1098);add(1099);add(1100);add(1101);add(1102);
        add(1103);add(1104);add(1105);add(1106);add(1107);add(1108);add(1109);add(1110);
    }};
    public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{
@@ -94,12 +94,29 @@
        put(1022, 2076);put(1023, 2192);put(1024, 2284);put(1025, 2376);put(1026, 2492);put(1027, 2584);put(1028, 2676);
        put(1029, 0);put(1030, 116);put(1031, 208);put(1032, 300);put(1033, 416);put(1034, 508);put(1035, 600);
        put(1036, 692);put(1037, 784);put(1038, 876);put(1039, 968);put(1040, 1084);put(1041, 1176);
        put(1042, 0);put(1043, 92);put(1044, 184);put(1045, 276);put(1046, 368);put(1047, 460);
        put(1048, 552);put(1049, 644);put(1050, 736);put(1051, 828);put(1052, 992);put(1053, 1084);
        put(1054, 0);put(1055, 92);put(1056, 256);put(1057, 348);put(1058, 512);put(1059, 604);put(1060, 600);
        put(1061, 788);put(1062, 880);put(1063, 972);put(1064, 1064);put(1065, 1156);put(1066, 1320);put(1067, 1412);
        put(1068, 1576);put(1069, 1668);put(1070, 1832);put(1071, 1924);put(1072, 2016);put(1073, 2108);put(1074, 2200);
        put(1075, 2292);put(1076, 2384);put(1077, 2476);put(1078, 2640);put(1079, 2732);
        put(1080, 0);put(1081, 92);put(1082, 256);put(1083, 348);put(1084, 512);put(1085, 604);put(1086, 696);
        put(1087, 860);put(1088, 952);put(1089, 1044);put(1090, 1208);put(1091, 1300);put(1092, 1392);put(1093, 1556);
        put(1094, 1648);put(1095, 1740);put(1096, 1904);put(1097, 1996);put(1098, 2160);put(1099, 2252);put(1100, 2344);
        put(1101, 2508);put(1102, 2600);put(1103, 2692);put(1104, 2784);put(1105, 2876);
        put(1106, 2968);put(1107, 3060);put(1108, 3152);put(1109, 3244);put(1110, 3336);
        // 其他站点同理继续加
    }};
    // 特殊站点集合
    private static final Set<Integer> specialSites = new HashSet<>(
            Arrays.asList(1001,1005,1008,1011,1015,1019,1022,1025,1029, 1032,1039));
    // 特殊站点集合
    private static final Set<Integer> specialSites2 = new HashSet<>(
            Arrays.asList(1051,1055,1057,1065,1067,1069,1077,1081,1083,1086,1089,1092,1095,1097,1100));
    public static final ArrayList<Integer> BarcodeList = new ArrayList<Integer>() {{
@@ -264,6 +281,10 @@
        OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB100.0", (short) (2764));//1001-1028
        OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.0", (short) (1264));//1029-1037
        OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB104.0", (short) (1264));//1042-1053
        OperateResultExOne<byte[]> result4 = siemensS7Net.Read("DB103.0", (short) (2820));//1054-1079
        OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB102.0", (short) (3424));//1080-1110
        if (result1.IsSuccess && result2.IsSuccess) {
            for (int i = 0; i < staNoSize; i++) {
@@ -280,6 +301,10 @@
                    result = result2;
                }else if(siteId < 1054){
                    result = result3;
                }else if(siteId < 1080){
                    result = result4;
                }else if(siteId < 1111){
                    result = result5;
                }
                // 获取该站点对应的偏移量
                Integer offset = siteOffsetMap.get(siteId);
@@ -289,8 +314,10 @@
                Integer offset2 = getOffsetBySiteId(siteId);
                Integer offset3 = getOffsetBySiteId2(siteId);
                staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt32(result.Content, offset + offset2));     // 工作号
                staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, offset + offset2 + 12));   // 目标站
                if(specialSites2.contains(siteId)){
                    staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, offset + offset2 + 48));   // 目标站
                }
                boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, offset + offset3, 2);
                staProtocol.setAutoing(!status[0]);  // 自动
@@ -524,15 +551,39 @@
        //任务下发次数
        int writeCount = 0;
        do {
            if(siteId > 1028){
                write = siemensS7Net.Write("DB101." + (offset + offset2), staProtocol.getWorkNo());    // 工作号
                Thread.sleep(200);
                write1 = siemensS7Net.Write("DB101." + (offset + offset2 + 12), staProtocol.getStaNo().intValue());    // 目标站
            }else{
            if(siteId < 1029){
                write = siemensS7Net.Write("DB100." + (offset + offset2), staProtocol.getWorkNo());    // 工作号
                Thread.sleep(200);
                write1 = siemensS7Net.Write("DB100." + (offset + offset2 + 12), staProtocol.getStaNo().intValue());    // 目标站
            }
            }else if(siteId < 1042){
                write = siemensS7Net.Write("DB101." + (offset + offset2), staProtocol.getWorkNo());    // 工作号
                Thread.sleep(200);
                write1 = siemensS7Net.Write("DB101." + (offset + offset2 + 12), staProtocol.getStaNo().intValue());    // 目标站
            }else if(siteId < 1054){
                write = siemensS7Net.Write("DB104." + (offset + offset2), staProtocol.getWorkNo());    // 工作号
                Thread.sleep(200);
                if(specialSites2.contains(siteId)){
                    write1 = siemensS7Net.Write("DB104." + (offset + offset2 + 48), staProtocol.getStaNo().intValue());    // 目标站
                }else{
                    write1 = siemensS7Net.Write("DB104." + (offset + offset2 + 12), staProtocol.getStaNo().intValue());    // 目标站
                }
            }else if(siteId < 1080){
                write = siemensS7Net.Write("DB104." + (offset + offset2), staProtocol.getWorkNo());    // 工作号
                Thread.sleep(200);
                if(specialSites2.contains(siteId)){
                    write1 = siemensS7Net.Write("DB103." + (offset + offset2 + 48), staProtocol.getStaNo().intValue());    // 目标站
                }else{
                    write1 = siemensS7Net.Write("DB103." + (offset + offset2 + 12), staProtocol.getStaNo().intValue());    // 目标站
                }
            }else if(siteId < 1111){
                write = siemensS7Net.Write("DB104." + (offset + offset2), staProtocol.getWorkNo());    // 工作号
                Thread.sleep(200);
                if(specialSites2.contains(siteId)){
                    write1 = siemensS7Net.Write("DB102." + (offset + offset2 + 48), staProtocol.getStaNo().intValue());    // 目标站
                }else{
                    write1 = siemensS7Net.Write("DB102." + (offset + offset2 + 12), staProtocol.getStaNo().intValue());    // 目标站
                }            }
            if(write.IsSuccess && write1.IsSuccess){
                log.error("写入输送线命令成功。输送线plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
                break;