From 443e116f5f1684d6811948a2314f33d968799c61 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期四, 05 六月 2025 20:49:37 +0800
Subject: [PATCH] *
---
src/main/java/com/zy/core/thread/RgvThread.java | 7 ++-
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 78 ++++++++++++++++++++++++--------------
2 files changed, 53 insertions(+), 32 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 cc9b0da..06ab983 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -453,15 +453,13 @@
// }
// }
public synchronized void taskDown(List<List<List<WrkMast>>> wrkMastListAll) {
+
+ List<Integer> rgvNoM = new ArrayList<>();
+ List<Integer> rgvNoR = new ArrayList<>();
+ Integer wrkMastRunCount = 0;
+ Long devperimeter = 0L;
for (List<List<WrkMast>> wrkMastLists : wrkMastListAll) {
- int wrkMastRunCount = 0;
- int wrkMastCount = 0;
long rgvId = 0;
- for (List<WrkMast> wrkMastList : wrkMastLists) {
- for (WrkMast wrkMast : wrkMastList) {
- wrkMastCount++;
- }
- }
runRgv:
for (List<WrkMast> wrkMastList : wrkMastLists) {
for (WrkMast wrkMast : wrkMastList) {
@@ -493,34 +491,23 @@
BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("dev_no", wrkMast.getSourceStaNo()));
if (basDevpPosition.getPlcPosition()>rgvProtocol.getRgvPos()){
if (basDevpPosition.getPlcPosition()-rgvProtocol.getRgvPos()>taskRunPerimeter){
- if (wrkMastRunCount<wrkMastCount){
- if (rgvProtocol.getStatusType() == RgvStatusType.IDLE) {
- if (!MessageQueue.offer(SlaveType.Rgv, rgvProtocol.getRgvNo(), new Task(4,null))) {
- log.error("RGV婕父鍚姩鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, "婕父鎸囦护");
- break runRgv;
- }
- wrkMastRunCount++;
- }
- continue ;
+ if (!rgvNoM.contains(rgvProtocol.getRgvNo())){
+ rgvNoM.add(rgvProtocol.getRgvNo());
+ wrkMastRunCount++;
+ break;
}
- break runRgv;
+ continue ;
}
} else {
if (rgvProtocol.getRgvPos()+ perimeter -basDevpPosition.getPlcPosition()>taskRunPerimeter){
- if (wrkMastRunCount<wrkMastCount){
- if (rgvProtocol.getStatusType() == RgvStatusType.IDLE) {
- if (!MessageQueue.offer(SlaveType.Rgv, rgvProtocol.getRgvNo(), new Task(4,null))) {
- log.error("RGV婕父鍚姩鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, "婕父鎸囦护");
- break runRgv;
- }
- wrkMastRunCount++;
- }
- continue ;
+ if (!rgvNoM.contains(rgvProtocol.getRgvNo())){
+ rgvNoM.add(rgvProtocol.getRgvNo());
+ wrkMastRunCount++;
+ break;
}
- break runRgv;
+ continue ;
}
}
-
if (rgvProtocol.getStatusType() == RgvStatusType.ROAM) {
double finalVelocity = 0.0; // 鏈�缁堥�熷害 (m/s)
@@ -539,6 +526,11 @@
}
}
+ if (!rgvNoR.contains(rgvProtocol.getRgvNo())){
+ rgvNoR.add(rgvProtocol.getRgvNo());
+ } else {
+ continue ;
+ }
RgvCommand rgvCommand = new RgvCommand();
rgvCommand.setRgvNo(rgvProtocol.getRgvNo());
@@ -563,7 +555,6 @@
wrkMast.setCrnStrTime(now);
try {
wrkMastService.updateById(wrkMast);
- wrkMastCount--;
break;
} catch (Exception e) {
log.error("鏇存柊灏忚溅浠诲姟澶辫触,浠诲姟鍙凤細" + wrkMast.getWrkNo());
@@ -574,6 +565,35 @@
}
}
}
+ try{
+ for (Integer rgvNo : rgvNoM){
+ if (wrkMastRunCount==0){
+ break;
+ }
+ if (rgvNoR.contains(rgvNo)){
+ continue;
+ }
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNo);
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (rgvProtocol == null) {
+ continue;
+ }
+
+ if (rgvProtocol != null
+ && rgvProtocol.modeType == RgvModeType.AUTO
+ && rgvProtocol.getStatusType() == RgvStatusType.IDLE
+ && rgvProtocol.getTaskNo1() == 0
+ && rgvProtocol.getAlarm() == 0) {
+ if (!MessageQueue.offer(SlaveType.Rgv, rgvProtocol.getRgvNo(), new Task(4,devperimeter))) {
+ log.error("RGV婕父鍚姩鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvNo, "婕父鎸囦护");
+ break;
+ }
+ wrkMastRunCount--;
+ }
+ }
+ } catch (Exception e){
+
+ }
}
//浠诲姟瀹屾垚
diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index 8a420d6..b05440d 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -136,12 +136,12 @@
break;
// 婕父
case 5:
- write5();
+ write5((Long) task.getData());
break;
default:
break;
}
- Thread.sleep(100);
+ Thread.sleep(50);
} catch (Exception e) {
log.error("RGV鍐欑嚎绋嬪紓甯�"+e.getMessage());
// e.printStackTrace();
@@ -361,9 +361,10 @@
return false;
}
}
- private void write5(){
+ private void write5(Long devperimeter){
try {
siemensNet.Write("DB24.10.0", false);
+ siemensNet.Write("DB24.10.0", devperimeter.intValue());
} catch (Exception ignore) {}
}
private boolean write3(RgvCommand command) throws InterruptedException {
--
Gitblit v1.9.1