From 4cd0f495beb0cca53a6c49c4e8ccdacad10c6961 Mon Sep 17 00:00:00 2001
From: L <L@132>
Date: 星期一, 14 七月 2025 17:18:16 +0800
Subject: [PATCH] *

---
 src/main/java/com/zy/core/thread/RgvThread.java         |   22 ++--
 src/main/java/com/zy/core/thread/SiemensCrnThread.java  |   13 ++
 src/main/java/com/zy/core/MainProcess.java              |   76 +++++++--------
 src/main/java/com/zy/core/thread/SiemensDevpThread.java |  148 ++++++++++++++++++++++++++++-
 4 files changed, 201 insertions(+), 58 deletions(-)

diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index cc878e0..2db0872 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -24,6 +24,7 @@
     private MainServiceImpl mainService;
     // 鎵�灞炵嚎绋�
     private Thread thread;
+    private Thread thread2;
     // 棰戠巼
     private int i = 0;
     private int j = 0;
@@ -36,21 +37,12 @@
         thread = new Thread(() -> {
             while (!Thread.currentThread().isInterrupted()) {
                 try {
-
                     // 闂撮殧
                     Thread.sleep(1000);
-
                     // 绯荤粺杩愯鐘舵�佸垽鏂�
                     if (!SystemProperties.WCS_RUNNING_STATUS.get()) {
                         continue;
                     }
-
-                    //鍒濆鍖朢GV鍦板浘
-//                    mainService.initRgvMap();
-                    // 婕旂ず
-//                    mainService.crnDemoOfLocMove1();
-                    // 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁�
-//                    mainService.ioConvert();
                     // 鍏ュ簱  ===>> 鍏ュ簱绔欏埌鍫嗗灈鏈虹珯锛屾牴鎹潯鐮佹壂鎻忕敓鎴愬叆搴撳伐浣滄。
                     mainService.generateStoreWrkFile(); // 缁勬墭
                     // 鍏ュ簱  ===>> 鐮佸灈浣嶈幏鍙栫┖鏉挎潯鐮佷俊鎭�
@@ -70,7 +62,40 @@
 //                    mainService.crnIoWrkMast();
                     // 鍏ュ簱  ===>> 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
                     mainService.storeFinished();
+                    /////////////////////////////////////RGV璋冨害/////////////////////////////////////
 
+                    // 寮傚父淇℃伅璁板綍
+                    mainService.recErr();
+                    // 鍏ュ簱  ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�  2妤�
+                    mainService.storeEmptyPlt();
+                    // 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
+                    mainService.ledExecute();
+                    // 鍏朵粬  ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅
+                    mainService.ledReset();
+
+                    //鐮佸灈瀹屾垚椹卞姩鎵樼洏涓嬩竴姝ユ壂鐮佸叆搴�
+                    mainService.stackingCompletionDriveTray();
+
+                    mainService.armNoStartTwoLo();
+                    mainService.armNoCleanUpTwoLo();
+
+
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        });
+        thread2 = new Thread(() -> {
+            while (!Thread.currentThread().isInterrupted()) {
+                try {
+
+                    // 闂撮殧
+                    Thread.sleep(400);
+
+                    // 绯荤粺杩愯鐘舵�佸垽鏂�
+                    if (!SystemProperties.WCS_RUNNING_STATUS.get()) {
+                        continue;
+                    }
 
                     //鍒锋柊RGV鍦板浘
                     mainService.refreshRgvMap();
@@ -101,49 +126,18 @@
                     mainService.rgvCompleteWrkMastSta();
                     /////////////////////////////////////RGV璋冨害/////////////////////////////////////
 
-                    // 寮傚父淇℃伅璁板綍
-                    mainService.recErr();
-                    // 鍏ュ簱  ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�  2妤�
-                    mainService.storeEmptyPlt();
                     // 鍏ュ簱  ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,1妤煎彔鐩樻満绌烘澘鍏ュ簱
                     mainService.storeEmptyPlt3();
                     // 鍏ュ簱  ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,1妤煎彔鐩樻満鍙犵洏
                     mainService.storeEmptyPlt2();
                     // 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱鎷嗙洏鍖�   1妤兼媶鍨涗綅缃�  绌烘澘鍙犵洏
                     mainService.storeEmptyPlt4();
-                    // 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
-                    mainService.ledExecute();
-                    // 鍏朵粬  ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅
-                    mainService.ledReset();
-
-//                    // 鍏朵粬  ===>> 鍏ュ嚭搴撴ā寮忓垏鎹�
-//                    i++;
-//                    if (i > 1) {
-//                        mainService.ioConvert();
-//                        i = 0;
-//                    }
-
-                    //鐮佸灈浣嶈嚜鍔ㄨˉ鍏呯┖鏉匡細椹卞姩鎷嗙洏鏈鸿緭鍑烘墭鐩�
-//                    mainService.dischargingMachineOutputTray();
-
-//                    //鎷嗙洏鏈哄绌烘澘鎵爜锛岄┍鍔ㄦ墭鐩樺悜鐮佸灈浣嶏紝涓嶅叆搴�
-//                    mainService.scanBarcodeEmptyBoard();
-
-                    //鐮佸灈瀹屾垚椹卞姩鎵樼洏涓嬩竴姝ユ壂鐮佸叆搴�
-                    mainService.stackingCompletionDriveTray();
                     //鎷嗗灈瀹屾垚缁х画涓嬩竴姝�  鍑哄簱鑷虫湀鍙板嚭搴撳彛
                     mainService.stackingCompletionDriveTray2();
-                    //璐存爣瀹屾垚缁х画涓嬩竴姝�
-//                    mainService.stackingCompletionDriveTray3();
                     //鎷嗗灈瀹屾垚缁х画涓嬩竴姝�  杩愯閫斾腑鑷姩閬胯绌烘澘
                     mainService.stackingCompletionDriveTray4();
-                    //鎷嗗灈瀹屾垚鎵樼洏缁х画涓嬩竴姝�2==3搴熷純
-//                    mainService.stackingCompletionDriveTrayOk2();
                     //閫�璐х爜鍨涘畬鎴愭墭鐩樼户缁笅涓�姝�
                     mainService.stackingCompletionDriveTrayOk3();
-
-                    mainService.armNoStartTwoLo();
-                    mainService.armNoCleanUpTwoLo();
 
 
                 } catch (Exception e) {
@@ -152,11 +146,13 @@
             }
         });
         thread.start();
+        thread2.start();
     }
 
     @PreDestroy
     public void shutDown(){
         if (thread != null) thread.interrupt();
+        if (thread2 != null) thread2.interrupt();
     }
 
 }
diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index 34d8055..32a4060 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -74,17 +74,6 @@
 
         // 鍚姩浠诲姟涓嬪彂绾跨▼
         new Thread(this::taskIssued).start();
-
-
-        while (true) {
-            try {
-
-                Thread.sleep(500);
-            } catch (Exception e) {
-//                e.printStackTrace();
-            }
-
-        }
     }
 
 
@@ -268,6 +257,17 @@
         rgvProtocol.setxSpeed((short) 0);
         rgvProtocol.setxDistance((short) 0);
         rgvProtocol.setxDuration((short) 0);
+        try {
+            // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
+            BasRgvService basRgvService = SpringUtils.getBean(BasRgvService.class);
+            BasRgv basRgv = new BasRgv();
+            basRgv.setRgvNo(slave.getId());
+            basRgv.setRgvSts((int)rgvProtocol.getMode());
+            basRgv.setLoaded2(rgvProtocol.getLoaded2().intValue());
+            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){}
     }
 
     @Override
diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index 3da01f5..d315772 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -126,6 +126,19 @@
         crnProtocol.setyDistance((short) 0);
         crnProtocol.setxDuration((short) 0);
         crnProtocol.setyDuration((short) 0);
+
+
+
+        try {
+            // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
+            BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class);
+            BasCrnp basCrnp = new BasCrnp();
+            basCrnp.setCrnNo(slave.getId());
+            basCrnp.setCrnSts((int)crnProtocol.getMode());
+            if (!basCrnpService.updateById(crnProtocol.toSqlModel(basCrnp))){
+                log.error("鍫嗗灈鏈簆lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+            }
+        } catch (Exception ignore){}
     }
 
     @Override
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 8d7b143..356307c 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -97,6 +97,9 @@
     public IoModeType ioModeOf4F = IoModeType.NONE;
 //    public IoModeType ioMode = IoModeType.NONE;
 
+
+    private boolean connectDev = false;
+
     public SiemensDevpThread(DevpSlave slave) {
         this.slave = slave;
     }
@@ -126,7 +129,107 @@
     @Override
     @SuppressWarnings("InfiniteLoopStatement")
     public void run() {
-        connect();
+        connectDev = this.connect();
+        while(!connectDev){
+            try {
+                connectDev = this.connect();
+                Thread.sleep(100);
+            } catch (Exception e){
+
+            }
+        }
+
+        // 鍚姩绾跨▼鑷姩閲嶈繛
+        new Thread(this::devConnect).start();
+
+        // 鍚姩璇绘暟鎹嚎绋�
+        new Thread(this::readStatusDev).start();
+
+        // 鍚姩浠诲姟涓嬪彂绾跨▼
+        new Thread(this::writeStatusDev).start();
+
+    }
+
+    /**
+     * 鍒濆鍖栫珯鐐圭姸鎬�
+     */
+    private void initSite() {
+        try{
+            ArrayList<Integer> staNos = getStaNo();
+            // 绔欑偣缂栧彿
+            for (Integer siteId : staNos) {
+                StaProtocol staProtocol = station.get(siteId);
+                if (null == staProtocol) {
+                    staProtocol = new StaProtocol();
+                    staProtocol.setSiteId(siteId);
+                    station.put(siteId, staProtocol);
+                }
+                staProtocol.setSiteId(siteId);
+                staProtocol.setWorkNo(0);    // ID
+                staProtocol.setAutoing(false);      // 鑷姩
+                staProtocol.setLoading(false);      // 鏈夌墿
+                staProtocol.setInEnable(false);     // 鍙叆
+                staProtocol.setOutEnable(false);    // 鍙嚭
+                staProtocol.setEmptyMk(false);      // 绌烘澘淇″彿
+                staProtocol.setStaNo(0);     // 鐩爣绔�
+
+                if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
+                    staProtocol.setPakMk(true);
+                }
+            }
+
+
+            // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
+            try {
+                List<BasDevp> basDevps = new ArrayList<>();
+                for (Integer siteId : staNos) {
+                    StaProtocol staProtocol = station.get(siteId);
+                    basDevps.add(staProtocol.toSqlModel());
+                }
+
+                BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class);
+                if (null != basDevpService && !basDevpService.updateBatchById(basDevps)) {
+                    throw new Exception("鏇存柊鏁版嵁搴撴暟鎹け璐�");
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+                OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戞洿鏂版暟鎹簱鏁版嵁澶辫触 ===>> [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("鏇存柊鏁版嵁搴撴暟鎹け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+            }
+        } catch (Exception e){
+            try{
+                log.error(e.getMessage());
+            } catch (Exception e1){
+
+            }
+            log.error("鍒濆鍖栫珯鐐圭姸鎬佸紓甯�");
+        }
+    }
+
+
+
+    private void devConnect() {
+        while (true) {
+            try {
+                Thread.sleep(1000L);
+                if(!connectDev){
+                    try {
+                        connectDev = this.connect();
+                        Thread.sleep(100L);
+                    } catch (Exception e){
+
+                    }
+                }
+            } catch (Exception e) {
+
+                log.error("rgv杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+                initSite();
+//                e.printStackTrace();
+            }
+        }
+    }
+
+    private void writeStatusDev() {
         while (true) {
             try {
                 int step = 1;
@@ -137,14 +240,10 @@
                 switch (step) {
                     // 璇绘暟鎹�
                     case 1:
-                        read();
+//                        read();
                         break;
                     // 鍐欐暟鎹� ID+鐩爣绔�
                     case 2:
-//                        write3((StaProtocol)task.getData());
-//                        Thread.sleep(400);
-//                        write4((StaProtocol)task.getData());
-//                        Thread.sleep(400);
                         write((StaProtocol)task.getData());
                         break;
                     // 鍐欐暟鎹� ID+鐩爣绔� 鐮佸灈瀹屾垚  缁欒緭閫佺嚎鍐欎换鍔″畬鎴�
@@ -169,10 +268,44 @@
 //                heartbeat();
                 Thread.sleep(400);
             } catch (Exception e) {
-                e.printStackTrace();
+//                e.printStackTrace();
+                try{
+                    log.error("dev鍐欑嚎绋嬪紓甯�"+e.getMessage());
+
+                } catch (Exception e1){
+
+                }
+                log.error("DEV鏁版嵁鍐欏叆绾跨▼寮傚父锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+
             }
 
         }
+
+    }
+    private void readStatusDev() {
+        while (true) {
+            try {
+                if(!connectDev){
+                    try {
+                        Thread.sleep(1000L);
+                    } catch (Exception e){
+
+                    }
+                    continue;
+                }
+                Thread.sleep(200);
+                read();
+
+            } catch (Exception e) {
+                log.error("RGV璇荤嚎绋嬪紓甯�"+e.getMessage());
+
+                log.error("RGV鏁版嵁璇诲彇绾跨▼寮傚父锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+                initSite();
+//                e.printStackTrace();
+            }
+
+        }
+
     }
 
     @Override
@@ -383,6 +516,7 @@
         } else {
             OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戣鍙栬緭閫佺嚎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("璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+            initSite();
         }
     }
 

--
Gitblit v1.9.1