From d3f3d4b309cfb285fcbbc48b91c4046111c7e9cd Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期三, 02 七月 2025 13:45:54 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/thread/SiemensCrnThread.java | 67 ++++++++++++++++++++++++++------- 1 files changed, 53 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java index a11b349..31de838 100644 --- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java +++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java @@ -5,31 +5,30 @@ import HslCommunication.Profinet.Siemens.SiemensPLCS; import HslCommunication.Profinet.Siemens.SiemensS7Net; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.common.DateUtils; import com.core.common.SpringUtils; import com.zy.asrs.entity.*; -import com.zy.asrs.entity.param.TaskOverToWms; import com.zy.asrs.service.*; -import com.zy.common.utils.HttpHandler; import com.zy.core.CrnThread; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.OutputQueue; -import com.zy.core.enums.*; +import com.zy.core.enums.CommandStatusType; +import com.zy.core.enums.CrnTaskModeType; +import com.zy.core.enums.SlaveType; import com.zy.core.model.CrnSlave; import com.zy.core.model.Task; -import com.zy.core.model.command.CommandPackage; import com.zy.core.model.command.CrnCommand; import com.zy.core.model.protocol.CrnProtocol; import lombok.Data; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import java.text.MessageFormat; -import java.util.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; /** * 鍫嗗灈鏈虹嚎绋� @@ -161,7 +160,7 @@ /** * 璇诲彇鐘舵�� */ - private void readStatus(){ + private void readStatus() throws InterruptedException { OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 56); if (result.IsSuccess) { @@ -197,9 +196,11 @@ // 澶嶄綅淇″彿 if (crnProtocol.getTaskFinish() == 0) { if (resetFlag) { + log.info("{}鍙峰爢鍨涙満涓嬪彂澶嶄綅淇″彿",slave.getId()); CrnCommand crnCommand = new CrnCommand(); crnCommand.setAckFinish((short)1); if (write(crnCommand)) { + log.info("{}鍫嗗灈鏈哄浣嶄俊鍙蜂笅鍙戞垚鍔�",slave.getId()); resetFlag = false; } @@ -223,6 +224,7 @@ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); deviceErrorService.deleteDeviceError("crn", slave.getId()); } else { + initCrnProtocol(); OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戣鍙栧爢鍨涙満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); log.error("璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); @@ -233,7 +235,7 @@ /** * 鍐欏叆鏁版嵁 */ - private boolean write(CrnCommand command){ + private boolean write(CrnCommand command) throws InterruptedException { if (null == command) { log.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�"); return false; @@ -254,6 +256,7 @@ // crnCommand.setDestinationStaNo(command.getDestinationStaNo()); crnCommand.setCommand(command.getCommand()); if (command.getTaskNo() == 0 && command.getAckFinish() == 0 && command.getAuto() != 1) { + log.error("write鍐欏叆浜�9999浠诲姟鍙凤細{}",command); command.setTaskNo((short) 9999); } @@ -272,7 +275,7 @@ array[6] = command.getDestinationPosZ(); array[7] = command.getDestinationPosX(); array[8] = command.getDestinationPosY(); - array[9] = command.getCommand(); +// array[9] = command.getCommand(); // 浣滀笟淇℃伅 OperateResult result = siemensNet.Write("DB100.0", array); @@ -313,12 +316,12 @@ try{ //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔� Thread.sleep(500); - OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 24); + OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 20); if (resultRead.IsSuccess) { CrnCommand one = new CrnCommand(); one.setAckFinish(siemensNet.getByteTransform().TransInt16(resultRead.Content, 0)); one.setTaskNo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 2)); - //one.setTaskMode(siemensNet.getByteTransform().TransInt16(resultRead.Content, 4)); + one.setTaskMode(siemensNet.getByteTransform().TransInt16(resultRead.Content, 4)); one.setSourcePosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 6)); one.setSourcePosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8)); one.setSourcePosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 10)); @@ -340,13 +343,48 @@ readStatus(); return false; } else { - log.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); + log.info("5鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); } } }catch (Exception e){ log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲嚭閿�"); } + + if (command.getAckFinish() == 0) { + if (result.IsSuccess) { + Thread.sleep(300); + //浠诲姟涓嬪彂娆℃暟 + int writeCount2 = 0; + + do { + writeCount2++; + short commandFinish = (short) 1; + result = siemensNet.Write("DB100.18", commandFinish); + if(result.IsSuccess){ + //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔� + Thread.sleep(200); + OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.18", (short) 2); + if (resultRead.IsSuccess) { + commandFinish=siemensNet.getByteTransform().TransInt16(resultRead.Content, 0); + if (commandFinish != 1){ + log.error("鍫嗗灈鏈轰换鍔$‘璁や綅"+commandFinish+"鍐欏叆鏁版嵁涓庡洖璇绘暟鎹笉涓�鑷达紒"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�"); + }else{ + //浠诲姟鍛戒护鍐欏叆鎴愬姛 + log.info("鍫嗗灈鏈轰换鍔$‘璁や綅"+commandFinish+"鍥炶鎴愬姛锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�"); + break; + } + }else { + log.error("鍫嗗灈鏈轰换鍔$‘璁や綅"+commandFinish+"鍥炶澶辫触锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�"); + } + } else { + log.error("鍫嗗灈鏈轰换鍔$‘璁や綅"+commandFinish+"鍐欏叆澶辫触锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�"); + } + }while (writeCount2<5); + } + } + + return true; } @@ -374,6 +412,7 @@ // crnCommand.setDestinationStaNo(command.getDestinationStaNo()); crnCommand.setCommand(command.getCommand()); if (command.getTaskNo() == 0 && command.getAckFinish() == 0 && command.getAuto() != 1) { + log.error("write2鍐欏叆浜�9999浠诲姟鍙凤細{}",command); command.setTaskNo((short) 9999); } @@ -503,7 +542,7 @@ readStatus(); return false; } else { - log.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); + log.info("4鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one)); } } }catch (Exception e){ -- Gitblit v1.9.1