From ae0f47d70a1a4d539bf7cb0d69e0375d91ef3f7c Mon Sep 17 00:00:00 2001 From: lsh <lsh@163.com> Date: 星期四, 06 六月 2024 13:18:56 +0800 Subject: [PATCH] #入库任务BUG修复 --- src/main/java/com/zy/core/thread/SiemensCrnThread.java | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 104 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java index 3990184..692146e 100644 --- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java +++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java @@ -38,6 +38,7 @@ private CrnSlave slave; private CrnProtocol crnProtocol; private boolean resetFlag = false; + private boolean resetFlagTwo = false; public Long sign = System.currentTimeMillis(); @@ -204,12 +205,16 @@ crnProtocol.setyDuration(siemensNet.getByteTransform().TransInt16(result.Content, 52)); - //宸ヤ綅2鏁版嵁 鏃犲垯鏃犻渶渚嬩細 - crnProtocol.setTaskNoTwo(siemensNet.getByteTransform().TransInt16(result.Content, 56)); - crnProtocol.setStatusTwo(siemensNet.getByteTransform().TransInt16(result.Content, 56)); - crnProtocol.setForkPosTwo(siemensNet.getByteTransform().TransInt16(result.Content, 58)); - crnProtocol.setLiftPosTwo(siemensNet.getByteTransform().TransInt16(result.Content, 60)); - crnProtocol.setLoadedTwo(siemensNet.getByteTransform().TransInt16(result.Content, 64)); + //宸ヤ綅2鏁版嵁 鏃犲垯鏃犻渶鐞嗕細 + try{ + crnProtocol.setTaskNoTwo(siemensNet.getByteTransform().TransInt16(result.Content, 56)); + crnProtocol.setStatusTwo(siemensNet.getByteTransform().TransInt16(result.Content, 56)); + crnProtocol.setForkPosTwo(siemensNet.getByteTransform().TransInt16(result.Content, 58)); + crnProtocol.setLiftPosTwo(siemensNet.getByteTransform().TransInt16(result.Content, 60)); + crnProtocol.setLoadedTwo(siemensNet.getByteTransform().TransInt16(result.Content, 64)); + }catch (Exception e){ + + } OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); @@ -224,6 +229,16 @@ CrnCommand crnCommand = new CrnCommand(); crnCommand.setAckFinish((short)1); if (write(crnCommand)) { + resetFlag = false; + } + } + if (resetFlagTwo) { + if(crnProtocol.getTaskNo()==9999){ + backHpFlag = false; + } + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setAckFinish((short)1); + if (write5(crnCommand)) { resetFlag = false; } } @@ -285,12 +300,95 @@ // array[9] = command.getSourceStaNo(); // array[10] = command.getDestinationStaNo(); array[9] = command.getCommand(); + OperateResult result18 = siemensNet.Write("DB100.18", (short)0); OperateResult result = siemensNet.Write("DB100.0", array); + log.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), array); + + + + //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔� + Thread.sleep(200); + int writeCount1 = 1; + do { + try{ + if(!result.IsSuccess){ + log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(command),writeCount1); +// MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, command)); + result = siemensNet.Write("DB100.0", array); + Thread.sleep(100); + writeCount1++; + continue; + } + OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 24); + 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)); + 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("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐�==>涓嶄竴鑷碵id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); + }catch (Exception e){ + try{ + log.error("鏃ュ織鎵撳嵃澶辫触锛�===>>鍙傛暟one鎶ラ敊 [id:{}],{}", slave.getId(), JSON.toJSON(command),JSON.toJSON(resultRead)); + }catch (Exception e1){ + log.error("鏃ュ織鎵撳嵃澶辫触锛�===>> [id:{}],{}", slave.getId(), JSON.toJSON(command)); + } + } + + try{ + Thread.sleep(100); + }catch (Exception e){ + + } + +// News.error("鍫嗗灈鏈哄懡浠ゅ洖璇诲け璐ュ悗锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===>> [id:{}],{},resetFlag={}", slave.getId(), JSON.toJSON(command),resetFlag); +// MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, command)); + log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔� 鍥炶涓嶄竴鑷� ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(command),writeCount1); + result = siemensNet.Write("DB100.0", array); + writeCount1++; + continue; + + } else { + log.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); + break; + } + } + }catch (Exception e){ + log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲嚭閿�,寮傚父锛�"+e); + } + writeCount1++; + } while (writeCount1<6); if (command.getAckFinish() == 0) { short commandFinish = 1; Thread.sleep(100L); result = siemensNet.Write("DB100.18", commandFinish); + int signFinish = 1; + while (signFinish<5){ + OperateResultExOne<byte[]> result10018 = siemensNet.Read("DB100.18", (short) 2); + short transInt16 = siemensNet.getByteTransform().TransInt16(result10018.Content, 0); + if (transInt16 != commandFinish){ + log.info("涓嬪彂DB100.18 鍥炶澶辫触" + "commandFinish:"+commandFinish); + log.info("涓嬪彂DB100.18 鍥炶澶辫触" + "array:"+ JSON.toJSONString(array)); + result = siemensNet.Write("DB100.18", commandFinish); + signFinish++; + }else { + log.info("涓嬪彂DB100.18" + "commandFinish:"+commandFinish); + log.info("涓嬪彂DB100.18" + "array:"+ JSON.toJSONString(array)); + break; + } + + } } try { -- Gitblit v1.9.1