From 62aa9d143a12ba3c8094dc9542c11c83b2c0c6d1 Mon Sep 17 00:00:00 2001
From: 野心家 <1051256694@qq.com>
Date: 星期日, 25 五月 2025 11:00:27 +0800
Subject: [PATCH] 初始化
---
src/main/java/com/zy/core/thread/RgvThread.java | 11 +++
src/main/java/com/zy/core/thread/SiemensCrnThread.java | 47 ++++++++++++++-
src/main/java/com/zy/core/cache/TaskProtocolCache.java | 21 +++++++
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 87 +++++++++++++++--------------
4 files changed, 121 insertions(+), 45 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 540bbb8..c04fb9f 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -828,7 +828,7 @@
crnCommand.setDestinationPosX(Utils.getRowShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鍒�
crnCommand.setDestinationPosY(Utils.getBayShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅灞�
crnCommand.setDestinationPosZ(Utils.getLevShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鎺�
- crnCommand.setCommand((short) 1);
+// crnCommand.setCommand((short) 1);
if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand))) {
log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand));
throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
@@ -1056,7 +1056,7 @@
crnCommand.setDestinationPosX(Utils.getRowShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鎺�
crnCommand.setDestinationPosY(Utils.getBayShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鍒�
crnCommand.setDestinationPosZ(Utils.getLevShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅灞�
- crnCommand.setCommand((short) 1);
+// crnCommand.setCommand((short) 1);
if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand))) {
log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand));
} else {
@@ -1541,46 +1541,6 @@
Long[][] avoidedRange = new TrackRangeUtils().avoidRangeArr(rgvSlave, trackEntireLength, trackBenchmark, avoidDistance);
List<Integer> belongToRange = RouteUtils.SortNearby(RouteUtils.belongToRange(rangeList, avoidedRange[0], basDevpPositions), rgvProtocol.RgvPos, basDevpPositions);
- for (Integer staNoNow : belongToRange) {
- for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
- if (rgvStn.getStaNo().equals(staNoNow)) {
- TaskWrk taskWrk = deviceDetection(rgvStn);
- if (taskWrk != null) {
- BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint())));
- if (RouteUtils.CheckIfItIsWithinTheRange(rangeList, basDevpPosition.getPlcPosition(), basDevpPositions, itSmall)) {
- sign = taskGenerate(rgvSlave, rgvStn, 0);
- }
- }
- break;
- }
- }
- if (sign) {
- break;
- }
- }
- if (!sign) {
- // 绛涢�夎寖鍥村唴鍙栬揣浠诲姟
- for (Integer staNoNow : belongToRange) {
- for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
- if (rgvStn.getStaNo().equals(staNoNow)) {
- TaskWrk taskWrk = deviceDetection(rgvStn);
- if (taskWrk != null) {
- Integer outStaNo = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint());
- for (RgvSlave.RgvStn rgvStnOut : rgvSlave.getRgvOutSta()) {
- if (rgvStnOut.getStaNo().equals(outStaNo)) {
- sign = taskGenerate(rgvSlave, rgvStn, 0);
- break;
- }
- }
- }
- break;
- }
- }
- if (sign) {
- break;
- }
- }
- }
if (!sign && staList.size()==1){
if (rgvOtherIDLEOther(rgvSlave)){
if (!rgvOtherIDLE(rgvSlave,staList.get(0))){
@@ -1608,6 +1568,49 @@
}
}
+ if(!sign){
+ for (Integer staNoNow : belongToRange) {
+ for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
+ if (rgvStn.getStaNo().equals(staNoNow)) {
+ TaskWrk taskWrk = deviceDetection(rgvStn);
+ if (taskWrk != null) {
+ BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint())));
+ if (RouteUtils.CheckIfItIsWithinTheRange(rangeList, basDevpPosition.getPlcPosition(), basDevpPositions, itSmall)) {
+ sign = taskGenerate(rgvSlave, rgvStn, 0);
+ }
+ }
+ break;
+ }
+ }
+ if (sign) {
+ break;
+ }
+ }
+ }
+ if (!sign) {
+ // 绛涢�夎寖鍥村唴鍙栬揣浠诲姟
+ for (Integer staNoNow : belongToRange) {
+ for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
+ if (rgvStn.getStaNo().equals(staNoNow)) {
+ TaskWrk taskWrk = deviceDetection(rgvStn);
+ if (taskWrk != null) {
+ Integer outStaNo = BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint());
+ for (RgvSlave.RgvStn rgvStnOut : rgvSlave.getRgvOutSta()) {
+ if (rgvStnOut.getStaNo().equals(outStaNo)) {
+ sign = taskGenerate(rgvSlave, rgvStn, 0);
+ break;
+ }
+ }
+ }
+ break;
+ }
+ }
+ if (sign) {
+ break;
+ }
+ }
+ }
+
if (!sign) {
for (Integer staNoNow : rangeList) {
for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
diff --git a/src/main/java/com/zy/core/cache/TaskProtocolCache.java b/src/main/java/com/zy/core/cache/TaskProtocolCache.java
index 6e9c11f..972348c 100644
--- a/src/main/java/com/zy/core/cache/TaskProtocolCache.java
+++ b/src/main/java/com/zy/core/cache/TaskProtocolCache.java
@@ -117,4 +117,25 @@
}
}
+
+
+ /**
+ * 鏌ヨ鏄惁鏈夊彲鎵ц浠诲姟
+ */
+ public boolean isNowPosRun(Long targetPosition) {
+// lock.readLock().lock(); // 鍔犺閿�
+ try {
+ List<TaskProtocol> allWalkTaskProtocol = new ArrayList<>();
+ for (TaskProtocol task : cache.values()) {
+ long runPos = Math.abs(task.getTargetPosition() - targetPosition);
+ if (runPos<50) {
+ return true;
+ }
+ }
+ return false; // 杩斿洖鍓湰
+ } finally {
+// lock.readLock().unlock(); // 閲婃斁璇婚攣
+ }
+ }
+
}
diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index c040606..1315b2d 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -471,6 +471,12 @@
> avoidDistance - 50) {//鏃犻渶閬胯
return true;
} else {
+
+ RgvThread rgvThreadOther = (RgvThread) SlaveConnection.get(SlaveType.Rgv, slave.getOtherId());
+ TaskProtocolCache taskProtocolCacheOther = rgvThreadOther.getTaskProtocolCache();
+ if (taskProtocolCacheOther.isNowPosRun(rgvProtocolOther.getRgvPos())){
+ return false;
+ }
long avoid = targetPosition + rgvProtocol.getCarBodyKunPeng() + avoidDistance + rgvProtocolOther.getCarBodyJiaoMing();
if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[0])) {
log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
@@ -560,6 +566,11 @@
> avoidDistance - 50) {//鏃犻渶閬胯
return true;
} else {
+ RgvThread rgvThreadOther = (RgvThread) SlaveConnection.get(SlaveType.Rgv, slave.getOtherId());
+ TaskProtocolCache taskProtocolCacheOther = rgvThreadOther.getTaskProtocolCache();
+ if (taskProtocolCacheOther.isNowPosRun(rgvProtocolOther.getRgvPos())){
+ return false;
+ }
long avoid = targetPosition - rgvProtocol.getCarBodyJiaoMing() - avoidDistance - rgvProtocolOther.getCarBodyKunPeng();
if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[1])) {
log.error("RGV琛岃蛋瓒呭嚭鑼冨洿锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index d6a4109..676afa7 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -255,15 +255,56 @@
array[6] = command.getDestinationPosX();
array[7] = command.getDestinationPosY();
array[8] = command.getDestinationPosZ();
-// array[9] = command.getSourceStaNo();
-// array[10] = command.getDestinationStaNo();
array[9] = command.getCommand();
+ OperateResult result18 = siemensNet.Write("DB100.18", (short)0);
+ try{
+ Thread.sleep(50L);
+ } catch (Exception e){}
+
OperateResult result = siemensNet.Write("DB100.0", array);
+
+ int i=0;
+ do{
+ //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔�
+ try{
+ Thread.sleep(100L);
+ } catch (Exception e){}
+ OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB101.0", (short) 4);
+ if (resultRead.IsSuccess) {
+ CrnCommand one = new CrnCommand();
+ one.setTaskNo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 2));
+ if (!command.getTaskNo().equals(one.getTaskNo())
+ ){
+ i++;
+ log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐id:{}]>>>>閲嶅啓[{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), i,JSON.toJSON(command),JSON.toJSON(one));
+ result = siemensNet.Write("DB100.0", array);
+ }else{
+ break;
+ }
+ }
+ }while(i<5);
if (command.getAckFinish() == 0) {
short commandFinish = 1;
- Thread.sleep(100L);
+ try{
+ Thread.sleep(100L);
+ } catch (Exception e){}
result = siemensNet.Write("DB100.18", commandFinish);
+ int signFinish = 1;
+ while (signFinish<5){
+ OperateResultExOne<byte[]> result10018 = siemensNet.Read("DB100.18", (short) 2);
+ short transInt16 = siemensNet.getByteTransform().TransInt16(result10018.Content, 0);
+ if (transInt16 != commandFinish){
+ log.info("涓嬪彂DB100.18 鍥炶澶辫触" + "commandFinish:"+commandFinish);
+ log.info("涓嬪彂DB100.18 鍥炶澶辫触" + "array:"+ JSON.toJSONString(array));
+ result = siemensNet.Write("DB100.18", commandFinish);
+ signFinish++;
+ }else {
+ log.info("涓嬪彂DB100.18" + "commandFinish:"+commandFinish);
+ log.info("涓嬪彂DB100.18" + "array:"+ JSON.toJSONString(array));
+ break;
+ }
+ }
}
try {
--
Gitblit v1.9.1