From d75bdc98e2bc456eecfa4003bf700cb701d52a9b Mon Sep 17 00:00:00 2001 From: 野心家 <1051256694@qq.com> Date: 星期五, 23 五月 2025 18:38:56 +0800 Subject: [PATCH] 初始化 --- src/main/java/com/zy/core/thread/RgvThread.java | 180 ++++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 151 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java index 0632ad5..c040606 100644 --- a/src/main/java/com/zy/core/thread/RgvThread.java +++ b/src/main/java/com/zy/core/thread/RgvThread.java @@ -12,6 +12,7 @@ import com.zy.asrs.entity.BasRgvOpt; import com.zy.asrs.service.BasRgvOptService; import com.zy.asrs.service.BasRgvService; +import com.zy.asrs.service.DeviceErrorService; import com.zy.asrs.utils.RouteUtils; import com.zy.asrs.utils.TrackRangeUtils; import com.zy.core.DevpThread; @@ -85,9 +86,10 @@ } } - // 鍚姩璇绘暟鎹嚎绋� + // 鍚姩绾跨▼鑷姩閲嶈繛 new Thread(this::rgvConnect).start(); + // 鍚姩璇绘暟鎹嚎绋� new Thread(this::readStatusRgv).start(); // 鍚姩浠诲姟涓嬪彂绾跨▼ @@ -113,7 +115,13 @@ } } } catch (Exception e) { - log.error("RGV鏁版嵁璇诲彇绾跨▼寮傚父锛侊紒锛�" + e.getMessage()); + log.error("rgv杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + try{ + DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); + deviceErrorService.addDeviceError("rgv", slave.getId(), "rgv杩炴帴澶辫触"+e.getMessage()); + } catch (Exception e2){ + log.error("e2:"+e2.getMessage()); + } initRgv(); // e.printStackTrace(); } @@ -128,7 +136,13 @@ readStatus(); } catch (Exception e) { - log.error("RGV鏁版嵁璇诲彇绾跨▼寮傚父锛侊紒锛�" + e.getMessage()); + log.error("RGV鏁版嵁璇诲彇绾跨▼寮傚父锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + try{ + DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); + deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV鏁版嵁璇诲彇绾跨▼寮傚父"+e.getMessage()); + } catch (Exception e2){ + log.error("e2:"+e2.getMessage()); + } initRgv(); // e.printStackTrace(); } @@ -148,14 +162,20 @@ delRgvTask = false; continue; } - Thread.sleep(100); + Thread.sleep(40); OperateResultExOne<byte[]> result = siemensNet.Read("DB100.12", (short) 1); boolean[] status = siemensNet.getByteTransform().TransBool(result.Content, 0, 1); if (status[0]){ OperateResult result4 = siemensNet.Write("DB100.12.0", false); } } catch (Exception e) { - log.error("RGV鏁版嵁璇诲彇绾跨▼寮傚父锛侊紒锛�" + e.getMessage()); + log.error("RGV鏁版嵁浠诲姟涓嬪彂澶嶄綅绾跨▼寮傚父锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + try{ + DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); + deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV鏁版嵁浠诲姟涓嬪彂澶嶄綅绾跨▼寮傚父"+e.getMessage()); + } catch (Exception e2){ + log.error("e2:"+e2.getMessage()); + } initRgv(); // e.printStackTrace(); } @@ -215,7 +235,13 @@ } } } catch (Exception e) { - log.error("RGV鍙栬揣浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛�" + e.getMessage()); + log.error("RGV浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + try{ + DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); + deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV浠诲姟涓嬪彂绾跨▼寮傚父"+e.getMessage()); + } catch (Exception e2){ + log.error("e2:"+e2.getMessage()); + } // e.printStackTrace(); } } @@ -379,7 +405,13 @@ } } } catch (Exception e) { - log.error("RGV鍙栬揣浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛�" + e.getMessage()); + log.error("RGV浠诲姟涓嬪彂绾跨▼寮傚父锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + try{ + DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); + deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV浠诲姟涓嬪彂绾跨▼寮傚父"+e.getMessage()); + } catch (Exception e2){ + log.error("e2:"+e2.getMessage()); + } // e.printStackTrace(); } } @@ -436,12 +468,18 @@ if (rgvProtocolOther.getStatusType().equals(RgvStatusType.IDLE)) { if ((rgvProtocolOther.getRgvPos() - rgvProtocolOther.getCarBodyJiaoMing()) - (targetPosition + rgvProtocol.getCarBodyKunPeng()) - > avoidDistance) {//鏃犻渶閬胯 + > avoidDistance - 50) {//鏃犻渶閬胯 return true; } else { long avoid = targetPosition + rgvProtocol.getCarBodyKunPeng() + avoidDistance + rgvProtocolOther.getCarBodyJiaoMing(); if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[0])) { - log.error("琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛佷换鍔″紓甯� 鑱旂郴绠$悊鍛橈紒锛侊紒"); + log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + try{ + DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); + deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿"); + } catch (Exception e2){ + log.error("e2:"+e2.getMessage()); + } return false; } long avoidAbs = Math.abs(avoid - rgvProtocolOther.getRgvPos()); @@ -451,17 +489,23 @@ rgvTaskProtocolOther.setAvoid(1); rgvTaskProtocolOther.setAvoidingTheDestination(avoid); RgvTaskCache.updateRgvStatus(rgvTaskProtocolOther); - return true; + return false; } } else if (rgvProtocolOther.getStatusType().equals(RgvStatusType.ROAM)) { if ((rgvProtocolOther.getRgvPosDestination() - rgvProtocolOther.getCarBodyJiaoMing()) - (targetPosition + rgvProtocol.getCarBodyKunPeng()) - > avoidDistance) {//鏃犻渶閬胯 + > avoidDistance - 50) {//鏃犻渶閬胯 return true; } else { long avoid = targetPosition + rgvProtocol.getCarBodyKunPeng() + avoidDistance + rgvProtocolOther.getCarBodyJiaoMing(); if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[0])) { - log.error("琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛佷换鍔″紓甯� 鑱旂郴绠$悊鍛橈紒锛侊紒"); + log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + try{ + DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); + deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿"); + } catch (Exception e2){ + log.error("e2:"+e2.getMessage()); + } return false; } long avoidAbs = Math.abs(avoid - rgvProtocolOther.getRgvPos()); @@ -471,18 +515,24 @@ rgvTaskProtocolOther.setAvoid(1); rgvTaskProtocolOther.setAvoidingTheDestination(avoid); RgvTaskCache.updateRgvStatus(rgvTaskProtocolOther); - return true; + return false; } } else if (rgvProtocolOther.getStatusType().equals(RgvStatusType.WORKING)) { if ((rgvProtocolOther.getRgvPosDestination() - rgvProtocolOther.getCarBodyJiaoMing()) - (targetPosition + rgvProtocol.getCarBodyKunPeng()) - > avoidDistance) {//鏃犻渶閬胯 + > avoidDistance - 50) {//鏃犻渶閬胯 return true; } else { if (rgvProtocolOther.getRgvPosDestination() >= rgvProtocolOther.getRgvPos()-50) { long avoid = rgvProtocolOther.getRgvPos() - rgvProtocolOther.getCarBodyJiaoMing() - avoidDistance - rgvProtocol.getCarBodyKunPeng(); if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[1])) { - log.error("琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛佷换鍔″紓甯� 鑱旂郴绠$悊鍛橈紒锛侊紒"); + log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + try{ + DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); + deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿"); + } catch (Exception e2){ + log.error("e2:"+e2.getMessage()); + } return false; } long avoidAbs = Math.abs(avoid - rgvProtocol.getRgvPos()); @@ -499,7 +549,7 @@ } else { if ((rgvProtocolOther.getRgvPosDestinationOrPos(true) - rgvProtocolOther.getCarBodyJiaoMing()) - (targetPosition + rgvProtocol.getCarBodyKunPeng()) - > avoidDistance) {//鏃犻渶閬胯 + > avoidDistance - 50) {//鏃犻渶閬胯 return true; } } @@ -507,12 +557,18 @@ if (rgvProtocolOther.getStatusType().equals(RgvStatusType.IDLE)) { if ((targetPosition - rgvProtocol.getCarBodyJiaoMing()) - (rgvProtocolOther.getRgvPos() + rgvProtocolOther.getCarBodyKunPeng()) - > avoidDistance) {//鏃犻渶閬胯 + > avoidDistance - 50) {//鏃犻渶閬胯 return true; } else { long avoid = targetPosition - rgvProtocol.getCarBodyJiaoMing() - avoidDistance - rgvProtocolOther.getCarBodyKunPeng(); if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[1])) { - log.error("琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛佷换鍔″紓甯� 鑱旂郴绠$悊鍛橈紒锛侊紒"); + log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + try{ + DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); + deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿"); + } catch (Exception e2){ + log.error("e2:"+e2.getMessage()); + } return false; } long avoidAbs = Math.abs(avoid - rgvProtocolOther.getRgvPos()); @@ -522,17 +578,23 @@ rgvTaskProtocolOther.setAvoid(1); rgvTaskProtocolOther.setAvoidingTheDestination(avoid); RgvTaskCache.updateRgvStatus(rgvTaskProtocolOther); - return true; + return false; } } else if (rgvProtocolOther.getStatusType().equals(RgvStatusType.ROAM)) { if ((targetPosition - rgvProtocol.getCarBodyJiaoMing()) - (rgvProtocolOther.getRgvPosDestination() + rgvProtocolOther.getCarBodyKunPeng()) - > avoidDistance) {//鏃犻渶閬胯 + > avoidDistance - 50) {//鏃犻渶閬胯 return true; } else { long avoid = targetPosition - rgvProtocol.getCarBodyJiaoMing() - avoidDistance - rgvProtocolOther.getCarBodyKunPeng(); if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[1])) { - log.error("琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛佷换鍔″紓甯� 鑱旂郴绠$悊鍛橈紒锛侊紒"); + log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + try{ + DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); + deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿"); + } catch (Exception e2){ + log.error("e2:"+e2.getMessage()); + } return false; } long avoidAbs = Math.abs(avoid - rgvProtocolOther.getRgvPos()); @@ -542,19 +604,25 @@ rgvTaskProtocolOther.setAvoid(1); rgvTaskProtocolOther.setAvoidingTheDestination(avoid); RgvTaskCache.updateRgvStatus(rgvTaskProtocolOther); - return true; + return false; } } else if (rgvProtocolOther.getStatusType().equals(RgvStatusType.WORKING)) { if ((targetPosition - rgvProtocol.getCarBodyJiaoMing()) - (rgvProtocolOther.getRgvPosDestination() + rgvProtocolOther.getCarBodyKunPeng()) - > avoidDistance) {//鏃犻渶閬胯 + > avoidDistance-50) {//鏃犻渶閬胯 return true; } else { if (rgvProtocolOther.getRgvPosDestination() <= rgvProtocolOther.getRgvPos() + 50) { long avoid = rgvProtocolOther.getRgvPos() + rgvProtocolOther.getCarBodyKunPeng() + avoidDistance + rgvProtocol.getCarBodyJiaoMing(); if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[0])) { - log.error("琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛佷换鍔″紓甯� 鑱旂郴绠$悊鍛橈紒锛侊紒"); + log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + try{ + DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); + deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV琛岃蛋瓒呭嚭鑼冨洿"); + } catch (Exception e2){ + log.error("e2:"+e2.getMessage()); + } return false; } long avoidAbs = Math.abs(avoid - rgvProtocol.getRgvPos()); @@ -571,7 +639,7 @@ } else { if ((rgvProtocolOther.getRgvPosDestinationOrPos(false) - rgvProtocolOther.getCarBodyJiaoMing()) - (targetPosition + rgvProtocol.getCarBodyKunPeng()) - > avoidDistance) {//鏃犻渶閬胯 + > avoidDistance - 50) {//鏃犻渶閬胯 return true; } } @@ -607,7 +675,13 @@ rgvProtocol.setStatusEnable(false); } } catch (Exception e) { - log.error("RGV寮傚父锛侊紒锛�" + e.getMessage()); + log.error("RGV寮傚父锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + try{ + DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); + deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV寮傚父"+e.getMessage()); + } catch (Exception e2){ + log.error("e2:"+e2.getMessage()); + } rgvProtocol.setStatusEnable(true); } @@ -640,6 +714,12 @@ // 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()); + try{ + DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); + deviceErrorService.addDeviceError("rgv", slave.getId(), "RGVplc杩炴帴澶辫触"); + } catch (Exception e2){ + log.error("e2:"+e2.getMessage()); + } } initRgv(); // siemensNet.ConnectClose(); @@ -651,7 +731,7 @@ */ private void readStatus() { try { - OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 19); + OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 20); if (result.IsSuccess) { // 鏋勫缓璁惧鐘舵�佸璞� RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId()); @@ -678,8 +758,14 @@ // rgvProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 48)); // OperateResultExOne<byte[]> result11 = siemensNet.Read("DB100.12", (short) 1); - boolean[] status = siemensNet.getByteTransform().TransBool(result.Content, 18, 1); + boolean[] status = siemensNet.getByteTransform().TransBool(result.Content, 18, 2); rgvProtocol.setLoaded(status[0]? (short)1:(short)0); + rgvProtocol.setErr1(status[8]); + rgvProtocol.setErr2(status[9]); + rgvProtocol.setErr3(status[10]); + rgvProtocol.setErr4(status[11]); + rgvProtocol.setErr5(status[12]); + rgvProtocol.setErr6(status[13]); OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛", DateUtils.convert(new Date()), slave.getId())); // // 宸ヤ綅1澶嶄綅淇″彿 @@ -708,6 +794,13 @@ 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()); + + try{ + DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); + deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV plc鏁版嵁搴撴洿鏂板け璐�"); + } catch (Exception e2){ + log.error("e2:"+e2.getMessage()); + } } } catch (Exception ignore) { @@ -722,11 +815,25 @@ connectRgv = false; // 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()); + + try{ + DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); + deviceErrorService.addDeviceError("rgv", slave.getId(), "璇诲彇RGV plc鐘舵�佷俊鎭け璐�"); + } catch (Exception e2){ + log.error("e2:"+e2.getMessage()); + } } } 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())); log.error("璇诲彇RGV plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + + try{ + DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); + deviceErrorService.addDeviceError("rgv", slave.getId(), "璇诲彇RGV plc鐘舵�佷俊鎭け璐�"); + } catch (Exception e2){ + log.error("e2:"+e2.getMessage()); + } initRgv(); } } @@ -736,7 +843,14 @@ */ private boolean write(TaskProtocol taskProtocol) throws InterruptedException { if (null == taskProtocol) { - log.error("RGV鍐欏叆鍛戒护涓虹┖"); + log.error("RGV鍐欏叆鍛戒护涓虹┖ ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + + try{ + DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); + deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV鍐欏叆鍛戒护涓虹┖"); + } catch (Exception e2){ + log.error("e2:"+e2.getMessage()); + } return false; } // convertRow(command); @@ -788,6 +902,14 @@ Thread.sleep(200); this.readStatus(); log.info("RGV 鍛戒护涓嬪彂[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(taskProtocol)); + log.error("RGV 鍛戒护涓嬪彂 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + + try{ + DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); + deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV 鍛戒护涓嬪彂"+JSON.toJSON(taskProtocol)); + } catch (Exception e2){ + log.error("e2:"+e2.getMessage()); + } OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(taskProtocol))); return true; } else { -- Gitblit v1.9.1