From aac4bc5bdfd808fa7d33ee04924741a4c03944fc Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期二, 19 九月 2023 11:18:53 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/thread/LiftThread.java | 109 +++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 75 insertions(+), 34 deletions(-) diff --git a/src/main/java/com/zy/core/thread/LiftThread.java b/src/main/java/com/zy/core/thread/LiftThread.java index 3e0bafd..971b4ff 100644 --- a/src/main/java/com/zy/core/thread/LiftThread.java +++ b/src/main/java/com/zy/core/thread/LiftThread.java @@ -1,9 +1,7 @@ package com.zy.core.thread; -import HslCommunication.Core.Transfer.DataFormat; import HslCommunication.Core.Types.OperateResult; import HslCommunication.Core.Types.OperateResultExOne; -import HslCommunication.ModBus.ModbusTcpNet; import HslCommunication.Profinet.Siemens.SiemensPLCS; import HslCommunication.Profinet.Siemens.SiemensS7Net; import com.alibaba.fastjson.JSON; @@ -12,23 +10,19 @@ import com.core.exception.CoolException; import com.zy.asrs.entity.BasLift; import com.zy.asrs.entity.BasLiftOpt; -import com.zy.asrs.entity.WrkMast; import com.zy.asrs.mapper.WrkMastMapper; import com.zy.asrs.service.BasLiftOptService; import com.zy.asrs.service.BasLiftService; -import com.zy.asrs.utils.Utils; -import com.zy.common.utils.CommonUtils; import com.zy.common.utils.RedisUtil; -import com.zy.core.DevpThread; import com.zy.core.News; import com.zy.core.ThreadHandler; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.OutputQueue; -import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.*; import com.zy.core.model.LiftSlave; import com.zy.core.model.Task; import com.zy.core.model.command.*; +import com.zy.core.model.protocol.LiftStaProtocol; import com.zy.core.model.protocol.LiftProtocol; import com.zy.core.model.protocol.StaProtocol; import lombok.Data; @@ -50,10 +44,20 @@ private LiftSlave slave; private LiftProtocol liftProtocol; private RedisUtil redisUtil; + private List<LiftStaProtocol> liftStaProtocols = new ArrayList<>(); public LiftThread(LiftSlave slave,RedisUtil redisUtil) { this.slave = slave; this.redisUtil = redisUtil; + + //鍒濆鍖栫珯鐐� + for (LiftSlave.Sta sta : this.slave.getSta()) { + LiftStaProtocol liftStaProtocol = new LiftStaProtocol(); + liftStaProtocol.setStaNo(sta.getStaNo());//绔欑偣鍙� + liftStaProtocol.setLev(sta.getLev());//绔欑偣妤煎眰 + liftStaProtocols.add(liftStaProtocol); + } + } @Override @@ -136,50 +140,47 @@ private void readStatus() { try { - OperateResultExOne<byte[]> result = siemensS7Net.Read("M100.0", (short) 28); - if (result.IsSuccess) { + //鑾峰彇鎻愬崌鏈烘暟鎹� + OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB4.0", (short) 10); + if (result1.IsSuccess) { if (null == liftProtocol) { liftProtocol = new LiftProtocol(); liftProtocol.setLiftNo(slave.getId().shortValue()); } - - //----------璇诲彇鎻愬崌鏈虹姸鎬�----------- - //鑾峰彇鏁版嵁 - byte[] content = result.Content; + //璇诲彇4.0-4.7鏁版嵁 + boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result1.Content, 0, 1); + //璇诲彇5.0-5.7鏁版嵁 + boolean[] status2 = siemensS7Net.getByteTransform().TransBool(result1.Content, 1, 1); //妯″紡 - liftProtocol.setModel(siemensS7Net.getByteTransform().TransBool(content, 0)); + liftProtocol.setModel(status1[0]); //蹇欓棽 - liftProtocol.setBusy(siemensS7Net.getByteTransform().TransBool(content, 1)); + liftProtocol.setBusy(status1[1]); //鍓嶈秴闄� - liftProtocol.setFrontOverrun(siemensS7Net.getByteTransform().TransBool(content, 7)); + liftProtocol.setFrontOverrun(status1[4]); //鍚庤秴闄� - liftProtocol.setBackOverrun(siemensS7Net.getByteTransform().TransBool(content, 8)); + liftProtocol.setBackOverrun(status1[5]); //宸﹁秴闄� - liftProtocol.setLeftOverrun(siemensS7Net.getByteTransform().TransBool(content, 9)); + liftProtocol.setLeftOverrun(status1[6]); //鍙宠秴闄� - liftProtocol.setRightOverrun(siemensS7Net.getByteTransform().TransBool(content, 10)); + liftProtocol.setRightOverrun(status1[7]); //瓒呴珮 - liftProtocol.setOverHeight(siemensS7Net.getByteTransform().TransBool(content, 11)); + liftProtocol.setOverHeight(status2[0]); //瓒呴噸 - liftProtocol.setOverWeight(siemensS7Net.getByteTransform().TransBool(content, 12)); + liftProtocol.setOverWeight(status2[1]); //鏈夋墭鐩� - liftProtocol.setHasTray(siemensS7Net.getByteTransform().TransBool(content, 16)); + liftProtocol.setHasTray(status2[5]); //鏈夊皬杞� - liftProtocol.setHasCar(siemensS7Net.getByteTransform().TransBool(content, 17)); + liftProtocol.setHasCar(status2[6]); //璁惧鏁呴殰 - liftProtocol.setDeviceError(siemensS7Net.getByteTransform().TransBool(content, 18)); + liftProtocol.setDeviceError(status2[7]); //浠诲姟鍙� - liftProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt16(content, 19)); - //浠诲姟鍦板潃 - liftProtocol.setTaskAddress(siemensS7Net.getByteTransform().TransInt16(content, 21)); + liftProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt16(result1.Content, 2)); //鐩殑鍦板潃 - liftProtocol.setDistAddress(siemensS7Net.getByteTransform().TransInt16(content, 21)); + liftProtocol.setDistAddress(siemensS7Net.getByteTransform().TransInt16(result1.Content, 4)); //宸插畬鎴愪换鍔″彿 - liftProtocol.setCompleteTaskNo(siemensS7Net.getByteTransform().TransInt16(content, 23)); + liftProtocol.setCompleteTaskNo(siemensS7Net.getByteTransform().TransInt16(result1.Content, 6)); //褰撳墠妤煎眰 - liftProtocol.setLev(siemensS7Net.getByteTransform().TransInt16(content, 25)); - - ///璇诲彇鎻愬崌鏈虹姸鎬�-end + liftProtocol.setLev(siemensS7Net.getByteTransform().TransInt16(result1.Content, 8)); //灏嗘彁鍗囨満鐘舵�佷繚瀛樿嚦鏁版嵁搴� BasLiftService liftService = SpringUtils.getBean(BasLiftService.class); @@ -205,7 +206,6 @@ basLift.setHasTray(liftProtocol.getHasTray()); basLift.setHasCar(liftProtocol.getHasCar()); basLift.setDeviceError(liftProtocol.getDeviceError()); - basLift.setTaskAddress(liftProtocol.getTaskAddress().intValue()); basLift.setDistAddress(liftProtocol.getDistAddress().intValue()); basLift.setCompleteTaskNo(liftProtocol.getCompleteTaskNo().intValue()); basLift.setLev(liftProtocol.getLev().intValue()); @@ -213,11 +213,52 @@ OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); // log.info(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); } - }else { OutputQueue.LIFT.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())); } + Thread.sleep(200); + + //鑾峰彇鎻愬崌鏈虹珯鐐规暟鎹� + OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB14.0", (short) (10 * liftStaProtocols.size())); + if (result1.IsSuccess) { + for (int i = 0; i < slave.getSta().size(); i++) { + LiftStaProtocol liftStaProtocol = liftStaProtocols.get(i); + int i1 = 0 + (i * 10); + int i2 = 1 + (i * 10); + //璇诲彇x4.0-x4.7鏁版嵁 + boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result2.Content, i1, 1); + //璇诲彇x5.0-x5.7鏁版嵁 + boolean[] status2 = siemensS7Net.getByteTransform().TransBool(result2.Content, i2, 1); + //妯″紡 + liftStaProtocol.setModel(status1[0]); + //蹇欓棽 + liftStaProtocol.setBusy(status1[1]); + //鏈夋墭鐩� + liftStaProtocol.setHasTray(status1[2]); + //鍓嶈秴闄� + liftStaProtocol.setFrontOverrun(status1[4]); + //鍚庤秴闄� + liftStaProtocol.setBackOverrun(status1[5]); + //宸﹁秴闄� + liftStaProtocol.setLeftOverrun(status1[6]); + //鍙宠秴闄� + liftStaProtocol.setRightOverrun(status1[7]); + //瓒呴珮 + liftStaProtocol.setOverHeight(status2[0]); + //瓒呴噸 + liftStaProtocol.setOverWeight(status2[1]); + //鏈夊皬杞� + liftStaProtocol.setHasCar(status2[6]); + //璁惧鏁呴殰 + liftStaProtocol.setDeviceError(status2[7]); + //浠诲姟鍙� + liftStaProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt16(result2.Content, 2)); + //宸插畬鎴愪换鍔″彿 + liftStaProtocol.setCompleteTaskNo(siemensS7Net.getByteTransform().TransInt16(result2.Content, 6)); + } + } + } catch (Exception e) { OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戞彁鍗囨満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); } -- Gitblit v1.9.1