From 2883c25a71cb080258f5e17430ff5ee37c0061c2 Mon Sep 17 00:00:00 2001
From: wuyouming666 <2265557248@qq.com>
Date: 星期一, 22 一月 2024 09:05:05 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/CanadaMes

---
 CanadaMes-ui/src/views/home/index.vue                                                |  132 +++--
 springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java          |  226 +++++----
 springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java         |    7 
 springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java       |   22 
 springboot-vue3/src/main/resources/Alarm.json                                        |  628 +++++++++++++++++++++++++++
 springboot-vue3/src/main/java/com/example/springboot/service/OutSliceServive.java    |   23 
 springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java          |  241 ++++-----
 springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java          |   15 
 springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java  |   17 
 CanadaMes-ui/src/lang/locales/zh-CN.json                                             |    5 
 springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java |   11 
 springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java     |   30 
 .vscode/launch.json                                                                  |    7 
 springboot-vue3/src/main/java/com/example/springboot/component/Plclog.java           |   11 
 CanadaMes-ui/src/lang/locales/en-US.json                                             |    2 
 15 files changed, 1,028 insertions(+), 349 deletions(-)

diff --git a/.vscode/launch.json b/.vscode/launch.json
index 14252d0..366044e 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -6,6 +6,13 @@
     "configurations": [
       {
         "type": "java",
+        "name": "MyGenerator",
+        "request": "launch",
+        "mainClass": "MyGenerator",
+        "projectName": "canadames"
+      },
+      {
+        "type": "java",
         "name": "AuthorityApplication",
         "request": "launch",
         "mainClass": "com.example.springboot.AuthorityApplication",
diff --git a/CanadaMes-ui/src/lang/locales/en-US.json b/CanadaMes-ui/src/lang/locales/en-US.json
index b100ef2..24aabbb 100644
--- a/CanadaMes-ui/src/lang/locales/en-US.json
+++ b/CanadaMes-ui/src/lang/locales/en-US.json
@@ -1,4 +1,5 @@
 {
+  "Clear":"Clear",
   "ip":"localhost",
   "systemTitle": "Login System",
   "usernamePlaceholder": "Please enter username",
@@ -359,6 +360,7 @@
   "Hand Movement":"Hand Movement",
   "Please enter the correct glassID":"Please enter the correct glassID",
   "Switch":"Switch",
+  "This frame has glass that is currently outing":"This frame has glass that is currently outing",
     "ServoManualone": {
       "A01 鎵�鍦ㄦ牸瀛�": "A01 Current Grid",
       "鏁伴噺": "Quantity",
diff --git a/CanadaMes-ui/src/lang/locales/zh-CN.json b/CanadaMes-ui/src/lang/locales/zh-CN.json
index 5bda464..0591804 100644
--- a/CanadaMes-ui/src/lang/locales/zh-CN.json
+++ b/CanadaMes-ui/src/lang/locales/zh-CN.json
@@ -1,4 +1,5 @@
 {
+  "Clear":"娓呴櫎",
   "ip":"localhost",
   "systemTitle": "鐧诲綍绯荤粺",
   "usernamePlaceholder": "璇疯緭鍏ョ敤鎴峰悕",
@@ -35,6 +36,9 @@
   "northglassMESsystem": "鍖楃幓MES绯荤粺",
   "exit": "閫�鍑�",
   "changePassword": "淇敼瀵嗙爜",
+  "Old password":"鏃у瘑鐮�",
+  "New password":"鏂板瘑鐮�",
+  "Confirm password":"鎻愪氦瀵嗙爜",
   "resetPassword": "閲嶇疆瀵嗙爜",
   "home": "涓婚〉",
   "role": "瑙掕壊",
@@ -349,6 +353,7 @@
   "Hand Movement":"鎵嬪姩",
   "Please enter the correct glassID":"璇疯緭鍏ユ纭殑鐜荤拑ID",
   "Switch":"鍒囨崲",
+  "This frame has glass that is currently outing":"姝ら摑妗嗘湁姝e湪鍑虹墖鐨勭幓鐠�",
   "langparameter": {
     "conveyor Velocity(Auto FAST)": "D01-D06 鐨甫杈撻�佽嚜鍔ㄥ揩閫�",
     "conveyor Velocity(Auto SLOW)": "D01-D06 鐨甫杈撻�佽嚜鍔ㄦ參閫�",
diff --git a/CanadaMes-ui/src/views/home/index.vue b/CanadaMes-ui/src/views/home/index.vue
index cf37f5b..48158a8 100644
--- a/CanadaMes-ui/src/views/home/index.vue
+++ b/CanadaMes-ui/src/views/home/index.vue
@@ -375,37 +375,70 @@
                 <div class="device" :style="'top: 262px;left: 150px;background-color: ' + ShowDeviceList(8) + ';'">D05</div>
                 <div class="device" :style="'top: 339px;left: 150px;background-color: ' + ShowDeviceList(9) + ';'">D06</div>
 
-                <div class="glass D01" style="top: 54px;left: 1055px;position: absolute;"
-                    @click="ClearGlassId('DB101.9.2', 0)">{{ ShowGlassIdList(0) }}</div>
-                <div class="glass D02" style="top: 132px;left: 1055px;position: absolute;"
-                    @click="ClearGlassId('DB101.9.2', 1)">{{ ShowGlassIdList(1) }}</div>
-                <div class="glass B01" style="top: 270px;left: 640px;position: absolute;"
-                    @click="ClearGlassId('DB101.10.2', 2)">
-                    B01:{{ ShowGlassIdList(2) }}</div>
-                <div class="glass B02" style="top: 290px;left: 640px;position: absolute;"
-                    @click="ClearGlassId('DB101.10.3', 3)">B02:{{ ShowGlassIdList(3) }}</div>
-                <div class="glass A01" style="top: 270px;left: 289px;position: absolute;"
-                    @click="ClearGlassId('DB101.10.0', 4)">
-                    A01.1:{{ ShowGlassIdList(4) }}</div>
+                <div class="glass D01" style="top: 39px;left: 1055px;position: absolute;">{{ ShowGlassIdList(0) }}
+                    <br />
+                    <el-button type="primary" size="mini" @click="ClearGlassId('DB101.9.2', 0)">
+                        {{ $t('Clear') }}</el-button>
+                </div>
+                <div class="glass D02" style="top: 117px;left: 1055px;position: absolute;">{{ ShowGlassIdList(1) }}
+                    <br />
+                    <el-button type="primary" size="mini" @click="ClearGlassId('DB101.9.2', 1)">
+                        {{ $t('Clear') }}</el-button>
+                </div>
+                <div class="glass B01" style="top: 270px;left: 640px;position: absolute;">
+                    B01:{{ ShowGlassIdList(2) }}
+                    <br />
+                    <el-button type="primary" size="mini" @click="ClearGlassId('DB101.10.2', 2)">
+                        {{ $t('Clear') }}</el-button>
+                </div>
+                <div class="glass B02" style="top: 315px;left: 640px;position: absolute;">B02:{{ ShowGlassIdList(3) }}
+                    <br />
+                    <el-button type="primary" size="mini" @click="ClearGlassId('DB101.10.3', 3)">
+                        {{ $t('Clear') }}</el-button>
+                </div>
+                <div class="glass A01" style="top: 270px;left: 289px;position: absolute;">
+                    A01.1:{{ ShowGlassIdList(4) }}
+                    <br />
+                    <el-button type="primary" size="mini" @click="ClearGlassId('DB101.10.0', 4)">
+                        {{ $t('Clear') }}</el-button>
+                </div>
 
-                <div class="glass A01" style="top: 290px;left: 289px;position: absolute;"
-                    @click="ClearGlassId('DB101.10.1,5',5)">A01.2:{{ ShowGlassIdList(5) }}</div>
+                <div class="glass A01" style="top: 315px;left: 289px;position: absolute;">A01.2:{{ ShowGlassIdList(5) }}
+                    <br />
+                    <el-button type="primary" size="mini" @click="ClearGlassId('DB101.10.1,5', 5)">
+                        {{ $t('Clear') }}</el-button>
+                </div>
 
-                <div class="glass A02" style="top: 310px;left: 289px;position: absolute;"
-                    @click="ClearGlassId('DB101.10.2,6',6)">A02:{{ ShowGlassIdList(6) }}</div>
+                <div class="glass A02" style="top: 360px;left: 289px;position: absolute;">A02:{{ ShowGlassIdList(6) }}
+                    <br />
+                    <el-button type="primary" size="mini" @click="ClearGlassId('DB101.10.2,6', 6)">
+                        {{ $t('Clear') }}</el-button>
+                </div>
 
-                <div class="glass D03" style="top: 137px;left: 42px;position: absolute;"
-                    @click="ClearGlassId('DB101.9.4', 7)">
-                    {{ ShowGlassIdList(7) }}</div>
-                <div class="glass D04" style="top: 213px;left: 42px;position: absolute;"
-                    @click="ClearGlassId('DB101.9.5', 8)">
-                    {{ ShowGlassIdList(8) }}</div>
-                <div class="glass D05" style="top: 290px;left: 42px;position: absolute;"
-                    @click="ClearGlassId('DB101.9.6', 9)">
-                    {{ ShowGlassIdList(9) }}</div>
-                <div class="glass D06" style="top: 367px;left: 42px;position: absolute;"
-                    @click="ClearGlassId('DB101.9.5', 10)">
-                    {{ ShowGlassIdList(10) }}</div>
+                <div class="glass D03" style="top: 122px;left: 42px;position: absolute;">
+                    {{ ShowGlassIdList(7) }}
+                    <br />
+                    <el-button type="primary" size="mini" @click="ClearGlassId('DB101.9.4', 7)">
+                        {{ $t('Clear') }}</el-button>
+                </div>
+                <div class="glass D04" style="top: 198px;left: 42px;position: absolute;">
+                    {{ ShowGlassIdList(8) }}
+                    <br />
+                    <el-button type="primary" size="mini" @click="ClearGlassId('DB101.9.5', 8)">
+                        {{ $t('Clear') }}</el-button>
+                </div>
+                <div class="glass D05" style="top: 275px;left: 42px;position: absolute;">
+                    {{ ShowGlassIdList(9) }}
+                    <br />
+                    <el-button type="primary" size="mini" @click="ClearGlassId('DB101.9.6', 9)">
+                        {{ $t('Clear') }}</el-button>
+                </div>
+                <div class="glass D06" style="top: 352px;left: 42px;position: absolute;">
+                    {{ ShowGlassIdList(10) }}
+                    <br />
+                    <el-button type="primary" size="mini" @click="ClearGlassId('DB101.9.5', 10)">
+                        {{ $t('Clear') }}</el-button>
+                </div>
 
 
             </div>
@@ -573,12 +606,12 @@
                         }}</el-button>
                     </el-form-item> -->
                     <el-form-item>
-                        {{ $t('Confirm State') }}:{{ this.isConfirm == true ? $t('Not Allow') : $t('Allow') }}
+                        {{ $t('Confirm State') }}:{{ this.isConfirm == true ? $t('Allow') : $t('Not Allow') }}
                         <el-button type="primary" @click="isConfirmState()">
-                            {{ this.isConfirm == true ? $t('Allow') : $t('Not Allow') }}</el-button>
+                            {{ this.isConfirm == true ? $t('Not Allow') : $t('Allow') }}</el-button>
                     </el-form-item>
                     <el-form-item>
-                        {{ $t('Current State') }}:{{ this.Scanningmethod==true?$t('Automatic'):$t('Hand Movement')}}
+                        {{ $t('Current State') }}:{{ this.Scanningmethod == false ? $t('Automatic') : $t('Hand Movement') }}
                         <el-button type="primary" @click="SwitchScanMethod()">{{ $t('Switch')
                         }}</el-button>
                     </el-form-item>
@@ -595,7 +628,7 @@
                 </div>
                 <div style="display: flex;justify-content: space-around;">
                     <label for="">{{ $t('Upper film position') }}</label>
-                    
+
                     <label for="">{{ $t('Scan Code Point') }}</label>
                 </div>
                 <div style="display: flex;justify-content: space-around;height: 40px;">
@@ -754,7 +787,7 @@
                         <el-table-column :min-width="90" prop="barcode" :label="$t('Complete')">
                             <template slot-scope='scope' style="height:100px;height:100px;">
                                 <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
-                                    :disabled="!(!isAllowQueue && scope.row.state != 2 && scope.row.state != 4)"
+                                    :disabled="!(!isAllowQueue && scope.row.state != 1 && scope.row.state != 2)"
                                     @click="CompleteQueue(scope.row.id, scope.row.barcode, scope.row.glassId)">{{
                                         $t('Complete')
                                     }}</el-button>
@@ -981,12 +1014,11 @@
             DeviceList: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
             GlassIdList: [],
             Scanningmethod: true,
-            CurrrentGlassId:""
+            CurrrentGlassId: ""
         };
     },
     created() {
         this.load();
-
         this.init();
     }
     ,
@@ -1029,15 +1061,15 @@
                     this.alarm = obj.alarmmg[0];
                     //鑾峰彇褰撳墠鎵爜鏂瑰紡
                     if (obj.Scanningmethod != null) {
-                        this.Scanningmethod=obj.Scanningmethod[0];
+                        this.Scanningmethod = obj.Scanningmethod[0];
                     }
 
                     //鑾峰彇褰撳墠鎵爜鏋幓鐠僫d
-                    if(obj.CurrrentGlassId!=null){
+                    if (obj.CurrrentGlassId != null) {
                         const specialChars = /[^\w\s]/g;
-                        this.CurrrentGlassId=obj.CurrrentGlassId[0].replace(specialChars, "");
+                        this.CurrrentGlassId = obj.CurrrentGlassId[0].replace(specialChars, "");
                     }
-                    
+
                     //鏌ヨ褰撳墠閾濇淇℃伅
                     this.CurrentFrame = obj.CurrentFrame;
                     //鑾峰彇璁惧鐘舵��
@@ -1122,10 +1154,10 @@
                     } else {
                         this.form3 = {};
                     }
-                    
+
                     if (obj.form3 != null && obj.form3 != "" && obj.state[0] == 0) {
                         this.loadglassheight1 = 70;
-                        if(this.form5.glassId!=obj.form3[0].glassId){
+                        if (this.form5.glassId != obj.form3[0].glassId) {
                             this.showform3();
                         }
                         this.form5 = obj.form3[0];
@@ -1261,6 +1293,7 @@
         },
         //鎵嬪姩涓婄墖
         sbumitglassid() {
+            console.log(1111111);
             if (this.form.order != "") {
                 if (this.form.height < 380 || this.form.width < 390 || this.form.height > 1810 || this.form.width > 2760) {
                     this.$message.error(this.$t('The glass size is not within the range'));
@@ -1323,12 +1356,12 @@
         },
         //鎵嬪姩鍐欏叆plc鎵爜浣嶇幓鐠僫d
         WriteGlassID() {
-            if (this.glassid1.length ==14) {
+            if (this.glassid1.length == 14) {
                 WriteGlassID(this.glassid1).then(res => {
                     console.log(res.data);
                     this.$message.success(this.$t('Successful operation'));
                 });
-            }else{
+            } else {
                 this.$message.error(this.$t('Please enter the correct glassID'));
             }
         },
@@ -1596,6 +1629,8 @@
                     DeleteProductionQueueGlass(id).then(res => {
                         if (res.data.message == 200) {
                             this.$message.success(this.$t('Operation successful'));
+                        }else{
+                            this.$message.error(this.$t('This frame has glass that is currently outing'));
                         }
                     });
                 }
@@ -1634,6 +1669,9 @@
                         if (res.data.message == 200) {
                             this.form5 = {};
                             this.$message.success(this.$t('Operation successful'));
+                        }
+                        else if (res.data.message == 400) {
+                            this.$message.error(this.$t('The glass size is not within the range'));
                         } else {
                             this.$message.error(this.$t('This glass ID already exists in the sorting cage'));
                         }
@@ -2044,9 +2082,9 @@
         //娓呴櫎鐜荤拑id
         ClearGlassId(position, num) {
             if (this.ClearGlassID == false) {
-                console.log(this.DeviceList,num);
+                console.log(this.DeviceList, num);
                 if (this.DeviceList[num] == 0) {
-                    if (this.GlassIdList[num].length < 14) {
+                    if (this.GlassIdList[num].length <= 14) {
                         this.$confirm(this.$t('Are you sure to clear this barcode ?'), this.$t('confirm'), {
                             confirmButtonText: this.$t('Yes'),
                             cancelButtonText: this.$t('No'),
@@ -2104,9 +2142,9 @@
             });
         },
         //鍒囨崲浜岀淮鐮佽幏鍙栨柟寮�
-        SwitchScanMethod(){
+        SwitchScanMethod() {
             SwitchScanMethod(!this.Scanningmethod).then(res => {
-                if(res.data.message == 200) {
+                if (res.data.message == 200) {
                     this.$message.success(this.$t('Operation successful'));
                 }
             });
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
index fda114a..77ac5ff 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
@@ -1,5 +1,6 @@
 package com.example.springboot.component;
 
+import java.time.LocalDateTime;
 import java.util.List;
 import org.springframework.beans.factory.annotation.Autowired;
 import com.example.springboot.service.JdbcConnections;
@@ -29,141 +30,158 @@
         // \\ TODO Auto-generated catch block
         e.printStackTrace();
       }
+
       // if (S7control.getinstance().CheckConnected() == false) {
-        spianService = WebSocketServer.applicationContext.getBean(SpianService.class);
-        spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class);
-        jdbcConnections = WebSocketServer.applicationContext.getBean(JdbcConnections.class);
-        // 鏍规嵁鐜荤拑id鑾峰彇璁㈠崟鍙�,鍗曠嫭鏁版嵁婧�
-        // try {
-        // north_glass_buffer1 glass = jdbcConnections.selectGlass(112);
-        // // System.out.println(glass.getOrderId());
-        // } catch (SQLException e) {
-        // // TODO Auto-generated catch block
-        // e.printStackTrace();
-        // }
-        // spianService.selectAll("X21942610402GV");
-        // 鍑虹墖浠诲姟////////////////////////////////
-        List<Short> outlist = S7control.getinstance().ReadWord("DB106.20", 1); // 鍑虹墖杞︾姸鎬�
-        List<Short> outlist1 = S7control.getinstance().ReadWord("DB105.18", 1); // 鍑虹墖浠诲姟鏄惁鍚姩
-        // StringBuilder writedstrIdOut = new StringBuilder();
-        // 鑾峰彇宸蹭笅鍙戠殑鍑虹墖id
-        byte[] writedglassidbytesOut = S7control.getinstance().ReadByte("DB105.30", 14);
-        String writedstrIdOut = new String(writedglassidbytesOut);
+      spianService = WebSocketServer.applicationContext.getBean(SpianService.class);
+      spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class);
+      jdbcConnections = WebSocketServer.applicationContext.getBean(JdbcConnections.class);
+      // 鏍规嵁鐜荤拑id鑾峰彇璁㈠崟鍙�,鍗曠嫭鏁版嵁婧�
+      // try {
+      // north_glass_buffer1 glass = jdbcConnections.selectGlass(112);
+      // // System.out.println(glass.getOrderId());
+      // } catch (SQLException e) {
+      // // TODO Auto-generated catch block
+      // e.printStackTrace();
+      // }
+      // spianService.selectAll("X21942610402GV");
+      // 鍑虹墖浠诲姟////////////////////////////////
+      List<Short> outlist = S7control.getinstance().ReadWord("DB106.20", 1); // 鍑虹墖杞︾姸鎬�
+      List<Short> outlist1 = S7control.getinstance().ReadWord("DB105.18", 1); // 鍑虹墖浠诲姟鏄惁鍚姩
+      // StringBuilder writedstrIdOut = new StringBuilder();
+      // 鑾峰彇宸蹭笅鍙戠殑鍑虹墖id
+      byte[] writedglassidbytesOut = S7control.getinstance().ReadByte("DB105.30", 14);
+      String writedstrIdOut = new String(writedglassidbytesOut);
 
-        boolean outstate = false;// 鍑虹墖杞︾┖闂插垽鏂�
-        boolean outstate1 = false;// 鍑虹墖杞︿换鍔℃槸鍚﹀惎鍔�
-        if (outlist != null && outlist1 != null) {
+      boolean outstate = false;// 鍑虹墖杞︾┖闂插垽鏂�
+      boolean outstate1 = false;// 鍑虹墖杞︿换鍔℃槸鍚﹀惎鍔�
+      if (outlist != null && outlist1 != null) {
 
-          outstate = outlist.contains((short) 0);// 鍑虹墖杞︾┖闂插垽鏂� 褰撳嚭鐗囪溅绌洪棽鏃朵负true
-          outstate1 = outlist1.contains((short) 1);// 鍑虹墖杞︿换鍔℃槸鍚﹀惎鍔� 褰撳嚭鐗囪溅浠诲姟鍚姩鏃朵负true
+        outstate = outlist.contains((short) 0);// 鍑虹墖杞︾┖闂插垽鏂� 褰撳嚭鐗囪溅绌洪棽鏃朵负true
+        outstate1 = outlist1.contains((short) 1);// 鍑虹墖杞︿换鍔℃槸鍚﹀惎鍔� 褰撳嚭鐗囪溅浠诲姟鍚姩鏃朵负true
 
-          // 鍒ゆ柇褰撳墠鏄惁鏈夋湭鎵ц鐨勪换鍔�
-          int outnum = spianMapper.SelectOutSliceshu();
-          int cageoutsum = spianMapper.Selectcageout(3);
-          // 褰撴病鏈変换鍔℃墽琛屽苟涓斿嚭鐗囪溅绌洪棽鏃�
-          if (outnum == 0 && outstate == true && Plchome.isAllowQueue == true && cageoutsum == 0) {
-            // 鍒ゆ柇閾濇鍑虹墖闃熷垪琛ㄦ槸鍚︽湁寰呭嚭鐗囩殑鐜荤拑
-            String outglassid = spianMapper.SelectOutSlice();
-            // 褰撴湁寰呭嚭鐗囩殑鐜荤拑鏃�
-            if (outglassid != null) {
-              // 鑾峰彇璇ョ幓鐠冩槸鍚﹁绂佺敤
-              int glassdisabled = spianMapper.SelectCageGlassState(outglassid);
-              //鏈鐢ㄤ笅鍙戜换鍔�
-              if (glassdisabled == 0) {
-                spianService.selectout2(outglassid);
-                Plchome.isQueueWarning = false;
-                outstate = false;
-              } else { //绂佺敤鏇存敼鐘舵�佸脊鍑烘彁绀�
-                Plchome.isQueueWarning = true;
-              }
-
+        // 鍒ゆ柇褰撳墠鏄惁鏈夋湭鎵ц鐨勪换鍔�
+        int outnum = spianMapper.SelectOutSliceshu();
+        int cageoutsum = spianMapper.Selectcageout(3);
+        // 褰撴病鏈変换鍔℃墽琛屽苟涓斿嚭鐗囪溅绌洪棽鏃�
+        if (outnum == 0 && outstate == true && Plchome.isAllowQueue == true && cageoutsum == 0) {
+          // 鍒ゆ柇閾濇鍑虹墖闃熷垪琛ㄦ槸鍚︽湁寰呭嚭鐗囩殑鐜荤拑
+          String outglassid = spianMapper.SelectOutSlice();
+          // 褰撴湁寰呭嚭鐗囩殑鐜荤拑鏃�
+          if (outglassid != null) {
+            // 鑾峰彇璇ョ幓鐠冩槸鍚﹁绂佺敤
+            int glassdisabled = spianMapper.SelectCageGlassState(outglassid);
+            // 鏈鐢ㄤ笅鍙戜换鍔�
+            if (glassdisabled == 0) {
+              spianService.selectout2(outglassid);
+              Plchome.isQueueWarning = false;
+              outstate = false;
+            } else { // 绂佺敤鏇存敼鐘舵�佸脊鍑烘彁绀�
+              Plchome.isQueueWarning = true;
             }
-          }
-          if (outstate == true) {// 褰撳嚭鐗囪溅绌洪棽鏃�,涓斿嚭鐗囧惎鍔ㄤ负1鏃讹紝浠诲姟鍚姩鏀逛负0
-            if (outstate1 == true) {
-              S7control.getinstance().WriteWord("DB105.18", (short) 0);// 鍑虹墖浠诲姟鍚姩鏀逛负0
-            }
+
           }
         }
+        if (outstate == true) {// 褰撳嚭鐗囪溅绌洪棽鏃�,涓斿嚭鐗囧惎鍔ㄤ负1鏃讹紝浠诲姟鍚姩鏀逛负0
+          if (outstate1 == true) {
+            S7control.getinstance().WriteWord("DB105.18", (short) 0);// 鍑虹墖浠诲姟鍚姩鏀逛负0
+            System.out.println("鍏抽棴鍚姩" + LocalDateTime.now());
 
-        ///////////// 杩涚墖浠诲姟
-        List<Short> datas1List = S7control.getinstance().ReadWord("DB106.24", 1);// 鑾峰彇prc杩涚墖璇锋眰鏁版嵁
-        List<Short> datas1ListState = S7control.getinstance().ReadWord("DB106.8", 1);// 鑾峰彇杩涚墖杞︾姸鎬�
-        List<Short> datas1ListState2 = S7control.getinstance().ReadWord("DB105.16", 1);// 鑾峰彇杩涚墖杞︿换鍔℃槸鍚﹀惎鍔�
+          }
+        }
+      }
 
-        boolean B01backs = spianService.listbool("DB106.60");// b01姹囨姤
+      ///////////// 杩涚墖浠诲姟
+      List<Short> datas1List = S7control.getinstance().ReadWord("DB106.24", 1);// 鑾峰彇prc杩涚墖璇锋眰鏁版嵁
+      List<Short> datas1ListState = S7control.getinstance().ReadWord("DB106.8", 1);// 鑾峰彇杩涚墖杞︾姸鎬�
+      List<Short> datas1ListState2 = S7control.getinstance().ReadWord("DB105.16", 1);// 鑾峰彇杩涚墖杞︿换鍔℃槸鍚﹀惎鍔�
 
-        boolean B02backs = spianService.listbool("DB106.62");// b02姹囨姤
-        StringBuilder B01glassid = spianService.queGlassid("DB103.184", 14);// BO1鐨勭幓鐠僫d
-        StringBuilder B02glassid = spianService.queGlassid("DB103.212", 14);// B02鐨勭幓鐠僫d
+      boolean B01backs = spianService.listbool("DB106.60");// b01姹囨姤
 
-        // 褰撹繘鐗囧皬杞﹀畬鎴愪换鍔℃椂
-        if (B01backs == true) {
+      boolean B02backs = spianService.listbool("DB106.62");// b02姹囨姤
+      StringBuilder B01glassid = spianService.queGlassid("DB103.184", 14);// BO1鐨勭幓鐠僫d
+      StringBuilder B02glassid = spianService.queGlassid("DB103.212", 14);// B02鐨勭幓鐠僫d
+
+      // 褰撹繘鐗囧皬杞﹀畬鎴愪换鍔℃椂
+      if (B01backs == true) {
+        // 鍒ゆ柇鏄惁姹囨姤姝g‘鐨刬d
+        int HB = spianMapper.SelectHB(B01glassid.toString());
+        if (HB > 0) {
           // 褰揃01灏忚溅姹囨姤瀹屾垚鏃舵洿鏀圭幓鐠冪姸鎬� 涓�1
-          spianService.overtask(B01glassid.toString());// 瀹屾垚浠诲姟
           S7control.getinstance().WriteWord("DB106.60", (short) 0);// 鎭㈠B01灏忚溅搴旂瓟鏀逛负0
           boolean yingda = spianService.listbool("DB106.60");// b01姹囨姤
+          if(yingda==false){
+            spianService.overtask(B01glassid.toString());// 瀹屾垚浠诲姟
+          }
           System.out.println("姹囨姤鏃禕01|绗�" + aaa + "娆�" + B01glassid + "搴旂瓟" + yingda);
           aaa += 1;
         }
 
-        // 褰撳嚭鐗囧皬杞﹀畬鎴愪换鍔℃椂
-        if (B02backs == true) {
+      }
+
+      // 褰撳嚭鐗囧皬杞﹀畬鎴愪换鍔℃椂
+      if (B02backs == true) {
+        // 鍒ゆ柇鏄惁姹囨姤姝g‘鐨刬d
+        int HB = spianMapper.SelectHB(B02glassid.toString());
+        if (HB > 0) {
           // 褰揃02灏忚溅姹囨姤瀹屾垚鏃舵洿鏀圭幓鐠冪姸鎬佷负0
-          spianService.overtask(B02glassid.toString());// 瀹屾垚浠诲姟
+
           S7control.getinstance().WriteWord("DB106.62", (short) 0);// 鎭㈠B02灏忚溅搴旂瓟鏀逛负0
           System.out.println("姹囨姤鏃禕02|" + B02glassid);
           boolean yingda = spianService.listbool("DB106.62");// b02姹囨姤
+          if (yingda == false) {
+            spianService.overtask(B02glassid.toString());// 瀹屾垚浠诲姟
+          }
           System.out.println("姹囨姤鏃禕02|绗�" + aaa + "娆�" + B02glassid + "搴旂瓟" + yingda);
         }
+      }
 
-        // 鑾峰彇DO1鏁版嵁
-        StringBuilder queueid1 = spianService.queGlassid("DB106.26", 14);// 鑾峰彇璇锋眰鐨刬d璺烡O1鍚屾椂娓�
-        // 鑾峰彇DO2鏁版嵁
-        StringBuilder queueid2 = spianService.queGlassid("DB103.58", 14);
+      // 鑾峰彇DO1鏁版嵁
+      StringBuilder queueid1 = spianService.queGlassid("DB106.26", 14);// 鑾峰彇璇锋眰鐨刬d璺烡O1鍚屾椂娓�
+      // 鑾峰彇DO2鏁版嵁
+      StringBuilder queueid2 = spianService.queGlassid("DB103.58", 14);
 
-        int questate = spianMapper.Selectquecount(queueid1.toString());// 鍒ゆ柇鎵爜浣嶆槸鍚︽湁鐜荤拑宸茬‘璁�
-        // queueid1.toString().isEmpty()
-        north_glass_buffer1 glass1 = spianMapper.selectGlass(queueid1.toString());// D01鐨勭幓鐠冧俊鎭�
-        north_glass_buffer1 glass2 = spianMapper.selectGlass(queueid2.toString());// D02鐜荤拑淇℃伅
-        // 褰撴壂鐮佷綅鐜荤拑id涓虹┖鏃� 瀹藉害涓�0
-        if (queueid1 != null && questate == 0) {
-          // 鍐欏叆D01鐨勬暟鎹埌涓婄墖闃熷垪琛�
-          if (glass1 == null) { // 褰撴病鏈夊�兼椂浼犵┖
-            spianMapper.Updatequeue(null, null, null, null, 0, null, null, null, null, 1);
-          } else {
+      int questate = spianMapper.Selectquecount(queueid1.toString());// 鍒ゆ柇鎵爜浣嶆槸鍚︽湁鐜荤拑宸茬‘璁�
+      // queueid1.toString().isEmpty()
+      north_glass_buffer1 glass1 = spianMapper.selectGlass(queueid1.toString());// D01鐨勭幓鐠冧俊鎭�
+      north_glass_buffer1 glass2 = spianMapper.selectGlass(queueid2.toString());// D02鐜荤拑淇℃伅
+      // 褰撴壂鐮佷綅鐜荤拑id涓虹┖鏃� 瀹藉害涓�0
+      if (queueid1 != null && questate == 0) {
+        // 鍐欏叆D01鐨勬暟鎹埌涓婄墖闃熷垪琛�
+        if (glass1 == null) { // 褰撴病鏈夊�兼椂浼犵┖
+          spianMapper.Updatequeue(null, null, null, null, 0, null, null, null, null, 1);
+        } else {
 
-            spianMapper.Updatequeue(queueid1.toString(), glass1.getordernumber(), glass1.getlistnumber(),
-                glass1.getboxnumber(), 0, glass1.getglasslengthmm().toString(), glass1.getglassheightmm().toString(),
-                glass1.getglasslength().toString(), glass1.getglassheight().toString(), 1);
-          }
-
-        }
-        if (queueid2 != null) {
-          // 鍐欏叆D02鐨勬暟鎹埌涓婄墖闃熷垪琛�
-          if (glass2 == null) {
-            spianMapper.Updatequeue(null, null, null, null, 0, null, null, null, null, 2);
-          } else {
-            spianMapper.Updatequeue(queueid2.toString(), glass2.getordernumber(), glass2.getlistnumber(),
-                glass2.getboxnumber(), 0, glass2.getglasslengthmm().toString(), glass2.getglassheightmm().toString(),
-                glass2.getglasslength().toString(), glass2.getglassheight().toString(), 2);
-            spianMapper.overqueue2(queueid2.toString(), 0, 1);// 鏇存敼鎵爜浣嶄换鍔¤〃鐨勭姸鎬佷负0
-            S7control.getinstance().WriteWord("DB105.16", (short) 0);// 鍏抽棴浠诲姟鍚姩
-          }
-
+          spianMapper.Updatequeue(queueid1.toString(), glass1.getordernumber(), glass1.getlistnumber(),
+              glass1.getboxnumber(), 0, glass1.getglasslengthmm().toString(), glass1.getglassheightmm().toString(),
+              glass1.getglasslength().toString(), glass1.getglassheight().toString(), 1);
         }
 
-        // if (outstate == true) { // 鍑虹墖杞︾姸鎬佺┖闂叉椂
-        // Integer state = spianMapper.Selectoutstate();
-        // String orderid = spianMapper.SelectOrderout();
+      }
+      if (queueid2 != null) {
+        // 鍐欏叆D02鐨勬暟鎹埌涓婄墖闃熷垪琛�
+        if (glass2 == null) {
+          spianMapper.Updatequeue(null, null, null, null, 0, null, null, null, null, 2);
+        } else {
+          spianMapper.Updatequeue(queueid2.toString(), glass2.getordernumber(), glass2.getlistnumber(),
+              glass2.getboxnumber(), 0, glass2.getglasslengthmm().toString(), glass2.getglassheightmm().toString(),
+              glass2.getglasslength().toString(), glass2.getglassheight().toString(), 2);
+          spianMapper.overqueue2(queueid2.toString(), 0, 1);// 鏇存敼鎵爜浣嶄换鍔¤〃鐨勭姸鎬佷负0
+          S7control.getinstance().WriteWord("DB105.16", (short) 0);// 鍏抽棴浠诲姟鍚姩
+        }
 
-        // if (orderid != null && state == 0) {
-        // spianService.selectout(orderid);
-        // }
-        // }
+      }
 
-        // 鏌ヨ鏁版嵁搴�
-        // 鎺ㄩ�佸埌鍓嶇
+      // if (outstate == true) { // 鍑虹墖杞︾姸鎬佺┖闂叉椂
+      // Integer state = spianMapper.Selectoutstate();
+      // String orderid = spianMapper.SelectOrderout();
+
+      // if (orderid != null && state == 0) {
+      // spianService.selectout(orderid);
+      // }
+      // }
+
+      // 鏌ヨ鏁版嵁搴�
+      // 鎺ㄩ�佸埌鍓嶇
 
       // }
     }
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 46a5d6b..0850abc 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
@@ -153,149 +153,118 @@
             // // TODO: handle exception
             // }
 
-            // if (S7control.getinstance().CheckConnected() == true) {
-            // 鑾峰彇褰撳墠鎵爜鏂瑰紡
+            if (S7control.getinstance().CheckConnected() == true) {
+                // 鑾峰彇褰撳墠鎵爜鏂瑰紡
 
-            List<Boolean> Scanningmethods = S7control.getinstance().ReadBits("DB101.11.4", 1);
-            if(Scanningmethods!=null){
-                for (Boolean Scanningmethod : Scanningmethods) {
-                    jsonObject.append("Scanningmethod", Scanningmethod);
-                }
-            }
-            
-
-            String CurrrentGlassId = spianService.queGlassid("DB103.256", 14).toString();
-            jsonObject.append("CurrrentGlassId", CurrrentGlassId);
-
-            // 鑾峰彇D01-D06,A01,A02,B01,B02鐘舵��
-            List<Short> DeviceList = S7control.getinstance().ReadWord("DB103.0", 10);
-            jsonObject.append("DeviceList", DeviceList);
-            // 鑾峰彇D01-D06,A01,A02,B01,B02鐜荤拑id
-            List<String> GlassIdList = new ArrayList<String>();
-            GlassIdList.add(spianService.queGlassid("DB103.40", 14).toString());
-            GlassIdList.add(spianService.queGlassid("DB103.58", 14).toString());
-
-            GlassIdList.add(spianService.queGlassid("DB103.184", 14).toString());
-            GlassIdList.add(spianService.queGlassid("DB103.212", 14).toString());
-
-            GlassIdList.add(spianService.queGlassid("DB103.128", 14).toString());
-            GlassIdList.add(spianService.queGlassid("DB103.142", 14).toString());
-            GlassIdList.add(spianService.queGlassid("DB103.156", 14).toString());
-
-            GlassIdList.add(spianService.queGlassid("DB103.72", 14).toString());
-            GlassIdList.add(spianService.queGlassid("DB103.86", 14).toString());
-            GlassIdList.add(spianService.queGlassid("DB103.100", 14).toString());
-            GlassIdList.add(spianService.queGlassid("DB103.114", 14).toString());
-            jsonObject.append("GlassIdList", GlassIdList);
-
-            // 璇诲幓Plc杩涚墖杞︿笌鍑虹墖杞︿綅缃甒
-            List<String> addressList = new ArrayList<String>();
-            addressList.add("DB106.12");
-            addressList.add("DB106.0");
-            List<Short> paramlist = S7control.getinstance().ReadWord(addressList);
-            if (paramlist != null) {
-                jsonObject.append("params", paramlist);
-            }
-            // 鑾峰彇杩涚墖杞︾姸鎬�
-            List<Short> datas1ListState = S7control.getinstance().ReadWord("DB106.8",
-                    1);// 鑾峰彇杩涚墖杞︾姸鎬�
-            if (datas1ListState != null) {
-                boolean exist1 = datas1ListState.contains((short) 0);
-                jsonObject.append("zhuangtai", exist1);
-            }
-
-            // 鑾峰彇杩涚墖鐜荤拑淇℃伅
-            List<Short> inglassInfo = S7control.getinstance().ReadWord("DB106.24", 1);
-            if (inglassInfo != null) {
-                if (inglassInfo.size() > 0) {
-                    jsonObject.append("loadglassheight", inglassInfo.get(0) * 70);
+                List<Boolean> Scanningmethods = S7control.getinstance().ReadBits("DB101.11.4", 1);
+                if (Scanningmethods != null) {
+                    for (Boolean Scanningmethod : Scanningmethods) {
+                        jsonObject.append("Scanningmethod", Scanningmethod);
+                    }
                 }
 
-            }
-            // // 鑾峰彇閾濇idDB106.DBW64锛屾坊鍔犲埌鍑虹墖闃熷垪
-            // String frameno="X21763329601FB";
-            String frameno = spianService.queGlassid("DB103.270", 14).toString();
-            if (!frameno.equals(Plchome.FrameNo)) {
-                Plchome.FrameNo = frameno;
-                try {
-                    Short num = 0;
-                    List<north_glass_buffer1> north_glass_buffer1s = north_Glass_Buffer1Service
-                            .SelectAluminumFrameInfoById(Plchome.FrameNo);
-                    for (north_glass_buffer1 north_glass_buffer1 : north_glass_buffer1s) {
-                        if (north_glass_buffer1.getstorageCage() == null) {
-                            break;
+                String CurrrentGlassId = spianService.queGlassid("DB103.256", 14).toString();
+                jsonObject.append("CurrrentGlassId", CurrrentGlassId);
+
+                // 鑾峰彇D01-D06,A01,A02,B01,B02鐘舵��
+                List<Short> DeviceList = S7control.getinstance().ReadWord("DB103.0", 10);
+                jsonObject.append("DeviceList", DeviceList);
+                // 鑾峰彇D01-D06,A01,A02,B01,B02鐜荤拑id
+                List<String> GlassIdList = new ArrayList<String>();
+                GlassIdList.add(spianService.queGlassid("DB103.44", 14).toString());
+                GlassIdList.add(spianService.queGlassid("DB103.58", 14).toString());
+
+                GlassIdList.add(spianService.queGlassid("DB103.184", 14).toString());
+                GlassIdList.add(spianService.queGlassid("DB103.212", 14).toString());
+
+                GlassIdList.add(spianService.queGlassid("DB103.128", 14).toString());
+                GlassIdList.add(spianService.queGlassid("DB103.142", 14).toString());
+                GlassIdList.add(spianService.queGlassid("DB103.156", 14).toString());
+
+                GlassIdList.add(spianService.queGlassid("DB103.72", 14).toString());
+                GlassIdList.add(spianService.queGlassid("DB103.86", 14).toString());
+                GlassIdList.add(spianService.queGlassid("DB103.100", 14).toString());
+                GlassIdList.add(spianService.queGlassid("DB103.114", 14).toString());
+                jsonObject.append("GlassIdList", GlassIdList);
+
+                // 璇诲幓Plc杩涚墖杞︿笌鍑虹墖杞︿綅缃甒
+                List<String> addressList = new ArrayList<String>();
+                addressList.add("DB106.12");
+                addressList.add("DB106.0");
+                List<Short> paramlist = S7control.getinstance().ReadWord(addressList);
+                if (paramlist != null) {
+                    jsonObject.append("params", paramlist);
+                }
+                // 鑾峰彇杩涚墖杞︾姸鎬�
+                List<Short> datas1ListState = S7control.getinstance().ReadWord("DB106.8",
+                        1);// 鑾峰彇杩涚墖杞︾姸鎬�
+                if (datas1ListState != null) {
+                    boolean exist1 = datas1ListState.contains((short) 0);
+                    jsonObject.append("zhuangtai", exist1);
+                }
+
+                // 鑾峰彇杩涚墖鐜荤拑淇℃伅
+                List<Short> inglassInfo = S7control.getinstance().ReadWord("DB106.24", 1);
+                if (inglassInfo != null) {
+                    if (inglassInfo.size() > 0) {
+                        jsonObject.append("loadglassheight", inglassInfo.get(0) * 70);
+                    }
+
+                }
+                // // 鑾峰彇閾濇idDB106.DBW64锛屾坊鍔犲埌鍑虹墖闃熷垪
+                // String frameno="X21763329601FB";
+                String frameno = spianService.queGlassid("DB103.270", 14).toString();
+                if (!frameno.equals(Plchome.FrameNo)) {
+                    Plchome.FrameNo = frameno;
+                    try {
+                        Short num = 0;
+                        List<north_glass_buffer1> north_glass_buffer1s = north_Glass_Buffer1Service
+                                .SelectAluminumFrameInfoById(Plchome.FrameNo);
+                        for (north_glass_buffer1 north_glass_buffer1 : north_glass_buffer1s) {
+                            if (north_glass_buffer1.getstorageCage() == null) {
+                                break;
+                            }
+                            num++;
                         }
-                        num++;
+                        if (num == north_glass_buffer1s.size()) {
+                            north_Glass_Buffer1Service.AddOutSliceS(Plchome.FrameNo);
+                        } else {
+                            Plchome.AluminumFrame = north_glass_buffer1s;
+                        }
+                    } catch (SQLException e) {
+                        // TODO Auto-generated catch block
+                        e.printStackTrace();
                     }
-                    if (num == north_glass_buffer1s.size()) {
-                        north_Glass_Buffer1Service.AddOutSliceS(Plchome.FrameNo);
-                    } else {
-                        Plchome.AluminumFrame = north_glass_buffer1s;
-                    }
-                } catch (SQLException e) {
-                    // TODO Auto-generated catch block
-                    e.printStackTrace();
+                }
+                if (AluminumFrame != null) {
+                    jsonObject.append("AluminumFrame", AluminumFrame);
+                }
+
+                // 鑾峰彇杩涚墖璇锋眰鐘舵��
+                List<Short> D01Request = S7control.getinstance().ReadWord("DB106.24", 1);
+                boolean D01RequestState = D01Request.contains((short) 1);
+                // boolean D01RequestState =true;
+                jsonObject.append("D01RequestState", D01RequestState);
+
+                // 澶嶄綅鍊掕鏃�
+                // 鍦板潃104.9.6
+                List<Boolean> countdown = S7control.getinstance().ReadBits("DB104.9.6", 1);
+                for (Boolean countdowns : countdown) {
+                    jsonObject.append("countdown", countdowns);
+                }
+                // jsonObject.append("countdown", true);
+                // 澶嶄綅瀹屾垚淇″彿ss
+                List<Boolean> resetss = S7control.getinstance().ReadBits("DB103.284", 1);
+                for (Boolean reset : resetss) {
+                    jsonObject.append("reset", reset);
+                }
+
+                // 鏄惁鎬ュ仠
+                List<Boolean> emergencystops = S7control.getinstance().ReadBits("DB104.5.1", 1);
+                for (Boolean emergencystop : emergencystops) {
+                    jsonObject.append("emergencystop", emergencystop);
                 }
             }
-            if (AluminumFrame != null) {
-                jsonObject.append("AluminumFrame", AluminumFrame);
-            }
-
-            // 鑾峰彇杩涚墖璇锋眰鐘舵��
-            List<Short> D01Request = S7control.getinstance().ReadWord("DB106.24", 1);
-            boolean D01RequestState = D01Request.contains((short) 1);
-            // boolean D01RequestState =true;
-            jsonObject.append("D01RequestState", D01RequestState);
-
-            // 澶嶄綅鍊掕鏃�
-            // 鍦板潃104.9.6
-            List<Boolean> countdown = S7control.getinstance().ReadBits("DB104.9.6", 1);
-            for (Boolean countdowns : countdown) {
-                jsonObject.append("countdown", countdowns);
-            }
-            // jsonObject.append("countdown", true);
-            // 澶嶄綅瀹屾垚淇″彿ss
-            List<Boolean> resetss = S7control.getinstance().ReadBits("DB103.284", 1);
-            for (Boolean reset : resetss) {
-                jsonObject.append("reset", reset);
-            }
-
-            // 鏄惁鎬ュ仠
-            List<Boolean> emergencystops = S7control.getinstance().ReadBits("DB104.5.1", 1);
-            for (Boolean emergencystop : emergencystops) {
-                jsonObject.append("emergencystop", emergencystop);
-            }
-
-            // // 缁堟缁х画鎸夐挳
-            // List<String> niuanaddressList3 =
-            // Arrays.asList(config.getProperty("Parameter2.stop").split(","));
-            // List<Boolean> anniuread =
-            // S7control.getinstance().readBits(niuanaddressList3);
-            // // Boolean[] value4 = { false, false};
-            // // List<Boolean> anniuread = new ArrayList<>(Arrays.asList(value4));
-            // Boolean[] value5 = { true };
-            // List<Boolean> resets = new ArrayList<>(Arrays.asList(value5));
-            // short[] anniuparams = new short[anniuread.size()];
-            // for (int i = 0; i < anniuread.size(); i++) {
-            // boolean value = anniuread.get(i);
-            // anniuparams[i] = value ? (short) 1 : (short) 0;
-            // }
-
-            // short[] resets2 = new short[resets.size()];
-            // for (int i = 0; i < resets.size(); i++) {
-            // boolean value = resets.get(i);
-            // resets2[i] = value ? (short) 1 : (short) 0;
-            // }
-
-            // for (short number : resets2) {
-
-            // if (number == 1) {
-            // jsonObject.append("Abort", anniuparams);
-
-            // }
-
-            // }
-            // }
 
             storageCageService = WebSocketServer.applicationContext.getBean(StorageCageService.class);
             dbserve = WebSocketServer.applicationContext.getBean(JdbcConnections.class);
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Plclog.java b/springboot-vue3/src/main/java/com/example/springboot/component/Plclog.java
index 0ae28f3..3a312ca 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/Plclog.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/Plclog.java
@@ -21,23 +21,24 @@
             }
             spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class);
             spianService = WebSocketServer.applicationContext.getBean(SpianService.class);
-
+            StringBuilder B01glassid = spianService.queGlassid("DB103.184", 14);// BO1鐨勭幓鐠僫d
+            StringBuilder B02glassid = spianService.queGlassid("DB103.212", 14);// B02鐨勭幓鐠僫d
             boolean B01backs = spianService.listbool("DB106.60");// b01姹囨姤
             boolean B02backs = spianService.listbool("DB106.62");// b01姹囨姤
             if (b01 != B01backs) {
                 if (B01backs == true) {
-                    spianMapper.insertlog("BO1:1");
+                    spianMapper.insertlog("BO1:1"+B01glassid);
                 } else {
-                    spianMapper.insertlog("BO1:0");
+                    spianMapper.insertlog("BO1:0"+B01glassid);
                 }
                  b01 = B01backs;
             }
            
              if (b02 != B02backs) {
                 if (B02backs == true) {
-                    spianMapper.insertlog("BO2:1");
+                    spianMapper.insertlog("BO2:1"+B02glassid);
                 } else {
-                    spianMapper.insertlog("BO2:0");
+                    spianMapper.insertlog("BO2:0"+B02glassid);
                 }
                 b02 = B02backs;
             }
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 994ed85..e609d7f 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
@@ -17,29 +17,29 @@
         //
         System.out.println("鍚姩瀹屾垚");
 
-      //  new PlcHold().start();
+        //  new PlcHold().start();
 
         new Plchome().start();
+        // new PlcLayout().start();
+        // new Plcalarm().start();
 
-        new Plcalarm().start();
+        // new Plcsign().start();
 
-        new Plcsign().start();
+        // new Plcstate().start();
+        // new PlcPositioning1().start();
 
-        new Plcstate().start();
-        new PlcPositioning1().start();
+        // new PlcParameter2().start();
 
-        new PlcParameter2().start();
+        // new PLCAutomaticParameterSetting().start();
 
-        new PLCAutomaticParameterSetting().start();
+        // new PlcManualonePosition().start();
+        // new PlcManualonePosition2().start();
+        // new PlcServoManualone().start();
+        // new PLCManualJog().start();
+        // new Plclog().start();
 
-        new PlcManualonePosition().start();
-        new PlcManualonePosition2().start();
-        new PlcServoManualone().start();
-        new PLCManualJog().start();
-        new Plclog().start();
-
-        new PlcInteractionState().start();
-//new PlcParameter1Review().start();
+        // new PlcInteractionState().start();
+        //new PlcParameter1Review().start();
        // new PLCAutomaticParameterSettingReview().start();
     }
 }
\ No newline at end of file
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 f2f32ee..ca448cd 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
@@ -275,16 +275,21 @@
   @PostMapping("/InsertQueueGlassId")
   public Result InsertQueueGlassId(Short id, @RequestBody Queue queue) {
     Map<String, Object> map = new HashMap<>();
+    Short zhi=200;
     short result = homeMapper.SelectStorageByGlassId(queue.getglassId());
     if (result > 0) {
       map.put("message", "300");
     } else {
-      homeMapper.InsertQueueGlassId(queue, id);
+      
       if (id == 1) {
         // 璋冪敤浼嶅瓨鍌ㄨ繃绋�
-        spianService.selectAll(queue.getglassId());
+        zhi=spianService.selectAll(queue.getglassId());
+        if(zhi==200){
+          homeMapper.InsertQueueGlassId(queue, id);
+        }
       }
-      map.put("message", "200");
+      
+      map.put("message",zhi);
     }
     return Result.success(map);
   }
@@ -330,11 +335,7 @@
   // 鏍规嵁閾濇id鍒犻櫎鍑虹墖闃熷垪鐜荤拑
   @PostMapping("/DeleteProductionQueueGlass")
   public Result DeleteProductionQueueGlass(String FrameNo) {
-    homeMapper.CompleteQueueByFrameNo(FrameNo);
-
-    Map<String, Object> map = new HashMap<>();
-    map.put("message", "200");
-    return Result.success(map);
+    return outSliceServive.CompleteQueueByFrameNo(FrameNo);
   }
 
   // 娣诲姞閾濇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 f5a7bee..c81c75c 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
@@ -165,7 +165,7 @@
   Out_slice SelectQueueByglassid(String getbarcode);
 
   //娣诲姞鍑虹墖闃熷垪
-  @Insert("INSERT INTO out_slice( `glassId`, `barcode`, `glasswidth`, `glassheight`, `state`, `flip`, `sequence`, `time` ,`position` ,`orderid` ,`listid` ,`boxid` ,`glasswidthmm` ,`glassheightmm` ,`framewidthmm` ,`frameheightmm` ) VALUES ( #{glassid}, #{FrameNo}, #{glasslengthMm}, #{glassheightMm}, #{state}, #{flip}, #{sequence}, now(), #{position}, #{orderid}, #{listid}, #{boxid}, #{glasswidth}, #{glassheight}, #{framewidthmm}, #{frameheightmm});")
+  @Insert("INSERT INTO out_slice( `glassId`, `barcode`, `glasswidth`, `glassheight`, `state`, `flip`, `sequence`, `time` ,`position` ,`orderid` ,`listid` ,`boxid` ,`glasswidthmm` ,`glassheightmm` ,`framewidthmm` ,`frameheightmm` ,`framestate` ) VALUES ( #{glassid}, #{FrameNo}, #{glasslengthMm}, #{glassheightMm}, #{state}, #{flip}, #{sequence}, now(), #{position}, #{orderid}, #{listid}, #{boxid}, #{glasswidth}, #{glassheight}, #{framewidthmm}, #{frameheightmm}, 0);")
   void AddOutSliceS(String glassid, String flip, String FrameNo, String glasslengthMm, String glassheightMm, int sequence, String position, Short state,String orderid, String listid, String boxid, String glasswidth, String glassheight,String framewidthmm,String frameheightmm);
 
   //鍑虹墖闃熷垪璋冨簭
@@ -179,12 +179,12 @@
   @Select("select rp.* from role_permission rp inner join user r on rp.role_id=r.role_id and r.username=#{username} and (permission_id=32 or permission_id=33 or permission_id=34 or permission_id=35 or permission_id=36 or permission_id=37 or permission_id=38 or permission_id=39)")
   List<RolePermission> SelectPermissionByUserName(String username);
 
-  //鏍规嵁鐜荤拑瀹屾垚鍑虹墖浠诲姟
-  @Update("update out_slice set state=3 where id=#{id}")
-  void CompleteQueue(String id);
+  // //鏍规嵁鐜荤拑瀹屾垚鍑虹墖浠诲姟
+  // @Update("update out_slice set state=2 where id=#{id}")
+  // void CompleteQueue(String id);
 
   //鏍规嵁鐜荤拑瀹屾垚鍑虹墖浠诲姟
-  @Update("update out_slice set state=3 where id=#{id}")
+  @Update("update out_slice set state=2 where glassid=#{glassid}")
   void CompleteQueueByGlassId(String glassid);
 
   //鏌ヨ閾濇id瀵瑰簲鐜荤拑瀹屾垚鏁伴噺
@@ -223,4 +223,9 @@
   @Update("update storage_cage set width=width+#{width} where   cage=#{cage} and cell=#{cell};")
   void UpdataCageWidth(double width, int cage, int cell);
 
+  //鑾峰彇閾濇鏈夋病鏈夋鍦ㄥ嚭鐗囩殑鐜荤拑
+  @Select("select count(*) from out_slice where barcode=#{frameNo} and state=1")
+  Short SelectOutingQueueCount(String frameNo);
+  
+
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
index 612e27a..20a4424 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
@@ -18,8 +18,8 @@
     @Select("select a.cage,FrameBarcode,COUNT(if(a.order_id=#{orderids},a.order_id,null))as orderid,b.shu,c.shu2,a.cell,min(a.state)as state1,max(a.state)as state2,disabled,FrameBarcode from storage_cage a left join (select COUNT(*)shu,cage from storage_cage  where order_id=#{orderids} GROUP BY cage)as b on a.cage=b.cage left join(select cage ,COUNT(glass_id)as shu2 from storage_cage GROUP BY cage)c  on a.cage=c.cage where (order_id=#{orderids} or ''='') GROUP BY cage,cell HAVING state1=0 ORDER BY (FrameBarcode=#{Fbarcode} or ''='') desc,shu desc,shu2,state2 asc,cage asc;")
     List<StorageCage> selectAll(String orderids,String Fbarcode);
     //浼樺厛鍒ゆ柇涓�娆℃槸鍚︽湁鍚岄摑妗嗙殑绌轰綅
-    @Select("select *,min(state) state1 from storage_cage  GROUP BY cage,cell HAVING state1=0 and  FrameBarcode=#{FrameBarcode} LIMIT 1;")
-    List<StorageCage> selectAllFbarcode(String Fbarcode);
+    @Select("select *,min(state) state1 from storage_cage where width>=(#{width}+#{width2})  GROUP BY cage,cell HAVING state1=0 and  FrameBarcode=#{Fbarcode} ORDER BY width desc LIMIT 1;")
+    List<StorageCage> selectAllFbarcode(String Fbarcode,double width,double width2);
     // 鑾峰彇鍒ゆ柇璇ユ牸瀛愭槸鍚﹂渶瑕佹妸澶栫墖鎺ㄥ叆鍐呯墖浣嶇疆
     @Select("select state from storage_cage where  cage=#{cage} and cell=#{cell} and tier=1;")
     int selectcell(int cage, int cell);
@@ -232,4 +232,7 @@
     //鍒ゆ柇鐜荤拑鏄惁绂佺敤
     @Select(" select disabled from storage_cage where glass_id=#{glassid} limit 1;")
     int SelectCageGlassState(String glassid);
+    //鍒ゆ柇姹囨姤鐨刬d鏄惁姝g‘
+    @Select("SELECT count(*) FROM `storage_cage` where state!=0 and state!=1 and glass_id=#{glassid}")
+    int SelectHB(String glassid);
 }
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/OutSliceServive.java b/springboot-vue3/src/main/java/com/example/springboot/service/OutSliceServive.java
index c7a9a27..ed78fe2 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/service/OutSliceServive.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/OutSliceServive.java
@@ -52,16 +52,7 @@
 
   // 瀹屾垚鍑虹墖浠诲姟
   public Result CompleteQueue(String id, String frameid, String glassid) {
-    homeMapper.CompleteQueue(id);
-    Short num = homeMapper.SelectCountByFrameNo(frameid);
-    if (num == 0) {
-      homeMapper.CompleteQueueByFrameNo(frameid);
-    }
-    StorageCage storageCage = homeMapper.SelectGlassInfo(glassid);
-    if (storageCage != null && storageCage.getState().equals("3")) {
-      spianMapper.UpdataOutCage1(storageCage.getGlassWidth(), storageCage.getCage(), storageCage.getCell());
-      homeMapper.DeleteByGlassID(glassid);
-    }
+    homeMapper.CompleteQueueByGlassId(glassid);
     Map<String, Object> map = new HashMap<>();
     map.put("message", "200");
     return Result.success(map);
@@ -122,4 +113,16 @@
     return homeMapper.SelectCurrentFrame();
   }
 
+public Result CompleteQueueByFrameNo(String frameNo) {
+  Map<String, Object> map = new HashMap<>();
+  Short num= homeMapper.SelectOutingQueueCount(frameNo);
+  if(num==0){
+    homeMapper.CompleteQueueByFrameNo(frameNo);
+    map.put("message", "200");
+  }else{
+    map.put("message", "300");
+  }
+  return Result.success(map);
+}
+
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java b/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
index 7d4844b..1179f74 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
@@ -19,7 +19,7 @@
     // @GetMapping("/all")
     public Short selectAll(String glassid) {
 
-        int cage1;
+        int cage1=0;
         int cells;
         int ids;
         int prcid;
@@ -33,12 +33,7 @@
         if (glasslist == null) {
             return (300);
         }
-        //鍒ゆ柇鏄惁杩樻湁杩涚墖浠诲姟鏈畬鎴愮殑
-        int cagestate=spianMapper.SelectCageState(2);
-        //鏈夎繘鐗囦换鍔℃湭瀹屾垚鏃惰繑鍥炰笉杩涚墖
-        if(cagestate>0){
-            return (300);
-        }
+       
         double widths = glasslist.getglasslengthmm();
         String orderids = glasslist.getordernumber();
         String FrameBarcode = glasslist.getFrameBarcode();
@@ -54,7 +49,10 @@
 
         // String orderid="A001";
         // 鑾峰彇璁㈠崟鐩稿叧搴︽渶楂樼殑绗煎瓙鎺掑簭
-        List<StorageCage> storageCage = spianMapper.selectAllFbarcode(FrameBarcode);
+        List<StorageCage> storageCage = spianMapper.selectAllFbarcode(FrameBarcode,widths,400);
+        //鍒ゆ柇閾濇鎸囧畾绌烘牸鏄惁闇�瑕侀棿闅旂┖闂�
+        
+        
         if (storageCage.size() == 0) {
             storageCage = spianMapper.selectAll(orderids, FrameBarcode);
         }
@@ -171,10 +169,10 @@
 
             spianMapper.Inserttask(1, 0, cageout.getId(), 1000, glassid, state);// 鏂板浠诲姟
             // int state = spianMapper.selectGlassState(cage, cell);//鑾峰彇鏍煎瓙鏁伴噺
-            if (state == 2) {
-                spianMapper.UpdateDBCage1(cage, cell);// 灏嗗唴鐗囨暟鎹洿鏂板埌澶栫墖閲�
-                spianMapper.UpdateDBCage2(cage, cell);// 娓呴櫎鍐呯墖鏁版嵁
-            }
+            // if (state == 2) {
+            //     spianMapper.UpdateDBCage1(cage, cell);// 灏嗗唴鐗囨暟鎹洿鏂板埌澶栫墖閲�
+            //     spianMapper.UpdateDBCage2(cage, cell);// 娓呴櫎鍐呯墖鏁版嵁
+            // }
             System.out.println("鍑虹墖浠诲姟|" + datas);
             S7control.getinstance().WriteWord(adddresslist, datas);// 娲惧彂鍑虹墖杞︿换鍔�
             outmesid(glassid, "DB105.34");// 娲惧彂鍑虹墖ID
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 4ef8022..619fd1b 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
@@ -30,19 +30,21 @@
         String A01glassid2 = spianService.queGlassid("DB103.142", 14).toString();
         String A02glassid1 = spianService.queGlassid("DB103.156", 14).toString();
         String B01glassid = spianService.queGlassid("DB103.184", 14).toString();
-        String B02glassid = spianService.queGlassid("DB103.198", 14).toString();
+        String B02glassid = spianService.queGlassid("DB103.212", 14).toString();
         List<Short> DeviceList = S7control.getinstance().ReadWord("DB103.0", 10);
         if (types == 0) {// 缁堟杩涚墖浠诲姟
             List<StorageTask> cageList = homeMapper.SelectTaskByState(types);
             for (StorageTask storageTask : cageList) {
                 // 鍒ゆ柇鍑虹墖浠诲姟浣嶇疆骞舵竻闄ゅ搴旂幓鐠僫d
-                if ((storageTask.getGlassId() == A01glassid1 || storageTask.getGlassId() == A01glassid2)&&DeviceList.get(4)==0) {
+                if ((storageTask.getGlassId().equals(A01glassid1)|| storageTask.getGlassId().equals(A01glassid2))&&DeviceList.get(4)==0) {
                     outSliceServive.StopTask(storageTask.getGlassId(), types);
                     ClearGlassId("DB101.10.0");
-                } else if (storageTask.getGlassId() == B01glassid&&DeviceList.get(2)==0) {
+                } 
+                if (storageTask.getGlassId().equals(B01glassid)&&DeviceList.get(2)==0) {
                     outSliceServive.StopTask(storageTask.getGlassId(), types);
                     ClearGlassId("DB101.10.2");
-                } else if (storageTask.getGlassId() == B02glassid&&DeviceList.get(3)==0) {
+                } 
+                if (storageTask.getGlassId().equals(B02glassid)&&DeviceList.get(3)==0) {
                     ClearGlassId("DB101.10.3");
                     outSliceServive.StopTask(storageTask.getGlassId(), types);
                 }
@@ -56,7 +58,6 @@
             }
             for (StorageTask cageList : cageLists) {
                 if (cageList.getTaskType().equals("1")) {
-
                     System.out.println(DeviceList.get(5));
                     if(cageList.getGlassId().equals(A02glassid1)&&DeviceList.get(5)==0){
                         outSliceServive.StopTask(cageList.getGlassId(), types);
diff --git a/springboot-vue3/src/main/resources/Alarm.json b/springboot-vue3/src/main/resources/Alarm.json
new file mode 100644
index 0000000..e6d4d0c
--- /dev/null
+++ b/springboot-vue3/src/main/resources/Alarm.json
@@ -0,0 +1,628 @@
+{
+  "content": [
+    {
+      "name": "D01 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D02 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D03 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D04 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D05 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D06 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 servo turn error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 servo turn error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 servo travel error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 servo travel error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 servo travel error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 servo travel error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D01 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D01 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D02 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D02 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D03 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D03 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D04 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D04 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D05 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D05 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D06 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D06 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 IN DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 IN pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 OUT DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 OUT pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 IN DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 IN pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 OUT DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 OUT pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D01 Scan glass exceeding limit",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "emergency stop alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "More glass than known",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "less glass than known",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D01 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D02 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D03 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D04 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D05 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D06 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 conveyor Left safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 conveyor right safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 conveyor Left safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 conveyor right safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "1# buffer safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "2# buffer safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "3# buffer safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "4# buffer safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01.SR right in pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02.SR left in pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01.SR left in pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01.SR left dec error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01.SR right dec error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01.SR right in pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02.SR left in pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02.SR left dec error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02.SR right dec error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    }
+    ,{
+      "name": "B02.SR right in pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    } ,{
+      "name": "A01 servo turn  homed",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    } ,{
+      "name": "A02 servo turn  homed",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    } ,{
+      "name": "A01 servo travel  homed",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    } ,{
+      "name": "A02 servo travel  homed",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    } ,{
+      "name": "B01 servo travel  homed",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    } ,{
+      "name": "B02 servo travel  homed",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    } ,{
+      "name": "resetDelay",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    } ,{
+      "name": "A01 travel Negative limit",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    } ,{
+      "name": "A01 travel Positive limit",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    } ,{
+      "name": "A01 turn up limit",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    } ,{
+      "name": "A01 turn down limit",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    } ,{
+      "name": "A02 travel Negative limit",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    } ,{
+      "name": "A02 travel Positive limit",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    } ,{
+      "name": "A02 turn up limit",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    } ,{
+      "name": "A02 turn down limit",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },{
+      "name": "B01 travel Negative limit",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },{
+      "name": "B01 travel Positive limit",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },{
+      "name": "B02 travel Negative limit",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },{
+      "name": "B02 travel Positive limit",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    }
+  ],
+  "address": [
+    {
+      "name": "DB104.0.0",
+      "count": 91
+    }
+  ]
+}
\ No newline at end of file

--
Gitblit v1.8.0