From c684729c17bb02ab968cdc2fceae74dacaa9593f Mon Sep 17 00:00:00 2001
From: wuyouming666 <2265557248@qq.com>
Date: 星期三, 06 十二月 2023 16:53:28 +0800
Subject: [PATCH] 增加 急停后中止/继续选择

---
 CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue                                  |   19 
 springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition2.java |  109 +++--
 springboot-vue3/src/main/resources/config.properties                                      |   20 
 CanadaMes-ui/src/views/home/index.vue                                                     |    1 
 CanadaMes-ui/src/configuration/ManualJog.json                                             |    4 
 springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java               |   21 
 CanadaMes-ui/src/views/Electrical/ManualonePosition.vue                                   |   14 
 springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java              |    4 
 springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java              |    6 
 springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java            |    3 
 springboot-vue3/src/main/resources/Alarm.json                                             |  507 +++++++++++++++++++++++++
 springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java     |  117 +++++
 CanadaMes-ui/src/configuration/ServoManualone.json                                        |   15 
 springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java               |    4 
 springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java              |    2 
 springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java          |   43 +-
 CanadaMes-ui/src/configuration/Action.json                                                |   12 
 CanadaMes-ui/src/views/Electrical/Action.vue                                              |   16 
 CanadaMes-ui/src/lang/locales/en-US.json                                                  |   13 
 CanadaMes-ui/src/views/Electrical/ManualJog.vue                                           |    2 
 CanadaMes-ui/src/views/Electrical/ServoManualone.vue                                      |   76 +++
 springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition.java  |  151 ++++--
 22 files changed, 977 insertions(+), 182 deletions(-)

diff --git a/CanadaMes-ui/src/configuration/Action.json b/CanadaMes-ui/src/configuration/Action.json
index fb05bb6..0c25377 100644
--- a/CanadaMes-ui/src/configuration/Action.json
+++ b/CanadaMes-ui/src/configuration/Action.json
@@ -155,42 +155,42 @@
       "page": "1"
     },
     {
-      "name": "B01 YV TURN",
+      "name": "B01 Solenoid TURN",
       "value": 1,
       "state": "1",
       "type": "1",
       "page": "1"
     },
     {
-      "name": "B01 YV UP DOWN",
+      "name": "B01 Solenoid UP DOWN",
       "value": 1,
       "state": "1",
       "type": "1",
       "page": "1"
     },
     {
-      "name": "B02 YV TURN",
+      "name": "B02 Solenoid TURN",
       "value": 1,
       "state": "1",
       "type": "1",
       "page": "1"
     },
     {
-      "name": "B02 YV UP DOWN",
+      "name": "B02 Solenoid UP DOWN",
       "value": 1,
       "state": "1",
       "type": "1",
       "page": "1"
     },
     {
-      "name": "B01 YV Gassing",
+      "name": "B01 Solenoid Gassing",
       "value": 1,
       "state": "1",
       "type": "1",
       "page": "1"
     },
     {
-      "name": "B02 YV Gassing",
+      "name": "B02 Solenoid Gassing",
       "value": 1,
       "state": "1",
       "type": "1",
diff --git a/CanadaMes-ui/src/configuration/ManualJog.json b/CanadaMes-ui/src/configuration/ManualJog.json
index d70708a..02678ba 100644
--- a/CanadaMes-ui/src/configuration/ManualJog.json
+++ b/CanadaMes-ui/src/configuration/ManualJog.json
@@ -12,7 +12,7 @@
     {
       "button": {
         "name": "D02杈撻��",
-        "value": 1,
+        "value": 0,
         "address": "DB10.0",
         "state": 0
       },
@@ -21,7 +21,7 @@
     {
       "button": {
         "name": "D03杈撻��",
-        "value": 1,
+        "value": 0,
         "address": "DB10.0",
         "state": 1
       },
diff --git a/CanadaMes-ui/src/configuration/ServoManualone.json b/CanadaMes-ui/src/configuration/ServoManualone.json
index 48bb45c..b557b5f 100644
--- a/CanadaMes-ui/src/configuration/ServoManualone.json
+++ b/CanadaMes-ui/src/configuration/ServoManualone.json
@@ -79,6 +79,7 @@
         "button": {
           "name": "A01鍗婅嚜鍔�",
           "value":0,
+          "type":66,
           "address":"DB10.0"
         }
       },
@@ -86,6 +87,7 @@
         "button": {
           "name": "A01鍗婅嚜鍔ㄥ惎鍔�",
           "value":0,
+          "type":66,
           "address":"DB10.0"
         }
       }
@@ -150,6 +152,7 @@
             "button": {
               "name": "A02鍗婅嚜鍔�",
               "value":0,
+              "type":66,
               "address":"DB10.0"
             }
           },
@@ -157,6 +160,7 @@
             "button": {
               "name": "A02鍗婅嚜鍔ㄥ惎鍔�",
               "value":0,
+              "type":66,
               "address":"DB10.0"
             }
           }
@@ -342,6 +346,17 @@
           }
           
     ]
+    , [
+      {
+          "button": {
+            "name": "鎬ュ仠鍚庝腑姝�/缁х画閫夋嫨",
+            "value":0,
+            "address":"DB10.0",
+            "type":"66"
+          }
+        }
+        
+  ]
      
     
   ]
diff --git a/CanadaMes-ui/src/lang/locales/en-US.json b/CanadaMes-ui/src/lang/locales/en-US.json
index e6c052b..b8b90c8 100644
--- a/CanadaMes-ui/src/lang/locales/en-US.json
+++ b/CanadaMes-ui/src/lang/locales/en-US.json
@@ -343,7 +343,8 @@
       "A02鍗婅嚜鍔�": "A02 Semi-Auto",
       "A02鍗婅嚜鍔ㄥ惎鍔�": "A02 Semi-Auto Start",
       "B01 鎵�鍦ㄦ牸瀛�": "B01 Current Grid",
-      "B02 鎵�鍦ㄦ牸瀛�": "B02 Current Grid"
+      "B02 鎵�鍦ㄦ牸瀛�": "B02 Current Grid",
+      "鎬ュ仠鍚庝腑姝�/缁х画閫夋嫨": "Abort/ResumeTasks"
     },
     "langParameter1": {
 
@@ -506,11 +507,11 @@
                 "B01琛岃蛋鐐瑰姩": "B01 SERVE TRAVEL",
                 "B02琛岃蛋鐐瑰姩": "B02 SERVE TRAVEL",
                 "B02缈昏浆姘旂几": "B02 YV TURN",
-                "B02鍗囬檷姘旂几": "B02 YV UP DOWN",
-                "B02鐢电闃�": "B02 YV Gassing",
-                "B01缈昏浆姘旂几": "B01 YV TURN",
-                "B01鍗囬檷姘旂几": "B01 YV UP DOWN",
-                "B01鐢电闃�": "B01 YV Gassing",
+                "B02鍗囬檷姘旂几": "B02 Solenoid UP DOWN",
+                "B02鐢电闃�": "B02 Solenoid Gassing",
+                "B01缈昏浆姘旂几": "B01 Solenoid TURN",
+                "B01鍗囬檷姘旂几": "B01 Solenoid UP DOWN",
+                "B01鐢电闃�": "B01 Solenoid Gassing",
                 "A01杈撻�佸弽鍚�": "A01 VFD conveyor reverse",
                 "A02杈撻�佸弽鍚�": "A02 VFD conveyor reverse",
                 "A01娉ㄧ數娉�": "A01 oil pump",
diff --git a/CanadaMes-ui/src/views/Electrical/Action.vue b/CanadaMes-ui/src/views/Electrical/Action.vue
index e3d2757..a037906 100644
--- a/CanadaMes-ui/src/views/Electrical/Action.vue
+++ b/CanadaMes-ui/src/views/Electrical/Action.vue
@@ -71,10 +71,10 @@
           'A02 SERVE TRAVEL POS',
           'B01 SERVE TRAVEL POS',
           'B02 SERVE TRAVEL POS',
-          'B01 YV TURN',
-          'B01 YV UP DOWN',
-          'B02 YV TURN',
-          'B02 YV UP DOWN',
+          'B01 Solenoid TURN',
+          'B01 Solenoid UP DOWN',
+          'B02 Solenoid TURN',
+          'B02 Solenoid UP DOWN',
         ],
         xyData: [
           { name: 'D01 VFD conveyor', value: "0" },
@@ -99,10 +99,10 @@
           { name: 'A02 SERVE TRAVEL POS', value: "0" },
           { name: 'B01 SERVE TRAVEL POS', value: "0" },
           { name: 'B02 SERVE TRAVEL POS', value: "0" },
-          { name: 'B01 YV TURN', value: "0" },
-          { name: 'B01 YV UP DOWN', value: "0" },
-          { name: 'B02 YV TURN', value: "0" },
-          { name: 'B02 YV UP DOWN', value: "0" },
+          { name: 'B01 Solenoid TURN', value: "0" },
+          { name: 'B01 Solenoid UP DOWN', value: "0" },
+          { name: 'B02 Solenoid TURN', value: "0" },
+          { name: 'B02 Solenoid UP DOWN', value: "0" },
         ]
         ,
       },
diff --git a/CanadaMes-ui/src/views/Electrical/ManualJog.vue b/CanadaMes-ui/src/views/Electrical/ManualJog.vue
index 9f88e38..f2e3d13 100644
--- a/CanadaMes-ui/src/views/Electrical/ManualJog.vue
+++ b/CanadaMes-ui/src/views/Electrical/ManualJog.vue
@@ -125,7 +125,7 @@
     },
     //鏍规嵁璇诲彇PLC鐨勫�硷紝鏍规嵁鍚嶇О鏀瑰彉棰滆壊1鎵撳紑锛�0鍏抽棴
     getStatusClass (zhuangtai) {
-console.log(zhuangtai);
+// console.log(zhuangtai);
       if (zhuangtai === 1) {
         return "op";
       }
diff --git a/CanadaMes-ui/src/views/Electrical/ManualonePosition.vue b/CanadaMes-ui/src/views/Electrical/ManualonePosition.vue
index 8548381..a411b5e 100644
--- a/CanadaMes-ui/src/views/Electrical/ManualonePosition.vue
+++ b/CanadaMes-ui/src/views/Electrical/ManualonePosition.vue
@@ -380,6 +380,18 @@
 
               }
 
+              for (let i = 0; i < jsonData2.length; i++) {
+                let arr4 = jsonData2[i];
+                for (let j = 0; j < arr4.length; j++) {
+                  let obj4 = arr4[j];
+                  if (obj4.button && (obj4.button.name.includes("鍚姩") || obj4.button.name.includes("Start"))) {
+                    obj4.button.value = obj.qidong[0][i];
+                    // console.log(obj2.button.value)
+                  }
+                }
+
+
+              }
               for (let i = 2; i < jsonData2.length; i++) {
                 let arr2 = jsonData2[i];
                 for (let j = 2; j < arr2.length; j++) {
@@ -387,7 +399,7 @@
                   if (obj3.button) {
                     if (obj3.button && (obj3.button.name === "鏈洖闆�" || obj3.button.name === "NotZero")) {
                       obj3.button.value = weihuiling[0][i];
-                       console.log(obj3.button.value)
+                      //  console.log(obj3.button.value)
                     }
 
                   }
diff --git a/CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue b/CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue
index 22ac330..80affab 100644
--- a/CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue
+++ b/CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue
@@ -318,6 +318,9 @@
 
               }
 
+                
+
+
               for (let i = 0; i < jsonData2.length; i++) {
                 let arr2 = jsonData2[i];
                 for (let j = 0; j < arr2.length; j++) {
@@ -330,6 +333,20 @@
 
                   }
 
+                }
+
+
+              }
+
+              //鍚姩
+              for (let i = 0; i < jsonData2.length; i++) {
+                let arr4 = jsonData2[i];
+                for (let j = 0; j < arr4.length; j++) {
+                  let obj4 = arr4[j];
+                  if (obj4.button && (obj4.button.name.includes("鍚姩") || obj4.button.name.includes("Start"))) {
+                    obj4.button.value = obj.qidong[0][i];
+                    // console.log(obj2.button.value)
+                  }
                 }
 
 
@@ -389,7 +406,7 @@
       });
 
 
-      console.log(this.jsonData)
+      // console.log(this.jsonData)
 
     }
 
diff --git a/CanadaMes-ui/src/views/Electrical/ServoManualone.vue b/CanadaMes-ui/src/views/Electrical/ServoManualone.vue
index 0eea377..88756d3 100644
--- a/CanadaMes-ui/src/views/Electrical/ServoManualone.vue
+++ b/CanadaMes-ui/src/views/Electrical/ServoManualone.vue
@@ -56,8 +56,8 @@
       </el-row>
       <div class="button-row" style="display: flex; justify-content: space-between;">
         <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex">
-          <el-button v-if="item.button && language === 'en-US' " :name="item.button.name" v-model="item.button.value" :class="{'action-button': true, 'error-button': item.button.name === 'Fault' && item.button.value === 1,'error-button2': item.button.name === 'NotZero' && item.button.value === 0,'fuwei': item.button.name === 'Reset' && item.button.value === 1,'qidong': item.button.name === 'A01 Semi-Auto' && item.button.value === 1,'qidong2': item.button.name === 'A02 Semi-Auto' && item.button.value === 1}" @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend(item.button.name);">{{ item.button.name }}</el-button>
-          <el-button v-if="item.button && language === 'zh-CN' " :name="item.button.name" v-model="item.button.value" :class="{'action-button': true, 'error-button': item.button.name === '鏁呴殰' && item.button.value === 1,'error-button2': item.button.name === '鏈洖闆�' && item.button.value === 0,'fuwei': item.button.name === '澶嶄綅' && item.button.value === 1,'qidong': item.button.name === 'A01鍗婅嚜鍔�' && item.button.value === 1,'qidong2': item.button.name === 'A02鍗婅嚜鍔�' && item.button.value === 1 }" @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend(item.button.name);">{{ item.button.name }}</el-button>
+          <el-button v-if="item.button && language === 'en-US' " :name="item.button.name" v-model="item.button.value" :class="{'action-button': true, 'error-button': item.button.name === 'Fault' && item.button.value === 1,'error-button2': item.button.name === 'NotZero' && item.button.value === 0,'fuwei': item.button.name === 'Reset' && item.button.value === 1,'huiling': item.button.name === 'Home' && item.button.value === 1,'qidong': item.button.name === 'A01 Semi-Auto' && item.button.value === 1,'qidong2': item.button.name === 'A02 Semi-Auto' && item.button.value === 1,'qidong3': item.button.name === 'A01 Semi-Auto Start' && item.button.value === 1,'qidong4': item.button.name === 'A02 Semi-Auto Start' && item.button.value === 1,'qidong5': item.button.name === 'A02 Semi-Auto Start' && item.button.value === 1}" @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend(item.button.name);">{{ item.button.name }}</el-button>
+          <el-button v-if="item.button && language === 'zh-CN' " :name="item.button.name" v-model="item.button.value" :class="{'action-button': true, 'error-button': item.button.name === '鏁呴殰' && item.button.value === 1,'error-button2': item.button.name === '鏈洖闆�' && item.button.value === 0,'fuwei': item.button.name === '澶嶄綅' && item.button.value === 1,'huiling': item.button.name === '鍥為浂' && item.button.value === 1,'qidong': item.button.name === 'A01鍗婅嚜鍔�' && item.button.value === 1,'qidong2': item.button.name === 'A02鍗婅嚜鍔�' && item.button.value === 1,'qidong3': item.button.name === 'A01鍗婅嚜鍔ㄥ惎鍔�' && item.button.value === 1,'qidong4': item.button.name === 'A02鍗婅嚜鍔ㄥ惎鍔�' && item.button.value === 1,'qidong5': item.button.name === 'A02鍗婅嚜鍔�' && item.button.value === 1  }" @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend(item.button.name);">{{ item.button.name }}</el-button>
         </div>
       </div>
     </el-card>
@@ -92,7 +92,7 @@
    
     this.initWebSocket();
     const language = this.$i18n.locale;
-  console.log(language);
+  // console.log(language);
   if (language === 'en-US') {
     this.replaceChineseWithEnglish();
   }
@@ -419,7 +419,6 @@
           socket.close();
           socket = null;
         }
-
         // 寮�鍚竴涓獁ebsocket鏈嶅姟
         socket = new WebSocket(socketUrl);
 
@@ -443,6 +442,32 @@
   const inputBox = document.querySelectorAll('.el-card__body');
   const target = event.target;
   if (obj.zuhe1 && inputBox && Array.from(inputBox).every(box => !box.contains(target))) {
+    
+    //鍚姩鎸夐挳
+
+    
+
+    
+ 
+ 
+    jsonData2[0][9].button.value = obj.qidong[0][0];  // 绗竴涓瓙鏁扮粍涓涓�涓� type=66 鐨� button
+jsonData2[0][10].button.value = obj.qidong[0][1]; // 绗竴涓瓙鏁扮粍涓浜屼釜 type=66 鐨� button
+jsonData2[1][7].button.value = obj.qidong[0][2];  // 绗簩涓瓙鏁扮粍涓涓�涓� type=66 鐨� button
+jsonData2[1][8].button.value = obj.qidong[0][3];
+
+
+
+// 杈撳嚭鏇存柊鍚庣殑 jsonData2
+
+
+
+
+
+
+
+    
+    
+    
     // 鎵ц鏇存柊閫昏緫
     for (let i = 0; i < 6; i++) {
   jsonData2[i].forEach((item, index) => {
@@ -481,6 +506,13 @@
 
      
 }
+
+
+
+
+
+
+
 //鏈洖闆舵洿鏂�
 
 for (let i = 3; i < jsonData2.length; i++) {
@@ -516,6 +548,26 @@
     }
   });
 });
+//鎬ュ仠
+
+
+for (let i = 0; i < jsonData2.length; i++) {
+  let arr2 = jsonData2[i];
+  for (let j = 0; j < arr2.length; j++) {
+    let obj3 = arr2[j];
+    if(obj3.button){
+      if (obj3.button && (obj3.button.name === "鎬ュ仠鍚庝腑姝�/缁х画閫夋嫨" || obj3.button.name === "Abort/ResumeTasks" )) {
+      obj3.button.value = obj.resumeTasks[0][i];
+     console.log(obj3.button.value)
+    }
+
+    }
+   
+  }
+
+     
+}
+
 
 
 
@@ -616,9 +668,23 @@
   background-color: green;
 }
 
-.qidong2 {
+.qidong3 {
+  background-color: green;
+}
+.qidong {
+  background-color: green;
+}
+
+.qidong4 {
   background-color: green;
 }
 
 
+.qidong5 {
+  background-color: green;
+}
+
+.huiling {
+  background-color: green;
+}
 </style>
\ No newline at end of file
diff --git a/CanadaMes-ui/src/views/home/index.vue b/CanadaMes-ui/src/views/home/index.vue
index 88190e1..634d594 100644
--- a/CanadaMes-ui/src/views/home/index.vue
+++ b/CanadaMes-ui/src/views/home/index.vue
@@ -855,6 +855,7 @@
                         this.form3 = {};
                     }
                     if (obj.form3 != null && obj.form3 != "" && obj.state[0] == 0) {
+                        
                         this.form5 = obj.form3[0];
                         this.showform3();
                         this.Sizerange(this.form5, 3);
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
index d40420e..89da29c 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
@@ -39,7 +39,20 @@
        spianService = WebSocketServer.applicationContext.getBean(SpianService.class);
       spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class);
       jdbcConnections = WebSocketServer.applicationContext.getBean(JdbcConnections.class);
-
+//      List<String> adddresslist = new ArrayList<>();
+//      adddresslist.add("DB105.0");// 杩涚墖杞﹁捣濮嬩綅缃�
+//      adddresslist.add("DB105.2");// 杩涚墖杞︾洰鏍囦綅缃�
+//      adddresslist.add("DB105.4");// 杩涚墖鐜荤拑瀹�
+//      adddresslist.add("DB105.8");//杩涚墖绗煎唴宸叉湁鐜荤拑鏁�
+//      adddresslist.add("DB105.16");// 杩涚墖杞﹀惎鍔� 1涓哄惎鍔�
+//      List<Short> datas = new ArrayList<>();
+//      datas.add((short) 1000);//璧峰浣嶇疆
+//      datas.add((short) 5);//鐩爣浣嶇疆
+//      datas.add((short) 610);//杩涚墖鐜荤拑瀹�
+//      datas.add((short) 1); //鐜荤拑鏁�
+//      spianService.outmesid("123321","DB105.20");
+//      datas.add((short) 1);//浠诲姟鍚姩
+//      S7control.getinstance().WriteWord(adddresslist, datas);
       // 鏍规嵁鐜荤拑id鑾峰彇璁㈠崟鍙�,鍗曠嫭鏁版嵁婧�
       // try {
       // north_glass_buffer1 glass = jdbcConnections.selectGlass(112);
@@ -59,7 +72,7 @@
       StringBuilder B02glassid = spianService.queGlassid("DB103.212", 14);// B02鐨勭幓鐠僫d
       // 褰撹繘鐗囧皬杞﹀畬鎴愪换鍔℃椂
       if (B01backs == true) {
-        // 褰揃01灏忚溅姹囨姤瀹屾垚鏃舵洿鏀圭幓鐠冪姸鎬佷负1
+        // 褰揃01灏忚溅姹囨姤瀹屾垚鏃舵洿鏀圭幓鐠冪姸鎬�  涓�1
         spianMapper.UpdateCageOver(B01glassid.toString(), 1);// 鏇存敼绗煎瓙琛ㄨ繘鐗囩姸鎬�
         spianMapper.Updatetask(1, 0);// 鏇存敼杩涚墖浠诲姟鐘舵�佷负1
         spianMapper.UpdatetaskOut(B01glassid.toString()); // 瀹屾垚涓婁竴娆″嚭鐗囨垨鑰呰繘鐗囦换鍔�
@@ -87,8 +100,8 @@
       StringBuilder queueid1 = spianService.queGlassid("DB106.26", 14);// 鑾峰彇璇锋眰鐨刬d璺烡O1鍚屾椂娓�
       // 鑾峰彇DO2鏁版嵁
       StringBuilder queueid2 = spianService.queGlassid("DB103.58", 14);
-      System.out.println("D01|" + queueid1);
-      System.out.println("D02|" + queueid2);
+//      System.out.println("D01|" + queueid1);
+//      System.out.println("D02|" + queueid2);
 
       int questate = spianMapper.Selectquecount(queueid1.toString());// 鍒ゆ柇鎵爜浣嶆槸鍚︽湁鐜荤拑宸茬‘璁�
       // queueid1.toString().isEmpty()
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition.java
index 0f643e0..b12538f 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition.java
@@ -10,52 +10,41 @@
 import java.util.List;
 
 public class PlcManualonePosition extends Thread {
-  String name = "";
-  Integer count = 0;
+  private Configuration config;
 
-  public static String readFileToString(String filePath) throws IOException {
-    File file = new File(filePath);
-    return FileUtils.readFileToString(file, "UTF-8");
+  public PlcManualonePosition() throws IOException {
+    config = new Configuration("config.properties");
   }
 
-  public void readValue() {
-    String str = "";
-    BufferedReader bufferedReader = null;
-    FileInputStream fileInputStream;
-    try {
-      // 浠庢枃浠朵腑璇诲彇瀛楄妭鏁版嵁瀛樺叆 fileInputStream
-      fileInputStream = new FileInputStream("CanadaMes-ui/src/configuration/address.json");
-      // 璇诲彇 fileInputStream 涓瓧鑺傚苟灏嗗叾瑙g爜涓哄瓧绗�
-      InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
-      // 鎻愰珮璇诲彇鏁堢巼锛屽湪 BufferedReader 鍐呭寘瑁� InputStreamReader
-      bufferedReader = new BufferedReader(inputStreamReader);
-      String line = null;
-      // 灏� bufferedReader 鍐呭涓�琛屼竴琛岃祴鍊肩粰str
-      while ((line = bufferedReader.readLine()) != null) {
-        str += line;
+  public static class PLCBooleanConverter {
+
+    public static short[] convertListsToBinaryShortArray(List<Boolean>... lists) {
+      // 璁$畻鎵�鏈夊垪琛ㄤ腑鍏冪礌鐨勬�绘暟
+      int totalSize = 0;
+      for (List<Boolean> list : lists) {
+        totalSize += list.size();
       }
 
-      // 灏唖tr瀛楃涓叉牸寮忚浆涓簀son
-      JSONObject jsonObject = new JSONObject(str);
+      // 鍒涘缓涓�涓冻澶熷ぇ鐨勬暟缁勬潵瀛樻斁鎵�鏈夌殑浜岃繘鍒跺��
+      short[] binaryShortArray = new short[totalSize];
 
-      // 鑾峰彇json涓殑鍊�
-      JSONArray address = jsonObject.getJSONArray("ManualonePosition");
-      for (int i = 0; i < address.size(); i++) {
-        JSONObject ress = (JSONObject) address.get(i);
+      // 褰撳墠鏁扮粍濉厖浣嶇疆鎸囬拡
+      int currentIndex = 0;
 
-        this.name = ress.getStr("name");
-        this.count = ress.getInt("count");
-
+      // 閬嶅巻鎵�鏈夌殑鍒楄〃
+      for (List<Boolean> list : lists) {
+        // 灏嗘瘡涓竷灏斿�艰浆鎹负 0 鎴� 1 骞跺~鍏ユ暟缁�
+        for (Boolean value : list) {
+          binaryShortArray[currentIndex++] = (short) (value ? 1 : 0);
+        }
       }
 
-    } catch (FileNotFoundException e) {
-      e.printStackTrace();
-    } catch (UnsupportedEncodingException e) {
-      e.printStackTrace();
-    } catch (IOException e) {
-      e.printStackTrace();
+      return binaryShortArray;
     }
   }
+
+
+
 
   @Override
   public void run() {
@@ -112,6 +101,25 @@
       addresses10.add("DB104.9.4");
       addresses10.add("DB104.9.5");
       List<Boolean> arraylist10 = S7control.getinstance().readBits(addresses10);
+
+      //A01鍚姩鍦板潃
+      List<String> A01start = Arrays.asList(config.getProperty("mlp.A01start"));
+      //A02鍚姩鍦板潃
+      List<String> A02start = Arrays.asList(config.getProperty("mlp.A02start"));
+
+      List<String> B01start = Arrays.asList(config.getProperty("mlp.B01start"));
+
+      List<String> B02start = Arrays.asList(config.getProperty("mlp.B02start"));
+
+      List<Boolean> A01readstart = S7control.getinstance().readBits(A01start);
+      List<Boolean> A02readstart = S7control.getinstance().readBits(A02start);
+      List<Boolean> B01readstart = S7control.getinstance().readBits(B01start);
+      List<Boolean> B02readstart = S7control.getinstance().readBits(B02start);
+
+      short[] combinedBinaryShortArray = PlcManualonePosition.PLCBooleanConverter.convertListsToBinaryShortArray(
+              A01readstart,  A02readstart,B01readstart, B02readstart
+      );
+
       // Short[] values1 = { 1, 2, 3 };
       // List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
       // Short[] values2 = { 1, 2, 3 };
@@ -157,7 +165,7 @@
       jsonObject.append("shishi1", arraylist5);
       jsonObject.append("guzhang", params2);
       jsonObject.append("weihuiling", params3);
-      // jsonObject.append("weihuiling", arraylist8);
+      jsonObject.append("qidong", combinedBinaryShortArray);
 
       WebSocketServer sendwServer = WebSocketServer.sessionMap.get("ManualonePosition");
       if (sendwServer != null) {
@@ -234,11 +242,20 @@
             }
             if (!sValue.isEmpty()) {
               S7control.getinstance().WriteWord(waddresses1, sValue);
-              List<String> A01start = new ArrayList<>();
-              A01start.add("DB101.2.2");
-              Boolean[] a01values7 = { true};
-              List<Boolean> a01startval = new ArrayList<>(Arrays.asList(a01values7));
-              S7control.getinstance().WriteBit(A01start, a01startval);
+              if (A01readstart != null && !A01readstart.isEmpty()) {
+                // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊�
+                List<Boolean> a01startval = new ArrayList<>();
+                // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊�
+                for (Boolean bit : A01readstart) {
+                  // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑
+                  a01startval.add(!bit);
+                }
+                // 鍐欏叆鏂扮殑浣嶅�煎垪琛�
+                S7control.getinstance().WriteBit(A01start, a01startval);
+              }
+
+
+
               System.out.println("Values " + sValue + " written to PLC at address " + waddresses1);
             }
           }
@@ -264,11 +281,20 @@
             }
             if (!sValue2.isEmpty()) {
               S7control.getinstance().WriteWord(waddresses2, sValue2);
-              List<String> A02start = new ArrayList<>();
-              A02start.add("DB101.2.3");
-              Boolean[] a02values7 = { true};
-              List<Boolean> a01startval = new ArrayList<>(Arrays.asList(a02values7));
-              S7control.getinstance().WriteBit(A02start, a01startval);
+              if (A02readstart != null && !A02readstart.isEmpty()) {
+                // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊�
+                List<Boolean> a02startval = new ArrayList<>();
+                // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊�
+                for (Boolean bit : A02readstart) {
+                  // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑
+                  a02startval.add(!bit);
+                }
+                // 鍐欏叆鏂扮殑浣嶅�煎垪琛�
+                S7control.getinstance().WriteBit(A02start, a02startval);
+              }
+
+
+
               System.out.println("Values " + sValue2 + " written to PLC at address " + waddresses2);
             }
           }
@@ -293,11 +319,17 @@
             }
             if (!sValue2.isEmpty()) {
               S7control.getinstance().WriteWord(waddresses3, sValue2);
-              List<String> B01start = new ArrayList<>();
-              B01start.add("DB101.2.4");
-              Boolean[]B01values7 = { true};
-              List<Boolean> B01startval = new ArrayList<>(Arrays.asList(B01values7));
-              S7control.getinstance().WriteBit(B01start, B01startval);
+              if (B01readstart != null && !B01readstart.isEmpty()) {
+                // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊�
+                List<Boolean> b01startval = new ArrayList<>();
+                // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊�
+                for (Boolean bit : B01readstart) {
+                  // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑
+                  b01startval.add(!bit);
+                }
+                // 鍐欏叆鏂扮殑浣嶅�煎垪琛�
+                S7control.getinstance().WriteBit(B01start, b01startval);
+              }
               System.out.println("Values " + sValue2 + " written to PLC at address " + waddresses3);
             }
           }
@@ -322,11 +354,18 @@
             }
             if (!sValue2.isEmpty()) {
               S7control.getinstance().WriteWord(waddresses4, sValue2);
-              List<String> B02start = new ArrayList<>();
-              B02start.add("DB101.2.5");
-              Boolean[] B02values7 = { true};
-              List<Boolean> B02startval = new ArrayList<>(Arrays.asList(B02values7));
-              S7control.getinstance().WriteBit(B02start, B02startval);
+              if (B02readstart != null && !B02readstart.isEmpty()) {
+                // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊�
+                List<Boolean> b02startval = new ArrayList<>();
+                // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊�
+                for (Boolean bit : B02readstart) {
+                  // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑
+                  b02startval.add(!bit);
+                }
+                // 鍐欏叆鏂扮殑浣嶅�煎垪琛�
+                S7control.getinstance().WriteBit(B02start, b02startval);
+                System.out.println("Values " + b02startval + " written to PLC at address " + B02start);
+              }
               System.out.println("Values " + sValue2 + " written to PLC at address " + waddresses4);
             }
           }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition2.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition2.java
index 61e8c6f..9fd9c89 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition2.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition2.java
@@ -10,52 +10,41 @@
 import java.util.List;
 
 public class PlcManualonePosition2 extends Thread {
-  String name = "";
-  Integer count = 0;
+  private Configuration config;
 
-  public static String readFileToString(String filePath) throws IOException {
-    File file = new File(filePath);
-    return FileUtils.readFileToString(file, "UTF-8");
+  public PlcManualonePosition2() throws IOException {
+    config = new Configuration("config.properties");
   }
 
-  public void readValue() {
-    String str = "";
-    BufferedReader bufferedReader = null;
-    FileInputStream fileInputStream;
-    try {
-      // 浠庢枃浠朵腑璇诲彇瀛楄妭鏁版嵁瀛樺叆 fileInputStream
-      fileInputStream = new FileInputStream("CanadaMes-ui/src/configuration/address.json");
-      // 璇诲彇 fileInputStream 涓瓧鑺傚苟灏嗗叾瑙g爜涓哄瓧绗�
-      InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
-      // 鎻愰珮璇诲彇鏁堢巼锛屽湪 BufferedReader 鍐呭寘瑁� InputStreamReader
-      bufferedReader = new BufferedReader(inputStreamReader);
-      String line = null;
-      // 灏� bufferedReader 鍐呭涓�琛屼竴琛岃祴鍊肩粰str
-      while ((line = bufferedReader.readLine()) != null) {
-        str += line;
+  public static class PLCBooleanConverter {
+
+    public static short[] convertListsToBinaryShortArray(List<Boolean>... lists) {
+      // 璁$畻鎵�鏈夊垪琛ㄤ腑鍏冪礌鐨勬�绘暟
+      int totalSize = 0;
+      for (List<Boolean> list : lists) {
+        totalSize += list.size();
       }
 
-      // 灏唖tr瀛楃涓叉牸寮忚浆涓簀son
-      JSONObject jsonObject = new JSONObject(str);
+      // 鍒涘缓涓�涓冻澶熷ぇ鐨勬暟缁勬潵瀛樻斁鎵�鏈夌殑浜岃繘鍒跺��
+      short[] binaryShortArray = new short[totalSize];
 
-      // 鑾峰彇json涓殑鍊�
-      JSONArray address = jsonObject.getJSONArray("ServoManualone");
-      for (int i = 0; i < address.size(); i++) {
-        JSONObject ress = (JSONObject) address.get(i);
+      // 褰撳墠鏁扮粍濉厖浣嶇疆鎸囬拡
+      int currentIndex = 0;
 
-        this.name = ress.getStr("name");
-        this.count = ress.getInt("count");
-
+      // 閬嶅巻鎵�鏈夌殑鍒楄〃
+      for (List<Boolean> list : lists) {
+        // 灏嗘瘡涓竷灏斿�艰浆鎹负 0 鎴� 1 骞跺~鍏ユ暟缁�
+        for (Boolean value : list) {
+          binaryShortArray[currentIndex++] = (short) (value ? 1 : 0);
+        }
       }
 
-    } catch (FileNotFoundException e) {
-      e.printStackTrace();
-    } catch (UnsupportedEncodingException e) {
-      e.printStackTrace();
-    } catch (IOException e) {
-      e.printStackTrace();
+      return binaryShortArray;
     }
   }
+
+
+
 
   @Override
   public void run() {
@@ -120,12 +109,30 @@
         params3[i] = value ? (short) 1 : (short) 0;
       }
 
+
+
+      //A01鍚姩鍦板潃
+      List<String> A01start = Arrays.asList(config.getProperty("mlp2.A01start"));
+      //A02鍚姩鍦板潃
+      List<String> A02start = Arrays.asList(config.getProperty("mlp2.A02start"));
+
+
+
+      List<Boolean> A01readstart = S7control.getinstance().readBits(A01start);
+      List<Boolean> A02readstart = S7control.getinstance().readBits(A02start);
+
+
+      short[] combinedBinaryShortArray = PlcManualonePosition2.PLCBooleanConverter.convertListsToBinaryShortArray(
+              A01readstart,  A02readstart
+      );
+
       JSONObject jsonObject = new JSONObject();
 
       jsonObject.append("zuhe1", arraylist);
       jsonObject.append("zuhe2", arraylist2);
       jsonObject.append("guzhang", params2);
       jsonObject.append("weihuiling", params3);
+      jsonObject.append("qidong", combinedBinaryShortArray);
       // System.out.println(jsonObject);
       WebSocketServer sendwServer = WebSocketServer.sessionMap.get("ManualonePosition2");
       if (sendwServer != null) {
@@ -186,11 +193,17 @@
             }
             if (!sValue.isEmpty()) {
               S7control.getinstance().WriteWord(waddresses1, sValue);
-              List<String> A01start = new ArrayList<>();
-              A01start.add("DB101.2.0");
-              Boolean[] a01values7 = { true};
-              List<Boolean> a01startval = new ArrayList<>(Arrays.asList(a01values7));
-              S7control.getinstance().WriteBit(A01start, a01startval);
+              if (A01readstart != null && !A01readstart.isEmpty()) {
+                // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊�
+                List<Boolean> a01startval = new ArrayList<>();
+                // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊�
+                for (Boolean bit : A01readstart) {
+                  // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑
+                  a01startval.add(!bit);
+                }
+                // 鍐欏叆鏂扮殑浣嶅�煎垪琛�
+                S7control.getinstance().WriteBit(A01start, a01startval);
+              }
               System.out.println("Values " + sValue + " written to PLC at address " + waddresses1);
             }
           }
@@ -215,11 +228,17 @@
             }
             if (!sValue2.isEmpty()) {
               S7control.getinstance().WriteWord(waddresses2, sValue2);
-              List<String> A02start = new ArrayList<>();
-              A02start.add("DB101.2.1");
-              Boolean[] a02values7 = { true};
-              List<Boolean> a01startval = new ArrayList<>(Arrays.asList(a02values7));
-              S7control.getinstance().WriteBit(A02start, a01startval);
+              if (A02readstart != null && !A02readstart.isEmpty()) {
+                // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊�
+                List<Boolean> a02startval = new ArrayList<>();
+                // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊�
+                for (Boolean bit : A02readstart) {
+                  // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑
+                  a02startval.add(!bit);
+                }
+                // 鍐欏叆鏂扮殑浣嶅�煎垪琛�
+                S7control.getinstance().WriteBit(A02start, a02startval);
+              }
               System.out.println("Values " + sValue2 + " written to PLC at address " + waddresses2);
             }
           }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java
index 01b178d..4366a77 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java
@@ -20,6 +20,32 @@
     config = new Configuration("config.properties");
   }
 
+  public static class PLCBooleanConverter {
+
+    public static short[] convertListsToBinaryShortArray(List<Boolean>... lists) {
+      // 璁$畻鎵�鏈夊垪琛ㄤ腑鍏冪礌鐨勬�绘暟
+      int totalSize = 0;
+      for (List<Boolean> list : lists) {
+        totalSize += list.size();
+      }
+
+      // 鍒涘缓涓�涓冻澶熷ぇ鐨勬暟缁勬潵瀛樻斁鎵�鏈夌殑浜岃繘鍒跺��
+      short[] binaryShortArray = new short[totalSize];
+
+      // 褰撳墠鏁扮粍濉厖浣嶇疆鎸囬拡
+      int currentIndex = 0;
+
+      // 閬嶅巻鎵�鏈夌殑鍒楄〃
+      for (List<Boolean> list : lists) {
+        // 灏嗘瘡涓竷灏斿�艰浆鎹负 0 鎴� 1 骞跺~鍏ユ暟缁�
+        for (Boolean value : list) {
+          binaryShortArray[currentIndex++] = (short) (value ? 1 : 0);
+        }
+      }
+
+      return binaryShortArray;
+    }
+  }
 
 //璇诲彇id
   public StringBuilder queGlassid(String address,int count) {
@@ -80,16 +106,11 @@
       //B02缁勫悎鍦板潃
       String b02Address = config.getProperty("B02.address");
       List<Short> arraylist6 = S7control.getinstance().ReadWord(b02Address, 2);
-      System.out.println(b02Address);
+//      System.out.println(b02Address);
      // 鎵�鏈夋晠闅滄寜閽湴鍧�
       List<String> addresses7 = Arrays.asList(config.getProperty("faultButtonAddresses").split(","));
       List<Boolean> arraylist7 = S7control.getinstance().readBits(addresses7);
-      // 杩涚墖id鍦板潃
-      String inputGlassIdAddress = config.getProperty("inputGlassIdAddress");
-      String outputGlassIdAddress = config.getProperty("outputGlassIdAddress");
-      StringBuilder queueid1 = queGlassid(inputGlassIdAddress, 14);
-      // 瀛樼墖id鍦板潃
-      StringBuilder queueid2 = queGlassid(outputGlassIdAddress, 14);
+
       //A01鍚姩鍦板潃
       List<String> A01start = Arrays.asList(config.getProperty("A01start"));
       //A02鍚姩鍦板潃
@@ -98,12 +119,33 @@
       List<String> A01Bstart = Arrays.asList(config.getProperty("A01Bstart"));
       //A02鍗婅嚜鍔ㄥ湴鍧�
       List<String> A02Bstart = Arrays.asList(config.getProperty("A02Bstart"));
+      //
+      List<String> abortresumeTasks = Arrays.asList(config.getProperty("abortresumeTasks"));
       //鍥為浂鎸夐挳鍦板潃
       List<String> waddresses4 = Arrays.asList(config.getProperty("HomedButtonAddresses").split(","));
       // 鎵�鏈夊浣嶆寜閽湴鍧�
-      List<String> Reset = Arrays.asList(config.getProperty("resetButtonAddresses"));
+      List<String> Reset = Arrays.asList(config.getProperty("resetButtonAddresses").split(","));
+//      System.out.println(Reset);
       // 鎵�鏈夋湭鍥為浂鎸夐挳鍦板潃
-      List<String> addresses8 = Arrays.asList(config.getProperty("notHomedButtonAddresses"));
+      List<String> addresses8 = Arrays.asList(config.getProperty("notHomedButtonAddresses").split(","));
+      // 杩涚墖id鍦板潃
+      String inputGlassIdAddress = config.getProperty("inputGlassIdAddress");
+      String outputGlassIdAddress = config.getProperty("outputGlassIdAddress");
+      StringBuilder queueid1 = queGlassid(inputGlassIdAddress, 14);
+      // 瀛樼墖id鍦板潃
+      StringBuilder queueid2 = queGlassid(outputGlassIdAddress, 14);
+
+      List<Boolean> A01readstart = S7control.getinstance().readBits(A01start);
+      List<Boolean> A02readstart = S7control.getinstance().readBits(A02start);
+      List<Boolean> A01readBstart = S7control.getinstance().readBits(A01Bstart);
+      List<Boolean> A02readsBtart = S7control.getinstance().readBits(A02Bstart);
+
+      List<Boolean> resumeTasks = S7control.getinstance().readBits(abortresumeTasks);
+
+      short[] combinedBinaryShortArray = PLCBooleanConverter.convertListsToBinaryShortArray(
+              A01readstart, A01readBstart, A02readstart, A02readsBtart
+      );
+
 
 // 鎵�鏈夋晠闅滄寜閽浆鎹负1鍜�0
       short[] params2 = new short[arraylist7.size()];
@@ -114,7 +156,7 @@
 
 
       List<Boolean> Reset1 = S7control.getinstance().readBits(Reset);
-
+    //  System.out.println(Reset1);
 // 鎵�鏈夋晠闅滄寜閽浆鎹负1鍜�0
       short[] rReset = new short[Reset1.size()];
       for (int i = 0; i < Reset1.size(); i++) {
@@ -182,6 +224,8 @@
       jsonObject.append("jinpianid", queueid1);
       jsonObject.append("qupianid", queueid2);
       jsonObject.append("fuwei", rReset);
+      jsonObject.append("qidong", combinedBinaryShortArray);
+      jsonObject.append("resumeTasks", resumeTasks);
 
 
 
@@ -224,9 +268,18 @@
             if (!sValue.isEmpty()) {
 
           S7control.getinstance().WriteWord(addresses, sValue);
-              Boolean[] a01values7 = { true};
-              List<Boolean> a01startval = new ArrayList<>(Arrays.asList(a01values7));
-              S7control.getinstance().WriteBit(A01start, a01startval);
+              // 妫�鏌ユ槸鍚﹁鍙栧埌浜嗕綅鍊硷紝骞朵笖鍒楄〃涓嶄负绌�
+              if (A01readstart != null && !A01readstart.isEmpty()) {
+                // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊�
+                List<Boolean> a01startval = new ArrayList<>();
+                // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊�
+                for (Boolean bit : A01readstart) {
+                  // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑
+                  a01startval.add(!bit);
+                }
+                // 鍐欏叆鏂扮殑浣嶅�煎垪琛�
+                S7control.getinstance().WriteBit(A01start, a01startval);
+              }
               System.out.println("Values " + sValue + " written to PLC at address " + addresses);
             }
           }
@@ -253,9 +306,17 @@
             if (!sValue2.isEmpty()) {
             S7control.getinstance().WriteWord(addresses2, sValue2);
 
-              Boolean[] a02values7 = {true};
-              List<Boolean> a02startval = new ArrayList<>(Arrays.asList(a02values7));
-              S7control.getinstance().WriteBit(A02start, a02startval);
+              if (A02readstart != null && !A02readstart.isEmpty()) {
+                // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊�
+                List<Boolean> a02startval = new ArrayList<>();
+                // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊�
+                for (Boolean bit : A02readstart) {
+                  // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑
+                  a02startval.add(!bit);
+                }
+                // 鍐欏叆鏂扮殑浣嶅�煎垪琛�
+                S7control.getinstance().WriteBit(A02start, a02startval);
+              }
               System.out.println("Values " + sValue2 + " written to PLC at address " + addresses2);
             }
           }
@@ -380,6 +441,30 @@
             }
           }
 
+          if (messageArray.getJSONArray(8).size() > 0) {
+            JSONArray jsonArray5 = messageArray.getJSONArray(8);
+            List<Boolean> sValueb5 = new ArrayList<>();
+            for (int i = 0; i < jsonArray5.size(); i++) {
+              Object value = jsonArray5.get(i);
+              if (value != null && !value.toString().equals("null")) {
+                try {
+                  String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+                  boolean val = "1".equals(cleanedValue.trim());
+                  sValueb5.add(val);
+                  System.out.println("messageValue: " + Arrays.asList(val) + " added to the list");
+                } catch (NumberFormatException e) {
+                  // 濡傛灉鏃犳硶瑙f瀽涓� boolean 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+                  System.err.println("Could not parse value: " + value);
+                }
+              }
+            }
+            if (!sValueb5.isEmpty()) {
+
+              S7control.getinstance().WriteBit(abortresumeTasks, sValueb5);
+              System.out.println("Values " + sValueb5 + " written to PLC at address " + A02Bstart);
+            }
+          }
+
 
           // 娓呯┖娑堟伅鍒楄〃
           webSocketServer.clearMessages();
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java b/springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java
index 54d6a6d..ecf88ea 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java
@@ -28,7 +28,7 @@
     FileInputStream fileInputStream;
     try {
       // 浠庢枃浠朵腑璇诲彇瀛楄妭鏁版嵁瀛樺叆 fileInputStream
-      fileInputStream = new FileInputStream("CanadaMes-ui/src/configuration/Alarm.json");
+      fileInputStream = new FileInputStream("src/main/resources/Alarm.json");
       // 璇诲彇 fileInputStream 涓瓧鑺傚苟灏嗗叾瑙g爜涓哄瓧绗�
       InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
       // 鎻愰珮璇诲彇鏁堢巼锛屽湪 BufferedReader 鍐呭寘瑁� InputStreamReader
@@ -121,7 +121,7 @@
         List<String> myCollection;
         myCollection = readValue();
         String[] array1 = myCollection.toArray(new String[myCollection.size()]);
-
+      //  System.out.println(array1.length);
         alarmMapper = WebSocketServer.applicationContext.getBean(AlarmMapper.class);
         for (short i = 0; i < array1.length; i++) {
           // 鏌ヨ瀵瑰簲鎶ヨ淇℃伅缁撴潫鏃堕棿涓簄ull鐨勬潯鏁�
@@ -130,7 +130,7 @@
           // System.out.println(result);
           if (shuzu1[i] == 1 && result == 0) {
             // 濉姞涓�鏉℃姤璀︿俊鎭�,鏈夊紑濮嬫椂闂�
-            // alarmMapper.Insertalarm(array1[i]);
+             alarmMapper.Insertalarm(array1[i]);
           } else if (shuzu1[i] == 0 && result > 0) {
             // 淇敼璇ユ潯鎶ヨ淇℃伅鐨勭粨鏉熸椂闂�
             alarmMapper.updatealarm(array1[i]);
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java b/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
index 8d1b7c3..7fae6e4 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
@@ -32,7 +32,7 @@
     //閾濇id
     public static String FrameNo;
     //鏄惁闇�瑕佹墜鍔ㄧ‘璁ょ幓鐠�
-    public static Boolean isConfirm=true;
+    public static Boolean isConfirm=false;
     // public static Map b=new HashMap<>();
     // b.put()
     @Override
@@ -92,7 +92,7 @@
             // 浼� 鑾峰彇杩涙槸鍚︽湁寰呯‘璁ょ殑鐜荤拑id
             String queid = spianMapper.Selectqueueid();
             int state = spianMapper.Selectqueuestate();
-            jsonObject.append("state", queid);
+            jsonObject.append("queid", queid);
             jsonObject.append("state", state);
             // 鑾峰彇鎵爜浣嶄笌涓婄墖浣嶇幓鐠冧俊鎭�
             Queue form2 = homeMapper.GetQueueInfo(2);
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java b/springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java
index c62f94f..112ca78 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java
@@ -79,7 +79,7 @@
 
         List<String> Intlist = new ArrayList<>();
         for (Short value : plclist) {
-          Intlist.add(value == 1 ? "鑷姩" : "鎵嬪姩");
+          Intlist.add(value == 1 ? "AUTO" : "Manual");
 
         }
         JSONObject jsonObject = new JSONObject();
diff --git a/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java b/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
index f95db1c..f4b82b1 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
@@ -17,29 +17,28 @@
     //
     System.out.println("鍚姩瀹屾垚");
 
-    // new PlcHold().start();
+//    new PlcHold().start();
+//
     //
-    //
-    
-    new Plchome().start();
-    
-    //  new PlcParameter().start();
-    //  //
-    //  // new Plcalarm().start();
-    //  //
-    //  new Plcsign().start();
-    //  //
-    //  new Plcaction().start();
-    //  new Plcstate().start();
-    //  new PlcPositioning1().start();
-    //  new PlcPositioning2().start();
-    //  new PlcParameter2().start();
-    //  new PlcParameter1().start();
-    //  new PLCAutomaticParameterSetting().start();
+//    new Plchome().start();
+//    //
+     new PlcParameter().start();
+     //
+     new Plcalarm().start();
+     //
+     new Plcsign().start();
+     //
+     new Plcaction().start();
+     new Plcstate().start();
+     new PlcPositioning1().start();
+     new PlcPositioning2().start();
+    new PlcParameter2().start();
+     new PlcParameter1().start();
+     new PLCAutomaticParameterSetting().start();
 
-    //  new PlcManualonePosition().start();
-    //  new PlcManualonePosition2().start();
-    //  new PlcServoManualone().start();
-    //  new PLCManualJog().start();
+     new PlcManualonePosition().start();
+     new PlcManualonePosition2().start();
+     new PlcServoManualone().start();
+     new PLCManualJog().start();
   }
 }
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
index 75581e5..ffb3918 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
@@ -29,7 +29,7 @@
      @Select("select cage,cell,tier,id,ROUND(id/2)as prcId,width from storage_cage where cage=#{cage1} and cell=#{cell} and state=0 and disabled=0 and width>=#{width} ORDER BY cell asc,tier asc LIMIT 1")
      StorageCage selectCage1(int  cage1,int cell,double width);
      //鍒ゆ柇绗煎瓙鍐呯幓鐠冩暟
-     @Select("select COUNT(tier)as tier from storage_cage where  cage=#{cage} and cell=#{cell} and state=1;")
+     @Select("select COUNT(tier)as tier from storage_cage where  cage=#{cage} and cell=#{cell} and state!=0;")
      int selectsum(int cage,int cell);
      //瀹屾垚杩涚墖涓殑鐜荤拑鐘舵��
      @Update("update storage_cage set state=#{state} where glass_id=#{glassid};")
@@ -58,7 +58,7 @@
      StorageCage selectGlassCage(int cage,double width,int cage1,int cage2);
 
     //鍒犻櫎绗煎瓙淇℃伅(鍑虹墖)
-    @Update("update storage_cage as a set state=#{state},glass_id=null,order_id=null,glasswidth=0,a.glassheight=null,a.glasswidthmm=null,a.glassheightmm=null,a.listid=null,a.boxid=null where glassid=#{glassid};")
+    @Update("update storage_cage as a set state=#{state},glass_id=null,order_id=null,glasswidth=0,a.glassheight=null,a.glasswidthmm=null,a.glassheightmm=null,a.listid=null,a.boxid=null where glass_id=#{glassid} and state=3;")
     void UpdataGlassCage(String glassid,int state);
      //鏀瑰彉鐜荤拑鐘舵�佷负鍑虹墖涓�
     @Update("update storage_cage as a set state=#{state} where glass_id=#{glassid};")        
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java b/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
index 2f1045f..aceee1b 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
@@ -95,6 +95,7 @@
                     spianMapper.UpdataAddCage1(widths, cage1, cells);// 鍑忓皯鏍煎瓙瀹藉害
                     spianMapper.Inserttask(0, 0, 1000, ids, glassid.toString());// 鏂板浠诲姟
                     S7control.getinstance().WriteWord(adddresslist, datas);
+                    System.out.println("姹囨姤鏃朵换鍔" + datas);
                    
                 }else{
                  // 鏁版嵁搴撲慨鏀圭瀛愯〃鏂板涓�鏉$幓鐠�
@@ -103,6 +104,8 @@
                 spianMapper.UpdataAddCage1(widths, cage1, cells);// 鍑忓皯鏍煎瓙瀹藉害
                 spianMapper.Inserttask(0, 0, 1000, ids, glassid.toString());// 鏂板浠诲姟
                 S7control.getinstance().WriteWord(adddresslist, datas);
+                    System.out.println("姹囨姤鏃朵换鍔" + datas);
+
 
                 // S7control.getinstance().WriteByte("DB105.16",glassid);
                 }
diff --git a/springboot-vue3/src/main/resources/Alarm.json b/springboot-vue3/src/main/resources/Alarm.json
new file mode 100644
index 0000000..89bf615
--- /dev/null
+++ b/springboot-vue3/src/main/resources/Alarm.json
@@ -0,0 +1,507 @@
+{
+  "content": [
+    {
+      "name": "D01 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D02 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D03 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D04 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D05 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D06 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 servo turn error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 servo turn error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 servo travel error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 servo travel error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 servo travel error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 servo travel error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D01 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D01 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D02 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D02 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D03 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D03 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D04 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D04 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D05 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D05 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D06 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D06 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 IN DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 IN pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 OUT DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 OUT pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 IN DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 IN pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 OUT DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 OUT pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D01 Scan glass exceeding limit",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "emergency stop alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "More glass than known",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "less glass than known",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D01 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D02 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D03 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D04 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D05 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D06 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 conveyor Left safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 conveyor right safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 conveyor Left safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 conveyor right safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "1# buffer safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "2# buffer safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "3# buffer safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "4# buffer safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01.SR right in pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02.SR left in pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01.SR left in pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01.SR left dec error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01.SR right dec error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01.SR right in pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02.SR left in pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02.SR left dec error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02.SR right dec error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    }
+  ],
+  "address": [
+    {
+      "name": "DB104.0.0",
+      "count": 71
+    }
+  ]
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/resources/config.properties b/springboot-vue3/src/main/resources/config.properties
index 41ceb42..88d0181 100644
--- a/springboot-vue3/src/main/resources/config.properties
+++ b/springboot-vue3/src/main/resources/config.properties
@@ -31,4 +31,22 @@
 A02Bstart=DB101.11.1
 #A01start
 A01Bstart=DB101.11.0
-#------------------------------------------------------------
\ No newline at end of file
+#abort/resumeTasks
+abortresumeTasks=DB101.10.4
+#------------------------------------------------------------
+
+
+#A02start
+mlp.A02start=DB101.2.3
+#A01start
+mlp.A01start=DB101.2.2
+#A02start
+mlp.B02start=DB101.2.5
+#A01start
+mlp.B01start=DB101.2.4
+
+#--------------------------
+#A02start
+mlp2.A02start=DB101.2.1
+#A01start
+mlp2.A01start=DB101.2.0

--
Gitblit v1.8.0