| | |
| | | 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>() {{ |
| | |
| | | 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>() {{ |
| | |
| | | ArrayList<Integer> staNos = getStaNo(); |
| | | int staNoSize = staNos.size(); |
| | | OperateResultExOne<byte[]> result = null; |
| | | OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB100.0", (short) (2764)); |
| | | OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.0", (short) (1264)); |
| | | 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++) { |
| | |
| | | } |
| | | if(siteId < 1029){ |
| | | result = result1; |
| | | }else{ |
| | | }else if(siteId < 1042){ |
| | | 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); |
| | |
| | | Integer offset2 = getOffsetBySiteId(siteId); |
| | | Integer offset3 = getOffsetBySiteId2(siteId); |
| | | staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt32(result.Content, offset + offset2)); // 工作号 |
| | | |
| | | staProtocol.setStaNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, offset + offset2 + 12)); // 目标站 |
| | | staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, offset + offset2 + 12)); // 目标站 |
| | | if(specialSites2.contains(siteId)){ |
| | | staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, offset + offset2 + 48)); // 目标站 |
| | | } |
| | | if(siteId ==1041){ |
| | | News.info("1"); |
| | | } |
| | | |
| | | boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, offset + offset3, 2); |
| | | staProtocol.setAutoing(status[0]); // 自动 |
| | | staProtocol.setAutoing(!status[0]); // 自动 |
| | | boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result.Content, offset + offset3 - 4, 3); |
| | | |
| | | staProtocol.setLoading(status1[0]); // 有物 |
| | | if(staProtocol.isLoading()){ |
| | | staProtocol.setInEnable(false); // 可入 |
| | | staProtocol.setOutEnable(false);// 可出 |
| | | }else{ |
| | | staProtocol.setInEnable(true); // 可入 |
| | | staProtocol.setOutEnable(true);// 可出 |
| | | } |
| | | staProtocol.setLoading(!status1[0]); // 有物 |
| | | |
| | | staProtocol.setInEnable(true); // 可入 |
| | | staProtocol.setOutEnable(true);// 可出 |
| | | // staProtocol.setInEnable(status1[1]); // 可入 |
| | | // staProtocol.setOutEnable(status1[3]);// 可出 |
| | | // staProtocol.setEmptyMk(status[4]); // 空板信号 |
| | |
| | | } |
| | | } |
| | | } |
| | | // BasRgvMapService basRgvMapService = SpringUtils.getBean(BasRgvMapService.class); |
| | | //RGV小车1 |
| | | BasRgvMapService basRgvMapService = SpringUtils.getBean(BasRgvMapService.class); |
| | | // RGV小车1 |
| | | // Thread.sleep(100); |
| | | // OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB50.200",(short)10); |
| | | // OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB101.",(short)27); |
| | | // if (result3.IsSuccess) { |
| | | // BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo((int) siemensS7Net.getByteTransform().TransInt16(result3.Content, 0)); |
| | | // if (!Cools.isEmpty(basRgvMap)){ |
| | | // Integer siteId = 1; |
| | | // StaProtocol staProtocol = station.get(siteId); |
| | | // if (null == staProtocol) { |
| | | // staProtocol = new StaProtocol(); |
| | | // staProtocol.setSiteId(siteId); |
| | | // station.put(siteId, staProtocol); |
| | | // Integer siteId1 = 1; |
| | | // Integer siteId2 = 2; |
| | | // StaProtocol staProtocol1 = station.get(siteId1); |
| | | // StaProtocol staProtocol2 = station.get(siteId1); |
| | | // |
| | | // if (null == staProtocol1) { |
| | | // staProtocol1 = new StaProtocol(); |
| | | // staProtocol1.setSiteId(siteId1); |
| | | // station.put(siteId1, staProtocol1); |
| | | // } |
| | | // staProtocol.setAutoing(true); |
| | | // staProtocol.setNearbySta(String.valueOf(siemensS7Net.getByteTransform().TransInt16(result3.Content, 8))); |
| | | // if (null == staProtocol2) { |
| | | // staProtocol2 = new StaProtocol(); |
| | | // staProtocol2.setSiteId(siteId2); |
| | | // station.put(siteId2, staProtocol2); |
| | | // |
| | | // } |
| | | // String pos = String.valueOf(getRgvPosI(siemensS7Net.getByteTransform().TransInt32(result.Content, 4))); |
| | | // staProtocol1.setAutoing(siemensS7Net.getByteTransform().TransInt16(result.Content, 2) == 2); |
| | | // staProtocol2.setAutoing(siemensS7Net.getByteTransform().TransInt16(result.Content, 2) == 2); |
| | | // staProtocol1.setNearbySta(pos); |
| | | // staProtocol1.setStaNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, 8)); |
| | | // staProtocol2.setStaNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, 8)); |
| | | // staProtocol1.setWorkNo(siemensS7Net.getByteTransform().TransInt32(result.Content, 16)); |
| | | // staProtocol2.setWorkNo(siemensS7Net.getByteTransform().TransInt32(result.Content, 20)); |
| | | // boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result.Content, 24, 2); |
| | | // staProtocol1.setLoading(status1[0]); |
| | | // staProtocol2.setLoading(status1[1]); |
| | | // // staProtocol.setNearbySta(String.valueOf(siemensS7Net.getByteTransform().TransInt16(result3.Content, 8))); |
| | | // } |
| | | // } |
| | | //RGV小车2 |
| | |
| | | //任务下发次数 |
| | | 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()); // 目标站 |
| | | }else{ |
| | | |
| | | if(siteId < 1029){ |
| | | write = siemensS7Net.Write("DB100." + (offset + offset2), staProtocol.getWorkNo()); // 工作号 |
| | | Thread.sleep(200); |
| | | write1 = siemensS7Net.Write("DB100." + (offset + offset2 + 12), staProtocol.getStaNo()); // 目标站 |
| | | } |
| | | 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; |
| | |
| | | } |
| | | } |
| | | } |
| | | public Integer getRgvPosI(Integer pos) { |
| | | if (pos == null) return 0; |
| | | |
| | | // key: 站点号 value: 基准物理位置 |
| | | Map<Integer, Integer> posMap = new HashMap<>(); |
| | | posMap.put(1004, 6534); |
| | | posMap.put(1007, 33634); |
| | | posMap.put(1010, 75174); |
| | | posMap.put(1014, 102124); |
| | | posMap.put(1018, 138224); |
| | | posMap.put(1021, 178034); |
| | | posMap.put(1024, 219684); |
| | | posMap.put(1028, 246724); |
| | | posMap.put(1031, 288194); |
| | | posMap.put(1035, 315204); |
| | | int tolerance = 50; // 允许误差范围 |
| | | |
| | | for (Map.Entry<Integer, Integer> entry : posMap.entrySet()) { |
| | | int site = entry.getKey(); |
| | | int basePos = entry.getValue(); |
| | | if (Math.abs(pos - basePos) <= tolerance) { |
| | | return site; |
| | | } |
| | | } |
| | | |
| | | return 0; // 没匹配到站点 |
| | | } |
| | | |
| | | /** |
| | | * 心跳 |