From 3fd78eacff528f59e625be99ebadfb7609c8f265 Mon Sep 17 00:00:00 2001 From: lsh <lsh@163.com> Date: 星期五, 21 六月 2024 14:36:35 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/thread/JarThread.java | 132 ++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 120 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/zy/core/thread/JarThread.java b/src/main/java/com/zy/core/thread/JarThread.java index f185a81..1684250 100644 --- a/src/main/java/com/zy/core/thread/JarThread.java +++ b/src/main/java/com/zy/core/thread/JarThread.java @@ -4,11 +4,15 @@ import HslCommunication.Core.Types.OperateResultExOne; import HslCommunication.Profinet.Siemens.SiemensPLCS; import HslCommunication.Profinet.Siemens.SiemensS7Net; +import com.alibaba.fastjson.JSON; +import com.core.common.Cools; import com.core.common.DateUtils; import com.core.common.SpringUtils; import com.core.exception.CoolException; import com.zy.asrs.entity.BasJar; +import com.zy.asrs.entity.BasSteOpt; import com.zy.asrs.service.BasJarService; +import com.zy.asrs.service.BasSteOptService; import com.zy.core.News; import com.zy.core.ThreadHandler; import com.zy.core.cache.MessageQueue; @@ -17,7 +21,9 @@ import com.zy.core.enums.SlaveType; import com.zy.core.model.JarSlave; import com.zy.core.model.Task; +import com.zy.core.model.command.SteCommand; import com.zy.core.model.protocol.JarProtocol; +import com.zy.core.model.protocol.StaProtocol; import lombok.Data; import lombok.extern.slf4j.Slf4j; @@ -57,6 +63,10 @@ // 璇绘暟鎹� case 1: readStatus(); + break; + // 鍐欐暟鎹� ID+鐩爣绔� + case 2: + write(null); break; default: break; @@ -110,23 +120,21 @@ */ private void readStatus(){ try { - OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) 10); + OperateResultExOne<byte[]> result = siemensS7Net.Read("V300", (short) 26); if (result.IsSuccess) { if (null == jarProtocol) { jarProtocol = new JarProtocol(); jarProtocol.setJarNo(slave.getId()); } - jarProtocol.setMode(siemensS7Net.getByteTransform().TransInt32(result.Content, 2)); - jarProtocol.setLeftDoor(siemensS7Net.getByteTransform().TransBool(result.Content, 4));//宸﹂棬鐘舵�� - jarProtocol.setRightDoor(siemensS7Net.getByteTransform().TransBool(result.Content, 4));//鍙抽棬鐘舵�� - jarProtocol.setLeftInEnable(siemensS7Net.getByteTransform().TransBool(result.Content, 4));//宸﹂棬鍙紑 - jarProtocol.setLeftOutEnable(siemensS7Net.getByteTransform().TransBool(result.Content, 4));//宸﹂棬鍙叧 - jarProtocol.setRightInEnable(siemensS7Net.getByteTransform().TransBool(result.Content, 4));//鍙抽棬鍙紑 - jarProtocol.setRightOutEnable(siemensS7Net.getByteTransform().TransBool(result.Content, 4));//鍙抽棬鍙叧 - jarProtocol.setAutoing(siemensS7Net.getByteTransform().TransBool(result.Content, 4));//鑷� - jarProtocol.setJarErr(siemensS7Net.getByteTransform().TransInt32(result.Content, 4));//寮傚父鐮� - - + jarProtocol.setMode((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 0)); + jarProtocol.setLeftDoor(siemensS7Net.getByteTransform().TransInt16(result.Content, 2) != 0);//宸﹂棬鐘舵�� + jarProtocol.setRightDoor(siemensS7Net.getByteTransform().TransInt16(result.Content, 4) != 0);//鍙抽棬鐘舵�� + jarProtocol.setLeftInEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, 6) != 0);//宸﹂棬鍙紑 + jarProtocol.setLeftOutEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, 8) != 0);//宸﹂棬鍙叧 + jarProtocol.setRightInEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, 10) != 0);//鍙抽棬鍙紑 + jarProtocol.setRightOutEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, 12) != 0);//鍙抽棬鍙叧 + jarProtocol.setJarErr((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 14));//寮傚父鐮� + jarProtocol.setAutoing(siemensS7Net.getByteTransform().TransInt16(result.Content, 16) != 0);//妯″紡 // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴� BasJarService service = SpringUtils.getBean(BasJarService.class); if (null != service) { @@ -151,6 +159,106 @@ } + /** + * 鍐欏叆鏁版嵁 + */ + private synchronized boolean write(SteCommand command){ + if (null == command) { + News.error("绌挎杞﹀啓鍏ュ懡浠や负绌�"); + return false; + } + command.setSteNo(slave.getId()); + OperateResult result = null; + // 寮�濮嬩换鍔� + if (!command.getComplete()) { + //缁勭粐浠诲姟鍓嶏紝鍏堟竻绌哄啓浠诲姟纭浣嶏紝浠ュ強浠诲姟瀹屾垚纭浣� + OperateResult result01 = siemensS7Net.Write("V2000.0", false); + OperateResult result02 = siemensS7Net.Write("V2000.1", false); + // 1.浠诲姟鍙� + OperateResult result0 = siemensS7Net.Write("V998", command.getTaskNo().shortValue()); + try { + Thread.sleep(200); + } catch (InterruptedException e) { + e.printStackTrace(); + } + // 浣滀笟 + if (command.getTaskMode() != 0) { + // 2.浣滀笟 + OperateResult result1 = siemensS7Net.Write("V1000", command.getTaskMode()); + // 3.纭寮�濮嬩换鍔� + if (result0.IsSuccess && result1.IsSuccess) { + result = siemensS7Net.Write("V2000.0", true); + } + } + + // 浠诲姟瀹屾垚 + } else { + siemensS7Net.Write("V998", (short) 0); + siemensS7Net.Write("V1000", (short) 0); + siemensS7Net.Write("V2000.0", false); + result = siemensS7Net.Write("V2000.1", true); + } + + try { + // 鏃ュ織璁板綍 + if (!command.getComplete() && command.getTaskMode() != 0) { + BasSteOptService bean = SpringUtils.getBean(BasSteOptService.class); + if (null != bean) { + BasSteOpt basSteOpt = new BasSteOpt( + command.getTaskNo(), // 浠诲姟鍙� + command.getSteNo(), // 绌挎杞� + new Date(), // 涓嬪彂鏃堕棿 + command.getTaskModeType().desc, // 浣滀笟 + null, // 婧愭帓 + null, // 婧愬垪 + null, // 婧愬眰 + null, // 婧愮珯 + null, // 鐩爣鎺� + null, // 鐩爣鍒� + null, // 鐩爣灞� + null, // 鐩爣绔� + null, // 鍝嶅簲缁撴灉 + null, // 淇敼鏃堕棿 + null, // 淇敼浜哄憳 + null // 澶囨敞 + ); + bean.insert(basSteOpt); + } + } + + } catch (Exception ignore) {} + + if (result != null && result.IsSuccess) { + + + News.info("绌挎杞﹀懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); + OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); + + try { + Thread.sleep(500); + } catch (Exception e){ + + } + OperateResultExOne<byte[]> result1 = siemensS7Net.Read("V998", (short) 4); + if (result1.IsSuccess) { + short taskNo = siemensS7Net.getByteTransform().TransInt16(result1.Content, 0); + short taskType = siemensS7Net.getByteTransform().TransInt16(result1.Content, 2); +// readStatus(); + } + return true; + } else { + OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆戝啓鍏ョ┛姊溅plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); + News.error("鍐欏叆绌挎杞lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + + //鍐欏叆澶辫触鍚庯紝閲嶆柊娣诲姞commanddao 浠诲姟闃熷垪涓�,骞剁珛鍗冲洖璇讳竴娆¤澶囩姸鎬� +// MessageQueue.offer(SlaveType.Ste, slave.getId(), new Task(2, command)); +// readStatus(); + + initSte(); + return false; + } + } + @Override public void close() { // siemensS7Net.ConnectClose(); -- Gitblit v1.9.1