From 904c3bf52d9861330c0ca47748c8202db6ad7e98 Mon Sep 17 00:00:00 2001 From: yxFwq <1> Date: 星期日, 21 七月 2024 10:18:20 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/thread/SiemensCrnThread.java | 105 +++++++++++++++++++++++++++++++++------------------- 1 files changed, 67 insertions(+), 38 deletions(-) diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java index 12cc3ad..699d8dc 100644 --- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java +++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java @@ -59,6 +59,7 @@ @SuppressWarnings("InfiniteLoopStatement") public void run() { this.connect(); + sign = System.currentTimeMillis(); while (isRunning) { try { int step = 1; @@ -115,8 +116,8 @@ command2.setDestinationPosZ((short)0); // 鐩爣搴撲綅灞� write5(command2); break; - // 澶嶄綅 - case 7: + // 鍙屽伐浣嶅悓鏃朵綔涓� + case 9: write9((CrnCommandParam) task.getData()); break; default: @@ -356,7 +357,7 @@ do { try{ if(!result.IsSuccess){ - log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(command),writeCount); + log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSONString(command),writeCount); result = siemensNet.Write("DB100.0", array); Thread.sleep(100); writeCount++; @@ -379,12 +380,12 @@ || !command.getDestinationPosY().equals(one.getDestinationPosY()) || !command.getDestinationPosZ().equals(one.getDestinationPosZ()) ){ try{ - log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐�==>涓嶄竴鑷碵id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); + log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐�==>涓嶄竴鑷碵id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSONString(command),JSON.toJSONString(one)); }catch (Exception e){ try{ - log.error("鏃ュ織鎵撳嵃澶辫触锛�===>>鍙傛暟one鎶ラ敊 [id:{}],{}", slave.getId(), JSON.toJSON(command),JSON.toJSON(resultRead)); + log.error("鏃ュ織鎵撳嵃澶辫触锛�===>>鍙傛暟one鎶ラ敊 [id:{}],{}", slave.getId(), JSON.toJSONString(command),JSON.toJSONString(resultRead)); }catch (Exception e1){ - log.error("鏃ュ織鎵撳嵃澶辫触锛�===>> [id:{}],{}", slave.getId(), JSON.toJSON(command)); + log.error("鏃ュ織鎵撳嵃澶辫触锛�===>> [id:{}],{}", slave.getId(), JSON.toJSONString(command)); } } try{ @@ -392,12 +393,12 @@ }catch (Exception e){ } - log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍥炶涓嶄竴鑷� ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(command),writeCount); + log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍥炶涓嶄竴鑷� ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSONString(command),writeCount); result = siemensNet.Write("DB100.0", array); writeCount++; continue; } else { - log.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); + log.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSONString(command),JSON.toJSONString(one)); break; } } @@ -454,8 +455,8 @@ if (result != null && result.IsSuccess) { Thread.sleep(200); this.readStatus(); - log.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); - OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); + log.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSONString(command)); + OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSONString(command))); return true; } else { OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ爢鍨涙満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); @@ -497,7 +498,7 @@ do { try{ if(!result.IsSuccess){ - log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(command),writeCount); + log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSONString(command),writeCount); result = siemensNet.Write("DB100.20", array); Thread.sleep(100); writeCount++; @@ -520,12 +521,12 @@ || !command.getDestinationPosY().equals(one.getDestinationPosY()) || !command.getDestinationPosZ().equals(one.getDestinationPosZ()) ){ try{ - log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐�==>涓嶄竴鑷碵id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); + log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐�==>涓嶄竴鑷碵id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSONString(command),JSON.toJSONString(one)); }catch (Exception e){ try{ - log.error("鏃ュ織鎵撳嵃澶辫触锛�===>>鍙傛暟one鎶ラ敊 [id:{}],{}", slave.getId(), JSON.toJSON(command),JSON.toJSON(resultRead)); + log.error("鏃ュ織鎵撳嵃澶辫触锛�===>>鍙傛暟one鎶ラ敊 [id:{}],{}", slave.getId(), JSON.toJSONString(command),JSON.toJSONString(resultRead)); }catch (Exception e1){ - log.error("鏃ュ織鎵撳嵃澶辫触锛�===>> [id:{}],{}", slave.getId(), JSON.toJSON(command)); + log.error("鏃ュ織鎵撳嵃澶辫触锛�===>> [id:{}],{}", slave.getId(), JSON.toJSONString(command)); } } try{ @@ -533,12 +534,12 @@ }catch (Exception e){ } - log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍥炶涓嶄竴鑷� ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(command),writeCount); + log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍥炶涓嶄竴鑷� ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSONString(command),writeCount); result = siemensNet.Write("DB100.20", array); writeCount++; continue; } else { - log.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); + log.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSONString(command),JSON.toJSONString(one)); break; } } @@ -595,8 +596,8 @@ if (result != null && result.IsSuccess) { Thread.sleep(200); this.readStatus(); - log.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); - OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); + log.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSONString(command)); + OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSONString(command))); return true; } else { OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ爢鍨涙満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); @@ -606,16 +607,15 @@ } /** - * 鍐欏叆鏁版嵁 宸ヤ綅2 + * 鍐欏叆鏁版嵁 鍙屽伐浣� */ private boolean write9(CrnCommandParam command) throws InterruptedException { if (null == command) { log.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�"); return false; } -// convertRow(command); command.setCrnNo(slave.getId()); - short[] array = new short[10]; + short[] array = new short[22]; array[0] = command.getAckFinish(); array[1] = command.getTaskNo(); array[2] = command.getTaskMode(); @@ -625,11 +625,23 @@ array[6] = command.getDestinationPosX(); array[7] = command.getDestinationPosY(); array[8] = command.getDestinationPosZ(); -// array[9] = command.getSourceStaNo(); -// array[10] = command.getDestinationStaNo(); array[9] = command.getCommand(); - OperateResult result18 = siemensNet.Write("DB100.38", (short)0); - OperateResult result = siemensNet.Write("DB100.20", array); + array[10] = command.getAckFinish2(); + array[11] = command.getTaskNo2(); + array[12] = command.getTaskMode2(); + array[13] = command.getSourcePosX2(); + array[14] = command.getSourcePosY2(); + array[15] = command.getSourcePosZ2(); + array[16] = command.getDestinationPosX2(); + array[17] = command.getDestinationPosY2(); + array[18] = command.getDestinationPosZ2(); + array[19] = command.getCommand(); + array[20] = (short)1; + array[21] = (short)1; + OperateResult result18 = siemensNet.Write("DB100.18", (short)0); + OperateResult result38 = siemensNet.Write("DB100.38", (short)0); + OperateResult result = siemensNet.Write("DB100.0", array); +// OperateResult result = siemensNet.Write("DB100.20", array); log.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), array); //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔� @@ -639,14 +651,14 @@ try{ if(!result.IsSuccess){ log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(command),writeCount); - result = siemensNet.Write("DB100.20", array); + result = siemensNet.Write("DB100.0", array); Thread.sleep(100); writeCount++; continue; } - OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.20", (short) 24); + OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 40); if (resultRead.IsSuccess) { - CrnCommand one = new CrnCommand(); + CrnCommandParam one = new CrnCommandParam(); one.setTaskNo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 2)); one.setTaskMode(siemensNet.getByteTransform().TransInt16(resultRead.Content, 4)); one.setSourcePosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 6)); @@ -655,10 +667,23 @@ one.setDestinationPosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 12)); one.setDestinationPosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 14)); one.setDestinationPosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 16)); + one.setTaskNo2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 22)); + one.setTaskMode2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 24)); + one.setSourcePosX2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 26)); + one.setSourcePosY2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 28)); + one.setSourcePosZ2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 30)); + one.setDestinationPosX2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 32)); + one.setDestinationPosY2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 34)); + one.setDestinationPosZ2(siemensNet.getByteTransform().TransInt16(resultRead.Content, 36)); if (!command.getTaskNo().equals(one.getTaskNo()) || !command.getTaskMode().equals(one.getTaskMode()) || !command.getSourcePosX().equals(one.getSourcePosX()) || !command.getSourcePosY().equals(one.getSourcePosY()) || !command.getSourcePosZ().equals(one.getSourcePosZ()) || !command.getDestinationPosX().equals(one.getDestinationPosX()) || !command.getDestinationPosY().equals(one.getDestinationPosY()) || !command.getDestinationPosZ().equals(one.getDestinationPosZ()) + || + !command.getTaskNo2().equals(one.getTaskNo2()) || !command.getTaskMode2().equals(one.getTaskMode2()) + || !command.getSourcePosX2().equals(one.getSourcePosX2()) || !command.getSourcePosY2().equals(one.getSourcePosY2()) + || !command.getSourcePosZ2().equals(one.getSourcePosZ2()) || !command.getDestinationPosX2().equals(one.getDestinationPosX2()) + || !command.getDestinationPosY2().equals(one.getDestinationPosY2()) || !command.getDestinationPosZ2().equals(one.getDestinationPosZ2()) ){ try{ log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐�==>涓嶄竴鑷碵id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); @@ -675,7 +700,7 @@ } log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍥炶涓嶄竴鑷� ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(command),writeCount); - result = siemensNet.Write("DB100.20", array); + result = siemensNet.Write("DB100.0", array); writeCount++; continue; } else { @@ -692,19 +717,23 @@ if (command.getAckFinish() == 0) { short commandFinish = 1; Thread.sleep(100L); - result = siemensNet.Write("DB100.38", commandFinish); + result18 = siemensNet.Write("DB100.18", commandFinish); + result38 = siemensNet.Write("DB100.38", commandFinish); int signFinish = 1; while (signFinish<5){ - OperateResultExOne<byte[]> result10018 = siemensNet.Read("DB100.38", (short) 2); - short transInt16 = siemensNet.getByteTransform().TransInt16(result10018.Content, 0); - if (transInt16 != commandFinish){ - log.info("涓嬪彂DB100.38 鍥炶澶辫触" + "commandFinish:"+commandFinish); - log.info("涓嬪彂DB100.38 鍥炶澶辫触" + "array:"+ JSON.toJSONString(array)); - result = siemensNet.Write("DB100.38", commandFinish); + OperateResultExOne<byte[]> result10018 = siemensNet.Read("DB100.18", (short) 2); + OperateResultExOne<byte[]> result10038 = siemensNet.Read("DB100.38", (short) 2); + short transInt1618 = siemensNet.getByteTransform().TransInt16(result10018.Content, 0); + short transInt1638 = siemensNet.getByteTransform().TransInt16(result10038.Content, 0); + if (transInt1618 != commandFinish || transInt1638 != commandFinish){ + log.info("涓嬪彂DB100.18/DB100.38 鍥炶澶辫触" + "commandFinish:"+commandFinish); + log.info("涓嬪彂DB100.18/DB100.38 鍥炶澶辫触" + "array:"+ JSON.toJSONString(array)); + result18 = siemensNet.Write("DB100.18", commandFinish); + result38 = siemensNet.Write("DB100.38", commandFinish); signFinish++; }else { - log.info("涓嬪彂DB100.38" + "commandFinish:"+commandFinish); - log.info("涓嬪彂DB100.38" + "array:"+ JSON.toJSONString(array)); + log.info("涓嬪彂DB100.18/DB100.38" + "commandFinish:"+commandFinish); + log.info("涓嬪彂DB100.18/DB100.38" + "array:"+ JSON.toJSONString(array)); break; } } -- Gitblit v1.9.1