From 2cebd39fd1514c991da647f08124e18a0b02abe9 Mon Sep 17 00:00:00 2001 From: lsh <lsh123456> Date: 星期三, 26 六月 2024 15:19:44 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/thread/SiemensDevpThread.java | 159 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 156 insertions(+), 3 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..3850d4e 100644 --- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java +++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java @@ -313,8 +313,8 @@ staProtocol.setRGV1(status[0]); // 鑷姩 staProtocol.setRGV2(status[1]); // 鏈夌墿 staProtocol.setRGV3(status[2]); // 鍙叆 - staProtocol.setRGV4(status[3]);// 鍙嚭 - staProtocol.setRGV5(status[4]); // 绌烘澘淇″彿 + staProtocol.setRGV4(status[3]);// + staProtocol.setRGV5(status[4]); // staProtocol.setRGV6(status[5]); // 婊℃墭鐩� } } @@ -541,30 +541,148 @@ /** * 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏� */ + 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 = ""; + String resultV2 = ""; + switch (staProtocol.getSiteId()){ + case 623: + resultV1 = "1804"; + resultV2 = "1804"; + break; + case 624: + resultV1 = "1810"; + resultV2 = "1810"; + break; + case 625: + resultV1 = "1816"; + resultV2 = "1816"; + break; + case 626: + resultV1 = "1822"; + resultV2 = "1822"; + break; + default: + return; + } + result1 = siemensS7Net.Write(rgv4?resultV1+".4":resultV1+".3", rgv4?rgv5:rgv4); + //纭寲缃愪换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔� + 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(rgv4?resultV1+".4":resultV1+".3", rgv4?rgv5:rgv4); + 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); + boolean status1 = status[rgv4? 4:3]; + if (status1 == rgv4?rgv5:rgv4){ + break; + } else { + log.error("鍐欏叆RGV鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount); + result1 = siemensS7Net.Write(rgv4?resultV1+".4":resultV1+".3", rgv4?rgv5:rgv4); + Thread.sleep(100); + writeCount++; + continue; + } + } else { + log.error("鍐欏叆RGV鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount); + result1 = siemensS7Net.Write(rgv4?resultV1+".4":resultV1+".3", rgv4?rgv5:rgv4); + Thread.sleep(100); + writeCount++; + continue; + } + }catch (Exception e){ + log.error("鍐欏叆RGV鏁版嵁鍚庡洖璇诲嚭閿�,寮傚父锛�"+e); + } + writeCount++; + } while (writeCount<6); + + result2 = siemensS7Net.Write(rgv4?resultV2+".3":resultV2+".4", rgv4?rgv4:rgv5); + writeCount = 1; + do { + try{ + if(!result2.IsSuccess){ + log.error("鍐欏叆RGV鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount); + result2 = siemensS7Net.Write(rgv4?resultV2+".3":resultV2+".4", rgv4?rgv4:rgv5); + Thread.sleep(100); + writeCount++; + continue; + } + OperateResultExOne<byte[]> resultRead2 = siemensS7Net.Read(resultV2, (short) 1); + if (resultRead2.IsSuccess) { + boolean[] status = siemensS7Net.getByteTransform().TransBool(resultRead2.Content, 0, 1); + boolean status1 = status[rgv4? 3:4]; + if (status1 == rgv4?rgv4:rgv5){ + break; + } else { + log.error("鍐欏叆RGV鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount); + result2 = siemensS7Net.Write(rgv4?resultV2+".3":resultV2+".4", rgv4?rgv4:rgv5); + Thread.sleep(100); + writeCount++; + continue; + } + } else { + log.error("鍐欏叆RGV鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount); + result2 = siemensS7Net.Write(rgv4?resultV2+".3":resultV2+".4", rgv4?rgv4:rgv5); + 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"; + resultV2 = "1812"; break; case 624: resultV1 = "1806"; + resultV2 = "1818"; break; case 625: resultV1 = "1812"; + resultV2 = "1800"; break; case 626: resultV1 = "1818"; + resultV2 = "1806"; break; default: return; } result1 = siemensS7Net.Write(resultV1, resultS1); + result2 = siemensS7Net.Write(resultV2, resultS1); //纭寲缃愪换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔� try { Thread.sleep(200); @@ -585,7 +703,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 +725,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