From 922a5f471a735a0ea231d30e45312f61d583e58d Mon Sep 17 00:00:00 2001 From: zhangchao <zc857179121@qq.com> Date: 星期日, 01 九月 2024 16:12:49 +0800 Subject: [PATCH] 对照协议调整 --- src/main/java/com/zy/core/thread/SiemensCrnThread.java | 172 +++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 113 insertions(+), 59 deletions(-) diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java index 04f881f..f3c77e2 100644 --- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java +++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java @@ -39,6 +39,7 @@ private CrnSlave slave; private CrnProtocol crnProtocol; private boolean resetFlag = false; + private boolean resetFlagTwo = false; /** * 鍫嗗灈鏈烘槸鍚﹀湪鍥炲師鐐硅繍鍔ㄤ腑鏍囪 @@ -186,20 +187,50 @@ OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛", DateUtils.convert(new Date()), slave.getId())); - - // 澶嶄綅淇″彿 - if (!Cools.isEmpty(crnProtocol.getStatusType()) && crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) { - if (resetFlag) { - if (crnProtocol.getTaskNo() == 9999) { - backHpFlag = false; + if (crnProtocol.getMode() == 1) { + // 澶嶄綅淇″彿 + if (!Cools.isEmpty(crnProtocol.getStatusType()) && crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) { + if (resetFlag) { + if (crnProtocol.getTaskNo() == 9999) { + backHpFlag = false; + } + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setAckFinish((short) 1); + if (write(crnCommand)) { + resetFlag = false; + } } - CrnCommand crnCommand = new CrnCommand(); - crnCommand.setAckFinish((short) 1); - if (write(crnCommand)) { - resetFlag = false; + } + } else if (crnProtocol.getMode() == 2) { + // 澶嶄綅淇″彿 + if (!Cools.isEmpty(crnProtocol.getStatusTypeTwo()) && crnProtocol.getStatusTypeTwo().equals(CrnStatusType.WAITING)) { + if (resetFlagTwo) { + if (crnProtocol.getTaskNo() == 9999) { + backHpFlag = false; + } + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setAckFinish((short) 1); + if (write(crnCommand)) { + resetFlag = false; + } + } + } + } else if (crnProtocol.getMode() == 3) { + // 澶嶄綅淇″彿 + if (!Cools.isEmpty(crnProtocol.getStatusType()) && crnProtocol.getStatusType().equals(CrnStatusType.WAITING) && !Cools.isEmpty(crnProtocol.getStatusTypeTwo()) && crnProtocol.getStatusTypeTwo().equals(CrnStatusType.WAITING)) { + if (resetFlag && resetFlagTwo) { + if (crnProtocol.getTaskNo() == 9999) { + backHpFlag = false; + } + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setAckFinish((short) 1); + if (write(crnCommand)) { + resetFlag = false; + } } } } + try { // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴� @@ -243,9 +274,6 @@ News.error("SiemensCrn" + " - 6" + " - 鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�"); return false; } - command.setCommand((short) 1); - System.out.println("------------------"); - System.out.println(command); // convertRow(command); command.setCrnNo(slave.getId()); short[] array = new short[16]; @@ -289,50 +317,76 @@ OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 32); if (resultRead.IsSuccess) { CrnCommand one = new CrnCommand(); - one.setTaskNo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 2)); - one.setTaskMode(siemensNet.getByteTransform().TransInt16(resultRead.Content, 4)); - one.setSourcePosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 6)); - one.setSourcePosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8)); - one.setSourcePosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 10)); - 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.setSourcePosXTwo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 18)); - one.setSourcePosYTwo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 20)); - one.setSourcePosZTwo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 22)); - one.setDestinationPosXTwo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 24)); - one.setDestinationPosYTwo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 26)); - one.setDestinationPosZTwo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 28)); - one.setDestinationPosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 30)); - 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.getSourcePosXTwo().equals(one.getSourcePosXTwo()) || !command.getSourcePosYTwo().equals(one.getSourcePosYTwo()) - || !command.getSourcePosZTwo().equals(one.getSourcePosZTwo()) || !command.getDestinationPosXTwo().equals(one.getDestinationPosXTwo()) - || !command.getDestinationPosYTwo().equals(one.getDestinationPosYTwo()) || !command.getDestinationPosZTwo().equals(one.getDestinationPosZTwo()) - ) { - try { - log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐�==>涓嶄竴鑷碵id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSONString(command), JSON.toJSONString(one)); - } catch (Exception e) { + one.setTaskNo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 0)); + one.setTaskMode(siemensNet.getByteTransform().TransInt16(resultRead.Content, 2)); + one.setSourcePosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 4)); + one.setSourcePosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 6)); + one.setSourcePosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8)); + one.setDestinationPosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 10)); + one.setDestinationPosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 12)); + one.setDestinationPosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 14)); + one.setSourcePosXTwo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 16)); + one.setSourcePosYTwo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 18)); + one.setSourcePosZTwo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 20)); + one.setDestinationPosXTwo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 22)); + one.setDestinationPosYTwo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 24)); + one.setDestinationPosZTwo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 26)); + if (command.getTaskMode() != 2) { + 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()) + ) { try { - log.error("鏃ュ織鎵撳嵃澶辫触锛�===>>鍙傛暟one鎶ラ敊 [id:{}],{}", slave.getId(), JSON.toJSONString(command), JSON.toJSONString(resultRead)); - } catch (Exception e1) { - log.error("鏃ュ織鎵撳嵃澶辫触锛�===>> [id:{}],{}", slave.getId(), JSON.toJSONString(command)); + log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐�==>涓嶄竴鑷碵id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSONString(command), JSON.toJSONString(one)); + } catch (Exception e) { + try { + log.error("鏃ュ織鎵撳嵃澶辫触锛�===>>鍙傛暟one鎶ラ敊 [id:{}],{}", slave.getId(), JSON.toJSONString(command), JSON.toJSONString(resultRead)); + } catch (Exception e1) { + log.error("鏃ュ織鎵撳嵃澶辫触锛�===>> [id:{}],{}", slave.getId(), JSON.toJSONString(command)); + } } - } - try { - Thread.sleep(100); - } catch (Exception e) { + try { + Thread.sleep(100); + } catch (Exception e) { + } + 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.toJSONString(command), JSON.toJSONString(one)); + break; } - 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.toJSONString(command), JSON.toJSONString(one)); - break; + if (!command.getTaskNo().equals(one.getTaskNo()) || !command.getTaskMode().equals(one.getTaskMode()) + || !command.getSourcePosXTwo().equals(one.getSourcePosXTwo()) || !command.getSourcePosYTwo().equals(one.getSourcePosYTwo()) + || !command.getSourcePosZTwo().equals(one.getSourcePosZTwo()) || !command.getDestinationPosXTwo().equals(one.getDestinationPosXTwo()) + || !command.getDestinationPosYTwo().equals(one.getDestinationPosYTwo()) || !command.getDestinationPosZTwo().equals(one.getDestinationPosZTwo()) + ) { + try { + log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐�==>涓嶄竴鑷碵id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSONString(command), JSON.toJSONString(one)); + } catch (Exception e) { + try { + log.error("鏃ュ織鎵撳嵃澶辫触锛�===>>鍙傛暟one鎶ラ敊 [id:{}],{}", slave.getId(), JSON.toJSONString(command), JSON.toJSONString(resultRead)); + } catch (Exception e1) { + log.error("鏃ュ織鎵撳嵃澶辫触锛�===>> [id:{}],{}", slave.getId(), JSON.toJSONString(command)); + } + } + try { + Thread.sleep(100); + } catch (Exception e) { + + } + 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.toJSONString(command), JSON.toJSONString(one)); + break; + } } } } catch (Exception e) { @@ -344,19 +398,19 @@ if (command.getAckFinish() == 0) { short commandFinish = 1; Thread.sleep(100L); - result = siemensNet.Write("DB100.30", commandFinish); + result = siemensNet.Write("DB100.28", commandFinish); int signFinish = 1; while (signFinish < 5) { - OperateResultExOne<byte[]> result10018 = siemensNet.Read("DB100.30", (short) 2); + OperateResultExOne<byte[]> result10018 = siemensNet.Read("DB100.28", (short) 2); short transInt16 = siemensNet.getByteTransform().TransInt16(result10018.Content, 0); if (transInt16 != commandFinish) { - log.info("涓嬪彂DB100.30 鍥炶澶辫触" + "commandFinish:" + commandFinish); - log.info("涓嬪彂DB100.30 鍥炶澶辫触" + "array:" + JSON.toJSONString(array)); - result = siemensNet.Write("DB100.18", commandFinish); + log.info("涓嬪彂DB100.28 鍥炶澶辫触" + "commandFinish:" + commandFinish); + log.info("涓嬪彂DB100.28 鍥炶澶辫触" + "array:" + JSON.toJSONString(array)); + result = siemensNet.Write("DB100.28", commandFinish); signFinish++; } else { - log.info("涓嬪彂DB100.30" + "commandFinish:" + commandFinish); - log.info("涓嬪彂DB100.30" + "array:" + JSON.toJSONString(array)); + log.info("涓嬪彂DB100.28" + "commandFinish:" + commandFinish); + log.info("涓嬪彂DB100.28" + "array:" + JSON.toJSONString(array)); break; } } -- Gitblit v1.9.1