From 35fb6b68419f266d0c73639aff8deac25ce0d31e Mon Sep 17 00:00:00 2001 From: lsh <lsh123456> Date: 星期四, 27 六月 2024 14:22:28 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/thread/SiemensDevpThread.java | 337 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 323 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java index cd891bc..0980805 100644 --- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java +++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java @@ -200,6 +200,12 @@ case 9: write9((StaProtocol)task.getData()); break; + case 10: + write10((StaProtocol)task.getData()); + break; + case 11: + write11((StaProtocol)task.getData()); + break; default: break; } @@ -292,11 +298,13 @@ staProtocol.setBarcodeErr(status[6]);// 鎵爜澶辫触 } } + if (slave.getId()==2){ Thread.sleep(200); int[] staNosRgv = {623,624,625,626}; for (int i = 0; i < staNosRgv.length; i++) { OperateResultExOne<byte[]> resultRgv = siemensS7Net.Read("DB100."+(1800+i*6), (short) 5); + OperateResultExOne<byte[]> resultRgv2 = siemensS7Net.Read("DB100."+(1824+i*10), (short) 8); if (resultRgv.IsSuccess) { Integer siteId = staNosRgv[i]; // 绔欑偣缂栧彿 StaProtocol staProtocol = station.get(siteId); @@ -305,20 +313,33 @@ staProtocol.setSiteId(siteId); station.put(siteId, staProtocol); } - staProtocol.setEndRow(siemensS7Net.getByteTransform().TransInt16(result.Content, 0)); // 灏忚溅鐩爣浣� + try{ + staProtocol.setEndRow(siemensS7Net.getByteTransform().TransInt16(resultRgv2.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.setRGV11(siemensS7Net.getByteTransform().TransInt16(resultRgv.Content, 2)); // 灏忚溅鏃犺揣绌洪棽 +// staProtocol.setRGV22(siemensS7Net.getByteTransform().TransInt16(resultRgv.Content, 2)); // 灏忚溅杈撻�佺嚎鍙栬揣鍒颁綅 +// staProtocol.setRGV33(siemensS7Net.getByteTransform().TransInt16(resultRgv.Content, 2)); //灏忚溅杩愯涓� + staProtocol.setRGV44(siemensS7Net.getByteTransform().TransInt16(resultRgv2.Content, 4));//灏忚溅鏀瑰乏渚ц揣鐗╃洰鏍囩珯 + staProtocol.setRGV55(siemensS7Net.getByteTransform().TransInt16(resultRgv2.Content, 6)); //灏忚溅鏀瑰彸渚ц揣鐗╃洰鏍囩珯 + staProtocol.setRGV66(siemensS7Net.getByteTransform().TransInt16(resultRgv2.Content, 8)); // 涓婁綅鏈烘竻闄ゅ钩绉昏溅璧勬枡 + + staProtocol.setRGV4(staProtocol.getRGV44() != 0 && staProtocol.getRGV44() != 2);//灏忚溅鏀瑰乏渚ц揣鐗╃洰鏍囩珯 + staProtocol.setRGV5(staProtocol.getRGV55() != 0 && staProtocol.getRGV55() != 2); //灏忚溅鏀瑰彸渚ц揣鐗╃洰鏍囩珯 + staProtocol.setRGV6(staProtocol.getRGV66() != 0 && staProtocol.getRGV66() != 2); // 涓婁綅鏈烘竻闄ゅ钩绉昏溅璧勬枡 + }catch (Exception e){ + System.out.println(e.getMessage()); + } } } } + //鏉$爜鎵弿鍣� Thread.sleep(200); @@ -541,30 +562,283 @@ /** * 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏� */ + private void write11(StaProtocol staProtocol) throws InterruptedException { + if (null == staProtocol) { + return; + } + boolean rgv6 = staProtocol.isRGV6(); + OperateResult result1 = null; + OperateResult result2 = null; + String resultV1 = ""; + short resultS1 = 1; + short resultS2 = 2; + switch (staProtocol.getSiteId()){ + case 623: + resultV1 = "DB100.1830"; + break; + case 624: + resultV1 = "DB100.1840"; + break; + case 625: + resultV1 = "DB100.1850"; + break; + case 626: + resultV1 = "DB100.1860"; + break; + default: + return; + } + result1 = siemensS7Net.Write(resultV1, resultS1); + + //纭寲缃愪换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔� + try { + Thread.sleep(200); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + int writeCount = 1; + do { + try{ + if(!result1.IsSuccess){ + log.error("鍐欏叆RGV鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount); + result1 = siemensS7Net.Write(resultV1, resultS1); + Thread.sleep(100); + writeCount++; + continue; + } + OperateResultExOne<byte[]> resultRead1 = siemensS7Net.Read(resultV1, (short) 2); + if (resultRead1.IsSuccess) { + short status = siemensS7Net.getByteTransform().TransInt16(resultRead1.Content, 0); + if (status == 1){ + break; + } else { + log.error("鍐欏叆RGV鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount); + result1 = siemensS7Net.Write(resultV1, resultS1); + Thread.sleep(100); + writeCount++; + continue; + } + } else { + log.error("鍐欏叆RGV鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount); + result1 = siemensS7Net.Write(resultV1, resultS1); + Thread.sleep(100); + writeCount++; + continue; + } + }catch (Exception e){ + log.error("鍐欏叆RGV鏁版嵁鍚庡洖璇诲嚭閿�,寮傚父锛�"+e); + } + writeCount++; + } while (writeCount<6); + + result2 = siemensS7Net.Write(resultV1, resultS2); + + //纭寲缃愪换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔� + try { + Thread.sleep(200); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + writeCount = 1; + do { + try{ + if(!result1.IsSuccess){ + log.error("鍐欏叆RGV鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount); + result2 = siemensS7Net.Write(resultV1, resultS2); + + Thread.sleep(100); + writeCount++; + continue; + } + OperateResultExOne<byte[]> resultRead1 = siemensS7Net.Read(resultV1, (short) 2); + if (resultRead1.IsSuccess) { + short status = siemensS7Net.getByteTransform().TransInt16(resultRead1.Content, 0); + if (status == resultS2){ + break; + } else { + log.error("鍐欏叆RGV鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount); + result2 = siemensS7Net.Write(resultV1, resultS2); + Thread.sleep(100); + writeCount++; + continue; + } + } else { + log.error("鍐欏叆RGV鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount); + result2 = siemensS7Net.Write(resultV1, resultS2); + Thread.sleep(100); + writeCount++; + continue; + } + }catch (Exception e){ + log.error("鍐欏叆RGV鏁版嵁鍚庡洖璇诲嚭閿�,寮傚父锛�"+e); + } + writeCount++; + } while (writeCount<6); + } + + private void write10(StaProtocol staProtocol) throws InterruptedException { + if (null == staProtocol) { + return; + } + boolean rgv4 = staProtocol.isRGV4(); + boolean rgv5 = staProtocol.isRGV5(); + OperateResult result1 = null; + OperateResult result2 = null; + String resultV1 = ""; + short resultS1 = 1; + short resultS2 = 2; + if (rgv4){ + switch (staProtocol.getSiteId()){ + case 623: + resultV1 = "DB100.1826"; + break; + case 624: + resultV1 = "DB100.1836"; + break; + case 625: + resultV1 = "DB100.1846"; + break; + case 626: + resultV1 = "DB100.1856"; + break; + default: + return; + } + } else if (rgv5){ + switch (staProtocol.getSiteId()){ + case 623: + resultV1 = "DB100.1828"; + break; + case 624: + resultV1 = "DB100.1838"; + break; + case 625: + resultV1 = "DB100.1848"; + break; + case 626: + resultV1 = "DB100.1858"; + break; + default: + return; + } + } + result1 = siemensS7Net.Write(resultV1, resultS1); + //纭寲缃愪换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔� + try { + Thread.sleep(200); + } catch (InterruptedException e) { + e.printStackTrace(); + } + int writeCount = 1; + do { + try{ + if(!result1.IsSuccess){ + log.error("鍐欏叆RGV鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount); + result1 = siemensS7Net.Write(resultV1, resultS1); + Thread.sleep(100); + writeCount++; + continue; + } + OperateResultExOne<byte[]> resultRead1 = siemensS7Net.Read(resultV1, (short) 2); + if (resultRead1.IsSuccess) { +// boolean[] status = siemensS7Net.getByteTransform().TransBool(resultRead1.Content, 0, 1); + short statusR1 = siemensS7Net.getByteTransform().TransInt16(resultRead1.Content, 0); + if (statusR1 == resultS1){ + break; + } else { + log.error("鍐欏叆RGV鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount); + result1 = siemensS7Net.Write(resultV1, resultS1); + Thread.sleep(100); + writeCount++; + continue; + } + } else { + log.error("鍐欏叆RGV鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount); + result1 = siemensS7Net.Write(resultV1, resultS1); + Thread.sleep(100); + writeCount++; + continue; + } + }catch (Exception e){ + log.error("鍐欏叆RGV鏁版嵁鍚庡洖璇诲嚭閿�,寮傚父锛�"+e); + } + writeCount++; + } while (writeCount<6); + + + result2 = siemensS7Net.Write(resultV1, resultS2); + + writeCount = 1; + do { + try{ + if(!result2.IsSuccess){ + log.error("鍐欏叆RGV鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount); + result2 = siemensS7Net.Write(resultV1, resultS2); + Thread.sleep(100); + writeCount++; + continue; + } + OperateResultExOne<byte[]> resultRead1 = siemensS7Net.Read(resultV1, (short) 2); + if (resultRead1.IsSuccess) { +// boolean[] status = siemensS7Net.getByteTransform().TransBool(resultRead1.Content, 0, 1); + short statusR1 = siemensS7Net.getByteTransform().TransInt16(resultRead1.Content, 0); + if (statusR1 == resultS2){ + break; + } else { + log.error("鍐欏叆RGV鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount); + result2 = siemensS7Net.Write(resultV1, resultS2); + + Thread.sleep(100); + writeCount++; + continue; + } + } else { + log.error("鍐欏叆RGV鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount); + result2 = siemensS7Net.Write(resultV1, resultS2); + Thread.sleep(100); + writeCount++; + continue; + } + }catch (Exception e){ + log.error("鍐欏叆RGV鏁版嵁鍚庡洖璇诲嚭閿�,寮傚父锛�"+e); + } + writeCount++; + } while (writeCount<6); + } + private void write9(StaProtocol staProtocol) throws InterruptedException { if (null == staProtocol) { return; } short resultS1 = staProtocol.getEndRow(); OperateResult result1 = null; + OperateResult result2 = null; String resultV1 = ""; + String resultV2 = ""; switch (staProtocol.getSiteId()){ case 623: - resultV1 = "1800"; + resultV1 = "DB100.1824"; + resultV2 = "DB100.1828"; break; case 624: - resultV1 = "1806"; + resultV1 = "DB100.1828"; + resultV2 = "DB100.1824"; break; case 625: - resultV1 = "1812"; + resultV1 = "DB100.1832"; + resultV2 = "DB100.1836"; break; case 626: - resultV1 = "1818"; + resultV1 = "DB100.1836"; + resultV2 = "DB100.1832"; break; default: return; } result1 = siemensS7Net.Write(resultV1, resultS1); + result2 = siemensS7Net.Write(resultV2, resultS1); //纭寲缃愪换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔� try { Thread.sleep(200); @@ -585,7 +859,7 @@ OperateResultExOne<byte[]> resultRead1 = siemensS7Net.Read(resultV1, (short) 2); if (resultRead1.IsSuccess) { short transInt16 = siemensS7Net.getByteTransform().TransInt16(resultRead1.Content, 0); - if (transInt16 == resultS1 || transInt16 == (short) 2 || transInt16 == (short) 3){ + if (transInt16 == resultS1){ break; } else { log.error("鍐欏叆RGV鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount); @@ -607,6 +881,41 @@ writeCount++; } while (writeCount<6); + writeCount = 1; + do { + try{ + if(!result2.IsSuccess){ + log.error("鍐欏叆RGV鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount); + result2 = siemensS7Net.Write(resultV2, resultS1); + Thread.sleep(100); + writeCount++; + continue; + } + OperateResultExOne<byte[]> resultRead2 = siemensS7Net.Read(resultV2, (short) 2); + if (resultRead2.IsSuccess) { + short transInt16 = siemensS7Net.getByteTransform().TransInt16(resultRead2.Content, 0); + if (transInt16 == resultS1){ + break; + } else { + log.error("鍐欏叆RGV鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount); + result2 = siemensS7Net.Write(resultV2, resultS1); + Thread.sleep(100); + writeCount++; + continue; + } + } else { + log.error("鍐欏叆RGV鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount); + result2 = siemensS7Net.Write(resultV2, resultS1); + Thread.sleep(100); + writeCount++; + continue; + } + }catch (Exception e){ + log.error("鍐欏叆RGV鏁版嵁鍚庡洖璇诲嚭閿�,寮傚父锛�"+e); + } + writeCount++; + } while (writeCount<6); + if (!result1.IsSuccess) { staProtocol = station.get(staProtocol.getSiteId()); OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol))); -- Gitblit v1.9.1