From 1e86acc5e9fa9b18a6dc43c0ab9c6469723b2395 Mon Sep 17 00:00:00 2001 From: ZY <zc857179121@qq.com> Date: 星期四, 20 三月 2025 08:53:53 +0800 Subject: [PATCH] 1 --- src/main/java/com/zy/core/thread/SteThread.java | 79 ++++++++++++++++++++++++--------------- 1 files changed, 48 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/zy/core/thread/SteThread.java b/src/main/java/com/zy/core/thread/SteThread.java index ad8ed80..e756b0b 100644 --- a/src/main/java/com/zy/core/thread/SteThread.java +++ b/src/main/java/com/zy/core/thread/SteThread.java @@ -43,6 +43,8 @@ private SteProtocol steProtocol; private short heartBeatVal = 1; private boolean resetFlag = false; + private int value = 0; + public SteThread(SteSlave slave) { this.slave = slave; @@ -106,9 +108,9 @@ // siemensS7Net.setRack(slave.getRack().byteValue()); // siemensS7Net.setSlot(slave.getSlot().byteValue()); OperateResult connect = siemensS7Net.ConnectServer(); - if(connect.IsSuccess){ + if (connect.IsSuccess) { result = true; - OutputQueue.STE.offer(MessageFormat.format( "銆恵0}銆戠┛姊溅plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); + OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆戠┛姊溅plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); News.info("绌挎杞lc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); } else { OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆戠┛姊溅plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}] ", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); @@ -122,7 +124,7 @@ /** * 璇诲彇鐘舵�� */ - private synchronized void readStatus(){ + private synchronized void readStatus() { try { OperateResultExOne<byte[]> result = siemensS7Net.Read("V800", (short) 70); if (result.IsSuccess) { @@ -131,7 +133,21 @@ steProtocol.setSteNo(slave.getId().shortValue()); } // steProtocol.setSteNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 0)); - steProtocol.setMode(siemensS7Net.getByteTransform().TransInt16(result.Content, 2)); + short i = siemensS7Net.getByteTransform().TransInt16(result.Content, 2); + if (i == 0) { + value++; + } else { + value = 0; + } + if (value > 20) { + steProtocol.setMode((short) 0); + } else { + if (steProtocol.getMode() != null) { + steProtocol.setMode(steProtocol.getMode()); + } else { + steProtocol.setMode((short) 1); + } + } steProtocol.setStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 4)); OperateResultExOne<Boolean> executeRes = siemensS7Net.ReadBool("V2001.0"); if (executeRes.IsSuccess) { @@ -179,19 +195,19 @@ steProtocol.setCrnAllowRun(siemensS7Net.getByteTransform().TransInt16(result.Content, 42)); steProtocol.setChargeStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 44)); - OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); + OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛", DateUtils.convert(new Date()), slave.getId())); // 澶嶄綅淇″彿 if (steProtocol.getWaiting()) { News.info("-------------绗竴姝ャ�乕绌挎杞﹀彿锛歿}, 宸ヤ綔鍙凤細{}]==>> 鐘舵�佷负{}锛岀瓑寰匴CS纭锛侊紒{}", - slave.getId(),steProtocol.getTaskNo(),steProtocol.getStatus(), resetFlag); + slave.getId(), steProtocol.getTaskNo(), steProtocol.getStatus(), resetFlag); if (resetFlag) { SteCommand steCommand = new SteCommand(); steCommand.setComplete(true); if (write(steCommand) && confirmPos()) { resetFlag = false; News.info("绗簩姝ャ�佸彂閫佸浣嶅懡浠ゆ垚鍔� resetFlag = false,[绌挎杞﹀彿锛歿}, 宸ヤ綔鍙凤細{}]==>> 鐘舵�佷负{}锛岀瓑寰匴CS纭锛侊紒{}", - slave.getId(),steProtocol.getTaskNo(),steProtocol.getStatus(), resetFlag); + slave.getId(), steProtocol.getTaskNo(), steProtocol.getStatus(), resetFlag); } } } @@ -208,14 +224,14 @@ BasSte basSte = new BasSte(); basSte.setSteNo(slave.getId()); - if (!service.updateById(steProtocol.toSqlModel(basSte))){ + if (!service.updateById(steProtocol.toSqlModel(basSte))) { News.error("绌挎杞lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); } } } else { - OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆憑1}绌挎杞lc鐘舵�佷俊鎭け璐�",DateUtils.convert(new Date()), slave.getId())); - throw new CoolException(MessageFormat.format( "绌挎杞lc鐘舵�佷俊鎭け璐� ===>> [id:{0}] [ip:{1}] [port:{2}]", slave.getId(), slave.getIp(), slave.getPort())); + OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆憑1}绌挎杞lc鐘舵�佷俊鎭け璐�", DateUtils.convert(new Date()), slave.getId())); + throw new CoolException(MessageFormat.format("绌挎杞lc鐘舵�佷俊鎭け璐� ===>> [id:{0}] [ip:{1}] [port:{2}]", slave.getId(), slave.getIp(), slave.getPort())); } } catch (Exception e) { // e.printStackTrace(); @@ -229,7 +245,7 @@ /** * 鍐欏叆鏁版嵁 */ - private synchronized boolean write(SteCommand command){ + private synchronized boolean write(SteCommand command) { if (null == command) { News.error("绌挎杞﹀啓鍏ュ懡浠や负绌�"); return false; @@ -257,29 +273,29 @@ result = siemensS7Net.Write("V2000.0", true); } - // 鍏朵粬鎸囦护 + // 鍏朵粬鎸囦护 } else { // 鎺у埗妯″紡 if (command.getControlMode() != null) { - result = siemensS7Net.Write("V1010", command.getControlMode()); - // 澶嶄綅淇″彿 + result = siemensS7Net.Write("V1010", command.getControlMode()); + // 澶嶄綅淇″彿 } else if (command.getReset() != null) { - result = siemensS7Net.Write("V2000.2", command.getReset()); - // 鍒犻櫎鎸囦护 + result = siemensS7Net.Write("V2000.2", command.getReset()); + // 鍒犻櫎鎸囦护 } else if (command.getDelete() != null) { - result = siemensS7Net.Write("V2000.3", command.getDelete()); - // 鏃犳晥鎸囦护 - } else if (command.getRun() != null) { - result = siemensS7Net.Write("V1016", command.getRun()); + result = siemensS7Net.Write("V2000.3", command.getDelete()); // 鏃犳晥鎸囦护 - }else { + } else if (command.getRun() != null) { + result = siemensS7Net.Write("V1016", command.getRun()); + // 鏃犳晥鎸囦护 + } else { return false; } } - // 浠诲姟瀹屾垚 + // 浠诲姟瀹屾垚 } else { - News.info("鏀跺埌绌挎鏉跨‘璁や俊鍙峰悗鍑嗗缁欏浣嶆爣璁帮紝绌挎鏉縄D={}, 浠诲姟鍙�={}, 绌挎鏉跨姸鎬�={}",slave.getId(), steProtocol.getTaskNo(),steProtocol.getStatus()); + News.info("鏀跺埌绌挎鏉跨‘璁や俊鍙峰悗鍑嗗缁欏浣嶆爣璁帮紝绌挎鏉縄D={}, 浠诲姟鍙�={}, 绌挎鏉跨姸鎬�={}", slave.getId(), steProtocol.getTaskNo(), steProtocol.getStatus()); siemensS7Net.Write("V998", (short) 0); siemensS7Net.Write("V1000", (short) 0); siemensS7Net.Write("V2000.0", false); @@ -313,7 +329,8 @@ } } - } catch (Exception ignore) {} + } catch (Exception ignore) { + } if (result != null && result.IsSuccess) { // 缁存姢鏁版嵁搴撴帓鍒楀眰 @@ -328,7 +345,7 @@ try { Thread.sleep(500); - } catch (Exception e){ + } catch (Exception e) { } OperateResultExOne<byte[]> result1 = siemensS7Net.Read("V998", (short) 4); @@ -336,8 +353,8 @@ short taskNo = siemensS7Net.getByteTransform().TransInt16(result1.Content, 0); short taskType = siemensS7Net.getByteTransform().TransInt16(result1.Content, 2); // readStatus(); - News.info("绌挎鏉夸换鍔′笅鍙戞垚鍔熷悗浼戠湢200ms绔嬪嵆鍥炶鍐欏叆鏁版嵁锛岀┛姊澘ID={}, 浠诲姟鍙�={}, 浣滀笟绫诲瀷={}",slave.getId(), taskNo, taskType); - News.info("绌挎鏉夸换鍔′笅鍙戞垚鍔熷悗浼戠湢200ms绔嬪嵆鍥炶绌挎鏉跨姸鎬侊紝绌挎鏉縄D={}, 浠诲姟鍙�={}, 绌挎鏉跨姸鎬�={}",slave.getId(), steProtocol.getTaskNo(),steProtocol.getStatus()); + News.info("绌挎鏉夸换鍔′笅鍙戞垚鍔熷悗浼戠湢200ms绔嬪嵆鍥炶鍐欏叆鏁版嵁锛岀┛姊澘ID={}, 浠诲姟鍙�={}, 浣滀笟绫诲瀷={}", slave.getId(), taskNo, taskType); + News.info("绌挎鏉夸换鍔′笅鍙戞垚鍔熷悗浼戠湢200ms绔嬪嵆鍥炶绌挎鏉跨姸鎬侊紝绌挎鏉縄D={}, 浠诲姟鍙�={}, 绌挎鏉跨姸鎬�={}", slave.getId(), steProtocol.getTaskNo(), steProtocol.getStatus()); } resetFlag = false; return true; @@ -366,7 +383,7 @@ BasSte basSte = service.selectById(slave.getId()); if (basSte != null) { // 鏇存柊plc鏁版嵁鍧� - short[] arr = new short[] {basSte.getRow().shortValue(), basSte.getBay().shortValue(), basSte.getLev().shortValue()}; + short[] arr = new short[]{basSte.getRow().shortValue(), basSte.getBay().shortValue(), basSte.getLev().shortValue()}; OperateResult result = siemensS7Net.Write("V1002", arr); if (result.IsSuccess) { // 鏇存柊鏁版嵁搴� @@ -381,7 +398,7 @@ } public boolean modifyPosHandle(Integer row, Integer bay, Integer lev) { - short[] arr = new short[] {row.shortValue(), bay.shortValue(), lev.shortValue()}; + short[] arr = new short[]{row.shortValue(), bay.shortValue(), lev.shortValue()}; OperateResult result = siemensS7Net.Write("V1002", arr); if (!result.IsSuccess) { News.error("鏇存柊{}鍙风┛姊溅瀹氫綅澶辫触 ===>> 鎺掞細銆恵}銆�, 鍒楋細銆恵}銆戯紝灞傦細銆恵}銆�", this.slave.getId(), row, bay, lev); @@ -403,7 +420,7 @@ /** * 蹇冭烦 */ - private void heartbeat(){ + private void heartbeat() { if (heartBeatVal == 1) { heartBeatVal = 2; } else { @@ -467,7 +484,7 @@ // 绌挎杞﹁繍琛岀姝� SteCommand command = new SteCommand(); - command.setRun((short)0); + command.setRun((short) 0); thread.write(command); } -- Gitblit v1.9.1