From add29c9dfe37a3147ee1a426e1dba2f42ad741e6 Mon Sep 17 00:00:00 2001 From: zhang <zc857179121@qq.com> Date: 星期四, 05 六月 2025 18:11:46 +0800 Subject: [PATCH] 1 --- src/main/java/com/zy/core/thread/SiemensDevpThread.java | 169 +++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 125 insertions(+), 44 deletions(-) diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java index 70471e5..bfd8aa9 100644 --- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java +++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java @@ -25,11 +25,9 @@ import lombok.extern.slf4j.Slf4j; import java.text.MessageFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; /** * 杈撻�佺嚎绾跨▼ @@ -40,18 +38,61 @@ public class SiemensDevpThread implements Runnable, DevpThread { public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{ - add(101);add(102);add(103);add(104);add(105);add(106);add(107);add(108);add(109);add(110); - add(111);add(112);add(113);add(114);add(115);add(116); // 渚ч潰浠� index 16寮�濮� 闀垮害12 - add(201);add(202);add(203);add(204);add(205);add(206);add(207);add(208);add(209);add(210);add(211);add(212); + add(101); + add(102); + add(103); + add(104); + add(105); + add(106); + add(107); + add(108); + add(109); + add(110); + add(111); + add(112); + add(113); + add(114); + add(115); + add(116); // 渚ч潰浠� index 16寮�濮� 闀垮害12 + add(201); + add(202); + add(203); + add(204); + add(205); + add(206); + add(207); + add(208); + add(209); + add(210); + add(211); + add(212); }}; public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{ - add(301);add(302);add(303);add(304);add(305);add(306);add(307);add(308); + add(301); + add(302); + add(303); + add(304); + add(305); + add(306); + add(307); + add(308); + }}; + + // 姝i潰5涓潯鐮佹壂鎻忕珯 + public static final ArrayList<Integer> barcodeSite2 = new ArrayList<Integer>() {{ + add(102); + add(105); + add(108); + add(111); + add(114); }}; // 渚ч潰涓変釜鏉$爜鎵弿绔� public static final ArrayList<Integer> barcodeSite = new ArrayList<Integer>() {{ - add(202);add(206);add(211); + add(202); + add(206); + add(211); }}; /** @@ -249,37 +290,67 @@ } // 璇诲彇姝i潰鏉$爜 - OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.1404", (short) (16 * 8)); + OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB103.0", (short) (5 * 40)); if (result2.IsSuccess) { - for (int i = 0; i < 16; i++) { - int barcodeId = 0; - switch (i) { - case 1: - barcodeId = 1; - break; - case 4: - barcodeId = 2; - break; - case 7: - barcodeId = 3; - break; - case 10: - barcodeId = 4; - break; - case 13: - barcodeId = 5; - break; - default: + for (int i = 0; i < 5; i++) { + String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 40, 40, "UTF-8"); + if (!Cools.isEmpty()) { + barcode = barcode.trim(); } - if (barcodeId != 0) { - String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 6, "UTF-8"); - BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId); - if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) { - barcodeThread.setBarcode(barcode); + List<String> barcodeList = Arrays.stream(barcode.split(",")).collect(Collectors.toList()); + Iterator<String> iterator = barcodeList.iterator(); + while (iterator.hasNext()) { + String next = iterator.next(); + if (next.length() == 6) { + barcode = next; + iterator.remove(); + break; } + } + + BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i); + if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) { + barcodeThread.setBarcode(barcode); + } + StaProtocol staProtocol = station.get(barcodeSite2.get(i)); + if (staProtocol != null) { + staProtocol.setMatIdList(barcodeList); } } } + + // 璇诲彇姝i潰鏉$爜 +// OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.1404", (short) (16 * 8)); +// if (result2.IsSuccess) { +// for (int i = 0; i < 16; i++) { +// int barcodeId = 0; +// switch (i) { +// case 1: +// barcodeId = 1; +// break; +// case 4: +// barcodeId = 2; +// break; +// case 7: +// barcodeId = 3; +// break; +// case 10: +// barcodeId = 4; +// break; +// case 13: +// barcodeId = 5; +// break; +// default: +// } +// if (barcodeId != 0) { +// String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 6, "UTF-8"); +// BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId); +// if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) { +// barcodeThread.setBarcode(barcode); +// } +// } +// } +// } // 璇诲彇渚ч潰鏉$爜 OperateResultExOne<byte[]> resultCM2 = siemensS7Net.Read("DB101.2574", (short) (3 * 4 * 6)); @@ -448,12 +519,15 @@ String workNoAddress; // 鐩爣绔欏湴鍧� String staNoAddress; + // 楂樺害绫诲瀷鍦板潃 + String heightAddress = null; if (index < 16) { workNoAddress = "DB100." + index * 4; staNoAddress = "DB100." + (index * 4 + 2); + heightAddress = "DB104." + (index * 4); } else { - workNoAddress = "DB100." + (400 + (index-16) * 4); - staNoAddress = "DB100." + (400 + (index-16) * 4 + 2); + workNoAddress = "DB100." + (400 + (index - 16) * 4); + staNoAddress = "DB100." + (400 + (index - 16) * 4 + 2); } OperateResult writeResult; @@ -463,7 +537,14 @@ boolean writeFlag = false; while (writeCount < 5) { OperateResult writeResult1 = siemensS7Net.Write(workNoAddress, staProtocol.getWorkNo()); // 宸ヤ綔鍙� - OperateResult writeResult2 = siemensS7Net.Write(staNoAddress, staProtocol.getStaNo()); // 鐩爣绔� + OperateResult writeResult2 = siemensS7Net.Write(staNoAddress, staProtocol.getStaNo());// 鐩爣绔� + if (!Cools.isEmpty(staProtocol.getHeight()) && heightAddress != null) { + OperateResult writeResult3 = siemensS7Net.Write(heightAddress, Short.valueOf(staProtocol.getHeight())); // 楂樺害绫诲瀷 + if (!writeResult3.IsSuccess) { + log.error("鍐欏叆杈撻�佺嚎鍛戒护澶辫触锛屽皾璇曢噸鏂板啓鍏ワ紝杈撳叆鍙傛暟={}锛岃緭鍑哄弬鏁�={}", JSON.toJSON(staProtocol), writeResult3);// 鍐欏叆杈撻�佺嚎鍛戒护澶辫触锛屽皾璇曢噸鏂板啓鍏ワ紝杈撳叆鍙傛暟={}锛岃緭鍑哄弬鏁�={}", JSON.toJSON(staProtocol), writeResult3); + writeResult3 = siemensS7Net.Write(heightAddress, staProtocol.getHeight()); // 楂樺害绫诲瀷 + } + } if (writeResult1.IsSuccess && writeResult2.IsSuccess) { Thread.sleep(200); OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index * 4, (short) 2); @@ -472,9 +553,9 @@ // short staNo = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 2); // if (staProtocol.getWorkNo().equals(workNo) && staProtocol.getStaNo().equals(staNo)) { // //浠诲姟鍛戒护鍐欏叆鎴愬姛 - writeFlag = true; - log.info("鍐欏叆杈撻�佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝骞朵笖鍥炶鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); - break; + writeFlag = true; + log.info("鍐欏叆杈撻�佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝骞朵笖鍥炶鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(staProtocol), writeCount); + break; // } else {//杩斿洖缁撴灉鏄垚鍔熶簡锛屼絾鏄湡瀹炲�间笉鐩稿悓 // writeCount++; // OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝浣嗘槸璇诲彇浠诲姟鍊间笉涓�鑷淬�傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2},鍐欏叆娆℃暟={3}", @@ -535,9 +616,10 @@ // array[1] = staProtocol.getStaNo(); // OperateResult write = siemensS7Net.Write("DB100." + index*4, array); // -//// OperateResult write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo()); // 宸ヤ綔鍙� -//// Thread.sleep(500); -//// OperateResult write1 = siemensS7Net.Write("DB101." + index*2, staProtocol.getStaNo()); // 鐩爣绔� + + /// / OperateResult write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo()); // 宸ヤ綔鍙� + /// / Thread.sleep(500); + /// / OperateResult write1 = siemensS7Net.Write("DB101." + index*2, staProtocol.getStaNo()); // 鐩爣绔� // // if (!write.IsSuccess) { // staProtocol = station.get(staProtocol.getSiteId()); @@ -557,7 +639,6 @@ // } // } // } - private void write2(StaProtocol staProtocol) throws InterruptedException { if (null == staProtocol) { return; -- Gitblit v1.9.1