From a0adee2f689c85399ca311ef7691cd911a00fd3b Mon Sep 17 00:00:00 2001 From: 18516761980 <4761516tqsxp> Date: 星期四, 17 三月 2022 16:02:30 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/thread/MelsecCrnThread.java | 102 ++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 80 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/zy/core/thread/MelsecCrnThread.java b/src/main/java/com/zy/core/thread/MelsecCrnThread.java index efd3d32..73e1d1b 100644 --- a/src/main/java/com/zy/core/thread/MelsecCrnThread.java +++ b/src/main/java/com/zy/core/thread/MelsecCrnThread.java @@ -24,6 +24,7 @@ import com.zy.core.model.protocol.CrnProtocol; import lombok.Data; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import java.text.MessageFormat; import java.util.Date; @@ -50,6 +51,11 @@ @SuppressWarnings("InfiniteLoopStatement") public void run() { this.connect(); +// try { +// Thread.sleep(2000); +// } catch (InterruptedException e) { +// e.printStackTrace(); +// } while (true) { try { int step = 1; @@ -88,7 +94,7 @@ break; } // 蹇冭烦 -// heartbeat(); + heartbeat(); Thread.sleep(500); } catch (Exception e) { e.printStackTrace(); @@ -137,7 +143,7 @@ log.error("鍫嗗灈鏈簆lc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); initCrn(); } - melsecMcNet.ConnectClose(); +// melsecMcNet.ConnectClose(); return result; } @@ -146,9 +152,11 @@ */ private void readStatus(){ try { - if (this.slave.getId() == 1) { - System.out.println("==="); - } +// if (this.slave.getId() == 1 && flag1.equals(0)) { +// Thread.sleep(3000); +// flag1=1; +// System.out.println("==="); +// } OperateResultExOne<byte[]> result = melsecMcNet.Read("D20", (short) 70); if (result.IsSuccess) { if (null == crnProtocol) { @@ -195,6 +203,7 @@ BasCrnp basCrnp = new BasCrnp(); basCrnp.setCrnErr(crnProtocol.getAlarm()==null?0:crnProtocol.getAlarm().longValue()); basCrnp.setCrnNo(slave.getId()); + basCrnp.setCrnSts((int)crnProtocol.getMode()); if (!basCrnpService.updateById(crnProtocol.toSqlModel(basCrnp))){ log.error("鍫嗗灈鏈簆lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); } @@ -220,24 +229,73 @@ log.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�"); return false; } - command.setCrnNo(slave.getId()); - short[] array = new short[10]; - array[0] = command.getAckFinish(); - array[1] = command.getTaskNo(); - array[2] = command.getTaskMode(); - array[3] = command.getSourcePosX(); - array[4] = command.getSourcePosY(); - array[5] = command.getSourcePosZ(); - array[6] = command.getDestinationPosX(); - array[7] = command.getDestinationPosY(); - array[8] = command.getDestinationPosZ(); - array[9] = command.getCommand(); - OperateResult result = melsecMcNet.Write("D0", array); - if (command.getAckFinish() == 0) { - short commandFinish = 1; - result = melsecMcNet.Write("D9", commandFinish); + OperateResult result = null; + try{ + Integer exeCount=0; + do{ + command.setCrnNo(slave.getId()); + short[] array = new short[10]; + array[0] = command.getAckFinish(); + array[1] = command.getTaskNo(); + array[2] = command.getTaskMode(); + array[3] = command.getSourcePosX(); + array[4] = command.getSourcePosY(); + array[5] = command.getSourcePosZ(); + array[6] = command.getDestinationPosX(); + array[7] = command.getDestinationPosY(); + array[8] = command.getDestinationPosZ(); + array[9] = command.getCommand(); + result = melsecMcNet.Write("D0", array); + if(result.IsSuccess) { + if (command.getAckFinish() == 0) { + short commandFinish = 1; + result = melsecMcNet.Write("D9", commandFinish); + if(result.IsSuccess){ + //鍐欎换鍔$‘璁よ繑鍥炴垚鍔熷悗锛屾煡璇㈢‘璁や竴娆� + Thread.sleep(200); + OperateResultExOne<byte[]> result1 = melsecMcNet.Read("D9", (short)2); + if(result1.IsSuccess){ + short commandVal = melsecMcNet.getByteTransform().TransInt16(result1.Content,2); + if(commandVal==1){ + break; + } else { + exeCount++; + } + } else{ + exeCount++; + } + }else{ + exeCount++; + } + } + }else{ + exeCount++; + } + Thread.sleep(200); + }while(exeCount>3); + }catch (Exception e){ + } + +// command.setCrnNo(slave.getId()); +// short[] array = new short[10]; +// array[0] = command.getAckFinish(); +// array[1] = command.getTaskNo(); +// array[2] = command.getTaskMode(); +// array[3] = command.getSourcePosX(); +// array[4] = command.getSourcePosY(); +// array[5] = command.getSourcePosZ(); +// array[6] = command.getDestinationPosX(); +// array[7] = command.getDestinationPosY(); +// array[8] = command.getDestinationPosZ(); +// array[9] = command.getCommand(); +// OperateResult result = melsecMcNet.Write("D0", array); +// +// if (command.getAckFinish() == 0) { +// short commandFinish = 1; +// result = melsecMcNet.Write("D9", commandFinish); +// } try { // 鏃ュ織璁板綍 @@ -262,7 +320,7 @@ bean.insert(basCrnOpt); } catch (Exception ignore) {} - if (result.IsSuccess) { + if (result != null && result.IsSuccess) { 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))); return true; -- Gitblit v1.9.1