From fddf1c716af76c2968e08ce11895eaa1c26319a5 Mon Sep 17 00:00:00 2001
From: wu <731351411@qq.com>
Date: 星期二, 26 十一月 2024 14:43:21 +0800
Subject: [PATCH] 增加翻译文件和bug解决

---
 Albania_Mes-ui/src/views/Electrical/AlbaniaServo.vue                                 |  211 +++++-----
 springboot-vue3/src/main/java/com/example/springboot/component/InitUtil.java         |    1 
 springboot-vue3/src/main/java/com/example/springboot/mapper/AlbaniaMapper.java       |    6 
 springboot-vue3/src/main/resources/config.properties                                 |    9 
 springboot-vue3/src/main/java/com/example/springboot/mapper/QueueMapper.java         |    6 
 Albania_Mes-ui/src/lang/locales/en-US.json                                           |    6 
 Albania_Mes-ui/src/views/home/index.vue                                              |   56 ++-
 springboot-vue3/src/main/java/com/example/springboot/component/PlcHoldNew.java       |    7 
 springboot-vue3/src/main/resources/JsonFile/PlcAlbania.json                          |   34 +
 springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java          |  109 ++++-
 springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java          |   25 
 springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java  |   20 
 springboot-vue3/src/main/java/com/example/springboot/mapper/GlassInfoMapper.java     |    3 
 springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java |   53 ++
 Albania_Mes-ui/src/api/home.js                                                       |    5 
 Albania_Mes-ui/src/lang/locales/zh-CN.json                                           |    9 
 springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java     |    2 
 Albania_Mes-ui/src/configuration/Sign.json                                           |  464 ++++++++++++-------------
 springboot-vue3/src/main/java/com/example/springboot/service/SpianServiceNew.java    |   21 +
 springboot-vue3/src/main/java/com/example/springboot/entity/StorageTask.java         |    1 
 20 files changed, 607 insertions(+), 441 deletions(-)

diff --git a/Albania_Mes-ui/src/api/home.js b/Albania_Mes-ui/src/api/home.js
index e448510..53ac842 100644
--- a/Albania_Mes-ui/src/api/home.js
+++ b/Albania_Mes-ui/src/api/home.js
@@ -354,9 +354,9 @@
     })
 }
 
-export function SelectGlassInfo(width,height,thickness,films) {
+export function SelectGlassInfo(width,height,thickness,films,tier) {
     return request({
-        url: '/home/SelectGlassInfo?width='+width+'&height='+height+'&thickness='+thickness+'&films='+films,
+        url: '/home/SelectGlassInfo?width='+width+'&height='+height+'&thickness='+thickness+'&films='+films+'&tier='+tier,
         method: 'post',
         data:""
     })
@@ -447,6 +447,7 @@
 //鎵嬪姩鐣岄潰
 export function writeValue(address,value,type) {
     return request({
+    
         url: '/home/writeValue?address='+address+'&value='+value+'&type='+type,
         method: 'get',
         data:""
diff --git a/Albania_Mes-ui/src/configuration/Sign.json b/Albania_Mes-ui/src/configuration/Sign.json
index 651dbdf..b067d64 100644
--- a/Albania_Mes-ui/src/configuration/Sign.json
+++ b/Albania_Mes-ui/src/configuration/Sign.json
@@ -1,16 +1,7 @@
 {
   "sign": [
     {
-      "name": "Sr.Dec",
-      "value": "1",
-      "state": "1",
-      "type": "1",
-      "page": "1",
-      "unit":"I10.0",
-      "name1":"A01鍑忛�熷厜鐢�"
-    },
-    {
-      "name": "Sr.LowE",
+      "name": "Sr.Low",
       "value": "1",
       "state": "1",
       "type": "1",
@@ -19,139 +10,141 @@
       "name1":"LOW-E妫�娴嬪厜鐢�"
     },
     {
+      "name": "Sr.OutDec",
+      "value": "1",
+      "state": "1",
+      "type": "1",
+      "page": "1",
+      "unit":"I10.0",
+      "name1":"鍑哄彛鍑忛�熷厜鐢�"
+    },
+    {
       "name": "Sr.OutPos",
       "value": "1",
       "state": "1",
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"A01鍑哄彛鍒颁綅鍏夌數"
+      "name1":"鍑哄彛鍒颁綅鍏夌數"
     },
+
+
     {
-      "name": "Sr.InToX",
+      "name": "Sr.XCheck",
       "value": "1",
       "state": "1",
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"A02X杞村叆鍙e噺閫熷厜鐢�"
+      "name1":"X杞村杈�"
     },
     {
-      "name": "Sr.GaToXIn",
+      "name": "Sr.XDec",
       "value": "1",
       "state": "1",
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"A02X杞村叆鍙f祴閲忓厜鐢�"
+      "name1":"X杞村嚭鍙e噺閫�"
     },
     {
-      "name": "Sr.DecToXOut",
+      "name": "Sr.XPos",
       "value": "1",
       "state": "1",
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"A02X杞村嚭鍙e噺閫熷厜鐢�"
+      "name1":"X杞村嚭鍙e埌浣�"
     },
     {
-      "name": "Sr.DecToXOut",
+      "name": "Sr.H1",
       "value": "1",
       "state": "1",
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"A02X杞村嚭鍙e噺閫熷厜鐢�"
+      "name1":"Y杞撮珮搴︽劅搴�1"
     },
     {
-      "name": "Sr.GaToY1",
+      "name": "Sr.H2",
       "value": "1",
       "state": "1",
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"A02Y杞寸矖瀹氫綅1锛堟渶浣庝綅锛�"
+      "name1":"Y杞撮珮搴︽劅搴�2"
     },
     {
-      "name": "Sr.GaToY2",
+      "name": "Sr.H3",
       "value": "1",
       "state": "1",
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"A02Y杞寸矖瀹氫綅2"
+      "name1":"Y杞撮珮搴︽劅搴�3"
     },
     {
-      "name": "Sr.GaToY3",
+      "name": "Sr.H4",
       "value": "1",
       "state": "1",
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"A02Y杞寸矖瀹氫綅3"
+      "name1":"Y杞撮珮搴︽劅搴�4"
     },
     {
-      "name": "Sr.GaToY4",
+      "name": "Sr.YChecK",
       "value": "1",
       "state": "1",
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"A02Y杞寸矖瀹氫綅4锛堟渶楂樹綅锛�"
+      "name1":"Y杞村杈�"
     },
     {
-      "name": "Sr.DecToY",
+      "name": "Sr.YDec",
       "value": "1",
       "state": "1",
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"A02Y杞村噺閫熷厜鐢�"
+      "name1":"Y杞撮珮搴﹀噺閫�"
     },
     {
-      "name": "Sr.GaToY",
+      "name": "Sr.travellimitTop",
       "value": "1",
       "state": "1",
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"A02Y杞存祴閲忓厜鐢�"
+      "name1":"涓婃瀬闄�"
     },
     {
-      "name": "Sr.HomeToY",
+      "name": "Sr.travellimitBottom",
       "value": "1",
       "state": "1",
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"A02Y杞村師鐐�"
+      "name1":"涓嬫瀬闄�"
     },
     {
-      "name": "SQ.LimitSwitchTop",
+      "name": "SQ.YZero",
       "value": "1",
       "state": "1",
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"A02Y杞翠笂鏋侀檺"
+      "name1":"Y杞村師鐐�"
     },
     {
-      "name": "SQ.LimitSwitchBottom",
+      "name": "SQ.Travellimitleft",
       "value": "1",
       "state": "1",
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"A02Y杞翠笅鏋侀檺"
-    },
-    {
-      "name": "Sr.Travellimitleft",
-      "value": "1",
-      "state": "1",
-      "type": "1",
-      "page": "1",
-      "unit":"I10.0",
-      "name1":"B01宸︽瀬闄�"
+      "name1":"宸︽瀬闄�"
     },
     {
       "name": "Sr.PosToLeft",
@@ -160,7 +153,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"B01宸﹀埌浣�"
+      "name1":"宸﹀埌浣�"
     },
     {
       "name": "Sr.DecToLeft",
@@ -169,7 +162,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"B01宸﹀噺閫�"
+      "name1":"宸﹀噺閫�"
     },
     {
       "name": "Sr.DecToRight",
@@ -178,7 +171,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"B01鍙冲噺閫�"
+      "name1":"鍙冲噺閫�"
     },
     {
       "name": "Sr.PosToRight",
@@ -187,7 +180,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"B01鍙冲埌浣�"
+      "name1":"鍙冲埌浣�"
     },
     {
       "name": "Sr.TravellimitRight",
@@ -196,7 +189,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"B01鍙虫瀬闄�"
+      "name1":"鍙虫瀬闄�"
     },
     {
       "name": "SQ.LimitSwitch+",
@@ -205,7 +198,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"B01澶ц溅姝f瀬闄�"
+      "name1":"澶ц溅姝f瀬闄�"
     },
     {
       "name": "SQ.LimitSwitch-",
@@ -214,7 +207,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"B01澶ц溅璐熸瀬闄�"
+      "name1":"澶ц溅璐熸瀬闄�"
     },
     {
       "name": "Sr.HomeToTurn",
@@ -223,7 +216,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"B01缈昏浆鍘熺偣"
+      "name1":"缈昏浆鍘熺偣"
     },
     {
       "name": "SQ.LimitSwitchToTurnTop",
@@ -232,7 +225,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"B01缈昏浆涓婃瀬闄�"
+      "name1":"缈昏浆涓婃瀬闄�"
     },
     {
       "name": "SQ.LimitSwitchToTurnBottom",
@@ -241,7 +234,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"B01缈昏浆涓嬫瀬闄�"
+      "name1":"缈昏浆涓嬫瀬闄�"
     },
     {
       "name": "oilPump",
@@ -250,52 +243,34 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"B01娌规车杈撳嚭"
+      "name1":"娌规车杈撳嚭"
     },
     {
-      "name": "Sr.Travellimitleft",
+      "name": "Sr.InOrigin",
       "value": "1",
       "state": "1",
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C01宸︽瀬闄�"
+      "name1":"灏忚溅鍘熺偣"
     },
     {
-      "name": "Sr.TravellimitRight",
+      "name": "Sr.LimitSwitch+",
       "value": "1",
       "state": "1",
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C01鍙虫瀬闄�"
+      "name1":"灏忚溅姝f瀬闄�"
     },
     {
-      "name": "Sr.Home",
+      "name": "Sr.LimitSwitch-",
       "value": "1",
       "state": "1",
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C01灏忚溅鍘熺偣"
-    },
-    {
-      "name": "SQ.LimitSwitch+",
-      "value": "1",
-      "state": "1",
-      "type": "1",
-      "page": "1",
-      "unit":"I10.0",
-      "name1":"C01灏忚溅姝f瀬闄�"
-    },
-    {
-      "name": "SQ.LimitSwitch-",
-      "value": "1",
-      "state": "1",
-      "type": "1",
-      "page": "1",
-      "unit":"I10.0",
-      "name1":"C01灏忚溅璐熸瀬闄�"
+      "name1":"灏忚溅璐熸瀬闄�"
     },
     {
       "name": "biBasPosBlowUp1",
@@ -304,7 +279,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C01鍚规皵鎶捣姘旂几鍘熺偣1"
+      "name1":"鍚规皵鎶捣姘旂几鍘熺偣1"
     },
     {
       "name": "biBasPosBlowUp2",
@@ -313,7 +288,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C01鍚规皵鎶捣姘旂几鍘熺偣2"
+      "name1":"鍚规皵鎶捣姘旂几鍘熺偣2"
     },
     {
       "name": "biBasPosBlowUp3",
@@ -322,7 +297,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C01鍚规皵鎶捣姘旂几鍘熺偣3"
+      "name1":"鍚规皵鎶捣姘旂几鍘熺偣3"
     },
     {
       "name": "biBasPosBlowUp4",
@@ -331,7 +306,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C01鍚规皵鎶捣姘旂几鍘熺偣4"
+      "name1":"鍚规皵鎶捣姘旂几鍘熺偣4"
     },
     {
       "name": "biBasPosGlassUp1",
@@ -340,7 +315,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C01鐜荤拑鎶捣姘旂几鍘熺偣1"
+      "name1":"鐜荤拑鎶捣姘旂几鍘熺偣1"
     },
     {
       "name": "biBasPosGlassUp2",
@@ -349,7 +324,43 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C01鐜荤拑鎶捣姘旂几鍘熺偣2"
+      "name1":"鐜荤拑鎶捣姘旂几鍘熺偣2"
+    },
+    {
+      "name": "biWorkBlowSr1",
+      "value": "1",
+      "state": "1",
+      "type": "1",
+      "page": "1",
+      "unit":"I10.0",
+      "name1":"鍚规皵鎰熷簲1"
+    },
+    {
+      "name": "biWorkBlowSr2",
+      "value": "1",
+      "state": "1",
+      "type": "1",
+      "page": "1",
+      "unit":"I10.0",
+      "name1":"鍚规皵鎰熷簲2"
+    },
+    {
+      "name": "biWorkBlowSr3",
+      "value": "1",
+      "state": "1",
+      "type": "1",
+      "page": "1",
+      "unit":"I10.0",
+      "name1":"鍚规皵鎰熷簲3"
+    },
+    {
+      "name": "biWorkBlowSr4",
+      "value": "1",
+      "state": "1",
+      "type": "1",
+      "page": "1",
+      "unit":"I10.0",
+      "name1":"鍚规皵鎰熷簲4"
     },
     {
       "name": "biWorkPosBlowUp1",
@@ -358,7 +369,43 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C01鍚规皵鎶捣姘旂几鍘熺偣1"
+      "name1":"鍚规皵鎶捣姘旂几鍔ㄧ偣1"
+    },
+    {
+      "name": "biWorkBlowSr2",
+      "value": "1",
+      "state": "1",
+      "type": "1",
+      "page": "1",
+      "unit":"I10.0",
+      "name1":"鍚规皵鎶捣姘旂几鍔ㄧ偣2"
+    },
+    {
+      "name": "biWorkBlowSr3",
+      "value": "1",
+      "state": "1",
+      "type": "1",
+      "page": "1",
+      "unit":"I10.0",
+      "name1":"鍚规皵鎶捣姘旂几鍔ㄧ偣3"
+    },
+    {
+      "name": "biWorkBlowSr4",
+      "value": "1",
+      "state": "1",
+      "type": "1",
+      "page": "1",
+      "unit":"I10.0",
+      "name1":"鍚规皵鎶捣姘旂几鍔ㄧ偣4"
+    },
+    {
+      "name": "biWorkPosBlowUp1",
+      "value": "1",
+      "state": "1",
+      "type": "1",
+      "page": "1",
+      "unit":"I10.0",
+      "name1":"鍚规皵鎶捣姘旂几鍔ㄧ偣1"
     },
     {
       "name": "biWorkPosBlowUp2",
@@ -367,43 +414,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C01鍚规皵鎶捣姘旂几鍘熺偣2"
-    },
-    {
-      "name": "biWorkPosBlowUp3",
-      "value": "1",
-      "state": "1",
-      "type": "1",
-      "page": "1",
-      "unit":"I10.0",
-      "name1":"C01鍚规皵鎶捣姘旂几鍘熺偣3"
-    },
-    {
-      "name": "biWorkPosBlowUp4",
-      "value": "1",
-      "state": "1",
-      "type": "1",
-      "page": "1",
-      "unit":"I10.0",
-      "name1":"C01鍚规皵鎶捣姘旂几鍘熺偣4"
-    },
-    {
-      "name": "biWorkPosGlassUp1",
-      "value": "1",
-      "state": "1",
-      "type": "1",
-      "page": "1",
-      "unit":"I10.0",
-      "name1":"C01鐜荤拑鎶捣姘旂几鍘熺偣1"
-    },
-    {
-      "name": "biWorkPosGlassUp2",
-      "value": "1",
-      "state": "1",
-      "type": "1",
-      "page": "1",
-      "unit":"I10.0",
-      "name1":"C01鐜荤拑鎶捣姘旂几鍘熺偣2"
+      "name1":"鍚规皵鎶捣姘旂几鍔ㄧ偣2"
     },
     {
       "name": "boWorkPosBlow",
@@ -412,7 +423,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C01鍚规皵杈撳嚭"
+      "name1":"鍚规皵杈撳嚭"
     },
     {
       "name": "boWorkPosBlowUp",
@@ -421,7 +432,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C01鍚规皵鎶捣杈撳嚭"
+      "name1":"鍚规皵鎶捣杈撳嚭"
     },
     {
       "name": "boWorkPosGlassUp",
@@ -430,34 +441,16 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C01鐜荤拑鎶捣杈撳嚭"
+      "name1":"鐜荤拑鎶捣杈撳嚭"
     },
     {
-      "name": "Sr.Travellimitleft",
+      "name": "Sr.InOrigin",
       "value": "1",
       "state": "1",
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C02宸︽瀬闄�"
-    },
-    {
-      "name": "Sr.TravellimitRight",
-      "value": "1",
-      "state": "1",
-      "type": "1",
-      "page": "1",
-      "unit":"I10.0",
-      "name1":"C02鍙虫瀬闄�"
-    },
-    {
-      "name": "Sr.Home",
-      "value": "1",
-      "state": "1",
-      "type": "1",
-      "page": "1",
-      "unit":"I10.0",
-      "name1":"C02灏忚溅鍘熺偣"
+      "name1":"灏忚溅鍘熺偣"
     },
     {
       "name": "SQ.LimitSwitch+",
@@ -466,7 +459,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C02灏忚溅姝f瀬闄�"
+      "name1":"灏忚溅姝f瀬闄�"
     },
     {
       "name": "SQ.LimitSwitch-",
@@ -475,43 +468,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C02灏忚溅璐熸瀬闄�"
-    },
-    {
-      "name": "biBasPosBlowUp1",
-      "value": "1",
-      "state": "1",
-      "type": "1",
-      "page": "1",
-      "unit":"I10.0",
-      "name1":"C02鍚规皵鎶捣姘旂几鍘熺偣1"
-    },
-    {
-      "name": "biBasPosBlowUp2",
-      "value": "1",
-      "state": "1",
-      "type": "1",
-      "page": "1",
-      "unit":"I10.0",
-      "name1":"C02鍚规皵鎶捣姘旂几鍘熺偣2"
-    },
-    {
-      "name": "biBasPosBlowUp3",
-      "value": "1",
-      "state": "1",
-      "type": "1",
-      "page": "1",
-      "unit":"I10.0",
-      "name1":"C02鍚规皵鎶捣姘旂几鍘熺偣3"
-    },
-    {
-      "name": "biBasPosBlowUp4",
-      "value": "1",
-      "state": "1",
-      "type": "1",
-      "page": "1",
-      "unit":"I10.0",
-      "name1":"C02鍚规皵鎶捣姘旂几鍘熺偣4"
+      "name1":"灏忚溅璐熸瀬闄�"
     },
     {
       "name": "biBasPosGlassUp1",
@@ -520,17 +477,90 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C02鐜荤拑鎶捣姘旂几鍘熺偣1"
+      "name1":"鍚规皵鎶捣姘旂几鍘熺偣1"
     },
     {
-      "name": "iBasPosGlassUp2",
+      "name": "biBasPosBlowUp2",
       "value": "1",
       "state": "1",
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C02鐜荤拑鎶捣姘旂几鍘熺偣2"
+      "name1":"鍚规皵鎶捣姘旂几鍘熺偣2"
     },
+    {
+      "name": "biBasPosBlowUp3",
+      "value": "1",
+      "state": "1",
+      "type": "1",
+      "page": "1",
+      "unit":"I10.0",
+      "name1":"鍚规皵鎶捣姘旂几鍘熺偣3"
+    },
+    {
+      "name": "biBasPosBlowUp4",
+      "value": "1",
+      "state": "1",
+      "type": "1",
+      "page": "1",
+      "unit":"I10.0",
+      "name1":"鍚规皵鎶捣姘旂几鍘熺偣4"
+    },
+    {
+      "name": "biBasPosGlassUp1",
+      "value": "1",
+      "state": "1",
+      "type": "1",
+      "page": "1",
+      "unit":"I10.0",
+      "name1":"鐜荤拑鎶捣姘旂几鍘熺偣1"
+    },
+    {
+      "name": "biBasPosGlassUp2",
+      "value": "1",
+      "state": "1",
+      "type": "1",
+      "page": "1",
+      "unit":"I10.0",
+      "name1":"鐜荤拑鎶捣姘旂几鍘熺偣2"
+    },
+    {
+      "name": "biWorkBlowSr1",
+      "value": "1",
+      "state": "1",
+      "type": "1",
+      "page": "1",
+      "unit":"I10.0",
+      "name1":"鍚规皵鎰熷簲1"
+    },
+    {
+      "name": "biWorkBlowSr2",
+      "value": "1",
+      "state": "1",
+      "type": "1",
+      "page": "1",
+      "unit":"I10.0",
+      "name1":"鍚规皵鎰熷簲2"
+    },
+    {
+      "name": "biWorkBlowSr3",
+      "value": "1",
+      "state": "1",
+      "type": "1",
+      "page": "1",
+      "unit":"I10.0",
+      "name1":"鍚规皵鎰熷簲3"
+    },
+    {
+      "name": "biWorkBlowSr4",
+      "value": "1",
+      "state": "1",
+      "type": "1",
+      "page": "1",
+      "unit":"I10.0",
+      "name1":"鍚规皵鎰熷簲4"
+    },
+
     {
       "name": "biWorkPosBlowUp1",
       "value": "1",
@@ -538,7 +568,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C02鍚规皵鎶捣姘旂几鍘熺偣1"
+      "name1":"鍚规皵鎶捣姘旂几鍔ㄧ偣1"
     },
     {
       "name": "biWorkPosBlowUp2",
@@ -547,7 +577,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C02鍚规皵鎶捣姘旂几鍘熺偣2"
+      "name1":"鍚规皵鎶捣姘旂几鍔ㄧ偣2"
     },
     {
       "name": "biWorkPosBlowUp3",
@@ -556,7 +586,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C02鍚规皵鎶捣姘旂几鍘熺偣3"
+      "name1":"鍚规皵鎶捣姘旂几鍔ㄧ偣3"
     },
     {
       "name": "biWorkPosBlowUp4",
@@ -565,7 +595,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C02鍚规皵鎶捣姘旂几鍘熺偣4"
+      "name1":"鍚规皵鎶捣姘旂几鍔ㄧ偣4"
     },
     {
       "name": "biWorkPosGlassUp1",
@@ -574,7 +604,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C02鐜荤拑鎶捣姘旂几鍘熺偣1"
+      "name1":"鐜荤拑鎶捣姘旂几鍔ㄧ偣1"
     },
     {
       "name": "biWorkPosGlassUp2",
@@ -583,7 +613,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C02鐜荤拑鎶捣姘旂几鍘熺偣2"
+      "name1":"鐜荤拑鎶捣姘旂几鍔ㄧ偣2"
     },
     {
       "name": "boWorkPosBlow",
@@ -592,7 +622,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C02鍚规皵杈撳嚭"
+      "name1":"鍚规皵杈撳嚭"
     },
     {
       "name": "boWorkPosBlowUp",
@@ -601,7 +631,7 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C02鍚规皵鎶捣杈撳嚭"
+      "name1":"鍚规皵鎶捣杈撳嚭"
     },
     {
       "name": "boWorkPosGlassUp",
@@ -610,48 +640,12 @@
       "type": "1",
       "page": "1",
       "unit":"I10.0",
-      "name1":"C02鐜荤拑鎶捣杈撳嚭"
-    },
-    {
-      "name": "Red",
-      "value": "1",
-      "state": "1",
-      "type": "1",
-      "page": "1",
-      "unit":"I10.0",
-      "name1":"绾㈢伅"
-    },
-    {
-      "name": "Yellow",
-      "value": "1",
-      "state": "1",
-      "type": "1",
-      "page": "1",
-      "unit":"I10.0",
-      "name1":"榛勭伅"
-    },
-    {
-      "name": "Green",
-      "value": "1",
-      "state": "1",
-      "type": "1",
-      "page": "1",
-      "unit":"I10.0",
-      "name1":"缁跨伅"
-    },
-    {
-      "name": "FootSwitch",
-      "value": "1",
-      "state": "1",
-      "type": "1",
-      "page": "1",
-      "unit":"I10.0",
-      "name1":"鑴氳笍寮�鍏�"
+      "name1":"鐜荤拑鎶捣杈撳嚭"
     }
   ],
   "address": [
     {
-      "name": "DB101.0.0",
+      "name": "DB12.0.0",
       "count": 71
     }
   ]
diff --git a/Albania_Mes-ui/src/lang/locales/en-US.json b/Albania_Mes-ui/src/lang/locales/en-US.json
index 16e88e8..0d10884 100644
--- a/Albania_Mes-ui/src/lang/locales/en-US.json
+++ b/Albania_Mes-ui/src/lang/locales/en-US.json
@@ -27,7 +27,7 @@
   "'No Of Cage":"'No Of Cage",
   "Finish No":"Finish No",
   "Mate No":"Mate No",
-  "Cage GlassNumber":"鍦ㄧ鏁伴噺",
+  "Cage GlassNumber":"Cage GlassNumber",
   "Order":"Order",
   "Select":"Select",
   "GlassType":"GlassType",
@@ -44,10 +44,12 @@
   "Height":"Height",
   "Thickness":"Thickness",
   "Clear":"Clear",
-  "MeasureNumber":"MeasureNumber",
+  "MeasureNumber":"NemainingNumber",
   "results":"results",
   "start work":"start work",
   "stop work":"stop work",
+  "Start bit":"Start bit",
+  "Target bit":"Target bit",
   "Line":"Line",
   "Please select a route":"Please select a route",
   "This route already has a task":"This route already has a task",
diff --git a/Albania_Mes-ui/src/lang/locales/zh-CN.json b/Albania_Mes-ui/src/lang/locales/zh-CN.json
index 1abad0d..bd12573 100644
--- a/Albania_Mes-ui/src/lang/locales/zh-CN.json
+++ b/Albania_Mes-ui/src/lang/locales/zh-CN.json
@@ -43,11 +43,12 @@
   "Height":"楂�",
   "Thickness":"鍘氬害",
   "Clear":"娓呴櫎",
-  "MeasureNumber":"娴嬮噺鏁伴噺",
+  "MeasureNumber":"鍓╀綑鏁伴噺",
   "results":"缁撴灉",
   "start work":"寮�濮嬩笂鐗�",
   "stop work":"鏆傚仠涓婄墖",
-  
+  "Start bit":"璧峰浣�",
+  "Target bit":"鐩爣浣�",
   "Line":"绾胯矾",
   "Please select a route":"璇烽�夋嫨绾胯矾",
   "This route already has a task":"姝よ矾绾垮凡瀛樺湪浠诲姟",
@@ -55,8 +56,8 @@
   "Save":"淇濆瓨",
   "Select file":"閫夋嫨鏂囦欢",
 
-  "ip2":"192.168.10.2",
-  "ip":"localhost",
+  "ip":"192.168.10.2",
+  "ip2":"localhost",
   "systemTitle": "鐧诲綍绯荤粺",
   "usernamePlaceholder": "璇疯緭鍏ョ敤鎴峰悕",
   "passwordPlaceholder": "璇疯緭鍏ュ瘑鐮�",
diff --git a/Albania_Mes-ui/src/views/Electrical/AlbaniaServo.vue b/Albania_Mes-ui/src/views/Electrical/AlbaniaServo.vue
index 9ac6c32..7236a07 100644
--- a/Albania_Mes-ui/src/views/Electrical/AlbaniaServo.vue
+++ b/Albania_Mes-ui/src/views/Electrical/AlbaniaServo.vue
@@ -181,13 +181,13 @@
                   @keyup.enter.native="writeValue(plcSigns[19])" @focus="refresh()" @blur="writeValue(plcSigns[19])"></el-input>m/min
               </div>
               <div>
-                <el-button type="primary" @click="writeValue(plcSigns[20])">Y杞村畾浣嶈缃�1</el-button>
+                <el-button style="width: 50%;" type="primary" @click="writeValue(plcSigns[20])">Y杞村畾浣嶈缃�1</el-button>
                 <el-input style="width: 30%;" v-model="plcSigns[21].value" @focus="refresh()" @blur="writeValue(plcSigns[21])"
                   @keyup.enter.native="writeValue(plcSigns[21])"
                   oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm
               </div>
               <div>
-                <el-button type="primary" @click="writeValue(plcSigns[22])">Y杞村畾浣嶈缃�2</el-button>
+                <el-button style="width: 50%;" type="primary" @click="writeValue(plcSigns[22])">Y杞村畾浣嶈缃�2</el-button>
                 <el-input style="width: 30%;" v-model="plcSigns[23].value" @focus="refresh()" @blur="writeValue(plcSigns[23])"
                   @keyup.enter.native="writeValue(plcSigns[23])"
                   oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm
@@ -504,6 +504,8 @@
               </div>
               <div>
                 <el-button type="primary" @click="writeValue(plcSigns[89])">澶ц溅鍘熺偣璁惧畾</el-button>
+              </div>
+              <div>
                 <el-button type="primary" @click="writeValue(plcSigns[90])">娌规车鑷姩缁存姢</el-button>
               </div>
               <div>
@@ -635,70 +637,70 @@
               </div>
               <div>
                 <el-button type="primary" @click="writeValue(plcSigns[109])">1#绗煎瓙璺濈</el-button>
-                <el-input style="width: 30%;" v-model="plcSigns[109].value" @focus="refresh()" @blur="writeValue(plcSigns[109])"
-                  @keyup.enter.native="writeValue(plcSigns[109])"
-                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm
-              </div>
-              <div>
-                <el-button type="primary" @click="writeValue(plcSigns[109])">2#绗煎瓙璺濈</el-button>
-                <el-input style="width: 30%;" v-model="plcSigns[1].value" @focus="refresh()" @blur="writeValue(plcSigns[18])"
-                  @keyup.enter.native="writeValue(plcSigns[104])"                  
-                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm
-              </div>
-              <div>
-                鍏ョ墖杈撻�佸惎鍔ㄥ欢鏃�<el-input style="width: 30%;" v-model="plcSigns[1].value"
-                  @focus="refresh()" @blur="writeValue(plcSigns[110])"
+                <el-input style="width: 30%;" v-model="plcSigns[110].value" @focus="refresh()" @blur="writeValue(plcSigns[110])"
                   @keyup.enter.native="writeValue(plcSigns[110])"
+                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm
+              </div>
+              <div>
+                <el-button type="primary" @click="writeValue(plcSigns[111])">2#绗煎瓙璺濈</el-button>
+                <el-input style="width: 30%;" v-model="plcSigns[112].value" @focus="refresh()" @blur="writeValue(plcSigns[112])"
+                  @keyup.enter.native="writeValue(plcSigns[1112])"                  
+                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm
+              </div>
+              <div>
+                鍏ョ墖杈撻�佸惎鍔ㄥ欢鏃�<el-input style="width: 30%;" v-model="plcSigns[113].value"
+                  @focus="refresh()" @blur="writeValue(plcSigns[113])"
+                  @keyup.enter.native="writeValue(plcSigns[113])"
                   :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>ms
               </div>
               <div>
-                鍑虹墖杈撻�佸惎鍔ㄥ欢鏃�<el-input style="width: 30%;" v-model="plcSigns[1].value"
-                  @focus="refresh()" @blur="writeValue(plcSigns[111])"
-                  @keyup.enter.native="writeValue(plcSigns[111])"
+                鍑虹墖杈撻�佸惎鍔ㄥ欢鏃�<el-input style="width: 30%;" v-model="plcSigns[114].value"
+                  @focus="refresh()" @blur="writeValue(plcSigns[114])"
+                  @keyup.enter.native="writeValue(plcSigns[114])"
                   :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>ms
               </div>
             </div>
             <div>
               <div>
-                C01琛岃蛋楂橀��<el-input type="text" style="width: 30%;" v-model="plcSigns[112].value"
-                  @focus="refresh()" @blur="writeValue(plcSigns[112])"
-                  @keyup.enter.native="writeValue(plcSigns[112])"
-                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>ms
-              </div>
-              <div>
-                C01琛岃蛋鎵嬪姩<el-input style="width: 30%;" v-model="plcSigns[113].value"
-                  @focus="refresh()" @blur="writeValue(plcSigns[113])"
-                  @keyup.enter.native="writeValue(plcSigns[113])"
-                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>ms
-              </div>
-              <div>
-                鏈�澶у彇鐗囨牸瀛�<el-input style="width: 30%;" v-model="plcSigns[114].value"
-                  @focus="refresh()" @blur="writeValue(plcSigns[114])"
-                  @keyup.enter.native="writeValue(plcSigns[114])"
-                  :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>ms
-              </div>
-              <div>
-                鏈�灏忓彇鐗囨牸瀛�<el-input style="width: 30%;" v-model="plcSigns[115].value"
+                C01琛岃蛋楂橀��<el-input type="text" style="width: 30%;" v-model="plcSigns[115].value"
                   @focus="refresh()" @blur="writeValue(plcSigns[115])"
                   @keyup.enter.native="writeValue(plcSigns[115])"
+                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>ms
+              </div>
+              <div>
+                C01琛岃蛋鎵嬪姩<el-input style="width: 30%;" v-model="plcSigns[116].value"
+                  @focus="refresh()" @blur="writeValue(plcSigns[116])"
+                  @keyup.enter.native="writeValue(plcSigns[116])"
+                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>ms
+              </div>
+              <div>
+                鏈�澶у彇鐗囨牸瀛�<el-input style="width: 30%;" v-model="plcSigns[117].value"
+                  @focus="refresh()" @blur="writeValue(plcSigns[117])"
+                  @keyup.enter.native="writeValue(plcSigns[117])"
                   :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>ms
               </div>
               <div>
-                <el-button type="primary" @click="writeValue(plcSigns[116])" >3#绗煎瓙璺濈</el-button>
-                <el-input style="width: 30%;" v-model="plcSigns[117].value" @focus="refresh()" @blur="writeValue(plcSigns[117])"
-                  @keyup.enter.native="writeValue(plcSigns[117])"
-                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm
-              </div>
-              <div>
-                鍏ョ墖杈撻�佽秴鏃舵椂闂�<el-input style="width: 30%;" v-model="plcSigns[118].value"
+                鏈�灏忓彇鐗囨牸瀛�<el-input style="width: 30%;" v-model="plcSigns[118].value"
                   @focus="refresh()" @blur="writeValue(plcSigns[118])"
                   @keyup.enter.native="writeValue(plcSigns[118])"
                   :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>ms
               </div>
               <div>
-                鍑虹墖杈撻�佽秴鏃舵椂闂�<el-input style="width: 30%;" v-model="plcSigns[119].value"
-                  @focus="refresh()" @blur="writeValue(plcSigns[119])"
-                  @keyup.enter.native="writeValue(plcSigns[119])"
+                <el-button type="primary" @click="writeValue(plcSigns[119])" >3#绗煎瓙璺濈</el-button>
+                <el-input style="width: 30%;" v-model="plcSigns[120].value" @focus="refresh()" @blur="writeValue(plcSigns[120])"
+                  @keyup.enter.native="writeValue(plcSigns[120])"
+                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm
+              </div>
+              <div>
+                鍏ョ墖杈撻�佽秴鏃舵椂闂�<el-input style="width: 30%;" v-model="plcSigns[121].value"
+                  @focus="refresh()" @blur="writeValue(plcSigns[121])"
+                  @keyup.enter.native="writeValue(plcSigns[121])"
+                  :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>ms
+              </div>
+              <div>
+                鍑虹墖杈撻�佽秴鏃舵椂闂�<el-input style="width: 30%;" v-model="plcSigns[122].value"
+                  @focus="refresh()" @blur="writeValue(plcSigns[122])"
+                  @keyup.enter.native="writeValue(plcSigns[122])"
                   :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>ms
               </div>
             </div>
@@ -711,83 +713,83 @@
           <div style="display: flex;">
             <div>
               <div>
-                C02杈撻�侀珮閫�<el-input style="width: 30%;" v-model="plcSigns[120].value"
-                  @focus="refresh()" @blur="writeValue(plcSigns[120])"
-                  @keyup.enter.native="writeValue(plcSigns[120])"
-                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>m/min
-              </div>
-              <div>
-                C02杈撻�佷綆閫�<el-input style="width: 30%;" v-model="plcSigns[121].value"
-                  @focus="refresh()" @blur="writeValue(plcSigns[121])"
-                  @keyup.enter.native="writeValue(plcSigns[121])"
-                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>m/min
-              </div>
-              <div>
-                C02杈撻�佹墜鍔�<el-input style="width: 30%;" v-model="plcSigns[122].value"
-                  @focus="refresh()" @blur="writeValue(plcSigns[122])"
-                  @keyup.enter.native="writeValue(plcSigns[122])"
-                  :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>m/min
-              </div>
-              <div>
-                C02鏈�澶ч�熷害<el-input style="width: 30%;" v-model="plcSigns[123].value"
+                C02杈撻�侀珮閫�<el-input style="width: 30%;" v-model="plcSigns[123].value"
                   @focus="refresh()" @blur="writeValue(plcSigns[123])"
                   @keyup.enter.native="writeValue(plcSigns[123])"
+                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>m/min
+              </div>
+              <div>
+                C02杈撻�佷綆閫�<el-input style="width: 30%;" v-model="plcSigns[124].value"
+                  @focus="refresh()" @blur="writeValue(plcSigns[124])"
+                  @keyup.enter.native="writeValue(plcSigns[124])"
+                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>m/min
+              </div>
+              <div>
+                C02杈撻�佹墜鍔�<el-input style="width: 30%;" v-model="plcSigns[125].value"
+                  @focus="refresh()" @blur="writeValue(plcSigns[125])"
+                  @keyup.enter.native="writeValue(plcSigns[125])"
                   :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>m/min
               </div>
               <div>
-                <el-button type="primary" @click="writeValue(plcSigns[124])">4#绗煎瓙璺濈</el-button>
-                <el-input style="width: 30%;" v-model="plcSigns[125].value" @focus="refresh()" @blur="writeValue(plcSigns[125])"
-                  @keyup.enter.native="writeValue(plcSigns[125])"
+                C02鏈�澶ч�熷害<el-input style="width: 30%;" v-model="plcSigns[126].value"
+                  @focus="refresh()" @blur="writeValue(plcSigns[126])"
+                  @keyup.enter.native="writeValue(plcSigns[126])"
+                  :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>m/min
+              </div>
+              <div>
+                <el-button type="primary" @click="writeValue(plcSigns[127])">4#绗煎瓙璺濈</el-button>
+                <el-input style="width: 30%;" v-model="plcSigns[128].value" @focus="refresh()" @blur="writeValue(plcSigns[128])"
+                  @keyup.enter.native="writeValue(plcSigns[128])"
                   oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>mm
               </div>
               <div>
-                鍏ョ墖杈撻�佸惎鍔ㄥ欢鏃�<el-input style="width: 30%;" v-model="plcSigns[126].value"
-                  @focus="refresh()" @blur="writeValue(plcSigns[126])"
-                  @keyup.enter.native="writeValue(plcSigns[126])"
+                鍏ョ墖杈撻�佸惎鍔ㄥ欢鏃�<el-input style="width: 30%;" v-model="plcSigns[129].value"
+                  @focus="refresh()" @blur="writeValue(plcSigns[129])"
+                  @keyup.enter.native="writeValue(plcSigns[129])"
                   :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>ms
               </div>
               <div>
-                鍑虹墖杈撻�佸惎鍔ㄥ欢鏃�<el-input style="width: 30%;" v-model="plcSigns[1].value"
-                  @focus="refresh()" @blur="writeValue(plcSigns[126])"
-                  @keyup.enter.native="writeValue(plcSigns[126])"
+                鍑虹墖杈撻�佸惎鍔ㄥ欢鏃�<el-input style="width: 30%;" v-model="plcSigns[130].value"
+                  @focus="refresh()" @blur="writeValue(plcSigns[130])"
+                  @keyup.enter.native="writeValue(plcSigns[130])"
                   :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>ms
               </div>
             </div>
             <div>
               <div>
-                C02琛岃蛋楂橀��<el-input type="text" style="width: 30%;" v-model="plcSigns[127].value"
-                  @focus="refresh()" @blur="writeValue(plcSigns[127])"
-                  @keyup.enter.native="writeValue(plcSigns[127])"
-                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>m/s
-              </div>
-              <div>
-                C02琛岃蛋鎵嬪姩<el-input style="width: 30%;" v-model="plcSigns[128].value"
-                  @focus="refresh()" @blur="writeValue(plcSigns[128])"
-                  @keyup.enter.native="writeValue(plcSigns[128])"
-                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>m/s
-              </div>
-              <div>
-                鏈�澶у彇鐗囨牸瀛�<el-input style="width: 30%;" v-model="plcSigns[129].value"
-                  @focus="refresh()" @blur="writeValue(plcSigns[129])"
-                  @keyup.enter.native="writeValue(plcSigns[129])"
-                  :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>鏍�
-              </div>
-              <div>
-                鏈�灏忓彇鐗囨牸瀛�<el-input style="width: 30%;" v-model="plcSigns[130].value"
-                  @focus="refresh()" @blur="writeValue(plcSigns[130])"
-                  @keyup.enter.native="writeValue(plcSigns[130])"
-                  :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>鏍�
-              </div>
-              <div>
-                鍏ョ墖杈撻�佽秴鏃舵椂闂�<el-input style="width: 30%;" v-model="plcSigns[131].value"
+                C02琛岃蛋楂橀��<el-input type="text" style="width: 30%;" v-model="plcSigns[131].value"
                   @focus="refresh()" @blur="writeValue(plcSigns[131])"
                   @keyup.enter.native="writeValue(plcSigns[131])"
+                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>m/s
+              </div>
+              <div>
+                C02琛岃蛋鎵嬪姩<el-input style="width: 30%;" v-model="plcSigns[132].value"
+                  @focus="refresh()" @blur="writeValue(plcSigns[132])"
+                  @keyup.enter.native="writeValue(plcSigns[132])"
+                  oninput="value=value.replace(/^(-?)(\D*)(\d*(?:\.\d{0,2})?).*$/g, '$1$3')"></el-input>m/s
+              </div>
+              <div>
+                鏈�澶у彇鐗囨牸瀛�<el-input style="width: 30%;" v-model="plcSigns[133].value"
+                  @focus="refresh()" @blur="writeValue(plcSigns[133])"
+                  @keyup.enter.native="writeValue(plcSigns[133])"
+                  :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>鏍�
+              </div>
+              <div>
+                鏈�灏忓彇鐗囨牸瀛�<el-input style="width: 30%;" v-model="plcSigns[134].value"
+                  @focus="refresh()" @blur="writeValue(plcSigns[134])"
+                  @keyup.enter.native="writeValue(plcSigns[134])"
+                  :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>鏍�
+              </div>
+              <div>
+                鍏ョ墖杈撻�佽秴鏃舵椂闂�<el-input style="width: 30%;" v-model="plcSigns[135].value"
+                  @focus="refresh()" @blur="writeValue(plcSigns[135])"
+                  @keyup.enter.native="writeValue(plcSigns[135])"
                   :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>ms
               </div>
               <div>
-                鍑虹墖杈撻�佽秴鏃舵椂闂�<el-input style="width: 30%;" v-model="plcSigns[132].value"
-                  @focus="refresh()" @blur="writeValue(plcSigns[132])"
-                  @keyup.enter.native="writeValue(plcSigns[132])"
+                鍑虹墖杈撻�佽秴鏃舵椂闂�<el-input style="width: 30%;" v-model="plcSigns[136].value"
+                  @focus="refresh()" @blur="writeValue(plcSigns[136])"
+                  @keyup.enter.native="writeValue(plcSigns[136])"
                   :oninput="`value=value.replace(/[^-\\d]/g, '')`"></el-input>ms
               </div>
             </div>
@@ -873,7 +875,8 @@
       socket.close();
     },
     writeValue(plcSign) {
-      writeValue(plcSign.addressIndex, plcSign.value, plcSign.ratio).then(res => {
+      const value = plcSign.value || 1; // 榛樿鍊间负1
+      writeValue(plcSign.unit, value, plcSign.ratio).then(res => {
         if (res.data.message == 200) {
           this.$message.success(this.$t('Operation successful'));
         }
diff --git a/Albania_Mes-ui/src/views/home/index.vue b/Albania_Mes-ui/src/views/home/index.vue
index 20501a8..0b15eec 100644
--- a/Albania_Mes-ui/src/views/home/index.vue
+++ b/Albania_Mes-ui/src/views/home/index.vue
@@ -451,12 +451,14 @@
                     </div>
                     <el-table :data="this.tasklist1" border style="width: 700px;">
                         <el-table-column prop="mateid" :label="$t('Mateid')"></el-table-column>
-                        <el-table-column prop="storageCage.cage" :label="$t('Cage No')"></el-table-column>
-                        <el-table-column prop="storageCage.cell" :label="$t('Slot No')"></el-table-column>
-                        <el-table-column prop="storageCage.glassWidth" :label="$t('Width')"></el-table-column>
-                        <el-table-column prop="storageCage.glassHeight" :label="$t('Height')"></el-table-column>
-                        <el-table-column prop="storageCage.thickness" :label="$t('Thickness')"></el-table-column>
+                        <el-table-column prop="storageCage.cage" :label="$t('Start bit')"></el-table-column>
+                        <el-table-column prop="storageCage.cell" :label="$t('Target bit')"></el-table-column>
+                        <el-table-column prop="storageCage.glassWidth" :label="$t('Width')" width="70"></el-table-column>
+                        <el-table-column prop="storageCage.glassHeight" :label="$t('Height')" width="70"></el-table-column>
+                        <el-table-column prop="storageCage.thickness" :label="$t('Thickness')" width="50"></el-table-column>   
+                        <el-table-column prop="storageCage.tier" :label="$t('Tier')" width="50"></el-table-column>                    
                         <el-table-column prop="storageCage.films" :label="$t('Films')"></el-table-column>
+                        
                         <el-table-column :min-width="120" :label="$t('Terminate Task')">
                             <template slot-scope='scope'>
                                 <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
@@ -464,17 +466,17 @@
                                 <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                                     @click="TerminateTask(scope.row.id)">{{ $t('Terminate') }}</el-button>
                             </template>
-                        </el-table-column>
+                        </el-table-column>  
                     </el-table>
                     <el-table :data="this.tasklist2" border style="width: 100%">
                         <el-table-column prop="mateid" :label="$t('Mateid')"></el-table-column>
-                        <el-table-column prop="storageCage.cage" :label="$t('Cage No')"></el-table-column>
-                        <el-table-column prop="storageCage.cell" :label="$t('Slot No')"></el-table-column>
-                        <el-table-column prop="storageCage.glassWidth" :label="$t('Width')"></el-table-column>
-                        <el-table-column prop="storageCage.glassHeight" :label="$t('Height')"></el-table-column>
-                        <el-table-column prop="storageCage.thickness" :label="$t('Thickness')"></el-table-column>
+                        <el-table-column prop="storageCage.cage" :label="$t('Start bit')"></el-table-column>
+                        <el-table-column prop="storageCage.cell" :label="$t('Target bit')"></el-table-column>
+                        <el-table-column prop="storageCage.glassWidth" :label="$t('Width')" width="70"></el-table-column>
+                        <el-table-column prop="storageCage.glassHeight" :label="$t('Height')" width="70"></el-table-column>
+                        <el-table-column prop="storageCage.thickness" :label="$t('Thickness')" width="50"></el-table-column>
+                        <el-table-column prop="storageCage.tier" :label="$t('Tier')" width="50"></el-table-column>
                         <el-table-column prop="storageCage.films" :label="$t('Films')"></el-table-column>
-
                         <el-table-column :min-width="120" :label="$t('Terminate Task')">
                             <template slot-scope='scope'>
                                 <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
@@ -529,7 +531,7 @@
             <div style="height: 760px;">
                 <!--鍔熻兘-->
                 <div>
-                    <el-button type="primary" @click="ManualMatching()" :disabled="(this.LastQueue.state > 0)"
+                    <el-button type="primary" @click="ManualMatching()" :disabled="(this.LastQueue.state > 3)"
                         style="z-index: 999;">{{ $t('Manual matching') }}</el-button>
                     <el-button type="primary" @click="ManualTake()" :disabled="(this.LastQueue.state > 0)"
                         style="z-index: 999;">{{
@@ -611,6 +613,7 @@
                         style="width: 100%;padding:0;">
                         <el-table-column prop="flowcard" :label="$t('Order')"></el-table-column>
                         <el-table-column prop="mateid" :label="$t('Mateid')"></el-table-column>
+                        <el-table-column prop="tier" :label="$t('Tier')" width="50"></el-table-column>
                         <el-table-column prop="films" :label="$t('Films')"></el-table-column>
                         <el-table-column prop="width" :label="$t('Width')"></el-table-column>
                         <el-table-column prop="height" :label="$t('Height')"></el-table-column>
@@ -635,6 +638,7 @@
                 <el-table-column :min-width="80" prop="thickness" :label="$t('Thickness')"></el-table-column>
                 <el-table-column :min-width="80" prop="films" :label="$t('Films')"></el-table-column>
                 <el-table-column :min-width="80" prop="number" :label="$t('number')"></el-table-column>
+                <el-table-column :min-width="80" prop="tier" :label="$t('Tier')"></el-table-column>
                 <el-table-column :min-width="80" prop="mateid" :label="$t('Mateid')"></el-table-column>
                 <!-- <el-table-column :min-width="80" prop="width" :label="$t('Width')"></el-table-column> -->
                 <el-table-column :min-width="250" :label="$t('Operate')">
@@ -816,7 +820,7 @@
                 </el-table-column>
                 <el-table-column prop="cell" :label="$t('Slot No')" align="center">
                     <template slot-scope="scope">
-                        <div :style="{backgroundColor: scope.row.state === 0 ? '#00FFFF' : '', width: '105%', height: '100%', lineHeight: '38px' }">
+                        <div :style="{ width: '105%', height: '100%', lineHeight: '38px' }">
                             {{ scope.row.cell }}
                         </div>
                     </template>
@@ -830,7 +834,7 @@
                 </el-table-column>
                 <el-table-column prop="mateid" :label="$t('Mateid')" align="center">
                     <template slot-scope="scope">
-                        <div :style="{width: '105%', height: '100%', lineHeight: '38px' }">
+                        <div :style="{backgroundColor: scope.row.state === 0 ? '#00FFFF' : '',width: '105%', height: '100%', lineHeight: '38px' }">
                             {{ scope.row.mateid }}
                         </div>
                     </template>
@@ -898,6 +902,13 @@
                         </div>
                     </template>
                 </el-table-column>
+                <el-table-column prop="cell" :label="$t('Slot No')" align="center">
+                    <template slot-scope="scope">
+                        <div :style="{width: '105%', height: '100%', lineHeight: '38px' }">
+                            {{ scope.row.cell }}
+                        </div>  
+                    </template>
+                </el-table-column>
                 <el-table-column prop="mateid" :label="$t('Mateid')" align="center">
                     <template slot-scope="scope">
                         <div :style="{width: '105%', height: '100%', lineHeight: '38px' }">
@@ -939,6 +950,8 @@
                 <el-input v-model="StorageCageForm.thickness" autocomplete="off" style="width:15%;" />
                 <label for="">{{ $t('Films') }}</label>
                 <el-input v-model="StorageCageForm.films" autocomplete="off" style="width:15%;" />
+                <label for="">{{ $t('Tier') }}</label>
+                <el-input v-model="StorageCageForm.tier" autocomplete="off" style="width:15%;" />
                 <el-button @click="SelectGlassInfo()" type="primary">
                     {{ $t('Select') }}</el-button>
             </div>
@@ -1032,7 +1045,8 @@
                 glasswidthmm: "",
                 glassheightmm: "",
                 thickness: "",
-                films: ""
+                films: "",
+                tier: ""
             },
             StorageCageAddInfo: [],
             TaskqueueInfo: [],
@@ -1172,6 +1186,8 @@
                     this.tasklist3 = obj.glassInfoFlowCard[0];
                     this.tasklist2 = obj.StoragTaskeTaskFeed[0];
                     this.tasklist1 = obj.StoragTaskeTaskOut[0];
+                    // console.log(obj.StoragTaskeTaskOut[0]);
+                    
                     this.SelectSetting = obj.SelectSetting[0];
                     this.selectedOption1.films = obj.SelectMeasure[0];
                     this.selectedOption2.thickness = obj.SelectMeasure[0];
@@ -1305,6 +1321,7 @@
                 UpdateQueue(this.StorageCageAddInfo[index]).then(res => {
                     if (res.data.message == 200) {
                         this.$message.success(this.$t('Operation successful'));
+                        // this.StorageCageAdd = false;
                     } else {
                         this.$message.error(this.$t('Operation failed'));
                     }
@@ -1403,9 +1420,9 @@
         },
         //鏌ヨ鐜荤拑淇℃伅
         SelectGlassInfo() {
-            console.log(this.StorageCageForm.glasswidthmm);
-
-            SelectGlassInfo(this.StorageCageForm.glasswidthmm, this.StorageCageForm.glassheightmm, this.StorageCageForm.thickness, this.StorageCageForm.films).then(res => {
+            // console.log(this.StorageCageForm.glasswidthmm);
+            // console.log(this.StorageCageForm.tier);
+            SelectGlassInfo(this.StorageCageForm.glasswidthmm, this.StorageCageForm.glassheightmm, this.StorageCageForm.thickness, this.StorageCageForm.films,this.StorageCageForm.tier).then(res => {
                 this.StorageCageAddInfo = res.data.StorageCageAddInfo;
             })
         },
@@ -1556,6 +1573,7 @@
         //浜哄伐鍖归厤
         ManualMatching() {
             this.StorageCageAdd = true;
+            this.SelectGlassInfo();
             this.Measuermode = false;
         },
         //浜哄伐鎷胯蛋
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/InitUtil.java b/springboot-vue3/src/main/java/com/example/springboot/component/InitUtil.java
index afd257a..ac6e611 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/InitUtil.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/InitUtil.java
@@ -160,6 +160,7 @@
                 plcParameterInfo.setCodeId(codeid);
                 // plcParameterInfo.setAddressIndex(Integer.valueOf(parameterObj.getStr("addressIndex")));
                 plcParameterInfo.setRatio(Integer.valueOf(parameterObj.getStr("ratio")));
+                plcParameterInfo.setUnit(parameterObj.getStr("unit"));
                 // plcParameterInfo.setAddressLength(Integer.valueOf(parameterObj.getStr("addressLenght")));
                 // plcParameterInfo.setUnit(parameterObj.getStr("unit"));
                 plcParameterObject.addPlcParameter(plcParameterInfo);
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcHoldNew.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcHoldNew.java
index 4b1844c..fa710ad 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PlcHoldNew.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcHoldNew.java
@@ -28,11 +28,11 @@
       } catch (InterruptedException e) {
         e.printStackTrace();
       }
-
       storageCageService = WebSocketServer.applicationContext.getBean(StorageCageService.class);
       spianService = WebSocketServer.applicationContext.getBean(SpianServiceNew.class);
       albaniaMapper = WebSocketServer.applicationContext.getBean(AlbaniaMapper.class);
       // spianService.selectout(1);
+      // storageCageService.ScanMatch("123",1,1);
       // spianService.mateOut();
       // 璇诲彇DB14鍖烘枃浠�
       PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
@@ -43,6 +43,7 @@
         String IDStatus1 = plcmes.getPlcParameter("IDStatus1").getValue();// 1鍙蜂换鍔″畬鎴�
         String MESToPLCStatus1 = plcmes.getPlcParameter("MESToPLCStatus1").getValue();// 1鍙风‘璁ゅ瓧
         String MESToPLC = plcmes.getPlcParameter("MESToPLC").getValue();// 鍙戦�佷换鍔″瓧
+        String GaToMES = plcmes.getPlcParameter("GaToMES").getValue();// 娴嬮噺鎴愬姛淇″彿
         
         int taskcont = albaniaMapper.SelectTaskcount(); // 姝e湪杩涜鐨勪换鍔℃暟閲�
         int outtask = albaniaMapper.SelectOutTaskCount(); // 绛夊緟琛ュ彂鐨勫嚭鐗囦换鍔℃暟閲�
@@ -95,14 +96,12 @@
         // 杩愰�佽溅璇锋眰鍜屾祴閲忓畬鎴愯姹�
         GlassInfo glass = albaniaMapper.SelectGlass();
         if (PLCToMES != null && glass != null && MESToPLC != null) {
-          if (PLCToMES.equals("1") == true && MESToPLC.equals("0") == true && MESToPLCStatus1.equals("0") == true&&outtask == 0) {
+          if (PLCToMES.equals("1")&& MESToPLC.equals("0")&&("1".equals(GaToMES)||"2".equals(GaToMES))) {
             try {
               Thread.sleep(100); // 姣�100姣妫�鏌ヤ竴娆�
             } catch (InterruptedException e) {
               Thread.currentThread().interrupt(); // 澶勭悊绾跨▼涓柇
             }
-            // System.out
-            //     .println("杩涚墖鐘舵��:MESToPLC:" + MESToPLC + "PLCToMES:" + PLCToMES + "MESToPLCStatus1:" + MESToPLCStatus1);
             spianService.selectAll(glass);
           }
         }
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 0970d32..7bac542 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
@@ -2,6 +2,7 @@
 
 import cn.hutool.json.JSONObject;
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -140,25 +141,60 @@
                 // 鍖归厤
                 // System.err.println(PlcRequest+","+MesSend+","+width+","+height);
                 if (plcmes.getPlcParameter("GaToMES").getValue() != null) {
-                    String PlcRequest = plcmes.getPlcParameter("GaToMES").getValue();// 璇锋眰
-                    String MesSend = plcmes.getPlcParameter("MESToGaStatus").getValue();// 鍙戦��
+                    String PlcRequest = plcmes.getPlcParameter("GaToMES").getValue();// plc璇锋眰瀛�
+                    String MesSend = plcmes.getPlcParameter("MESToGaStatus").getValue();// mes鍙戦�佸瓧
+                    String A01ToMES = plcmes.getPlcParameter("A01ToMES").getValue();// 鎵爜璇锋眰
+                    String MESToA01 = plcmes.getPlcParameter("MESToA01").getValue();// 纭鎵爜
+                    String Layer = plcmes.getPlcParameter("Layer").getValue();// 灞傚彿
+                    String Mateid = plcmes.getPlcParameter("A01MateID").getValue();// 閰嶅鍙�
+                    String Order = plcmes.getPlcParameter("A01OrderID").getValue();// 璁㈠崟鍙�
                     double width = Double.valueOf(plcmes.getPlcParameter("width").getValue());//
                     // 瀹�
                     double height = Double.valueOf(plcmes.getPlcParameter("Height").getValue());// 楂�
-                    // if ("0".equals(PlcRequest) && "1".equals(MesSend)|| "0".equals(PlcRequest) && "4".equals(MesSend)) {
-                    //     S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 0);
-                    // }
-                    // if ("2".equals(PlcRequest) && "1".equals(MesSend)) {
-                    //     S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 0);
-                    // }
-                     if ("4".equals(PlcRequest)) {
+
+                    String celanedOrders = Order.replaceAll("[^a-zA-Z0-9.]", "").trim().split("\\.")[0];
+                    String cleanedMateids = Mateid.replaceAll("[^0-9.]", "").trim().split("\\.")[0]; // 绉婚櫎鎵�鏈夐潪鏁板瓧瀛楃
+                    String cleanedLayers = Layer.replaceAll("[^0-9.]", "").trim().split("\\.")[0]; //
+
+                    String celanedOrder = celanedOrders.isEmpty() ? "" : celanedOrders;
+                    String cleanedMateid = cleanedMateids.isEmpty() ? "" : cleanedMateids;
+                    String cleanedLayer = cleanedLayers.isEmpty() ? "" : cleanedLayers;
+
+                    if ("4".equals(PlcRequest)) {
                         S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 0);
                         System.out.println("鏀跺洓褰掗浂");
                     }
-                    
-                    // System.out.println("PlcRequest:" + PlcRequest+"MesSend:" + MesSend+"width:" +
-                    // width+"height:" + height);
+                    // 鎵爜璇锋眰鏃�
+                    if ("1".equals(A01ToMES) && "0".equals(MESToA01)&&"0".equals(MesSend)&&"0".equals(PlcRequest)) {
+                        if(cleanedMateid==""||cleanedLayer==""){
+                            cleanedMateid="0";
+                            cleanedLayer="0";
+                        }
+                        int cont = storageCageService.ScanMatch(celanedOrder, Integer.parseInt(cleanedMateid),Integer.parseInt(cleanedLayer));
+                        if (cont > 0) {
+                            System.out.println("鎵爜鎴愬姛");
+                            System.out.println(
+                                    "Order:" + celanedOrder + " Mateid:" + cleanedMateid + " Layer:" + cleanedLayer);
+                            
+                            S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToA01").getAddress(),
+                                    (short) 1);
+                            S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),
+                                    (short) 1);
+                        } else {
+                            // QueueMapper.insertMatchFailure(1000, 1000, -1);
+                            System.out.println(
+                                    "Order:" + celanedOrder + " Mateid:" + cleanedMateid + " Layer:" + cleanedLayer);
+                            System.out.println("鎵爜娣诲姞澶辫触");
+                        }
 
+                    }
+                    // 璇锋眰褰掗浂鏃�
+                    if ("4".equals(A01ToMES)) {
+                        System.out.println("鎵爜褰掗浂鎴愬姛");
+                        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToA01").getAddress(), (short) 0);
+                    }
+
+                    // 娴嬮噺璇锋眰鏃�
                     if ("1".equals(PlcRequest) && "0".equals(MesSend)) {
                         boolean is = HomeService.Normal(width, height, "1");
                         if (is && istest) {
@@ -166,12 +202,10 @@
                             S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),
                                     (short) 1);
 
-                        } 
-                        else if (istest) {
+                        } else if (istest) {
                             // 鍖归厤澶辫触
                             S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),
                                     (short) 4);
-
                         }
                     }
                 }
@@ -214,14 +248,13 @@
                 List<StorageTask> StoragTaskeTaskOut = storageCageService.SelectStorageTask(1);
                 jsonObject.append("StoragTaskeTaskOut", StoragTaskeTaskOut);
 
-                 // 鏌ヨ褰撳墠鍑虹墖闃熷垪
-                 List<Map> OutTask = storageCageService.SelectOutTask();
-                 jsonObject.append("OutTask", OutTask);
+                // 鏌ヨ褰撳墠鍑虹墖闃熷垪
+                List<Map> OutTask = storageCageService.SelectOutTask();
+                jsonObject.append("OutTask", OutTask);
 
-                 // 鏌ヨ鏈�鍚�6娆″嚭鐗囪褰�
-                 List<Map> OutLog = storageCageService.SelectOutLog();
-                 jsonObject.append("OutLog", OutLog);
-
+                // 鏌ヨ鏈�鍚�6娆″嚭鐗囪褰�
+                List<Map> OutLog = storageCageService.SelectOutLog();
+                jsonObject.append("OutLog", OutLog);
 
                 // 鏌ヨ鎵�鏈夌幓鐠冨帤搴﹀拰鑶滅郴
                 List<GlassInfo> SelectMeasure = storageCageService.SelectMeasure();
@@ -239,24 +272,38 @@
 
                 // jsonObject.append("params", new short[] { 30, 40, });
                 // System.out.println("jsonObject:" + jsonObject);
+
                 ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Home");
+                
                 if (sendwServer != null) {
-                    for (WebSocketServer webserver : sendwServer) {
-                        webserver.sendMessage(jsonObject.toString());
-
-                        if (webserver != null) {
-
+                    Iterator<WebSocketServer> iterator = sendwServer.iterator();
+                    while (iterator.hasNext()) {
+                        WebSocketServer webserver = iterator.next();
+                        webserver.sendMessage(jsonObject.toString());                     
                             List<String> messages = webserver.getMessages();
-
                             if (!messages.isEmpty()) {
                                 // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
                                 webserver.clearMessages();
-                            }
-                        }
-
+                            }                     
                     }
                 }
 
+                // ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Home");
+                // if (sendwServer != null) {
+                //     for (WebSocketServer webserver : sendwServer) {
+                //         webserver.sendMessage(jsonObject.toString());
+                //         if (webserver != null) {
+                //             List<String> messages = webserver.getMessages();
+
+                //             if (!messages.isEmpty()) {
+                //                 // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
+                //                 webserver.clearMessages();
+                //             }
+                //         }
+
+                //     }
+                // }
+
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }
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 ae094c4..bb21277 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
@@ -22,7 +22,7 @@
         new PlcHoldNew().start();
         new Plchome().start();
         // new PlcAlbaniaServo().start();
-        // new Plcsign().start();
+        new Plcsign().start();
 
         new PlcSigns().start();
 
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
index de59f75..e40202c 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
@@ -515,8 +515,8 @@
 
   // 鏌ヨ鐜荤拑淇℃伅
   @PostMapping("/SelectGlassInfo")
-  public Result SelectGlassInfo(String width, String height, String thickness, String films) {
-    return storageCageService.SelectGlassInfo(width, height, thickness, films);
+  public Result SelectGlassInfo(String width, String height, String thickness, String films, String tier) {
+    return storageCageService.SelectGlassInfo(width, height, thickness, films,tier);
   }
 
   // 娣诲姞鐜荤拑淇℃伅鍒扮瀛�
@@ -596,21 +596,27 @@
   public Result writeValue(String address, float value, String type) {
     if ("0".equals(type)) {
       System.err.println("鍐欏叆word" + address + "+" + value);
-      // S7control.getinstance().WriteWord(address, (short) value);
+      S7control.getinstance().WriteWord(address, (short) value);
     } else if("1".equals(type)) {
 
       System.err.println("鍐欏叆float" + address + "+" + value);
-      // S7control.getinstance().writeFloat32(address, value);
-    }else{
+      S7control.getinstance().writeFloat32(address, value);
+    }else if("2".equals(type)) {
       System.err.println("鍐欏叆bit" + address + "+" + value);
-      // S7control.getinstance().WriteBit(address, true);
+      S7control.getinstance().WriteBit(address, true);
+    }else{
+      S7control.getinstance().writetime(address, (long)value);
+      System.err.println("鍐欏叆time" + address + "+" + value);
+    }
+      
       try {
         TimeUnit.MILLISECONDS.sleep(300);
       } catch (InterruptedException e) {
         e.printStackTrace();
       }
       // S7control.getinstance().WriteBit(address, false);
-    }
+    
+    
     Map<String, Object> map = new HashMap<>();
     map.put("message", "200");
     return Result.success(map);
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/StorageTask.java b/springboot-vue3/src/main/java/com/example/springboot/entity/StorageTask.java
index 15d5259..d94a070 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/entity/StorageTask.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/StorageTask.java
@@ -14,6 +14,7 @@
     private Integer glasstype;//鐜荤拑绫诲瀷
     private String flowcard;//娴佺▼鍗�
     private Integer mateid;//閰嶇墖id
+    
     private Integer tier;//鐗囧簭
 
 	private StorageCage storageCage;
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/AlbaniaMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/AlbaniaMapper.java
index b5faca2..0602273 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/mapper/AlbaniaMapper.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/AlbaniaMapper.java
@@ -18,7 +18,7 @@
     @Select("select id from storage_cage where glasstype=#{glasstype} and width>=#{width}+#{widths}  and disabled=0 order by id limit 1")
     StorageCage SelectCage(int glasstype,Double width,int widths);
     //鍒ゆ柇绗煎唴娌℃湁鐜荤拑鐨勭┖鏍�
-    @Select("select id from storage_cage where (number is null or number=0) and cage>#{cage} and cage<#{cage2} and disabled=0 order by id limit 1")
+    @Select("select id from storage_cage where (number is null) and cage>#{cage} and cage<#{cage2} and disabled=0 order by id limit 1")
     StorageCage SelectNewCell(int cage,int cage2);
     //澧炲姞鐜荤拑鏁�
     @Update("update storage_cage set number=number+1,width=width-glasswidth where id=#{id}")
@@ -33,8 +33,8 @@
     @Insert("INSERT INTO `albania`.`out_task`(`task_type`, `task_state`, `shelf_rack`, `load_rack`,start_time,glass_id,glasstype,flowcard,mateid,tier) VALUES (#{tasktype},#{taskstate},#{shelfrack},#{loadrack},now(),#{glassid},#{glasstype},#{flowcard},#{mateid},#{tier});")
     void InsertOutTask(int tasktype, int taskstate, int shelfrack, int loadrack, String glassid, int glasstype,String flowcard,int mateid,int tier);
     //鏂板涓�鏉$瀛愭暟鎹�
-    @Update("UPDATE `albania`.`storage_cage` SET `glass_id` =#{glassid}, `width` =width-#{glasswidth}, `glasswidth` =#{glasswidth}, `glassheight` =#{glassheight}, `glasswidthmm` =#{glasswidth}, `glassheightmm` = #{glassheight},  `state` = #{state}, `glasstype` = #{glasstype}, `number` = #{number},thickness=#{thickness},films=#{films},flowcard=#{flowcard},mateid=#{mateid}  WHERE `id` =#{id};")
-    void AddCage(int id,String glassid,Double glasswidth,Double glassheight,int state,int glasstype,int number,Double thickness,String films,String flowcard,int mateid);
+    @Update("UPDATE `albania`.`storage_cage` SET `glass_id` =#{glassid}, `width` =width-#{glasswidth}, `glasswidth` =#{glasswidth}, `glassheight` =#{glassheight}, `glasswidthmm` =#{glasswidth}, `glassheightmm` = #{glassheight},  `state` = #{state}, `glasstype` = #{glasstype}, `number` = #{number},thickness=#{thickness},films=#{films},flowcard=#{flowcard},mateid=#{mateid},tier=#{tier}  WHERE `id` =#{id};")
+    void AddCage(int id,String glassid,Double glasswidth,Double glassheight,int state,int glasstype,int number,Double thickness,String films,String flowcard,int mateid,int tier);
     //鑾峰彇杩涚墖鏁版嵁
     @Select("select glassid,flowcard,glasswidth as width,glassheight as height,glasswidthmm,glassheightmm,glasstype,thickness  from queue where state=1 limit 1")
     GlassInfo SelectGlass();
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/GlassInfoMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/GlassInfoMapper.java
index 7ace4e6..ed89374 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/mapper/GlassInfoMapper.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/GlassInfoMapper.java
@@ -19,7 +19,8 @@
     // @Select("SELECT COUNT(*) FROM role_permission WHERE role_id = #{roleId} AND permission_id = #{permissionId}")
     // boolean checkExists(@Param("roleId") int roleId, @Param("permissionId") int permissionId);
 
-    @Select("SELECT g.* FROM flowcard as f left join glassinfo as g on f.flowcard=g.flowcard WHERE f.orderstate = #{orderstate} and state!=2")
+    // @Select("SELECT g.* FROM flowcard as f left join glassinfo as g on f.flowcard=g.flowcard WHERE f.orderstate = #{orderstate} and state!=2 and g.number>measurenumber")
+    @Select("SELECT g.flowcard,g.mateid,g.tier,g.films,g.width,g.height,g.thickness,g.number,(g.number-g.measurenumber)as measurenumber FROM flowcard as f left join glassinfo as g on f.flowcard=g.flowcard WHERE f.orderstate = 1 and state!=2 and g.number>measurenumber")
     List<GlassInfo> selectOrderState(@Param("orderstate") int orderstate);
 
     @Update("UPDATE glassinfo SET measurenumber = measurenumber+1 WHERE id = #{id}")
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java
index feda6e1..97d0a29 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java
@@ -239,7 +239,7 @@
   List<StorageCage> SelectStorageCageInfo();
 
   // 鍒犻櫎鏍煎瓙鍐呯幓鐠冧俊鎭�
-  @Update("update storage_cage set films=null,width=4300,glasswidth=null,glassheight=null,glasswidthmm=null,glassheightmm=null,thickness=null,glasstype=null,number=null,glass_id=null,flowcard=null,mateid=null where cell=#{cell}")
+  @Update("update storage_cage set films=null,width=4300,glasswidth=null,glassheight=null,glasswidthmm=null,glassheightmm=null,thickness=null,glasstype=null,number=null,glass_id=null,flowcard=null,mateid=null,tier=null where cell=#{cell}")
   void DeleteStroageCageByCell(Integer cell);
 
   // 淇敼鏍煎瓙鐜荤拑鏁伴噺
@@ -262,20 +262,20 @@
   @Select("select * from storage_cage where cell=#{cell}")
   StorageCage SelectStorageByCell(String cell);
   //鏍规嵁鐜荤拑绫诲瀷鏌ヨ鐜荤拑淇℃伅
-  @Select("select a.shelf_rack as cage,a.load_rack as cell,b.mateid,b.width as glasswidth,b.height as glassheight,b.thickness,b.films from storage_task a left join glassinfo b on a.glasstype=b.glasstype where a.id=#{id} limit 1")
+  @Select("select a.shelf_rack as cage,a.load_rack as cell,b.mateid,b.width as glasswidth,b.height as glassheight,b.thickness,b.films,a.tier from storage_task a left join glassinfo b on a.glasstype=b.glasstype where a.id=#{id} limit 1")
   StorageCage SelectStorageByCellGlass(Integer id);
 
   // 鎵嬪姩瀹屾垚浠诲姟
   @Select("update storage_task set task_state=#{state} where id=#{id}")
   void FinishTask(Integer id, int state);
   //浜哄伐鍖归厤娴嬮噺鏌ヨ
-  @Select("select gi.* from glassinfo gi inner join flowcard fc on gi.flowcard=fc.flowcard where fc.state!=2 and fc.orderstate=1 and position(#{width} in gi.width) and position(#{height} in gi.height) and position(#{thickness} in gi.thickness) and position(#{films} in gi.films) group by gi.id")
-  List<GlassInfo> SelectGlassInfo(String width, String height, String thickness, String films);
+  @Select("select gi.* from glassinfo gi inner join flowcard fc on gi.flowcard=fc.flowcard where fc.state!=2 and fc.orderstate=1 and position(#{width} in gi.width) and position(#{height} in gi.height) and position(#{thickness} in gi.thickness) and position(#{films} in gi.films) and position(#{tier} in gi.tier) group by gi.id")
+  List<GlassInfo> SelectGlassInfo(String width, String height, String thickness, String films,String tier);
   // @Select("select b.* from flowcard a left join glassinfo b on a.flowcard=b.flowcard INNER JOIN measuresetting c where a.orderstate=1 and a.state!=2 and b.width BETWEEN  #{width} - c.errorwidth AND #{width} + c.errorwidth and b.height BETWEEN  #{height} - c.errorheight AND #{height} + c.errorheight and b.films=#{films} and b.thickness=#{thickness}")
   // List<GlassInfo> SelectGlassInfo(String width, String height, String thickness, String films);
 
 
-  @Update("update storage_cage set glasstype=#{glassInfo.glasstype},mateid=#{glassInfo.mateid},glass_id=#{glassInfo.glassid},flowcard=#{glassInfo.flowcard},glasswidth=#{glassInfo.width},glassheight=#{glassInfo.height},thickness=#{glassInfo.thickness},films=#{glassInfo.films},number=0 where cell=#{cell}")
+  @Update("update storage_cage set glasstype=#{glassInfo.glasstype},mateid=#{glassInfo.mateid},glass_id=#{glassInfo.glassid},flowcard=#{glassInfo.flowcard},glasswidth=#{glassInfo.width},glassheight=#{glassInfo.height},thickness=#{glassInfo.thickness},films=#{glassInfo.films},number=0,tier=#{glassInfo.tier} where cell=#{cell}")
   void StorageCageAddGlass(String cell, GlassInfo glassInfo);
 
   @Select("select id,flowcard,Customer,totaltier,line,state,method,starttime,orderstate from flowcard where state!=2")
@@ -319,7 +319,7 @@
   @Update("update queue set glassid=concat(#{flowcard},'-',#{tier}),flowcard=#{flowcard},glasswidth=#{width},glassheight=#{height},glasstype=#{glasstype},thickness=#{thickness},mateid=#{mateid},state=1 where state<=0")
   void UpdateQueue(String flowcard, double width, double height, Integer glasstype, Double thickness, Integer tier,int mateid);
   //浜哄伐鍖归厤鏂板涓�鏉�
-  @Insert("INSERT INTO queue (flowcard,glassid,glasswidth,glassheight,glasstype,thickness,mateid,state) VALUES (#{flowcard},concat(#{flowcard},'-',#{tier}),#{width},#{height},#{glasstype},#{thickness},#{mateid},1)")
+  @Insert("INSERT INTO queue (flowcard,glassid,glasswidth,glassheight,glasstype,thickness,mateid,state,time) VALUES (#{flowcard},concat(#{flowcard},'-',#{tier}),#{width},#{height},#{glasstype},#{thickness},#{mateid},1,NOW())")
   int AddQueue(String flowcard, double width, double height, Integer glasstype, Double thickness, Integer tier,int mateid); 
   //鍒ゆ柇娴嬮噺琛ㄦ槸鍚︽湁鍙洿鏀圭殑鏁版嵁
   @Select("select count(*) from queue where state<1")
@@ -369,7 +369,7 @@
                     +" select #{flowcard}, 0, #{number}, 0, 0, 0, now(),#{Customer} where 0=( select count(*) from flowcard where flowcard=#{flowcard});")
   void InsertFlowcard(String flowcard, Integer number,String Customer);
 
-    @Delete("DELETE FROM queue WHERE id = (SELECT id FROM ( SELECT id FROM queue WHERE glasstype = #{glassId} ORDER BY time ASC LIMIT 1) AS temp);")
+    @Delete("DELETE FROM queue WHERE id = (SELECT id FROM ( SELECT id FROM queue WHERE state = 2 ORDER BY time ASC LIMIT 1) AS temp);")
     void DeletequeueByGlassid(String glassId);
 
     @Select("select count(*) from flowcard where line=#{line} and state=1 and flowcard!=#{flowcard}")
@@ -378,9 +378,16 @@
     @Update("UPDATE measuresetting SET `films` = #{films}, `thickness` = #{thickness} WHERE `id` = 1;")
     int SaveMeasure(String films, Integer thickness);
     //鏌ヨ鍑虹墖闃熷垪鏁版嵁
-    @Select("SELECT a.id,a.flowcard,customer,a.mateid,a.tier,b.films,b.thickness,b.width,b.height,a.task_state as state FROM `out_task` a left join glassinfo b on a.glasstype=b.glasstype where task_state!=1 ORDER BY task_state")
+    @Select("SELECT a.id,a.flowcard,customer,a.mateid,a.tier,b.films,b.thickness,b.width,b.height,a.task_state as state,shelf_rack as cell FROM `out_task` a left join glassinfo b on a.glasstype=b.glasstype where task_state!=1 ORDER BY task_state")
     List<Map>SelectOutTask();
      //鏌ヨ鍑虹墖璁板綍鏁版嵁
-     @Select(" select a.id,a.flowcard,customer,a.mateid,a.tier,b.films,b.thickness,b.width,b.height,a.task_state as state,a.shelf_rack as cell from storage_task a left join glassinfo b on a.glasstype=b.glasstype where task_type=1 ORDER BY a.id desc LIMIT 6;")
+     @Select(" select DISTINCT a.id,a.flowcard,customer,a.mateid,a.tier,b.films,b.thickness,b.width,b.height,a.task_state as state,a.shelf_rack as cell from storage_task a left join glassinfo b on a.glasstype=b.glasstype where task_type=1 ORDER BY a.id desc LIMIT 6;")
      List<Map>SelectOutLog();
+     //鏌ヨ鎵爜鏁版嵁
+     @Select("select*from glassinfo a where a.flowcard=#{flowcard} and a.mateid=#{mateid} and a.tier=#{tier} LIMIT 1")
+     GlassInfo SelectCodeGlass(String flowcard,Integer mateid,Integer tier);
+     //鏌ヨ鍑虹墖闃熷垪鐨勭幓鐠冧俊鎭�
+     @Select("select shelf_rack from out_task where id=#{id}")
+     int SelectOutTaskId(Integer id);
+     
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/QueueMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/QueueMapper.java
index 02da05f..ff9ce1b 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/mapper/QueueMapper.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/QueueMapper.java
@@ -1,6 +1,7 @@
 package com.example.springboot.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.example.springboot.entity.GlassInfo;
 import com.example.springboot.entity.Queue;
 import com.example.springboot.entity.RolePermission;
 
@@ -44,7 +45,8 @@
     @Delete("delete from queue where state<=0")
     void DeleteErrorQueue();
 
-    @Delete("delete from queue where state<=3")
+    @Delete("delete from queue where state<1")
     void DeleteQueue();
-
+    @Insert("INSERT into queue  (flowcard,glassId,mateid,glasstype,glasswidth,glassheight,thickness,state,time) VALUES (#{flowcard},#{glassId},#{mateid},#{glasstype},#{glasswidth},#{glassheight},#{thickness},1,NOW())")
+    int insertQueueCode(String flowcard,String glassId,int mateid,int glasstype,double glasswidth,double glassheight,double thickness);
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/SpianServiceNew.java b/springboot-vue3/src/main/java/com/example/springboot/service/SpianServiceNew.java
index a1e0c70..72a2bd8 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/service/SpianServiceNew.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/SpianServiceNew.java
@@ -63,7 +63,7 @@
             // 褰撹繑鍥炵殑鏍煎瓙鍙蜂负绌烘椂,杩斿洖400绗煎瓙宸叉弧
             if (cage != null) {
                 albaniaMapper.AddCage(cage.getId(), glassid, width, height, 1, glasstype, 0, thickness,
-                        glassfilms.getFilms(), glassfilms.getFlowcard(), glassfilms.getMateid());
+                        glassfilms.getFilms(), glassfilms.getFlowcard(), glassfilms.getMateid(),glassfilms.getTier());
                 Mestast(glassid, 1001, cage.getId(), 1, "MESID1", 1);
                 System.out.println("浠诲姟鍙戦�佺幓鐠僫d:" + glassid + "璧峰浣嶇疆:" + 1001 + "鏍煎瓙鍙�:" + cage.getId() + "鍚姩:" + 1);
                 albaniaMapper.UpdateStorage(width, height, cage.getId());
@@ -72,7 +72,7 @@
             }
         }
         // 澧炲姞浠诲姟璁板綍
-        albaniaMapper.Inserttask(0, 0, 1001, cage.getId(), glassid, glasstype, flowcard, glassfilms.getMateid(), 0);
+        albaniaMapper.Inserttask(0, 0, 1001, cage.getId(), glassid, glasstype, flowcard, glassfilms.getMateid(), glassfilms.getTier());
         albaniaMapper.UpdateQueueState(glassid);
         return (200);
 
@@ -92,6 +92,7 @@
                 carwidth = carwidth + glass.getWidth() + 300;
                 if (carwidth >= 4300&&type!=glassmate.get(i).getTaskType()) {
                     S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), (short) 1);// 鍑虹墖浠诲姟鍚姩
+                    MestoPlc();
                     return (200);
                 } else {
                     //澧炲姞涓�鏉′换鍔¤褰�
@@ -108,6 +109,22 @@
             }
             // 鏈閰嶇墖瀹屾垚鍙戦�佸惎鍔ㄥ懡浠�
             // S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), (short) 1);// 鍑虹墖浠诲姟鍚姩
+              while (true) {
+            String currentValue = plcmes.getPlcParameter("MESToPLC").getValue();
+            // 妫�鏌� MESToPLC 鐨勫�兼槸鍚︿负 0
+            if (currentValue.equals("1")) {
+              System.out.println("鍙戦�佸惎鍔ㄥ瓧鐜板湪涓�1,鍋滄寰幆鍐欏叆");
+              break; // 閫�鍑哄惊鐜�
+            }
+            // 濡傛灉涓嶄负 1锛岀户缁啓鍏�
+            S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(),(short) 1);// 浠诲姟鍙戦�佸瓧   
+            System.out.println("缁х画鍐欏叆 MESToPLC,褰撳墠鍊�:" + currentValue);
+            try {
+                Thread.sleep(100); // 渚嬪姣忕妫�鏌ヤ竴娆�
+              } catch (InterruptedException e) {
+                e.printStackTrace();
+              }
+          }
             MestoPlc();
 
         }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java b/springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java
index fcadaaf..c2a2672 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java
@@ -316,6 +316,10 @@
                 homeMapper.FinishTask(storageTask.getId(), 2);// 瀹屾垚浠诲姟
                 homeMapper.DeletequeueByGlassid(storageTask.getGlasstype().toString());
                 glassInfoMapper.updateGlassNumber(storageTask.getGlasstype());// 鍑忓皯鎵弿娆℃暟
+                StorageCage storageCage = homeMapper.SelectStorageByCell(storageTask.getLoadrack());
+                if (storageCage.getNumber() == null || storageCage.getNumber() == 0) {
+                    UpdateStroageCageByCell(Integer.parseInt(storageTask.getShelfRack()), 0);// 娓呴櫎鏍煎唴淇℃伅
+                }
             } else {
                 System.out.println("缁撴潫鍑虹墖浠诲姟:" + storageTask.getId());
                 homeMapper.FinishTask(storageTask.getId(), 2);// 瀹屾垚浠诲姟
@@ -391,8 +395,8 @@
     }
 
     // 鏌ヨ鐜荤拑淇℃伅
-    public Result SelectGlassInfo(String width, String height, String thickness, String films) {
-        List<GlassInfo> glassInfoList = homeMapper.SelectGlassInfo(width, height, thickness, films);
+    public Result SelectGlassInfo(String width, String height, String thickness, String films,String tier) {
+        List<GlassInfo> glassInfoList = homeMapper.SelectGlassInfo(width, height, thickness, films,tier);
         Map<String, Object> map = new HashMap<>();
         map.put("StorageCageAddInfo", glassInfoList);
         return Result.success(map);
@@ -445,25 +449,49 @@
         map.put("message", "200");
         return Result.success(map);
     }
+    //鎵爜鍖归厤鎴愬姛
+    public int ScanMatch(String Order, Integer Mateid,Integer tier) {
+        
+        GlassInfo glass=homeMapper.SelectCodeGlass(Order,Mateid,tier);
+        System.out.println("glass:"+glass);
+        System.out.println("order"+Order+"mateid"+Mateid+"tier"+tier);
+        if(glass==null){
+            return 0;
+        }else{
+        int cont= QueueMapper.insertQueueCode(glass.getFlowcard(),glass.getGlassid(),glass.getMateid(),glass.getGlasstype(),glass.getWidth(),glass.getHeight(),glass.getThickness());
+        glassInfoMapper.updatemeasurenumber(glass.getId());
+        return cont;
+     }
+    }
 
     // 浜哄伐鍖归厤淇敼娴嬮噺淇℃伅
     public Result UpdateQueue(GlassInfo glassInfo) {
         // 鍒犻櫎鏁版嵁
+        PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
         Map<String, Object> map = new HashMap<>();
         QueueMapper.DeleteQueue();
-        System.out.println("浜哄伐鍖归厤ID:" + glassInfo.getMateid() + "鑶滅郴:" + glassInfo.getFilms());
+        String mestoplc=plcmes.getPlcParameter("MESToGaStatus").getValue();
+        String A02Plc=plcmes.getPlcParameter("GaToMES").getValue();
+        System.out.println("浜哄伐鍖归厤mestoplc:"+mestoplc);
         // int count = homeMapper.SelectQueue();
-        // if (count > 0) {
+        if (("0".equals(mestoplc)&&"0".equals(A02Plc))||("1".equals(A02Plc)&&"4".equals(mestoplc))) {
             // homeMapper.UpdateQueue(glassInfo.getFlowcard(), glassInfo.getWidth(), glassInfo.getHeight(),
             //         glassInfo.getGlasstype(), glassInfo.getThickness(), glassInfo.getTier(), glassInfo.getMateid());
             homeMapper.AddQueue(glassInfo.getFlowcard(), glassInfo.getWidth(), glassInfo.getHeight(),
                     glassInfo.getGlasstype(), glassInfo.getThickness(), glassInfo.getTier(), glassInfo.getMateid());
-            PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
+            glassInfoMapper.updatemeasurenumber(glassInfo.getId());
+           if("0".equals(mestoplc)){
+            S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToA01").getAddress(), (short) 1);
             S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(), (short) 1);
+            System.out.println("鎻愬墠鍖归厤");
+           }else{
+            System.out.println("娴嬮噺鍖归厤");
+            S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(), (short) 1);
+           }
             map.put("message", "200");
-        // } else {
-        //     map.put("message", "300");
-        // }
+        } else {
+            map.put("message", "300");
+        }
         return Result.success(map);
     }
 
@@ -505,6 +533,9 @@
 
     // 鍒犻櫎鍑虹墖闃熷垪
     public Result DeleteOutTask(Integer id) {
+        
+        int cell=homeMapper.SelectOutTaskId(id);
+        UpdateStroageCageByCell(cell, 1);// 鐜荤拑鏁伴噺+1
         homeMapper.DeleteOutTask(id);
         Map<String, Object> map = new HashMap<>();
         map.put("message", "200");
@@ -535,7 +566,10 @@
         // 璇诲彇DB105鍖烘枃浠�
         PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
         // 閲嶆柊娴嬮噺
+        String PlcRequest = plcmes.getPlcParameter("GaToMES").getValue();// plc璇锋眰瀛�
+        if("1".equals(PlcRequest)){
         S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(), (short) 2);
+        }
         // 鍒犻櫎鏁版嵁
         QueueMapper.DeleteErrorQueue();
         // plcmes.getPlcParameter("GaToMES").setValue("2");
@@ -594,8 +628,7 @@
         for (Map map : RemoveErrorData) {
             String key = map.get("base").toString() + "_" + map.get("height").toString() + "_"
                     + map.get("thickness").toString() + "_" + map.get("films").toString() + "_"
-                    + map.get("order").toString() + "_" + map.get("matching").toString();
-
+                    + map.get("order").toString() + "_" + map.get("matching").toString()+ map.get("tier").toString();
             String tierkey = map.get("order").toString() + "_" + map.get("matching").toString();
 
             String value = TypeData.get(key);
diff --git a/springboot-vue3/src/main/resources/JsonFile/PlcAlbania.json b/springboot-vue3/src/main/resources/JsonFile/PlcAlbania.json
index f92bfce..175fb81 100644
--- a/springboot-vue3/src/main/resources/JsonFile/PlcAlbania.json
+++ b/springboot-vue3/src/main/resources/JsonFile/PlcAlbania.json
@@ -1,9 +1,9 @@
 {
    "plcAddressBegin":"DB14.0",
-   "plcAddressLenght":"196",
+   "plcAddressLenght":"262",
    "dataType":"word",
    "parameteInfor":[
-      {
+      {  
          "codeId": "PLCToMES",  
          "addressIndex":"0",
          "addressLenght":"2", 
@@ -373,6 +373,36 @@
          "addressLenght":"2",
          "ratio":"1",
          "unit":"mm/S"
+      },{
+         "codeId": "A01ToMES",
+         "addressIndex":"210",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToA01",
+         "addressIndex":"212",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "Layer",
+         "addressIndex":"214",
+         "addressLenght":"16",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "A01MateID",
+         "addressIndex":"230",
+         "addressLenght":"16",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "A01OrderID",
+         "addressIndex":"246",
+         "addressLenght":"16",
+         "ratio":"1",
+         "unit":"mm/S"
       }
    ]
 }
diff --git a/springboot-vue3/src/main/resources/config.properties b/springboot-vue3/src/main/resources/config.properties
index a3c0884..1865039 100644
--- a/springboot-vue3/src/main/resources/config.properties
+++ b/springboot-vue3/src/main/resources/config.properties
@@ -224,9 +224,12 @@
 PlcInteractionState.MEStaskinformation2=DB106.52,DB106.58,DB103.128-141,DB103.142-155,DB103.156-169,DB103.184-197,DB103.212-225
 
 #IO鐘舵��
-PlcIO.State=DB101.0.0,DB101.0.1,DB101.0.2,DB101.2.1,DB101.2.2,DB101.2.3,DB101.2.4,DB101.2.5,DB101.2.6,DB101.2.7,DB101.3.0,DB101.3.1,DB101.3.2,DB101.3.3,DB101.3.4,DB101.4.0,DB101.4.1,DB101.4.2,DB101.4.3,DB101.4.4,DB101.4.5,DB101.4.6,DB101.4.7,DB101.5.0,DB101.5.1,DB101.5.2,DB101.5.3,DB101.6.0,DB101.6.1,DB101.6.2,DB101.6.3,DB101.6.4,DB101.8.0,DB101.8.1,DB101.8.2,DB101.8.3,DB101.8.4,DB101.8.5,DB101.10.0,DB101.10.1,DB101.10.2,DB101.10.3,DB101.10.4,DB101.10.5,DB101.12.0,DB101.12.1,DB101.12.2,DB101.14.0,DB101.14.1,DB101.14.2,DB101.14.3,DB101.14.4,DB101.16.0,DB101.16.1,DB101.16.2,DB101.16.3,DB101.16.4,DB101.16.5,DB101.18.0,DB101.18.1,DB101.18.2,DB101.18.3,DB101.18.4,DB101.18.5,DB101.20.0,DB101.20.1,DB101.20.2,DB101.22.0,DB101.22.1,DB101.22.2,DB101.22.3
-PlcIO.Name=Sr.Dec,Sr.LowE,Sr.OutPos,Sr.InToX,Sr.GaToXIn,Sr.DecToXOut,Sr.GaToY1,Sr.GaToY2,Sr.GaToY3,Sr.GaToY4,Sr.DecToY,Sr.GaToY,Sr.HomeToY,SQ.LimitSwitchTop,SQ.LimitSwitchBottom,Sr.Travellimitleft,Sr.PosToLeft,Sr.DecToLeft,Sr.DecToRight,Sr.PosToRight,Sr.TravellimitRight,SQ.LimitSwitch+,SQ.LimitSwitch-,Sr.HomeToTurn,SQ.LimitSwitchToTurnTop,SQ.LimitSwitchToTurnBottom,oilPump,Sr.Travellimitleft,Sr.TravellimitRight,Sr.Home,SQ.LimitSwitch+,SQ.LimitSwitch-,biBasPosBlowUp1,biBasPosBlowUp2,biBasPosBlowUp3,biBasPosBlowUp4,biBasPosGlassUp1,biBasPosGlassUp2,biWorkPosBlowUp1,biWorkPosBlowUp2,biWorkPosBlowUp3,biWorkPosBlowUp4,biWorkPosGlassUp1,biWorkPosGlassUp2,boWorkPosBlow,boWorkPosBlowUp,boWorkPosGlassUp,Sr.Travellimitleft,Sr.TravellimitRight,Sr.Home,SQ.LimitSwitch+,SQ.LimitSwitch-,biBasPosBlowUp1,biBasPosBlowUp2,biBasPosBlowUp3,biBasPosBlowUp4,biBasPosGlassUp1,biBasPosGlassUp2,biWorkPosBlowUp1,biWorkPosBlowUp2,biWorkPosBlowUp3,biWorkPosBlowUp4,biWorkPosGlassUp1,biWorkPosGlassUp2,boWorkPosBlow,boWorkPosBlowUp,boWorkPosGlassUp,Red,Yellow,Green,FootSwitch
-PlcIo.Name1=A01鍑忛�熷厜鐢�,LOW-E妫�娴嬪厜鐢�,A01鍑哄彛鍒颁綅鍏夌數,A02X杞村叆鍙e噺閫熷厜鐢�,A02X杞村叆鍙f祴閲忓厜鐢�,A02X杞村嚭鍙e噺閫熷厜鐢�,A02Y杞寸矖瀹氫綅1锛堟渶浣庝綅锛�,A02Y杞寸矖瀹氫綅2,A02Y杞寸矖瀹氫綅3,A02Y杞寸矖瀹氫綅4锛堟渶楂樹綅锛�,A02Y杞村噺閫熷厜鐢�,A02Y杞存祴閲忓厜鐢�,A02Y杞村師鐐�,A02Y杞翠笂鏋侀檺,A02Y杞翠笅鏋侀檺,B01宸︽瀬闄�,B01宸﹀埌浣�,B01宸﹀噺閫�,B01鍙冲噺閫�,B01鍙冲埌浣�,B01鍙虫瀬闄�,B01澶ц溅姝f瀬闄�,B01澶ц溅璐熸瀬闄�,B01缈昏浆鍘熺偣,B01缈昏浆涓婃瀬闄�,B01缈昏浆涓嬫瀬闄�,B01娌规车杈撳嚭,C01宸︽瀬闄�,C01鍙虫瀬闄�,C01灏忚溅鍘熺偣,C01灏忚溅姝f瀬闄�,C01灏忚溅璐熸瀬闄�,C01鍚规皵鎶捣姘旂几鍘熺偣1,C01鍚规皵鎶捣姘旂几鍘熺偣2,C01鍚规皵鎶捣姘旂几鍘熺偣3,C01鍚规皵鎶捣姘旂几鍘熺偣4,C01鐜荤拑鎶捣姘旂几鍘熺偣1,C01鐜荤拑鎶捣姘旂几鍘熺偣2,C01鍚规皵鎶捣姘旂几鍘熺偣1,C01鍚规皵鎶捣姘旂几鍘熺偣2,C01鍚规皵鎶捣姘旂几鍘熺偣3,C01鍚规皵鎶捣姘旂几鍘熺偣4,C01鐜荤拑鎶捣姘旂几鍘熺偣1,C01鐜荤拑鎶捣姘旂几鍘熺偣2,C01鍚规皵杈撳嚭,C01鍚规皵鎶捣杈撳嚭,C01鐜荤拑鎶捣杈撳嚭,C02宸︽瀬闄�,C02鍙虫瀬闄�,C02灏忚溅鍘熺偣,C02灏忚溅姝f瀬闄�,C02灏忚溅璐熸瀬闄�,C02鍚规皵鎶捣姘旂几鍘熺偣1,C02鍚规皵鎶捣姘旂几鍘熺偣2,C02鍚规皵鎶捣姘旂几鍘熺偣3,C02鍚规皵鎶捣姘旂几鍘熺偣4,C02鐜荤拑鎶捣姘旂几鍘熺偣1,C02鐜荤拑鎶捣姘旂几鍘熺偣2,C02鍚规皵鎶捣姘旂几鍘熺偣1,C02鍚规皵鎶捣姘旂几鍘熺偣2,C02鍚规皵鎶捣姘旂几鍘熺偣3,C02鍚规皵鎶捣姘旂几鍘熺偣4,C02鐜荤拑鎶捣姘旂几鍘熺偣1,C02鐜荤拑鎶捣姘旂几鍘熺偣2,C02鍚规皵杈撳嚭,C02鍚规皵鎶捣杈撳嚭,C02鐜荤拑鎶捣杈撳嚭,绾㈢伅,榛勭伅,缁跨伅,鑴氳笍寮�鍏�
+# PlcIO.State=DB101.0.0,DB101.0.1,DB101.0.2,DB101.2.1,DB101.2.2,DB101.2.3,DB101.2.4,DB101.2.5,DB101.2.6,DB101.2.7,DB101.3.0,DB101.3.1,DB101.3.2,DB101.3.3,DB101.3.4,DB101.4.0,DB101.4.1,DB101.4.2,DB101.4.3,DB101.4.4,DB101.4.5,DB101.4.6,DB101.4.7,DB101.5.0,DB101.5.1,DB101.5.2,DB101.5.3,DB101.6.0,DB101.6.1,DB101.6.2,DB101.6.3,DB101.6.4,DB101.8.0,DB101.8.1,DB101.8.2,DB101.8.3,DB101.8.4,DB101.8.5,DB101.10.0,DB101.10.1,DB101.10.2,DB101.10.3,DB101.10.4,DB101.10.5,DB101.12.0,DB101.12.1,DB101.12.2,DB101.14.0,DB101.14.1,DB101.14.2,DB101.14.3,DB101.14.4,DB101.16.0,DB101.16.1,DB101.16.2,DB101.16.3,DB101.16.4,DB101.16.5,DB101.18.0,DB101.18.1,DB101.18.2,DB101.18.3,DB101.18.4,DB101.18.5,DB101.20.0,DB101.20.1,DB101.20.2,DB101.22.0,DB101.22.1,DB101.22.2,DB101.22.3
+PlcIO.state=DB12.2.0,DB12.2.1,DB12.2.2,DB12.4.2,DB12.4.3,DB12.4.4,DB12.4.5,DB12.4.6,DB12.4.7,DB12.5.0,DB12.5.1,DB12.5.2,DB12.5.3,DB12.5.4,DB12.5.5,DB12.8.2,DB12.8.3,DB12.8.4,DB12.8.5,DB12.8.6,DB12.8.7,DB12.9.0,DB12.9.1,DB12.9.2,DB12.9.3,DB12.9.4,DB12.9.7,DB12.10.6,DB12.10.7,DB12.11.0,DB12.12.0,DB12.12.1,DB12.12.2,DB12.12.3,DB12.12.4,DB12.12.5,DB12.14.0,DB12.14.1,DB12.14.2,DB12.14.3,DB12.14.4,DB12.14.5,DB12.14.6,DB12.14.7,DB12.15.0,DB12.15.1,DB12.16.0,DB12.16.1,DB12.16.2,DB12.18.6,DB12.18.7,DB12.19.0,DB12.20.0,DB12.20.1,DB12.20.2,DB12.20.3,DB12.20.4,DB12.20.5,DB12.22.0,DB12.22.1,DB12.22.2,DB12.22.3,DB12.22.4,DB12.22.5,DB12.22.6,DB12.22.7,DB12.23.0,DB12.23.1,DB12.24.0,DB12.24.1,DB12.24.2
+# PlcIO.Name=Sr.Dec,Sr.LowE,Sr.OutPos,Sr.InToX,Sr.GaToXIn,Sr.DecToXOut,Sr.GaToY1,Sr.GaToY2,Sr.GaToY3,Sr.GaToY4,Sr.DecToY,Sr.GaToY,Sr.HomeToY,SQ.LimitSwitchTop,SQ.LimitSwitchBottom,Sr.Travellimitleft,Sr.PosToLeft,Sr.DecToLeft,Sr.DecToRight,Sr.PosToRight,Sr.TravellimitRight,SQ.LimitSwitch+,SQ.LimitSwitch-,Sr.HomeToTurn,SQ.LimitSwitchToTurnTop,SQ.LimitSwitchToTurnBottom,oilPump,Sr.Travellimitleft,Sr.TravellimitRight,Sr.Home,SQ.LimitSwitch+,SQ.LimitSwitch-,biBasPosBlowUp1,biBasPosBlowUp2,biBasPosBlowUp3,biBasPosBlowUp4,biBasPosGlassUp1,biBasPosGlassUp2,biWorkPosBlowUp1,biWorkPosBlowUp2,biWorkPosBlowUp3,biWorkPosBlowUp4,biWorkPosGlassUp1,biWorkPosGlassUp2,boWorkPosBlow,boWorkPosBlowUp,boWorkPosGlassUp,Sr.Travellimitleft,Sr.TravellimitRight,Sr.Home,SQ.LimitSwitch+,SQ.LimitSwitch-,biBasPosBlowUp1,biBasPosBlowUp2,biBasPosBlowUp3,biBasPosBlowUp4,biBasPosGlassUp1,biBasPosGlassUp2,biWorkPosBlowUp1,biWorkPosBlowUp2,biWorkPosBlowUp3,biWorkPosBlowUp4,biWorkPosGlassUp1,biWorkPosGlassUp2,boWorkPosBlow,boWorkPosBlowUp,boWorkPosGlassUp,Red,Yellow,Green,FootSwitch
+PlcIO.Name=Sr.Low, Sr.OutDec, Sr.OutPos, Sr.XCheck, Sr.XDec, Sr.XPos, Sr.H1, Sr.H2, Sr.H3, Sr.H4, Sr.YChecK, Sr.YDec, Sr.travellimitTop, Sr.travellimitBottom, Sr.YZero, Sr.Travellimitleft, Sr.PosToLeft, Sr.DecToLeft, Sr.DecToRight, Sr.PosToRight, Sr.TravellimitRight, SQ.LimitSwitch+, SQ.LimitSwitch-, Sr.HomeToTurn, SQ.LimitSwitchToTurnTop, SQ.LimitSwitchToTurnBottom, oilPump, Sr.InOrigin, SQ.LimitSwitch+, SQ.LimitSwitch-, biBasPosBlowUp1, biBasPosBlowUp2, biBasPosBlowUp3, biBasPosBlowUp4, biBasPosGlassUp1, biBasPosGlassUp2, biWorkBlowSr1, biWorkBlowSr2, biWorkBlowSr3, biWorkBlowSr4, biWorkPosBlowUp1, biWorkPosBlowUp2, biWorkPosBlowUp3, biWorkPosBlowUp4, biWorkPosGlassUp1, biWorkPosGlassUp2, boWorkPosBlow, boWorkPosBlowUp, boWorkPosGlassUp
+PlcIo.Name1=LOW-E妫�娴嬪厜鐢�, 鍑哄彛鍑忛�熷厜鐢�, 鍑哄彛鍒颁綅鍏夌數, X杞村杈�, X杞村嚭鍙e噺閫�, X杞村嚭鍙e埌浣�, Y杞撮珮搴︽劅搴�1, Y杞撮珮搴︽劅搴�2, Y杞撮珮搴︽劅搴�3, Y杞撮珮搴︽劅搴�4, Y杞村杈�, Y杞撮珮搴﹀噺閫�, 涓婃瀬闄�, 涓嬫瀬闄�, Y杞村師鐐�, 宸︽瀬闄�, 宸﹀埌浣�, 宸﹀噺閫�, 鍙冲噺閫�, 鍙冲埌浣�, 鍙虫瀬闄�, 澶ц溅姝f瀬闄�, 澶ц溅璐熸瀬闄�, 缈昏浆鍘熺偣, 缈昏浆涓婃瀬闄�, 缈昏浆涓嬫瀬闄�, 娌规车杈撳嚭, 灏忚溅鍘熺偣, 灏忚溅姝f瀬闄�, 灏忚溅璐熸瀬闄�, 鍚规皵鎶捣姘旂几鍘熺偣1, 鍚规皵鎶捣姘旂几鍘熺偣2, 鍚规皵鎶捣姘旂几鍘熺偣3, 鍚规皵鎶捣姘旂几鍘熺偣4, 鐜荤拑鎶捣姘旂几鍘熺偣1, 鐜荤拑鎶捣姘旂几鍘熺偣2, 鍚规皵鎰熷簲1, 鍚规皵鎰熷簲2, 鍚规皵鎰熷簲3, 鍚规皵鎰熷簲4, 鍚规皵鎶捣姘旂几鍔ㄧ偣1, 鍚规皵鎶捣姘旂几鍔ㄧ偣2, 鍚规皵鎶捣姘旂几鍔ㄧ偣3, 鍚规皵鎶捣姘旂几鍔ㄧ偣4, 鐜荤拑鎶捣姘旂几鍔ㄧ偣1, 鐜荤拑鎶捣姘旂几鍔ㄧ偣2, 鍚规皵杈撳嚭, 鍚规皵鎶捣杈撳嚭, 鐜荤拑鎶捣杈撳嚭
+# PlcIo.Name1=A01鍑忛�熷厜鐢�,LOW-E妫�娴嬪厜鐢�,A01鍑哄彛鍒颁綅鍏夌數,A02X杞村叆鍙e噺閫熷厜鐢�,A02X杞村叆鍙f祴閲忓厜鐢�,A02X杞村嚭鍙e噺閫熷厜鐢�,A02Y杞寸矖瀹氫綅1锛堟渶浣庝綅锛�,A02Y杞寸矖瀹氫綅2,A02Y杞寸矖瀹氫綅3,A02Y杞寸矖瀹氫綅4锛堟渶楂樹綅锛�,A02Y杞村噺閫熷厜鐢�,A02Y杞存祴閲忓厜鐢�,A02Y杞村師鐐�,A02Y杞翠笂鏋侀檺,A02Y杞翠笅鏋侀檺,B01宸︽瀬闄�,B01宸﹀埌浣�,B01宸﹀噺閫�,B01鍙冲噺閫�,B01鍙冲埌浣�,B01鍙虫瀬闄�,B01澶ц溅姝f瀬闄�,B01澶ц溅璐熸瀬闄�,B01缈昏浆鍘熺偣,B01缈昏浆涓婃瀬闄�,B01缈昏浆涓嬫瀬闄�,B01娌规车杈撳嚭,C01宸︽瀬闄�,C01鍙虫瀬闄�,C01灏忚溅鍘熺偣,C01灏忚溅姝f瀬闄�,C01灏忚溅璐熸瀬闄�,C01鍚规皵鎶捣姘旂几鍘熺偣1,C01鍚规皵鎶捣姘旂几鍘熺偣2,C01鍚规皵鎶捣姘旂几鍘熺偣3,C01鍚规皵鎶捣姘旂几鍘熺偣4,C01鐜荤拑鎶捣姘旂几鍘熺偣1,C01鐜荤拑鎶捣姘旂几鍘熺偣2,C01鍚规皵鎶捣姘旂几鍘熺偣1,C01鍚规皵鎶捣姘旂几鍘熺偣2,C01鍚规皵鎶捣姘旂几鍘熺偣3,C01鍚规皵鎶捣姘旂几鍘熺偣4,C01鐜荤拑鎶捣姘旂几鍘熺偣1,C01鐜荤拑鎶捣姘旂几鍘熺偣2,C01鍚规皵杈撳嚭,C01鍚规皵鎶捣杈撳嚭,C01鐜荤拑鎶捣杈撳嚭,C02宸︽瀬闄�,C02鍙虫瀬闄�,C02灏忚溅鍘熺偣,C02灏忚溅姝f瀬闄�,C02灏忚溅璐熸瀬闄�,C02鍚规皵鎶捣姘旂几鍘熺偣1,C02鍚规皵鎶捣姘旂几鍘熺偣2,C02鍚规皵鎶捣姘旂几鍘熺偣3,C02鍚规皵鎶捣姘旂几鍘熺偣4,C02鐜荤拑鎶捣姘旂几鍘熺偣1,C02鐜荤拑鎶捣姘旂几鍘熺偣2,C02鍚规皵鎶捣姘旂几鍘熺偣1,C02鍚规皵鎶捣姘旂几鍘熺偣2,C02鍚规皵鎶捣姘旂几鍘熺偣3,C02鍚规皵鎶捣姘旂几鍘熺偣4,C02鐜荤拑鎶捣姘旂几鍘熺偣1,C02鐜荤拑鎶捣姘旂几鍘熺偣2,C02鍚规皵杈撳嚭,C02鍚规皵鎶捣杈撳嚭,C02鐜荤拑鎶捣杈撳嚭,绾㈢伅,榛勭伅,缁跨伅,鑴氳笍寮�鍏�
 #A01鍙傛暟
 PlcA01.param=DB101.44,DB101.48,DB101.52,DB101.56,DB101.60
 #A01鎸夐挳

--
Gitblit v1.8.0