From 412c5291467a5812af769156912dca6024abc8f1 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@63.com> Date: 星期一, 14 三月 2022 16:51:55 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/thread/MelsecCrnThread.java | 61 ++++++++++++++++++++++++++++++ 1 files changed, 60 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/zy/core/thread/MelsecCrnThread.java b/src/main/java/com/zy/core/thread/MelsecCrnThread.java index 57d10ea..240532f 100644 --- a/src/main/java/com/zy/core/thread/MelsecCrnThread.java +++ b/src/main/java/com/zy/core/thread/MelsecCrnThread.java @@ -39,6 +39,7 @@ private MelsecMcNet melsecMcNet; private CrnSlave slave; private CrnProtocol crnProtocol; + private short heartBeatVal = 1; private boolean resetFlag = false; public MelsecCrnThread(CrnSlave slave) { @@ -49,6 +50,11 @@ @SuppressWarnings("InfiniteLoopStatement") public void run() { this.connect(); +// try { +// Thread.sleep(2000); +// } catch (InterruptedException e) { +// e.printStackTrace(); +// } while (true) { try { int step = 1; @@ -86,12 +92,41 @@ default: break; } + // 蹇冭烦 + heartbeat(); Thread.sleep(500); } catch (Exception e) { e.printStackTrace(); } } + } + + /** + * 鍒濆鍖栧爢鍨涙満鐘舵�� + */ + private void initCrn() { + if (null == crnProtocol) { + crnProtocol = new CrnProtocol(); + } + crnProtocol.setCrnNo(slave.getId()); + crnProtocol.setMode((short) -1); +// crnProtocol.setTaskNo((short)0); + crnProtocol.setStatus((short)-1); + crnProtocol.setBay((short)0); + crnProtocol.setLevel((short)0); + crnProtocol.setForkPos((short) -1); + crnProtocol.setLiftPos((short) -1); + crnProtocol.setWalkPos((short)0); + crnProtocol.setLoaded((short)0); + crnProtocol.setAlarm((short)0); + crnProtocol.setXSpeed(0F); + crnProtocol.setYSpeed(0F); + crnProtocol.setZSpeed(0F); + crnProtocol.setXDistance(0F); + crnProtocol.setYDistance(0F); + crnProtocol.setXDuration(0F); + crnProtocol.setYDuration(0F); } @Override @@ -106,8 +141,9 @@ } else { OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝爢鍨涙満plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}] ", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); log.error("鍫嗗灈鏈簆lc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + initCrn(); } - melsecMcNet.ConnectClose(); +// melsecMcNet.ConnectClose(); return result; } @@ -116,11 +152,17 @@ */ private void readStatus(){ try { +// 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) { crnProtocol = new CrnProtocol(); } + crnProtocol.setCrnNo(slave.getId()); crnProtocol.setMode(melsecMcNet.getByteTransform().TransInt16(result.Content, 0)); crnProtocol.setTaskNo(melsecMcNet.getByteTransform().TransInt16(result.Content, 2)); crnProtocol.setStatus(melsecMcNet.getByteTransform().TransInt16(result.Content, 4)); @@ -157,6 +199,7 @@ } } + // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴� BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class); BasCrnp basCrnp = new BasCrnp(); @@ -174,6 +217,7 @@ e.printStackTrace(); OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戣鍙栧爢鍨涙満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); log.error("璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + initCrn(); } } @@ -244,6 +288,21 @@ melsecMcNet.ConnectClose(); } + /** + * 蹇冭烦 + */ + private void heartbeat(){ + if (heartBeatVal == 1) { + heartBeatVal = 2; + } else { + heartBeatVal = 1; + } + OperateResult write = melsecMcNet.Write("D10", heartBeatVal); + if (!write.IsSuccess) { + log.error("杈撻�佺嚎plc缂栧彿={} 蹇冭烦澶辫触", slave.getId()); + } + } + /******************************************************************************************/ /**************************************** 娴嬭瘯涓撶敤 *****************************************/ -- Gitblit v1.9.1