From f2ce78e633a27d83fb15cc2c6412659fe1111e98 Mon Sep 17 00:00:00 2001 From: LSH Date: 星期一, 01 四月 2024 19:25:55 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/thread/MelsecCrnThread.java | 81 ++++++++++++++++++++++++++++------------ 1 files changed, 57 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/zy/core/thread/MelsecCrnThread.java b/src/main/java/com/zy/core/thread/MelsecCrnThread.java index 84ed59e..59ae02d 100644 --- a/src/main/java/com/zy/core/thread/MelsecCrnThread.java +++ b/src/main/java/com/zy/core/thread/MelsecCrnThread.java @@ -11,6 +11,7 @@ import com.zy.asrs.entity.BasCrnp; import com.zy.asrs.service.BasCrnOptService; import com.zy.asrs.service.BasCrnpService; +import com.zy.common.utils.News; import com.zy.core.CrnThread; import com.zy.core.ThreadHandler; import com.zy.core.cache.MessageQueue; @@ -47,6 +48,10 @@ */ private boolean backHpFlag = false; + public Long sign = System.currentTimeMillis(); + + public boolean isRunning = true; + public MelsecCrnThread(CrnSlave slave) { this.slave = slave; } @@ -54,13 +59,15 @@ @Override @SuppressWarnings("InfiniteLoopStatement") public void run() { + System.out.println("绾跨▼鍚姩"); + System.out.println("crnProtocol:"+crnProtocol); this.connect(); // try { // Thread.sleep(2000); // } catch (InterruptedException e) { // e.printStackTrace(); // } - while (true) { + while (isRunning) { try { int step = 1; Task task = MessageQueue.poll(SlaveType.Crn, slave.getId()); @@ -86,12 +93,12 @@ command.setTaskNo((short) 0); // 宸ヤ綔鍙� command.setAckFinish((short) 1); // 浠诲姟瀹屾垚纭浣� command.setTaskMode(CrnTaskModeType.NONE); // 浠诲姟妯″紡 - command.setSourcePosX((short)0); // 婧愬簱浣嶆帓 - command.setSourcePosY((short)0); // 婧愬簱浣嶅垪 - command.setSourcePosZ((short)0); // 婧愬簱浣嶅眰 - command.setDestinationPosX((short)0); // 鐩爣搴撲綅鎺� - command.setDestinationPosY((short)0); // 鐩爣搴撲綅鍒� - command.setDestinationPosZ((short)0); // 鐩爣搴撲綅灞� +// command.setSourcePosX((short)0); // 婧愬簱浣嶆帓 +// command.setSourcePosY((short)0); // 婧愬簱浣嶅垪 +// command.setSourcePosZ((short)0); // 婧愬簱浣嶅眰 +// command.setDestinationPosX((short)0); // 鐩爣搴撲綅鎺� +// command.setDestinationPosY((short)0); // 鐩爣搴撲綅鍒� +// command.setDestinationPosZ((short)0); // 鐩爣搴撲綅灞� write(command); break; default: @@ -103,7 +110,8 @@ } catch (Exception e) { e.printStackTrace(); } - + System.out.println("绗�"+slave.getId()+"涓爢鍨涙満绾跨▼杩愯涓�杞細"+(System.currentTimeMillis()-sign)); + sign = System.currentTimeMillis(); } } @@ -141,10 +149,10 @@ if(connect.IsSuccess){ result = true; OutputQueue.CRN.offer(MessageFormat.format( "銆恵0}銆戝爢鍨涙満plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); - log.info("鍫嗗灈鏈簆lc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + News.info("MelsecCrn"+" - 1"+" - 鍫嗗灈鏈簆lc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); } 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()); + News.error("MelsecCrn"+" - 2"+" - 鍫嗗灈鏈簆lc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); initCrn(); } // melsecMcNet.ConnectClose(); @@ -161,7 +169,7 @@ // flag1=1; // System.out.println("==="); // } - OperateResultExOne<byte[]> result = melsecMcNet.Read("D20", (short) 70); + OperateResultExOne<byte[]> result = melsecMcNet.Read("D1035", (short) 56); if (result.IsSuccess) { if (null == crnProtocol) { crnProtocol = new CrnProtocol(); @@ -193,7 +201,7 @@ // 澶嶄綅淇″彿 if (crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) { - log.error("-------------------------------------------绗竴姝ャ�乕鍫嗗灈鏈哄彿锛歿}][宸ヤ綔鍙凤細{}]==>> 鐘舵�佷负90锛岀瓑寰呯‘璁わ紒锛�",slave.getId(),crnProtocol.getTaskNo()); + News.error("MelsecCrn"+" - 3"+" ---------绗竴姝ャ�乕鍫嗗灈鏈哄彿锛歿}][宸ヤ綔鍙凤細{}]==>> 鐘舵�佷负90锛岀瓑寰呯‘璁わ紒锛�",slave.getId(),crnProtocol.getTaskNo()); if (resetFlag) { if(crnProtocol.getTaskNo()==9999){ backHpFlag = false; @@ -213,7 +221,7 @@ 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()); + News.error("MelsecCrn"+" - 4"+" - 鍫嗗灈鏈簆lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); } } else { @@ -223,8 +231,10 @@ } catch (Exception e) { 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()); + News.error("MelsecCrn"+" - 5"+" - 璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); initCrn(); + } finally { + sign = System.currentTimeMillis(); } } @@ -234,7 +244,7 @@ */ private boolean write(CrnCommand command){ if (null == command) { - log.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�"); + News.error("MelsecCrn"+" - 6"+" - 鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�"); return false; } @@ -298,11 +308,11 @@ array[7] = command.getDestinationPosY(); array[8] = command.getDestinationPosZ(); array[9] = command.getCommand(); - OperateResult result = melsecMcNet.Write("D0", array); + OperateResult result = melsecMcNet.Write("D1001", array); if (command.getAckFinish() == 0) { short commandFinish = 1; - result = melsecMcNet.Write("D9", commandFinish); + result = melsecMcNet.Write("D1010", commandFinish); } try { @@ -329,12 +339,12 @@ } catch (Exception ignore) {} if (result != null && result.IsSuccess) { - log.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); + News.info("MelsecCrn"+" - 7"+" - 鍫嗗灈鏈哄懡浠や笅鍙慬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; } 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()); + News.error("MelsecCrn"+" - 8"+" - 鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); return false; } } @@ -348,14 +358,24 @@ * 蹇冭烦 */ private void heartbeat(){ - if (heartBeatVal == 1) { - heartBeatVal = 2; + if (heartBeatVal >= 30000) { + heartBeatVal = -30000; } else { - heartBeatVal = 1; + heartBeatVal =(short) (heartBeatVal+1); } - OperateResult write = melsecMcNet.Write("D10", heartBeatVal); + OperateResult write = melsecMcNet.Write("D1011", heartBeatVal); +// OperateResult write1 = melsecMcNet.Write("D1001", (short) 0); +// OperateResult write2 = melsecMcNet.Write("D1002", (short) 0); +// OperateResult write3 = melsecMcNet.Write("D1003", (short) 0); +// OperateResult write4 = melsecMcNet.Write("D1004", (short) 0); +// OperateResult write5 = melsecMcNet.Write("D1005", (short) 0); +// OperateResult write6 = melsecMcNet.Write("D1006", (short) 0); +// OperateResult write7 = melsecMcNet.Write("D1007", (short) 0); +// OperateResult write8 = melsecMcNet.Write("D1008", (short) 0); +// OperateResult write9 = melsecMcNet.Write("D1009", (short) 0); +// OperateResult write10 = melsecMcNet.Write("D1010", (short) 0); if (!write.IsSuccess) { - log.error("鍫嗗灈鏈簆lc蹇冭烦閫氳澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + News.error("MelsecCrn"+" - 9"+" - 鍫嗗灈鏈簆lc蹇冭烦閫氳澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); } } @@ -462,4 +482,17 @@ } + // 鎻愪緵涓�涓柟娉曟潵鍋滄绾跨▼ + public void requestStop() { + isRunning = false; + } + + // 鎻愪緵涓�涓柟娉曟潵閲嶅惎绾跨▼ + public Thread restartThread() { + isRunning = true; + Thread newThread = new Thread(this); + newThread.start(); + return newThread; + } + } -- Gitblit v1.9.1