From 7ed8a3db0115b19349cbdad55c91c353a0e8e300 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期日, 26 四月 2026 16:29:19 +0800
Subject: [PATCH] 一楼输送线出入库冲突控制
---
src/main/java/com/zy/service/impl/MainServiceImpl.java | 90 ++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 88 insertions(+), 2 deletions(-)
diff --git a/src/main/java/com/zy/service/impl/MainServiceImpl.java b/src/main/java/com/zy/service/impl/MainServiceImpl.java
index 3a39e8d..1a86a6e 100644
--- a/src/main/java/com/zy/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/service/impl/MainServiceImpl.java
@@ -1690,6 +1690,89 @@
wrkSourceStaNoToRgvStaMap.put(1407,1403);
}
+ // ========================
+ // 馃敟 閫氶亾閿侊紙鏍稿績锛�
+ // ========================
+ private volatile int pathLock = 0;
+
+ // 0 = 绌洪棽
+ // 1 = 鍏ュ簱鍗犵敤锛�1106鈫�1105鈫�1114锛�
+ // 2 = 鍑哄簱鍗犵敤锛�1114鈫扲GV鈫掑锛�
+
+
+ public synchronized void releasePathIfFree() {
+
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, 1);
+ RgvProtocol rgv = rgvThread.getRgvProtocol();
+ if (rgv == null) return;
+
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+
+ StaProtocol sta1105 = devpThread.getStation().get(1105);
+ StaProtocol sta1114 = devpThread.getStation().get(1114);
+
+ if (sta1105 == null || sta1114 == null) return;
+
+ boolean allFree =
+ rgv.getTaskNo1() == 0
+ && rgv.loaded1 == 0
+ && rgv.statusType == RgvStatusType.IDLE
+ && rgv.modeType == RgvModeType.AUTO
+ && rgv.alarm == 0
+
+ && sta1105.isAutoing()
+ && sta1105.getWorkNo() == 0
+ && !sta1105.isLoading()
+
+ && sta1114.isAutoing()
+ && sta1114.getWorkNo() == 0
+ && !sta1114.isLoading();
+
+ if (allFree && pathLock != 0) {
+ pathLock = 0;
+ devpThread.updatePathStatus(0);
+ }
+ }
+
+ public synchronized void rgvCarryOne() {
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, 1);
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (rgvProtocol == null) {
+ return;
+ }
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ StaProtocol staProtocol1106 = devpThread.getStation().get(1106);
+ if (staProtocol1106 == null) {
+ return;
+ }
+ StaProtocol staProtocol1105 = devpThread.getStation().get(1105);
+ if (staProtocol1105 == null) {
+ return;
+ }
+ StaProtocol staProtocol1114 = devpThread.getStation().get(1114);
+ if (staProtocol1114 == null) {
+ return;
+ }
+ if (isIdle(rgvProtocol, staProtocol1105, staProtocol1114) && staProtocol1106.isAutoing() && staProtocol1106.isLoading() && staProtocol1106.getWorkNo() != 0 && staProtocol1106.getStaNo() != 1106) {
+ applyPath(1, devpThread);
+ }
+ }
+
+ public synchronized boolean isIdle(RgvProtocol rgvProtocol,StaProtocol staProtocol1105,StaProtocol staProtocol1114) {
+ return rgvProtocol.modeType == RgvModeType.AUTO && rgvProtocol.statusType == RgvStatusType.IDLE && rgvProtocol.loaded1 == 0
+ && rgvProtocol.alarm == 0 && rgvProtocol.getTaskNo1() == 0
+ && staProtocol1105.isAutoing() && !staProtocol1105.isLoading() && staProtocol1105.getWorkNo() == 0
+ && staProtocol1114.isAutoing() && !staProtocol1114.isLoading() && staProtocol1114.getWorkNo() == 0;
+ }
+
+ private synchronized boolean applyPath(int newStatus, SiemensDevpThread devpThread) {
+ if (pathLock != 0) return false;
+
+ pathLock = newStatus;
+ devpThread.updatePathStatus(newStatus);
+ return true;
+ }
+
public synchronized void rgvCarry() {
for(int i = 1; i <= 4; i ++) {
List<Integer> rgvCarrySiteList;
@@ -1724,8 +1807,11 @@
// 鍒ゆ柇鐩爣绔欑偣鏄惁鍙敤
StaProtocol staProtocol = devpThread.getStation().get(wrkStaNoToRgvStaMap.get(wrkMast.getStaNo()) == null ?
wrkMast.getStaNo() : wrkStaNoToRgvStaMap.get(wrkMast.getStaNo()));
- if (staProtocol != null && staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.getWorkNo() == 0) {
-
+ if (staProtocol != null && (staProtocol.getSiteId() != 1114 || isIdle(rgvProtocol,devpThread.getStation().get(1105),staProtocol))
+ && staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.getWorkNo() == 0) {
+ if (staProtocol.getSiteId() == 1114) {
+ applyPath(2, devpThread);
+ }
RgvCommand rgvCommand = new RgvCommand();
rgvCommand.setRgvNo(rgvProtocol.getRgvNo());
// rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
--
Gitblit v1.9.1