From 388353ed9bad250663e8ad8129463d1ea80d46e6 Mon Sep 17 00:00:00 2001 From: lsh <lsh@163.com> Date: 星期四, 24 四月 2025 16:21:25 +0800 Subject: [PATCH] * --- src/main/java/com/zy/core/thread/RgvThread.java | 467 +++++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 379 insertions(+), 88 deletions(-) diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java index 886278b..6c86c58 100644 --- a/src/main/java/com/zy/core/thread/RgvThread.java +++ b/src/main/java/com/zy/core/thread/RgvThread.java @@ -5,6 +5,7 @@ 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.zy.asrs.entity.BasRgv; @@ -12,9 +13,10 @@ import com.zy.asrs.service.BasRgvOptService; import com.zy.asrs.service.BasRgvService; import com.zy.asrs.utils.RouteUtils; +import com.zy.asrs.utils.TrackRangeUtils; import com.zy.core.ThreadHandler; -import com.zy.core.cache.MessageQueue; -import com.zy.core.cache.OutputQueue; +import com.zy.core.cache.*; +import com.zy.core.enums.RgvModeType; import com.zy.core.enums.RgvStatusType; import com.zy.core.enums.RgvTaskModeType; import com.zy.core.enums.SlaveType; @@ -22,11 +24,16 @@ import com.zy.core.model.Task; import com.zy.core.model.command.RgvCommand; import com.zy.core.model.protocol.RgvProtocol; +import com.zy.core.model.protocol.RgvTaskProtocol; +import com.zy.core.model.protocol.TaskProtocol; import lombok.Data; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; import java.text.MessageFormat; import java.util.Date; +import java.util.List; +import java.util.concurrent.ConcurrentHashMap; /** * RGV绾跨▼ @@ -38,7 +45,15 @@ private SiemensS7Net siemensNet; private RgvSlave slave; - private RgvProtocol rgvProtocol; + // private RgvProtocol rgvProtocol; + private TaskProtocolCache taskProtocolCache = new TaskProtocolCache(); + // # 杞ㄩ亾鎬婚暱 + private Long trackEntireLength = 100L; + //# 杞ㄩ亾鍩哄噯鐐� + private Long trackBenchmark = 100L; + // # 閬胯璺濈 + private Long avoidDistance = 100L; + /** * 宸ヤ綅1澶嶄綅淇″彿 */ @@ -55,64 +70,323 @@ @Override @SuppressWarnings("InfiniteLoopStatement") public void run() { - this.connect(); + boolean connect = this.connect(); + if (connect) { + + // 鍚姩璇绘暟鎹嚎绋� + new Thread(this::readStatusRgv).start(); + + // 鍚姩浠诲姟涓嬪彂绾跨▼ + new Thread(this::taskIssued).start(); + + // 鍚姩婕父绾跨▼ + new Thread(this::taskWalkIssued).start(); + } + } + + private void readStatusRgv() { while (true) { try { - int step = 1; - Task task = MessageQueue.poll(SlaveType.Rgv, slave.getId()); - if (task != null) { - step = task.getStep(); - } - switch (step) { - // 璇绘暟鎹� - case 1: - readStatus(); - break; - // 宸ヤ綅1銆�2鍐欏叆鏁版嵁 - case 2: - write((RgvCommand) task.getData()); - break; - // 澶嶄綅 - case 3: - RgvCommand command = (RgvCommand) task.getData(); - if (null == command) { - command = new RgvCommand(); - } - command.setRgvNo(slave.getId()); // RGV缂栧彿 - command.setTaskNo((short) 0); // 宸ヤ綔鍙� - command.setAckFinish((short) 1); // 浠诲姟瀹屾垚纭浣� - command.setTaskMode(RgvTaskModeType.NONE); // 浠诲姟妯″紡 - command.setDestinationStaNo(0L); // 鐩爣绔� - command.setCommand((short)0); - write(command); - break; - default: - break; - } - Thread.sleep(500); + Thread.sleep(100); + + readStatus(); + } catch (Exception e) { - log.error("RGV绾跨▼寮傚父锛侊紒锛�"+e.getMessage()); + log.error("RGV鏁版嵁璇诲彇绾跨▼寮傚父锛侊紒锛�" + e.getMessage()); + initRgv(); // e.printStackTrace(); } } + + } + + /** + * 婕父 + */ + private void taskWalkIssued() { + while (true) { + try { + // 浼戠湢 1 绉� + Thread.sleep(100); + + if (!deviceDetection()) { + continue; + } + RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId()); + if (rgvTaskProtocol == null) { + initRgv(); + rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId()); + } + if (rgvTaskProtocol.getAvoid() != 1) { + continue; + } + TaskProtocol issued = new TaskProtocol(); + issued.setTaskNo(32222L); + issued.setTargetPosition(rgvTaskProtocol.getAvoidingTheDestination()); + write(issued); + rgvTaskProtocol.setAvoid(0); + + Thread.sleep(200); + RgvTaskCache.updateRgvStatus(rgvTaskProtocol); + + } catch (Exception e) { + log.error("RGV琛岃蛋浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛�" + e.getMessage()); +// e.printStackTrace(); + } + } + } + + /** + * 浠诲姟涓嬪彂 + */ + private void taskIssued() { + while (true) { + try { + // 浼戠湢 1 绉� + Thread.sleep(100); + if (!deviceDetection()) { + continue; + } + RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId()); + RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId()); + if (rgvProtocol == null || rgvTaskProtocol == null) { + initRgv(); + rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId()); + rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId()); + } + if (rgvTaskProtocol.getAvoid() != 0) { + continue; + } + + List<TaskProtocol> allTakeTaskProtocol = taskProtocolCache.getTakeOrPutTaskProtocol(rgvProtocol.getLoaded()); + for (TaskProtocol taskProtocol : allTakeTaskProtocol) { + if (taskProtocol.getIsRunning() == 1) {//鍑嗗涓嬪彂 + RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId()); + //鍙岃溅 + if (rgvOtherStatusEnable()) { + //鍙︿竴鍙拌溅鏄惁鍏佽姝ゅ彴杞︽墽琛� + if (!otherRgvAvoid(taskProtocol.getTargetPosition())) { + continue; + } + } + Thread.sleep(100); + TaskProtocol issued = new TaskProtocol(taskProtocol); + write(issued); + taskProtocol.setIsRunning(taskProtocol.getIsRunning() + 1); + taskProtocolCache.updateTaskProtocol(taskProtocol); + break; + } + } + } catch (Exception e) { + log.error("RGV鍙栬揣浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛�" + e.getMessage()); +// e.printStackTrace(); + } + } + } + + public boolean deviceDetection() { + RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId()); + RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId()); + + if (rgvProtocol == null || rgvTaskProtocol == null) { + return false; + } + if (!rgvProtocol.getModeType().equals(RgvModeType.AUTO) || rgvProtocol.getRgvPos().equals(0L) || rgvTaskProtocol.getAvoid() == -1 || rgvProtocol.getRgvPosDestination() == 0L + || (!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM))) { + return false; + } + RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId()); + RgvTaskProtocol rgvTaskProtocolOther = RgvTaskCache.getRgvStatus(slave.getOtherId()); + + if (rgvProtocolOther == null) { + return false; + } + if (rgvProtocolOther.statusEnable) { + if (!rgvProtocolOther.getModeType().equals(RgvModeType.AUTO) || rgvProtocolOther.getRgvPos().equals(0L) || rgvTaskProtocolOther.getAvoid() == -1 || rgvProtocolOther.getRgvPosDestination() == 0L) { + return false; + } + } + return true; + } + + public boolean rgvOtherStatusEnable() { + RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId()); + if (rgvProtocolOther == null) { + return true; + } + if (rgvProtocolOther.statusEnable) { +// if (!rgvProtocolOther.getModeType().equals(RgvModeType.AUTO) || rgvProtocolOther.getRgvPos().equals(0L)) { + return true; +// } + } + return false; + } + + public boolean otherRgvAvoid(Long targetPosition) { + RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId()); + RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId()); + + RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId()); + RgvTaskProtocol rgvTaskProtocolOther = RgvTaskCache.getRgvStatus(slave.getOtherId()); + Long[][] avoidRange = new TrackRangeUtils().avoidRange(slave, trackEntireLength, trackBenchmark, avoidDistance); + + if (new TrackRangeUtils().IsItSmall(slave)) { + + if (rgvProtocolOther.getStatusType().equals(RgvStatusType.IDLE)) { + if ((rgvProtocolOther.getRgvPos() - rgvProtocolOther.getCarBodyJiaoMing()) + - (targetPosition + rgvProtocol.getCarBodyKunPeng()) + > avoidDistance) {//鏃犻渶閬胯 + return true; + } else { + long avoid = targetPosition + rgvProtocol.getCarBodyKunPeng() + avoidDistance + rgvProtocolOther.getCarBodyJiaoMing(); + if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[0])) { + log.error("琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛佷换鍔″紓甯� 鑱旂郴绠$悊鍛橈紒锛侊紒"); + return false; + } + rgvTaskProtocolOther.setAvoid(1); + rgvTaskProtocolOther.setAvoidingTheDestination(avoid); + RgvTaskCache.updateRgvStatus(rgvTaskProtocolOther); + return true; + } + } else if (rgvProtocolOther.getStatusType().equals(RgvStatusType.ROAM)) { + if ((rgvProtocolOther.getRgvPosDestination() - rgvProtocolOther.getCarBodyJiaoMing()) + - (targetPosition + rgvProtocol.getCarBodyKunPeng()) + > avoidDistance) {//鏃犻渶閬胯 + return true; + } else { + long avoid = targetPosition + rgvProtocol.getCarBodyKunPeng() + avoidDistance + rgvProtocolOther.getCarBodyJiaoMing(); + if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[0])) { + log.error("琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛佷换鍔″紓甯� 鑱旂郴绠$悊鍛橈紒锛侊紒"); + return false; + } + rgvTaskProtocolOther.setAvoid(1); + rgvTaskProtocolOther.setAvoidingTheDestination(avoid); + RgvTaskCache.updateRgvStatus(rgvTaskProtocolOther); + return true; + } + } else if (rgvProtocolOther.getStatusType().equals(RgvStatusType.WORKING)) { + if ((rgvProtocolOther.getRgvPosDestination() - rgvProtocolOther.getCarBodyJiaoMing()) + - (targetPosition + rgvProtocol.getCarBodyKunPeng()) + > avoidDistance) {//鏃犻渶閬胯 + return true; + } else { + if (rgvProtocolOther.getRgvPosDestination() >= rgvProtocolOther.getRgvPos()) { + long avoid = rgvProtocolOther.getRgvPos() - rgvProtocolOther.getCarBodyJiaoMing() - avoidDistance - rgvProtocol.getCarBodyKunPeng(); + if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[1])) { + log.error("琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛佷换鍔″紓甯� 鑱旂郴绠$悊鍛橈紒锛侊紒"); + return false; + } + rgvTaskProtocol.setAvoid(1); + rgvTaskProtocol.setAvoidingTheDestination(avoid); + RgvTaskCache.updateRgvStatus(rgvTaskProtocol); + return false; + } + return false; + } + } + } else { + if (rgvProtocolOther.getStatusType().equals(RgvStatusType.IDLE)) { + if ((targetPosition - rgvProtocol.getCarBodyJiaoMing()) + - (rgvProtocolOther.getRgvPos() + rgvProtocolOther.getCarBodyKunPeng()) + > avoidDistance) {//鏃犻渶閬胯 + return true; + } else { + long avoid = targetPosition - rgvProtocol.getCarBodyJiaoMing() - avoidDistance - rgvProtocolOther.getCarBodyKunPeng(); + if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[1])) { + log.error("琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛佷换鍔″紓甯� 鑱旂郴绠$悊鍛橈紒锛侊紒"); + return false; + } + rgvTaskProtocolOther.setAvoid(1); + rgvTaskProtocolOther.setAvoidingTheDestination(avoid); + RgvTaskCache.updateRgvStatus(rgvTaskProtocolOther); + return true; + } + } else if (rgvProtocolOther.getStatusType().equals(RgvStatusType.ROAM)) { + if ((targetPosition - rgvProtocol.getCarBodyJiaoMing()) + - (rgvProtocolOther.getRgvPosDestination() + rgvProtocolOther.getCarBodyKunPeng()) + > avoidDistance) {//鏃犻渶閬胯 + return true; + } else { + long avoid = targetPosition - rgvProtocol.getCarBodyJiaoMing() - avoidDistance - rgvProtocolOther.getCarBodyKunPeng(); + if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[1])) { + log.error("琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛佷换鍔″紓甯� 鑱旂郴绠$悊鍛橈紒锛侊紒"); + return false; + } + rgvTaskProtocolOther.setAvoid(1); + rgvTaskProtocolOther.setAvoidingTheDestination(avoid); + RgvTaskCache.updateRgvStatus(rgvTaskProtocolOther); + return true; + } + + } else if (rgvProtocolOther.getStatusType().equals(RgvStatusType.WORKING)) { + if ((targetPosition - rgvProtocol.getCarBodyJiaoMing()) + - (rgvProtocolOther.getRgvPosDestination() + rgvProtocolOther.getCarBodyKunPeng()) + > avoidDistance) {//鏃犻渶閬胯 + return true; + } else { + if (rgvProtocolOther.getRgvPosDestination() <= rgvProtocolOther.getRgvPos()) { + long avoid = rgvProtocolOther.getRgvPos() + rgvProtocolOther.getCarBodyKunPeng() + avoidDistance + rgvProtocol.getCarBodyJiaoMing(); + if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[0])) { + log.error("琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛佷换鍔″紓甯� 鑱旂郴绠$悊鍛橈紒锛侊紒"); + return false; + } + rgvTaskProtocol.setAvoid(1); + rgvTaskProtocol.setAvoidingTheDestination(avoid); + RgvTaskCache.updateRgvStatus(rgvTaskProtocol); + return false; + } + return false; + } + } + } + return false; } /** * 鍒濆鍖朢GV鐘舵�� */ private void initRgv() { - if (null == rgvProtocol) { + RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId()); + if (rgvProtocol == null) { rgvProtocol = new RgvProtocol(); + rgvProtocol.setRgvNo(slave.getId()); } rgvProtocol.setMode((short) -1); - rgvProtocol.setStatus((short)-1); - rgvProtocol.setWalkPos((short)0); + rgvProtocol.setStatus((short) -1); + rgvProtocol.setWalkPos((short) 0); rgvProtocol.setRgvPos(0L); - rgvProtocol.setAlarm((short)0); + rgvProtocol.setAlarm((short) 0); rgvProtocol.setxSpeed((short) 0); rgvProtocol.setxDistance((short) 0); rgvProtocol.setxDuration((short) 0); + rgvProtocol.setCarBodyJiaoMing(0L); + rgvProtocol.setCarBodyKunPeng(0L); + try { + BasRgvService basRgvService = SpringUtils.getBean(BasRgvService.class); + BasRgv rgv = basRgvService.selectById(slave.getId()); + if (!Cools.isEmpty(rgv)) { + rgvProtocol.setStatusEnable(rgv.getStatus() == 1); + } else { + rgvProtocol.setStatusEnable(false); + } + } catch (Exception e) { + log.error("RGV寮傚父锛侊紒锛�" + e.getMessage()); + rgvProtocol.setStatusEnable(true); + } + + RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId()); + if (rgvTaskProtocol == null) { + rgvTaskProtocol = new RgvTaskProtocol(); + rgvTaskProtocol.setRgvNo(slave.getId()); + } + rgvTaskProtocol.setAvoid(-1); + rgvTaskProtocol.setAvoidingTheDestination(0L); + + RgvStatusCache.updateRgvStatus(rgvProtocol); + + RgvTaskCache.updateRgvStatus(rgvTaskProtocol); + } @Override @@ -122,15 +396,16 @@ siemensNet.setRack(slave.getRack().byteValue()); siemensNet.setSlot(slave.getSlot().byteValue()); OperateResult connect = siemensNet.ConnectServer(); - if(connect.IsSuccess){ + if (connect.IsSuccess) { result = true; - OutputQueue.RGV.offer(MessageFormat.format( "銆恵0}銆慠GV plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); +// OutputQueue.RGV.offer(MessageFormat.format( "銆恵0}銆慠GV plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); log.info("RGV plc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); } else { - OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慠GV plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); +// OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慠GV plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); log.error("RGV plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); - initRgv(); + } + initRgv(); // siemensNet.ConnectClose(); return result; } @@ -138,11 +413,13 @@ /** * 璇诲彇鐘舵�� */ - private void readStatus(){ + private void readStatus() { try { OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 34); if (result.IsSuccess) { - if (null == rgvProtocol) { + // 鏋勫缓璁惧鐘舵�佸璞� + RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId()); + if (rgvProtocol == null) { rgvProtocol = new RgvProtocol(); rgvProtocol.setRgvNo(slave.getId()); } @@ -154,38 +431,50 @@ // rgvProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 40)); // rgvProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 48)); - OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId())); - // 宸ヤ綅1澶嶄綅淇″彿 - if (rgvProtocol.getStatusType().equals(RgvStatusType.WAITING) - || rgvProtocol.getStatusType().equals(RgvStatusType.FETCHWAITING)) { - if (resetFlag1) { - RgvCommand rgvCommand = new RgvCommand(); - rgvCommand.setAckFinish1((short)1); - if (write(rgvCommand)) { - resetFlag1 = false; - } - } - } + OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛", DateUtils.convert(new Date()), slave.getId())); +// // 宸ヤ綅1澶嶄綅淇″彿 +// if (rgvProtocol.getStatusType().equals(RgvStatusType.WAITING) +// || rgvProtocol.getStatusType().equals(RgvStatusType.FETCHWAITING)) { +// if (resetFlag1) { +// RgvCommand rgvCommand = new RgvCommand(); +// rgvCommand.setAckFinish1((short)1); +// if (write(rgvCommand)) { +// resetFlag1 = false; +// } +// } +// } try { // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴� BasRgvService basRgvService = SpringUtils.getBean(BasRgvService.class); - BasRgv basRgv = new BasRgv(); + BasRgv basRgv = basRgvService.selectById(slave.getId()); + if (!Cools.isEmpty(basRgv)) { + rgvProtocol.setStatusEnable(basRgv.getStatus() == 1); + } else { + rgvProtocol.setStatusEnable(false); + } +// BasRgv basRgv = new BasRgv(); basRgv.setRgvNo(slave.getId()); - basRgv.setRgvSts((int)rgvProtocol.getMode()); - if (!basRgvService.updateById(rgvProtocol.toSqlModel(basRgv))){ + basRgv.setRgvSts((int) rgvProtocol.getMode()); + if (!basRgvService.updateById(rgvProtocol.toSqlModel(basRgv))) { log.error("RGV plc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); } - } catch (Exception ignore){} + } catch (Exception ignore) { + + } + + + // 鏇存柊缂撳瓨 + RgvStatusCache.updateRgvStatus(rgvProtocol); } else { initRgv(); - OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戣鍙朢GV plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); +// OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戣鍙朢GV plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot())); log.error("璇诲彇RGV plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); } } catch (Exception e) { - e.printStackTrace(); - OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戣鍙朢GV plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); +// e.printStackTrace(); +// OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戣鍙朢GV plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); log.error("璇诲彇RGV plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); initRgv(); } @@ -194,52 +483,54 @@ /** * 鍐欏叆鏁版嵁 */ - private boolean write(RgvCommand command) throws InterruptedException { - if (null == command) { + private boolean write(TaskProtocol taskProtocol) throws InterruptedException { + if (null == taskProtocol) { log.error("RGV鍐欏叆鍛戒护涓虹┖"); return false; } // convertRow(command); - command.setRgvNo(slave.getId()); - short[] array = new short[11]; - array[0] = command.getAckFinish1(); - array[1] = command.getTaskNo(); - array[2] = command.getTaskMode(); +// taskProtocol.setRgvNo(slave.getId()); + Long[] array = new Long[11]; +// array[0] = taskProtocol.getAckFinish1(); + array[1] = taskProtocol.getTaskNo(); +// array[2] = taskProtocol.getTaskMode(); // array[4] = command.getDestinationStaNo(); - array[10] = command.getCommand(); - OperateResult result = siemensNet.Write("DB100.0", array); +// array[10] = taskProtocol.getCommand(); + OperateResult result = siemensNet.Write("DB100.0", taskProtocol.getTaskNo()); + OperateResult result1 = siemensNet.Write("DB100.1", taskProtocol.isDirection()); // 鎵ц鏂瑰悜锛堥潰鏈濊建閬� 瀹氫綅鍊煎乏灏忓彸澶э級 true:宸� false:鍙� - if (command.getAckFinish1() == 0) { - short commandFinish = 3; //宸ヤ綅1銆�2浠诲姟鍚屾椂鍐欏叆 - Thread.sleep(100L); - result = siemensNet.Write("DB100.20", commandFinish); - } +// if (taskProtocol.getAckFinish1() == 0) { +// short commandFinish = 3; //宸ヤ綅1銆�2浠诲姟鍚屾椂鍐欏叆 +// Thread.sleep(100L); +// result = siemensNet.Write("DB100.20", commandFinish); +// } try { // 鏃ュ織璁板綍 BasRgvOptService bean = SpringUtils.getBean(BasRgvOptService.class); BasRgvOpt basRgvOpt = new BasRgvOpt( - command.getTaskNo().intValue(), - command.getTaskNo().intValue(), - command.getRgvNo(), + taskProtocol.getTaskNo().intValue(), + taskProtocol.getTaskNo().intValue(), + slave.getId(), new Date(), - command.getTaskModeType().toString(), + String.valueOf(taskProtocol.getTaskStatus()), null, null, null, - command.getDestinationStaNo().intValue(), + result.IsSuccess ? 1 : 0, null, new Date(), null ); bean.insert(basRgvOpt); - } catch (Exception ignore) {} + } catch (Exception ignore) { + } if (result != null && result.IsSuccess) { Thread.sleep(200); this.readStatus(); - log.info("RGV 鍛戒护涓嬪彂[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); - OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); + log.info("RGV 鍛戒护涓嬪彂[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(taskProtocol)); + OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(taskProtocol))); return true; } else { OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戝啓鍏GV plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); -- Gitblit v1.9.1