From c48d0150aa9f6b297671f28adb6b9dc95b529cfc Mon Sep 17 00:00:00 2001 From: zhang <zc857179121@qq.com> Date: 星期四, 05 六月 2025 16:59:39 +0800 Subject: [PATCH] 1 --- src/main/java/com/zy/core/thread/SiemensCrnThread.java | 75 ++++++++++++++++++++++++++++++++++++- 1 files changed, 73 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java index a5d6264..fca86cb 100644 --- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java +++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java @@ -152,6 +152,7 @@ crnProtocol = new CrnProtocol(); crnProtocol.setCrnNo(this.getSlave().getId()); } + crnProtocol.setCrnNo(this.getSlave().getId()); crnProtocol.setMode(siemensNet.getByteTransform().TransInt16(result.Content, 0)); crnProtocol.setTaskNo(siemensNet.getByteTransform().TransInt16(result.Content, 2)); crnProtocol.setStatus(siemensNet.getByteTransform().TransInt16(result.Content, 4)); @@ -173,11 +174,38 @@ crnProtocol.setYDistance(siemensNet.getByteTransform().TransSingle(result.Content, 44)); crnProtocol.setXDuration(siemensNet.getByteTransform().TransSingle(result.Content, 48)); crnProtocol.setYDuration(siemensNet.getByteTransform().TransSingle(result.Content, 52)); + crnProtocol.setStatusEnd(false); + + try{ + OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 20); + 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 (this.slave.getId() == 1){ + if (one.getDestinationPosX() == 3 && one.getDestinationPosY() == 2 && one.getDestinationPosZ() == 1){ + crnProtocol.setStatusEnd(true); + } + } else if (this.slave.getId() == 3){ + if (one.getDestinationPosX() == 19 && one.getDestinationPosY() == 6 && one.getDestinationPosZ() == 1){ + crnProtocol.setStatusEnd(true); + } + } + } + } catch (Exception e){ } OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); // 澶嶄綅淇″彿 if (!Cools.isEmpty(crnProtocol.getStatusType()) && crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) { + News.error("---绗竴姝ャ�乕鍫嗗灈鏈哄彿锛歿}, 宸ヤ綔鍙凤細{}, 杞借揣鍙颁俊鍙�:{}]==>> 鐘舵�佷负10锛岀瓑寰呯‘璁わ紒锛�", + slave.getId(),crnProtocol.getTaskNo(), crnProtocol.getLoaded()==1 ? "鏈夌墿" : "鏃犵墿"); if (resetFlag) { CrnCommand crnCommand = new CrnCommand(); crnCommand.setAckFinish((short)1); @@ -228,6 +256,22 @@ return false; } + //涓嬪彂鍓嶅厠闅嗕竴浠� + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setCrnNo(command.getCrnNo()); + crnCommand.setAckFinish(command.getAckFinish()); + crnCommand.setTaskNo(command.getTaskNo()); + crnCommand.setTaskMode(command.getTaskMode()); + crnCommand.setSourcePosX(command.getSourcePosX()); + crnCommand.setSourcePosY(command.getSourcePosY()); + crnCommand.setSourcePosZ(command.getSourcePosZ()); + crnCommand.setDestinationPosX(command.getDestinationPosX()); + crnCommand.setDestinationPosY(command.getDestinationPosY()); + crnCommand.setDestinationPosZ(command.getDestinationPosZ()); + crnCommand.setSourceStaNo(command.getSourceStaNo()); + crnCommand.setDestinationStaNo(command.getDestinationStaNo()); + crnCommand.setCommand(command.getCommand()); + // convertRow(command); command.setCrnNo(slave.getId()); short[] array = new short[10]; @@ -243,6 +287,14 @@ array[9] = command.getCommand(); OperateResult result = siemensNet.Write("DB100.0", array); + if(!result.IsSuccess){ + log.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===>> [id:{}],{}", slave.getId(), JSON.toJSON(crnCommand)); + MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand)); + Thread.sleep(100); + readStatus(); + return false; + } + //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔� Thread.sleep(200); OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 20); @@ -256,12 +308,19 @@ 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()!=one.getTaskNo() || command.getTaskMode()!=one.getTaskMode() + if (!command.getTaskNo().equals(one.getTaskNo()) || command.getTaskMode()!=one.getTaskMode() || command.getSourcePosX()!=one.getSourcePosX() || command.getSourcePosY()!=one.getSourcePosY() || command.getSourcePosZ()!=one.getSourcePosZ() || command.getDestinationPosX()!=one.getDestinationPosX() || command.getDestinationPosY()!=one.getDestinationPosY() || command.getDestinationPosZ()!=one.getDestinationPosZ() ){ News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); + News.error("鍫嗗灈鏈哄懡浠ゅ洖璇诲け璐ュ悗锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===>> [id:{}],{}", slave.getId(), JSON.toJSON(crnCommand)); +// MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand)); + Thread.sleep(100); + readStatus(); + return false; + }else{ + News.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); } } @@ -270,7 +329,19 @@ short commandFinish = 1; Thread.sleep(300); News.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鎴愬姛锛屽紑濮嬪啓纭浣峓id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); - result = siemensNet.Write("DB100.18", commandFinish); + Integer counts = 0; + while(true) { + result = siemensNet.Write("DB100.18", commandFinish); + if(result.IsSuccess){ + break; + } else { + counts++; + if(counts>5){ + break; + } + } + Thread.sleep(300); + } } } -- Gitblit v1.9.1