From a16e95529f1d06f037407e78f2427c3160185838 Mon Sep 17 00:00:00 2001 From: pang.jiabao <pang_jiabao@163.com> Date: 星期四, 15 五月 2025 13:54:44 +0800 Subject: [PATCH] 输送线侧面plc读取,写入 --- src/main/java/com/zy/core/thread/SiemensDevpThread.java | 239 +++++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 174 insertions(+), 65 deletions(-) diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java index 25b99fe..fe5dffa 100644 --- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java +++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java @@ -41,13 +41,19 @@ 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); - add(201);add(202);add(203);add(205);add(206);add(207);add(210);add(211);add(212); + 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); }}; + + // 渚ч潰涓変釜鏉$爜鎵弿绔� + public static final ArrayList<Integer> barcodeSite = new ArrayList<Integer>() {{ + add(202);add(206);add(211); + }}; + /** * 鍏ュ嚭搴撴ā寮� * 0锛氭湭鐭� @@ -180,10 +186,10 @@ ArrayList<Integer> staNos = getStaNo(); int staNoSize = staNos.size(); - // 璇昏揣浣嶄俊鎭弽棣� - OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize * 8)); + // 璇绘闈㈣揣浣嶄俊鎭弽棣� + OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (16 * 8)); if (result.IsSuccess) { - for (int i = 0; i < staNoSize; i++) { + for (int i = 0; i < 16; i++) { Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 StaProtocol staProtocol = station.get(siteId); if (null == staProtocol) { @@ -211,68 +217,160 @@ } } - if (slave.getId() == 1) { - //Thread.sleep(200); - // 璇诲彇鏉$爜 - OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.1404", (short) (staNoSize*8)); - if (result2.IsSuccess) { - for (int i =0; i <staNoSize; 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[]> resultCm = siemensS7Net.Read("DB101.800", (short) (12 * 8)); + if (resultCm.IsSuccess) { + for (int i = 16; i < staNoSize; i++) { + Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 + StaProtocol staProtocol = station.get(siteId); + if (null == staProtocol) { + staProtocol = new StaProtocol(); + staProtocol.setSiteId(siteId); + station.put(siteId, staProtocol); + } + staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(resultCm.Content, (i-16) * 8)); // 宸ヤ綔鍙� + + staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(resultCm.Content, (i-16) * 8 + 4)); // 鐩爣绔� + + boolean[] status = siemensS7Net.getByteTransform().TransBool(resultCm.Content, (i-16) * 8 + 6, 2); + staProtocol.setAutoing(status[0]); // 鑷姩 + staProtocol.setLoading(status[1]); // 鏈夌墿 + staProtocol.setInEnable(status[2]); // 鍙叆 + staProtocol.setOutEnable(status[3]);// 鍙嚭 + staProtocol.setEmptyMk(status[4]); // 绌烘澘淇″彿 + staProtocol.setFullPlt(status[5]); // 婊℃墭鐩� + staProtocol.setHigh(status[6]); // 楂樺簱浣� + staProtocol.setLow(status[7]); // 浣庡簱浣� + + if (!staProtocol.isPakMk() && !staProtocol.isLoading()) { + staProtocol.setPakMk(true); } } - - // 璇诲彇澶栧舰妫�娴� - OperateResultExOne<byte[]> resultErr1 = siemensS7Net.Read("DB101.936", (short) (staNoSize * 8)); - if (resultErr1.IsSuccess) { - for (int i = 0; i < staNoSize; i++) { - Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 - StaProtocol staProtocol = station.get(siteId); - boolean[] status1 = siemensS7Net.getByteTransform().TransBool(resultErr1.Content, i * 2, 1); - staProtocol.setFrontErr(status1[0]); - staProtocol.setBackErr(status1[1]); - staProtocol.setHighErr(status1[2]); - staProtocol.setLeftErr(status1[3]); - staProtocol.setRightErr(status1[4]); - staProtocol.setWeightErr(status1[5]); - staProtocol.setBarcodeErr(status1[6]); - } - } - - OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.922.0", (short) (staNoSize * 4)); - if (resultErr.IsSuccess) { - for (int i = 0; i < staNoSize; i++) { - Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 - boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i * 4, 1); - StaProtocol staProtocol = station.get(siteId); - staProtocol.setBreakerErr(status[0]); - staProtocol.setInfraredErr(status[1]); - staProtocol.setOutTimeErr(status[2]); - staProtocol.setSeizeSeatErr(status[3]); - staProtocol.setWrkYgoodsN(status[4]); - staProtocol.setInverterErr(status[5]); - staProtocol.setContactErr(status[6]); - staProtocol.setUpcontactErr(status[7]); - - } - } - } + // 璇诲彇姝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)); + if (resultCM2.IsSuccess) { + for (int i= 8; i >= 6; i --) { + BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i); + List<String> barcodes = new ArrayList<>(); + for(int j = 0; j < 4; j ++) { + String barcode1 = siemensS7Net.getByteTransform().TransString(resultCM2.Content, (8-i) * 24 + j *6, 6, "UTF-8"); + if (!Cools.isEmpty(barcode1)&&!barcode1.equals("000000")&& !barcode1.equals("NoRead")) { + barcodes.add(barcode1); + } + } + String barcode = String.join("#",barcodes); + if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) { + barcodeThread.setBarcode(barcode); + } + } + } + + // 璇诲彇姝i潰澶栧舰妫�娴� + OperateResultExOne<byte[]> resultErr1 = siemensS7Net.Read("DB101.936", (short) (16 * 8)); + if (resultErr1.IsSuccess) { + for (int i = 0; i < 16; i++) { + Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 + StaProtocol staProtocol = station.get(siteId); + boolean[] status1 = siemensS7Net.getByteTransform().TransBool(resultErr1.Content, i * 2, 1); + staProtocol.setFrontErr(status1[0]); + staProtocol.setBackErr(status1[1]); + staProtocol.setHighErr(status1[2]); + staProtocol.setLeftErr(status1[3]); + staProtocol.setRightErr(status1[4]); + staProtocol.setWeightErr(status1[5]); + staProtocol.setBarcodeErr(status1[6]); + } + } + + // 璇诲彇渚ч潰澶栧舰妫�娴� + OperateResultExOne<byte[]> resultErrCM1 = siemensS7Net.Read("DB101.1336", (short) (12 * 8)); + if (resultErrCM1.IsSuccess) { + for (int i = 16; i < staNoSize; i++) { + Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 + StaProtocol staProtocol = station.get(siteId); + boolean[] status1 = siemensS7Net.getByteTransform().TransBool(resultErrCM1.Content, (i-16) * 2, 1); + staProtocol.setFrontErr(status1[0]); + staProtocol.setBackErr(status1[1]); + staProtocol.setHighErr(status1[2]); + staProtocol.setLeftErr(status1[3]); + staProtocol.setRightErr(status1[4]); + staProtocol.setWeightErr(status1[5]); + staProtocol.setBarcodeErr(status1[6]); + } + } + + // 璇绘闈㈡晠闅滃弽棣� + OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.922.0", (short) (16 * 4)); + if (resultErr.IsSuccess) { + for (int i = 0; i < 16; i++) { + Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 + boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i * 4, 1); + StaProtocol staProtocol = station.get(siteId); + staProtocol.setBreakerErr(status[0]); + staProtocol.setInfraredErr(status[1]); + staProtocol.setOutTimeErr(status[2]); + staProtocol.setSeizeSeatErr(status[3]); + staProtocol.setWrkYgoodsN(status[4]); + staProtocol.setInverterErr(status[5]); + staProtocol.setContactErr(status[6]); + staProtocol.setUpcontactErr(status[7]); + + } + } + + // 璇讳晶闈㈡晠闅滃弽棣� + OperateResultExOne<byte[]> resultErrCM = siemensS7Net.Read("DB101.2540.0", (short) (12 * 4)); + if (resultErrCM.IsSuccess) { + for (int i = 16; i < staNoSize; i++) { + Integer siteId = staNos.get(i); // 绔欑偣缂栧彿 + boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErrCM.Content, (i-16) * 4, 1); + StaProtocol staProtocol = station.get(siteId); + staProtocol.setBreakerErr(status[0]); + staProtocol.setInfraredErr(status[1]); + staProtocol.setOutTimeErr(status[2]); + staProtocol.setSeizeSeatErr(status[3]); + staProtocol.setWrkYgoodsN(status[4]); + staProtocol.setInverterErr(status[5]); + staProtocol.setContactErr(status[6]); + staProtocol.setUpcontactErr(status[7]); + + } + } if (result.IsSuccess) { @@ -314,6 +412,17 @@ ArrayList<Integer> staNos = getStaNo(); int index = staNos.indexOf(staProtocol.getSiteId()); + // 浠诲姟鍙峰湴鍧� + String workNoAddress; + // 鐩爣绔欏湴鍧� + String staNoAddress; + if (index < 16) { + workNoAddress = "DB100." + index * 4; + staNoAddress = "DB100." + (index * 4 + 2); + } else { + workNoAddress = "DB100." + (400 + (index-16) * 4); + staNoAddress = "DB100." + (400 + (index-16) * 4 + 2); + } OperateResult writeResult; //浠诲姟涓嬪彂娆℃暟 @@ -321,8 +430,8 @@ //浠诲姟涓嬪彂鎴愬姛鏍囪瘑 boolean writeFlag = false; while (writeCount < 5) { - OperateResult writeResult1 = siemensS7Net.Write("DB100." + index * 4, staProtocol.getWorkNo()); // 宸ヤ綔鍙� - OperateResult writeResult2 = siemensS7Net.Write("DB100." + (index * 4 + 2), staProtocol.getStaNo()); // 鐩爣绔� + OperateResult writeResult1 = siemensS7Net.Write(workNoAddress, staProtocol.getWorkNo()); // 宸ヤ綔鍙� + OperateResult writeResult2 = siemensS7Net.Write(staNoAddress, staProtocol.getStaNo()); // 鐩爣绔� if (writeResult1.IsSuccess && writeResult2.IsSuccess) { Thread.sleep(200); OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index * 4, (short) 2); -- Gitblit v1.9.1