Przeglądaj źródła

延迟1秒提交数据

sunxianglong 1 dzień temu
rodzic
commit
35bd59232a
1 zmienionych plików z 14 dodań i 2 usunięć
  1. 14 2
      src/com/mes/plc/QmPlcPoller.java

+ 14 - 2
src/com/mes/plc/QmPlcPoller.java

@@ -19,7 +19,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
  * 框架气密 PLC 轮询(每秒一次)。
  * <pre>
  * 扫码反馈=1 → 读框架码校验 → 写允许进站=1、扫码反馈=0
- * 检测完成:记录上一秒;上一秒=0 且本秒=1 → 上传 OK/NG
+ * 检测完成:记录上一秒;上一秒=0 且本秒=1 → 延时1秒再读数上传 OK/NG
  * 上传成功后:MES 复位允许进站=0;检测完成由 PLC 厂家清
  * </pre>
  */
@@ -206,7 +206,8 @@ public class QmPlcPoller {
     }
 
     /**
-     * 每秒读检测完成:上一秒=0 且本秒=1 → 上传。
+     * 每秒读检测完成:上一秒=0 且本秒=1 → 延时1秒再读数上传。
+     * 延时是为了等待 PLC 写完压力/泄漏等 Real,避免读到上一件残留值。
      * 不写检测完成;上传成功后复位允许进站=0。
      */
     private static void handleCompleteRisingEdge() throws Exception {
@@ -220,6 +221,17 @@ public class QmPlcPoller {
 
         busy = true;
         try {
+            log.info("检测完成0→1,延时1秒后读取并上传");
+            updateStatus("检测完成,1秒后读取上传...", true);
+            try {
+                Thread.sleep(1000);
+            } catch (InterruptedException ie) {
+                Thread.currentThread().interrupt();
+                log.warn("完成延时被中断,取消本次上传");
+                updateStatus("上传延时被中断,等完成位再次0→1", false);
+                return;
+            }
+
             String sn = s7Client.readFrameCode();
             if (sn == null || sn.isEmpty()) {
                 log.error("完成上升沿但框架码为空");