From b0a96a43d99eb5baf708c4fa0d0482696d7b0823 Mon Sep 17 00:00:00 2001
From: Administrator <zc857179121@qq.com>
Date: 星期一, 13 四月 2026 19:55:26 +0800
Subject: [PATCH] 1

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ChargeService.java                           |    2 
 zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/model/SafeSignal.java                              |    6 ++
 zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/service/Snap7Service.java                          |   41 ++++++++++++--------
 zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/ClearSingleOperationHandler.java |    8 ++--
 zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/SendTaskOperationHandler.java    |    4 +-
 zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/controller/SiteController.java                          |    3 -
 zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/OutOperationHandler.java         |    6 +--
 zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/AppleLocOperationHandler.java    |    2 
 zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/StartUpOperationHandler.java     |    2 
 zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/thread/SiemensDevpThread.java                      |   19 +++++++--
 10 files changed, 57 insertions(+), 36 deletions(-)

diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ChargeService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ChargeService.java
index 707c4f5..2a24f93 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ChargeService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ChargeService.java
@@ -34,7 +34,7 @@
         List<FuncSta> list = funcStaService.list(new LambdaQueryWrapper<FuncSta>()
                 .eq(FuncSta::getType, FuncStaType.CHARGE.toString()));
         for (FuncSta funcSta : list) {
-            if (Cools.isEmpty(funcSta.getProtocol()) && funcSta.getProtocol().equalsIgnoreCase(ProtocolType.MODBUS.toString())) {
+            if (!Cools.isEmpty(funcSta.getProtocol()) && funcSta.getProtocol().equalsIgnoreCase(ProtocolType.MODBUS.toString())) {
                 if (!Cools.isEmpty(funcSta.getIp()) && !Cools.isEmpty(funcSta.getPort()))
                     add(funcSta);
             }
diff --git a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/controller/SiteController.java b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/controller/SiteController.java
index b7cd673..d55b003 100644
--- a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/controller/SiteController.java
+++ b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/controller/SiteController.java
@@ -126,8 +126,7 @@
     @ManagerAuth(memo = "淇敼绔欑偣鏁版嵁")
     public R siteDetlUpdate(@RequestParam Integer siteId,
                             @RequestParam Integer workNo,
-                            @RequestParam Integer staNo,
-                            @RequestParam String pakMk) {
+                            @RequestParam Integer staNo) {
         for (DevpSlave devp : slaveProperties.getDevp()) {
             Map<Integer, StaProtocol> station = stationService.getStationMap(devp.getId());
             for (Map.Entry<Integer, StaProtocol> entry : station.entrySet()) {
diff --git a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/model/SafeSignal.java b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/model/SafeSignal.java
index db95fcf..2012ef6 100644
--- a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/model/SafeSignal.java
+++ b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/model/SafeSignal.java
@@ -9,10 +9,14 @@
 
     private Integer index;
 
+    private short value;
+
     private Boolean flag;
 
-    public SafeSignal(Integer index, Boolean flag) {
+
+    public SafeSignal(Integer index,Short value, Boolean flag) {
         this.index = index;
+        this.value =value;
         this.flag = flag;
     }
 }
diff --git a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/AppleLocOperationHandler.java b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/AppleLocOperationHandler.java
index 6fafd4f..1e9198d 100644
--- a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/AppleLocOperationHandler.java
+++ b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/AppleLocOperationHandler.java
@@ -78,7 +78,7 @@
                         staProtocol = staProtocol.clone();
                     }
                     // 鍒ゆ柇鏄惁婊¤冻鏉′欢
-                    if (staProtocol.isInEnable()) {
+                    if (staProtocol.getWorkNo() == 0) {
                         continue;
                     }
                     if (!staProtocol.isLoading()) {
diff --git a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/ClearSingleOperationHandler.java b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/ClearSingleOperationHandler.java
index 960e0af..bfa7433 100644
--- a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/ClearSingleOperationHandler.java
+++ b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/ClearSingleOperationHandler.java
@@ -5,6 +5,7 @@
 import com.zy.acs.common.utils.RedisSupport;
 import com.zy.acs.conveyor.core.constant.RedisConveyorConstant;
 import com.zy.acs.conveyor.core.enums.ConveyorStateType;
+import com.zy.acs.conveyor.core.model.SafeSignal;
 import com.zy.acs.conveyor.core.model.StaProtocol;
 import com.zy.acs.conveyor.core.operation.OperationHandler;
 import com.zy.acs.conveyor.core.properties.CtuOperationConfig;
@@ -71,7 +72,7 @@
                         News.error("{}锛氱珯鐐癸細{}锛岄潪鑷姩", config.getMark(), staProtocol.getSiteId());
                         continue;
                     }
-                    if (staProtocol.getWorkNo() > 0) {
+                    if (staProtocol.getWorkNo() > 0 && !staProtocol.isLoading()) {
                         Job job = jobService.getJobByJobNo(staProtocol.getWorkNo());
                         if (job == null) {
                             News.error("{}锛氱珯鐐癸細{}锛屾壘涓嶅埌浠诲姟", config.getMark(), staProtocol.getSiteId());
@@ -85,9 +86,8 @@
                             continue;
                         }
                         //String s = ctuMainService.checkStationStatus(takeSta.getStaNo());
-                        staProtocol.setWorkNo(0);
-                        staProtocol.setStaNo(0);
-                        redis.push(RedisConveyorConstant.CONVEYOR_TASK_FLAG, staProtocol);
+                        staProtocol.setSafeSignal(new SafeSignal( devp.getPutSta().indexOf(takeSta) ,(short)1,false));
+
 
                         job.setJobSts(ConveyorStateType.CLEARSIGNAL.getStatus());
                         if (!jobService.updateById(job)){
diff --git a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/OutOperationHandler.java b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/OutOperationHandler.java
index 58cffdc..1e3e4cf 100644
--- a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/OutOperationHandler.java
+++ b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/OutOperationHandler.java
@@ -79,8 +79,8 @@
                     if (staProtocol.getWorkNo() == 0 && staProtocol.isLoading()) {
                         String seqNum = ctuMainService.checkStationStatus(putSta.getStaNo());
                         if (seqNum != null) {
-                            staProtocol.setSafeSignal(new SafeSignal( devp.getPutSta().indexOf(putSta) ,true));
-                            redis.push(RedisConveyorConstant.CONVEYOR_SAFE_FLAG,staProtocol );
+                            staProtocol.setSafeSignal(new SafeSignal( devp.getPutSta().indexOf(putSta) ,(short)1,true));
+                            //redis.push(RedisConveyorConstant.CONVEYOR_SAFE_FLAG,staProtocol );
 
                             Job job = jobService.getJobByTaskNo(seqNum);
                             if (job != null) {
@@ -102,8 +102,6 @@
                         } else {
                             News.error("{},绔欑偣淇℃伅涓嶇鍚堝叆搴撴潯浠讹紒锛侊紒" + " 璋冪敤RCS妫�楠屾湭閫氳繃,绔欑偣锛歿}", config.getMark(), staProtocol.getSiteId());
                         }
-                    } else {
-                        News.error("{},绔欑偣锛歿},寮傚父鐘舵�侊紝璇疯ˉ鍏�", config.getMark(), staProtocol.getSiteId());
                     }
                 }
             }
diff --git a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/SendTaskOperationHandler.java b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/SendTaskOperationHandler.java
index 7a2e31d..6532e8a 100644
--- a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/SendTaskOperationHandler.java
+++ b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/SendTaskOperationHandler.java
@@ -85,8 +85,8 @@
                         News.error("{}锛氱珯鐐癸細{}锛岄潪鑷姩", config.getMark(), staProtocol.getSiteId());
                         continue;
                     }
-                    if (staProtocol.isInEnable()) {
-                        News.error("{},绔欑偣锛歿},娌℃湁鍙叆淇″彿", config.getMark(), staProtocol.getSiteId());
+                    if (!staProtocol.isInEnable()) {
+                        //News.error("{},绔欑偣锛歿},娌℃湁鍙叆淇″彿", config.getMark(), staProtocol.getSiteId());
                         continue;
                     }
                     Job jobByJobNo = jobService.getJobByJobNo(staProtocol.getWorkNo());
diff --git a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/StartUpOperationHandler.java b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/StartUpOperationHandler.java
index e4ff50b..ce57209 100644
--- a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/StartUpOperationHandler.java
+++ b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/operation/handler/StartUpOperationHandler.java
@@ -65,7 +65,7 @@
                     // 鍒ゆ柇鏄惁婊¤冻鏉′欢
                     if (!staProtocol.isStartup() || !staProtocol.isAutoing() || !staProtocol.isLoading()) {
                         if (!staProtocol.isStartup()) {
-                            News.error("{}锛氱珯鐐癸細{}锛屾湭鍚姩鍏ュ簱", config.getMark(), staProtocol.getSiteId());
+                            //News.error("{}锛氱珯鐐癸細{}锛屾湭鍚姩鍏ュ簱", config.getMark(), staProtocol.getSiteId());
                             continue;
                         }
                         if (!staProtocol.isAutoing()) {
diff --git a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/service/Snap7Service.java b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/service/Snap7Service.java
index 1db417c..563287d 100644
--- a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/service/Snap7Service.java
+++ b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/service/Snap7Service.java
@@ -63,36 +63,45 @@
         }
         SafeSignal safeSignal = staProtocol.getSafeSignal();
 
-        int baseOffset = SafeSignalField.SAFE_SIGNAL_FROM_CONVEYOR.getOffset() + safeSignal.getIndex() * SafeSignalField.SAFE_SIGNAL_FROM_CONVEYOR.getByteLength();
-        String workNoAddr = TaskField.TASK_NUMBER.getAddressPattern() + PlcConstant.ADDRESS_CONCATENATION
-                + (baseOffset + TaskField.TASK_NUMBER.getOffset());
-        String destStaAddr = TaskField.DEST_STATION.getAddressPattern() + PlcConstant.ADDRESS_CONCATENATION
-                + (baseOffset + TaskField.DEST_STATION.getOffset());
+        int baseOffset =  0;
+        short[] array = new short[6];
+        array[0] = (short) 1;
+        array[1] = (short) 0;
+        array[2] = (short) 0;
+        array[5] = (short) 0;
+        if (safeSignal.getFlag()){
+            array[3] = (short) 0;
+            array[4] =safeSignal.getValue();
+             baseOffset = SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getOffset() + safeSignal.getIndex() * SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getByteLength();
+        }else {
+            array[3] = safeSignal.getValue();
+            array[4] = (short) 0;
+            baseOffset = SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getOffset() +2 + safeSignal.getIndex() * SafeSignalField.SAFE_SIGNAL_TO_CONVEYOR.getByteLength();
+        }
+        String flagAddr = TaskField.TASK_NUMBER.getAddressPattern() + PlcConstant.ADDRESS_CONCATENATION
+                + baseOffset;
 
         // 浠诲姟涓嬪彂閲嶈瘯鏈哄埗
         int writeCount = 0;
         boolean success = false;
 
         while (writeCount < WRITE_RETRY_MAX) {
-            OperateResult writeResult = siemensS7Net.Write(workNoAddr, staProtocol.getWorkNo());
-            Thread.sleep(WRITE_RETRY_INTERVAL_MS);
+            OperateResult writeResult = siemensS7Net.Write(flagAddr, array);
 
-            OperateResult writeResult1 = siemensS7Net.Write(destStaAddr, staProtocol.getStaNo().shortValue());
-
-            if (writeResult.IsSuccess && writeResult1.IsSuccess) {
-                log.info("鍐欏叆杈撻�佺嚎鍛戒护鎴愬姛 [id:{}] [siteId:{}] [workNo:{}] [destSta:{}] [retry:{}]",
+            if (writeResult.IsSuccess) {
+                log.info("鍐欏叆瀹夊叏淇″彿杈撻�佺嚎鍛戒护鎴愬姛 [id:{}] [siteId:{}] [workNo:{}] [destSta:{}] [retry:{}]",
                         staProtocol.getPlcId(), staProtocol.getSiteId(), staProtocol.getWorkNo(),
                         staProtocol.getStaNo(), writeCount);
-                OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎鍛戒护鎴愬姛銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}",
+                OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ畨鍏ㄤ俊鍙疯緭閫佺嚎鍛戒护鎴愬姛銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}",
                         staProtocol.getPlcId(), JSON.toJSON(staProtocol)));
                 success = true;
                 break;
             }
 
             writeCount++;
-            log.error("鍐欏叆杈撻�佺嚎鍛戒护澶辫触 [id:{}] [siteId:{}] [retry:{}] [workErr:{}] [destErr:{}]",
+            log.error("鍐欏叆瀹夊叏淇″彿杈撻�佺嚎鍛戒护澶辫触 [id:{}] [siteId:{}] [retry:{}] [workErr:{}] ",
                     staProtocol.getPlcId(), staProtocol.getSiteId(), writeCount,
-                    writeResult.Message, writeResult1.Message);
+                    writeResult.Message);
 
             if (writeCount < WRITE_RETRY_MAX) {
                 Thread.sleep(WRITE_RETRY_INTERVAL_MS);
@@ -100,10 +109,10 @@
         }
 
         if (!success) {
-            String errorMsg = MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}",
+            String errorMsg = MessageFormat.format("銆恵0}銆戝啓鍏ュ畨鍏ㄤ俊鍙疯緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}",
                     staProtocol.getPlcId(), JSON.toJSON(staProtocol));
             OutputQueue.DEVP.offer(errorMsg);
-            News.error("SiemensDevp - 4 - 鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}",
+            News.error("SiemensDevp - 4 - 鍐欏叆瀹夊叏淇″彿杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}",
                     staProtocol.getPlcId(), JSON.toJSON(staProtocol));
             log.error(errorMsg);
         }
diff --git a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/thread/SiemensDevpThread.java b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/thread/SiemensDevpThread.java
index 14cba8a..8c3e641 100644
--- a/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/thread/SiemensDevpThread.java
+++ b/zy-asc-conveyor/src/main/java/com/zy/acs/conveyor/core/thread/SiemensDevpThread.java
@@ -3,10 +3,9 @@
 import HslCommunication.Core.Types.OperateResultExOne;
 import HslCommunication.Profinet.Siemens.SiemensS7Net;
 import com.zy.acs.common.utils.News;
-import com.zy.acs.conveyor.core.constant.DeviceField;
-import com.zy.acs.conveyor.core.constant.PlcAlarmDefinition;
-import com.zy.acs.conveyor.core.constant.SafeSignalField;
-import com.zy.acs.conveyor.core.constant.StationStatusField;
+import com.zy.acs.common.utils.RedisSupport;
+import com.zy.acs.conveyor.core.constant.*;
+import com.zy.acs.conveyor.core.model.SafeSignal;
 import com.zy.acs.conveyor.core.model.StaProtocol;
 import com.zy.acs.conveyor.core.properties.DevpSlave;
 import com.zy.acs.conveyor.core.service.DevpS7Service;
@@ -37,6 +36,9 @@
     private SiemensS7Net siemensS7Net;
 
     private Map<Integer, StaProtocol> station;
+
+    private final RedisSupport redis = RedisSupport.defaultRedisSupport;
+
 
     private static final int WRITE_RETRY_MAX = 5;
 
@@ -369,6 +371,15 @@
             staProtocolTake.setAllowPut(status2[2]);
             staProtocolTake.setInComplete(status2[3]);
             staProtocolTake.setOutComplete(status2[4]);
+            //
+            if (status[3]){
+                redis.push(RedisConveyorConstant.CONVEYOR_SAFE_FLAG, new SafeSignal(i,(short)0,true));
+            }
+            if (status2[4]){
+                redis.push(RedisConveyorConstant.CONVEYOR_SAFE_FLAG,  new SafeSignal(i, (short) 0,false));
+
+            }
+
         }
     }
 

--
Gitblit v1.9.1