From 3614b4f694d9d40708df6477d56a40b9311ad48a Mon Sep 17 00:00:00 2001
From: ZengTao <2773468879@qq.com>
Date: 星期三, 31 一月 2024 14:50:17 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/CanadaMes

---
 springboot-vue3/src/main/java/com/example/springboot/component/InitUtil.java                            |   15 
 springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePositionReview.java          |  247 +++++
 springboot-vue3/src/main/java/com/example/springboot/component/PlchomeNew.java                          |  403 +++++++++
 springboot-vue3/src/main/resources/JsonFile/test.xlsx                                                   |    0 
 springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcBitInfo.java                      |    8 
 springboot-vue3/src/main/resources/JsonFile/sign.xlsx                                                   |    0 
 springboot-vue3/src/main/java/com/example/springboot/component/ExcelToJsonConverter.java                |   24 
 springboot-vue3/src/main/java/com/example/springboot/component/PLCManualJog.java                        |    8 
 springboot-vue3/src/main/java/com/example/springboot/component/PlcHoldNew.java                          |   25 
 springboot-vue3/src/main/resources/JsonFile/PlcSign.json                                                |  457 ++++++++++
 springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java                             |   37 
 springboot-vue3/src/main/resources/JsonFile/PlcState.json                                               |   17 
 springboot-vue3/src/main/resources/JsonFile/PlcTest.json                                                |  378 +++++++++
 springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcBitObject.java                    |   18 
 springboot-vue3/src/main/java/com/example/springboot/component/PlcalarmReview.java                      |  140 +++
 springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java                        |   34 
 springboot-vue3/src/main/java/com/example/springboot/component/PLCAutoMes.java                          |   46 
 springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterObject.java              |   17 
 springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterInfo.java                |   16 
 springboot-vue3/src/main/java/com/example/springboot/component/PLCAutomaticParameterSettingReview2.java |   81 +
 springboot-vue3/src/main/resources/JsonFile/PlcAlarm.json                                               |  371 ++++++++
 springboot-vue3/src/main/java/com/example/springboot/component/PLCManualJogReview.java                  |  157 +++
 springboot-vue3/src/main/resources/JsonFile/alarm.xlsx                                                  |    0 
 23 files changed, 2,357 insertions(+), 142 deletions(-)

diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/ExcelToJsonConverter.java b/springboot-vue3/src/main/java/com/example/springboot/component/ExcelToJsonConverter.java
index 20ed8a4..a361cef 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/ExcelToJsonConverter.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/ExcelToJsonConverter.java
@@ -18,15 +18,15 @@
 public class ExcelToJsonConverter {
 
     public static void main(String[] args) {
-        String excelFilePath = "JsonFile/state.xlsx";
+        String excelFilePath = "src/main/resources/JsonFile/alarm.xlsx";
         String sheetName = "Sheet1";
         int addressColumnIndex = 0;
         int nameColumnIndex = 1;
 
-        int unitColumnIndex = 2;
-        String outputFilePath = "JsonFile/state.json";
+        //int unitColumnIndex = 2;
+        String outputFilePath = "src/main/resources/JsonFile/PlcAlarm.json";
 
-        try (Workbook workbook = new HSSFWorkbook(new FileInputStream(excelFilePath))) {
+        try (Workbook workbook = new XSSFWorkbook(new FileInputStream(excelFilePath))) {
             Sheet sheet = workbook.getSheet(sheetName);
 
             List<LinkedHashMap<String, Object>> jsonList = new ArrayList<>();
@@ -38,19 +38,19 @@
             }
 
             int plcAddressLength = 0; // 璁板綍鎵�鏈� addressLenght 鐨勫拰
-
+            int addressIndex = 0; // 鑷鐨勫湴鍧�绱㈠紩
             while (rowIterator.hasNext()) {
                 Row row = rowIterator.next();
 
                 Cell nameCell = row.getCell(nameColumnIndex);
                 Cell addressCell = row.getCell(addressColumnIndex);
-                Cell unitCell = row.getCell(unitColumnIndex);
+              //  Cell unitCell = row.getCell(unitColumnIndex);
 
                 String name = nameCell.getStringCellValue();
                 String address = addressCell.getStringCellValue();
-                String unit = unitCell.getStringCellValue();
+               // String unit = unitCell.getStringCellValue();
 
-                String addressIndex = extractAddressIndex(address);
+              //  String addressIndex = extractAddressIndex(address);
 
                 LinkedHashMap<String, Object> jsonObject = new LinkedHashMap<>();
                 jsonObject.put("codeId", name);
@@ -62,19 +62,21 @@
                 } else {
                     addressLength = 2;
                 }
-                jsonObject.put("addressLenght", String.valueOf(addressLength));
+               // jsonObject.put("addressLenght", String.valueOf(addressLength));
 
-                jsonObject.put("unit", unit);
+                //jsonObject.put("unit", unit);
 
                 plcAddressLength += addressLength;
 
                 jsonList.add(jsonObject);
+                addressIndex++;
             }
 
             LinkedHashMap<String, Object> resultObject = new LinkedHashMap<>();
             resultObject.put("plcAddressBegin", "DB100.0");
             resultObject.put("plcAddressLenght", String.valueOf(plcAddressLength));
-            resultObject.put("dataType", "word");
+           // resultObject.put("dataType", "word");
+            resultObject.put("dataType", "bit");
             resultObject.put("parameteInfor", jsonList);
 
             Gson gson = new Gson();
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 b7824e9..544ba9d 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
@@ -14,6 +14,7 @@
 import java.util.List;
 
 public class InitUtil {
+    //鍒濆鍖杦ord
     public static PlcParameterObject initword(String jsonFilePath) {
         try {
             FileReader fileReader = new FileReader(jsonFilePath);
@@ -47,7 +48,8 @@
                 plcParameterObject.addPlcParameter(plcParameterInfo);
             }
            // byte[] getplcvlues = {0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02};
-           
+           // byte[] getplcvlues = S7control.getinstance().ReadByte(plcParameterObject.getPlcAddressBegin(), plcParameterObject.getPlcAddressLength());
+           // plcParameterObject.setPlcParameterList(getplcvlues);
 
             return plcParameterObject;
         } catch (IOException e) {
@@ -56,7 +58,7 @@
         return null;
     }
 
-
+    //鍒濆鍖朾it
     public static PlcBitObject initbit(String jsonFilePath) {
         PlcBitObject plcBitObject = new PlcBitObject();
 
@@ -93,11 +95,16 @@
         } catch (IOException e) {
             e.printStackTrace();
         }
-      
+           //Boolean[] values1 = { false, true, true, true, false, false, true, false,
+          //  false, true ,true };
+   // List<Boolean> getplcvlues = new ArrayList<>(Arrays.asList(values1));
+
+//        List<Boolean> getplcvlues = S7control.getinstance().ReadBits(plcBitObject.getPlcAddressBegin(), plcBitObject.getPlcAddressLength());
+//        plcBitObject.setPlcBitList(getplcvlues);
         return plcBitObject;
     }
 
-
+//
     public static void readAndUpdateBitValues(PlcBitObject plcBitObject) {
 
 //        Boolean[] values1 = { false, true, true, true, false, false, true, false,
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PLCAutoMes.java b/springboot-vue3/src/main/java/com/example/springboot/component/PLCAutoMes.java
index 4367d0b..6181031 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PLCAutoMes.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PLCAutoMes.java
@@ -15,11 +15,37 @@
     // 鐢ㄤ簬瀛樺偍搴旂敤绋嬪簭鐨勯厤缃俊鎭�
     private Configuration config;
     private static InitUtil initUtil;
+    // public static PlcParameterObject PlcMesObject;
+    // public static PlcParameterObject PlcReadObject;
+    // public static PlcParameterObject PlcframeObject;
+
     // 鍒涘缓涓�涓嚜瀹氫箟鐨� S7 鎺у埗鍣ㄦ秷鎭鐞嗗櫒瀵硅薄
     MessageHandler customS7Control = new MessageHandler();
 
     // 鍗曚緥瀹炰緥
     private static PLCAutoMes instance;
+    private static String PlcMes = PLCAutoMes.class.getResource("/JsonFile/PlcMes.json").getPath();
+    private static String PlcRead = PLCAutoMes.class.getResource("/JsonFile/PlcRead.json").getPath();
+    private static String Plcframe = PLCAutoMes.class.getResource("/JsonFile/Plcframe.json").getPath();
+    private static String PlcParameter = PLCAutomaticParameterSettingReview2.class
+            .getResource("/JsonFile/PlcParameter.json").getPath();
+    private static String PlcSign = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcSign.json")
+            .getPath();
+    private static String PlcState = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcState.json")
+            .getPath();
+    private static String PlcAlarm = PLCAutoMes.class.getResource("/JsonFile/PlcAlarm.json").getPath();
+    private static String PlcTest = PLCAutoMes.class.getResource("/JsonFile/PlcTest.json").getPath();
+
+    // 璋冪敤initword鏂规硶
+
+    public static PlcParameterObject plcParameterObject = initUtil.initword(PlcParameter);
+    public static PlcBitObject plcPlcTest = initUtil.initbit(PlcTest);
+    public static PlcBitObject  plcBitObject = initUtil.initbit(PlcSign);
+    public static PlcParameterObject  plcStateObject= initUtil.initword(PlcState);
+    public static PlcBitObject plcPlcAlarm = initUtil.initbit(PlcAlarm);
+    public static PlcParameterObject PlcMesObject = initUtil.initword(PlcMes);
+    public static PlcParameterObject PlcReadObject = initUtil.initword(PlcRead);
+    public static PlcParameterObject PlcframeObject = initUtil.initword(Plcframe);
 
     // 绉佹湁鏋勯�犲嚱鏁�
     public PLCAutoMes() throws IOException {
@@ -35,33 +61,21 @@
         return instance;
     }
 
-    private static String jsonFilePath = PLCAutoMes.class.getResource("/JsonFile/PlcMes.json").getPath();
-
-    private static String jsonFilePath2 = PLCAutoMes.class.getResource("/JsonFile/PlcRead.json").getPath();
-    // 璋冪敤initword鏂规硶
-    public static PlcParameterObject PlcMesObject = initUtil.initword(jsonFilePath);
-    // 璋冪敤initbit鏂规硶
-    public static PlcParameterObject PlcReadObject = initUtil.initword(jsonFilePath2);
-
     @Override
     public void run() {
         while (this != null) {
             try {
-                Thread.sleep(1000);
+                Thread.sleep(100);
 
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }
 
-            // String jsonFilePath3 =
-            // PLCAutoMes.class.getResource("/JsonFile/Plcframe.json").getPath();
             // System.out.println(jsonFilePath);
 
-            // // 璋冪敤initbit鏂规硶
-            // PlcParameterObject PlcframeObject= initUtil.initword(jsonFilePath3);
-            PlcParameterObject PlcReadObjects=PlcReadObject;
-            // readAndUpdateWordValues(PlcReadObject);
-            // readAndUpdateWordValues(PlcMesObject);
+            readAndUpdateWordValues(PlcReadObject);
+            readAndUpdateWordValues(PlcMesObject);
+            readAndUpdateWordValues(PlcframeObject);
             // readAndUpdateWordValues(PlcframeObject);
 
             // readAndUpdateWordValues(plcStateObject);
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PLCAutomaticParameterSettingReview2.java b/springboot-vue3/src/main/java/com/example/springboot/component/PLCAutomaticParameterSettingReview2.java
index 5d4aa17..a6d3f93 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PLCAutomaticParameterSettingReview2.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PLCAutomaticParameterSettingReview2.java
@@ -5,6 +5,7 @@
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 import static com.example.springboot.component.InitUtil.readAndUpdateBitValues;
@@ -35,6 +36,17 @@
         return instance;
     }
 
+    String jsonFilePath = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcParameter.json").getPath();
+    String jsonFilePath2 = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcSign.json").getPath();
+    String jsonFilePath4 = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcState.json").getPath();
+    //System.out.println(jsonFilePath4);
+    // 璋冪敤initword鏂规硶
+    PlcParameterObject plcParameterObject = initUtil.initword(jsonFilePath);
+    PlcParameterObject plcStateObject = initUtil.initword(jsonFilePath4);
+
+    // 璋冪敤initbit鏂规硶
+    PlcBitObject plcBitObject = initUtil.initbit(jsonFilePath2);
+
     @Override
     public void run() {
         while (this != null) {
@@ -45,48 +57,55 @@
                 e.printStackTrace();
             }
 
-            String jsonFilePath = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcParameter.json").getPath();
-            String jsonFilePath2 = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcSign.json").getPath();
-            String jsonFilePath4 = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcState.json").getPath();
-           //System.out.println(jsonFilePath4);
+
+          //  int index3 = plcParameterObject.getPlcParameter("A01A02conveyorVelocity(Max)").getAddressIndex();
+           // System.out.println(index3);
+           // System.out.println(plcParameterObject.getPlcParameter("A01A02conveyorVelocity(Max)").getAddress(index3));
 
 
-            // 璋冪敤initword鏂规硶
-          PlcParameterObject plcParameterObject = initUtil.initword(jsonFilePath);
-            PlcParameterObject plcStateObject = initUtil.initword(jsonFilePath4);
+//            readAndUpdateBitValues(plcBitObject);
+//            readAndUpdateWordValues(plcParameterObject);
+//            readAndUpdateWordValues(plcStateObject);
 
-            // 璋冪敤initbit鏂规硶
-            PlcBitObject plcBitObject = initUtil.initbit(jsonFilePath2);
-            readAndUpdateBitValues(plcBitObject);
-            readAndUpdateWordValues(plcParameterObject);
-            readAndUpdateWordValues(plcStateObject);
+                 List<String> addresses = new ArrayList<>();
+      addresses.add("conveyorVelocity(AutoFAST)");
+      addresses.add("A02ID");
+            addresses.add("conveyorVelocity(Manual)");
+
+
+            List<String> address =  plcParameterObject.getAddressListByCodeId(addresses);
+            System.out.println(address);
+
+           // int index = plcParameterObject.getPlcParameter("A01turnAngle1").getAddressIndex();
+           // List<Short> arraylist = S7control.getinstance().ReadWord(plcParameterObject.getPlcParameter("A01turnAngle1").getAddress(index), 8);
+
+
 //            List<Boolean> getplcvlues = S7control.getinstance().ReadBits(plcBitObject.getPlcAddressBegin(), plcBitObject.getPlcAddressLength());
 //            plcBitObject.setPlcBitList(getplcvlues);
 
-           // int index = plcParameterObject.getPlcParameter("A01A02conveyorVelocity(Max)").getAddressIndex();
-         //   System.out.println(index);
-           // plcParameterObject.getPlcParameter("A01A02conveyorVelocity(Max)").getAddress(index);
-            // System.out.println(plcParameterObject.getPlcParameter("A01A02conveyorVelocity(Max)").getAddress(index));
+
+            // plcParameterObject.getPlcParameter("A01A02conveyorVelocity(Max)").getAddress(index);
+          //
             // S7control.getinstance().WriteWord(plcParameterObject.getPlcParameter("conveyorVelocity(AutoFAST)").getAddress(index), (short) 100);
 //     List<String> addresses = new ArrayList<>();
 //      addresses.add("conveyorVelocity(AutoFAST)");
 //      addresses.add("A02ID");
 //System.out.println(plcParameterObject.getPlcParameterValues(addresses));
-            List<String> addresses2 = new ArrayList<>();
-            addresses2.add("D01.SRdec");
-            addresses2.add("D01.SRinpos");
-            addresses2.add("D05.SRinpos");
-
-
-
-
-            System.out.println(plcBitObject.getPlcBitValues(addresses2));
-
-           int index2 = plcBitObject.getPlcBit("D05.SRinpos").getAddressIndex();
-            System.out.println(index2);
-
-           plcBitObject.getPlcBit("D05.SRinpos").getAddress(index2);
-           System.out.println(plcBitObject.getPlcBit("D05.SRinpos").getAddress(index2));
+//            List<String> addresses2 = new ArrayList<>();
+//            addresses2.add("D01.SRdec");
+//            addresses2.add("D01.SRinpos");
+//            addresses2.add("D05.SRinpos");
+//
+//
+//
+//
+//            System.out.println(plcBitObject.getPlcBitValues(addresses2));
+//
+//           int index2 = plcBitObject.getPlcBit("D05.SRinpos").getAddressIndex();
+//            System.out.println(index2);
+//
+//           plcBitObject.getPlcBit("D05.SRinpos").getAddress(index2);
+//           System.out.println(plcBitObject.getPlcBit("D05.SRinpos").getAddress(index2));
 //
 //
 //            List<String> addresses3 = new ArrayList<>();
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PLCManualJog.java b/springboot-vue3/src/main/java/com/example/springboot/component/PLCManualJog.java
index 07d6e7f..16f05e3 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PLCManualJog.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PLCManualJog.java
@@ -44,9 +44,6 @@
        List<Boolean> arraylist = S7control.getinstance().readBits(addressList21);
 
 
-
-
-
             JSONObject jsonObject = new JSONObject();
 
             short[] params = new short[arraylist.size()];
@@ -57,11 +54,6 @@
           //  System.out.println("messageValue锛�"+ arraylist  );
             jsonObject.append("params", params);
 
-//      System.out.println("messageValue锛�" + arraylist +"messageValue2锛�" + arraylist2 );
-//      WebSocketServer sendwServer = WebSocketServer.sessionMap.get("ManualJog");
-//      if (sendwServer != null) {
-//        sendwServer.sendMessage(jsonObject.toString());
-//      }
 
             ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("ManualJog");
             if (sendwServer != null) {
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PLCManualJogReview.java b/springboot-vue3/src/main/java/com/example/springboot/component/PLCManualJogReview.java
new file mode 100644
index 0000000..13b619b
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PLCManualJogReview.java
@@ -0,0 +1,157 @@
+package com.example.springboot.component;
+
+import cn.hutool.json.JSONObject;
+import com.example.springboot.entity.device.PlcBitObject;
+import static com.example.springboot.component.InitUtil.readAndUpdateBitValues;
+import static com.example.springboot.component.InitUtil.readAndUpdateWordValues;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class PLCManualJogReview extends Thread {
+
+
+    // 鐢ㄤ簬瀛樺偍搴旂敤绋嬪簭鐨勯厤缃俊鎭�
+    private Configuration config;
+
+    private static InitUtil initUtil;
+    // 鍒涘缓涓�涓嚜瀹氫箟鐨� S7 鎺у埗鍣ㄦ秷鎭鐞嗗櫒瀵硅薄
+    MessageHandler customS7Control = new MessageHandler();
+
+    // 鍗曚緥瀹炰緥
+    private static PLCManualJogReview instance;
+
+
+
+    public PLCManualJogReview() throws IOException {
+        config = new Configuration("config.properties");
+        initUtil = new InitUtil();
+    }
+
+    // 鑾峰彇鍗曚緥瀹炰緥
+    public static synchronized PLCManualJogReview getInstance() throws IOException {
+        if (instance == null) {
+            instance = new PLCManualJogReview();
+        }
+        return instance;
+    }
+    String jsonFilePath = PLCManualJogReview.class.getResource("/JsonFile/PlcTest.json").getPath();
+
+    PlcBitObject plcTestObject = initUtil.initbit(jsonFilePath);
+
+    @Override
+    public void run() {
+        while (this != null) {
+            try {
+                Thread.sleep(500);
+
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+
+
+
+         //  List<String> addressList21 = Arrays.asList(config.getProperty("PLCManualJog.button").split(","));
+      // List<Boolean> arraylist = S7control.getinstance().readBits(addressList21);
+
+
+            readAndUpdateBitValues(plcTestObject);
+
+            List<String> codeidlist = Arrays.asList(
+                    "D01VFDconveyor", "D02VFDconveyor", "D03VFDconveyor", "D04VFDconveyor",
+                    "D05VFDconveyor", "D06VFDconveyor","A01VFDconveyor", "A01VFDconveyorreverse", "A01SERVETRAVEL",
+                    "A01SERVETURN", "A01oilpump", "A02VFDconveyor", "A02VFDconveyorreverse",
+                    "A02SERVETRAVEL", "A02SERVETURN", "A02oilpump", "B01VFDconveyor", "B01SERVETRAVEL",
+                    "B01YVTURN", "B01YVUPDOWN", "B01YVGassing", "B02VFDconveyor", "B02SERVETRAVEL",
+                    "B02YVTURN", "B02YVUPDOWN", "B02YVGassing", "A01SERVETRAVELhome", "A02SERVETRAVELhome"
+            );
+
+
+
+//PLCManualJog.button=DB101.0.0,DB101.0.1,DB101.0.2,DB101.0.3,DB101.0.4,DB101.0.5,DB101.0.6,DB101.3.4,DB101.1.4,DB101.1.2,DB101.5.2,DB101.0.7,DB101.3.5,DB101.1.5,DB101.1.3,DB101.5.3,DB101.1.0,DB101.1.6,DB101.2.6,DB101.2.7,DB101.3.2,DB101.1.1,DB101.1.7,DB101.3.0,DB101.3.1,DB101.3.3,DB101.10.5,DB101.10.6
+
+            List<String> address =  plcTestObject.getAddressListByCodeId(codeidlist);
+         System.out.println(address);
+
+//
+//            int index2 = plcTestObject.getPlcBit("B01YVUPDOWN").getAddressIndex();
+//            System.out.println(index2);
+//
+//            System.out.println(plcTestObject.getPlcBit("B01YVUPDOWN").getAddress(index2));
+            List<Boolean> arraylist = plcTestObject.getPlcBitValues(codeidlist);
+
+
+            JSONObject jsonObject = new JSONObject();
+
+            short[] params = new short[arraylist.size()];
+            for (int i = 0; i < arraylist.size(); i++) {
+                boolean value = arraylist.get(i);
+                params[i] = value ? (short) 1 : (short) 0;
+            }
+
+            jsonObject.append("params", params);
+
+
+
+            ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("ManualJog");
+            if (sendwServer != null) {
+                for (WebSocketServer webserver : sendwServer) {
+                    webserver.sendMessage(jsonObject.toString());
+
+//      WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("ManualJog");
+
+                    if (webserver != null) {
+
+
+                        List<String> messages = webserver.getMessages();
+                        if (!messages.isEmpty()) {
+                            // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
+                            String lastMessage = messages.get(messages.size() - 1);
+                            // System.out.println("messages锛�" + messages);
+                            String[] parts = lastMessage.split(",");
+                            List<Integer> messageValues = new ArrayList<>();
+                            for (String part : parts) {
+                                try {
+                                    // 浣跨敤姝e垯琛ㄨ揪寮忔竻闄ら潪鏁板瓧瀛楃
+                                    String cleanedPart = part.replaceAll("[^0-9-]", "");
+                                    Integer value = Integer.parseInt(cleanedPart.trim());
+                                    messageValues.add(value);
+                                } catch (NumberFormatException e) {
+                                    // 濡傛灉鏃犳硶瑙f瀽涓烘暣鏁扮被鍨嬶紝鍒欏拷鐣ヨ閮ㄥ垎
+                                    // e.printStackTrace();
+                                }
+
+                            }
+                            // 灏嗘秷鎭�艰浆鎹负甯冨皵鍒楄〃
+                            List<Boolean> messageBooleans = new ArrayList<>();
+                            for (Integer value : messageValues) {
+                                messageBooleans.add(value == 1 ? true : false);
+                            }
+                            // System.out.println(messageBooleans);
+                            List<Boolean> bolList = new ArrayList<>();
+
+
+                            for (int i = 0; i < 28 && i < messageBooleans.size(); i++) {
+                                bolList.add(messageBooleans.get(i));
+                            }
+
+
+                            if (!bolList.isEmpty()) {
+                         S7control.getinstance().WriteBit(address, bolList);
+//
+
+                               System.out.println("messageValue锛�" + bolList + " written to PLC at address " + address);
+                            }
+
+                            webserver.clearMessages();
+                        }
+                    }
+                }
+
+            }
+
+        }
+    }
+}
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 ada22ca..e9f8a63 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
@@ -1,11 +1,13 @@
 package com.example.springboot.component;
 
 import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.List;
 import org.springframework.beans.factory.annotation.Autowired;
 import com.example.springboot.service.JdbcConnections;
 import com.example.springboot.service.SpianService;
 import com.example.springboot.entity.north_glass_buffer1;
+import com.example.springboot.entity.device.PlcParameterObject;
 import com.example.springboot.mapper.AlarmMapper;
 import com.example.springboot.mapper.SpianMapper;
 
@@ -43,13 +45,21 @@
       // // TODO Auto-generated catch block
       // e.printStackTrace();
       // }
-
-      // 鍑虹墖浠诲姟////////////////////////////////
-      List<Short> outlist = S7control.getinstance().ReadWord("DB106.20", 1); // 鍑虹墖杞︾姸鎬�
-      List<Short> outlist1 = S7control.getinstance().ReadWord("DB105.18", 1); // 鍑虹墖浠诲姟鏄惁鍚姩
-
-      boolean Plcout = spianService.listbool("DB106.64"); // 鍑虹墖璇锋眰瀛�
-      boolean Plcout2 = spianService.listbool("DB105.18"); // 鍑虹墖鍚姩
+      //璇诲彇DB105鍖烘枃浠�
+      PlcParameterObject plcParameterObjects=PLCAutoMes.PlcMesObject;
+      //璇�106
+      PlcParameterObject plcParameterObjects2=PLCAutoMes.PlcReadObject;
+      // List<String> addresses105 = new ArrayList<>();
+      // addresses105.add("OutRequest");// 鍑虹墖璇锋眰瀛�
+      // List<String> addresses106 = new ArrayList<>();
+      // addresses106.add("OutActivate");// 鍑虹墖鍚姩  
+      
+      String OutActivate=plcParameterObjects2.getPlcParameter("OutActivate").getValue();
+      
+      // 鍑虹墖浠诲姟
+      boolean Plcout = spianService.listbool("DB106.64"); 
+      boolean Plcout2 = spianService.listbool("DB105.18"); 
+      
       if (Plcout == false&&Plcout2==true) {
         S7control.getinstance().WriteWord("DB105.18", (short) 0);// 鍑虹墖浠诲姟鍚姩鏀逛负0
         System.out.println("鍏抽棴鍑虹墖鍚姩" + LocalDateTime.now());// 鍑虹墖浠诲姟鍙戦�佸瓧鏀逛负0
@@ -98,6 +108,7 @@
       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姹囨姤
       boolean B02backs = spianService.listbool("DB106.62");// b02姹囨姤
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePositionReview.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePositionReview.java
new file mode 100644
index 0000000..8731175
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePositionReview.java
@@ -0,0 +1,247 @@
+package com.example.springboot.component;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class PlcManualonePositionReview extends Thread {
+    private Configuration config;
+
+    public PlcManualonePositionReview() throws IOException {
+        config = new Configuration("config.properties");
+    }
+
+
+    // 鍒涘缓涓�涓嚜瀹氫箟鐨� S7 鎺у埗鍣ㄦ秷鎭鐞嗗櫒瀵硅薄
+    MessageHandler customS7Control = new MessageHandler();
+
+
+    public static class PLCBooleanConverter {
+
+        public static short[] convertListsToBinaryShortArray(List<Boolean>... lists) {
+            // 璁$畻鎵�鏈夊垪琛ㄤ腑鍏冪礌鐨勬�绘暟
+            int totalSize = 0;
+            for (List<Boolean> list : lists) {
+                totalSize += list.size();
+            }
+
+            // 鍒涘缓涓�涓冻澶熷ぇ鐨勬暟缁勬潵瀛樻斁鎵�鏈夌殑浜岃繘鍒跺��
+            short[] binaryShortArray = new short[totalSize];
+
+            // 褰撳墠鏁扮粍濉厖浣嶇疆鎸囬拡
+            int currentIndex = 0;
+
+            // 閬嶅巻鎵�鏈夌殑鍒楄〃
+            for (List<Boolean> list : lists) {
+                // 灏嗘瘡涓竷灏斿�艰浆鎹负 0 鎴� 1 骞跺~鍏ユ暟缁�
+                for (Boolean value : list) {
+                    binaryShortArray[currentIndex++] = (short) (value ? 1 : 0);
+                }
+            }
+
+            return binaryShortArray;
+        }
+    }
+
+
+    @Override
+    public void run() {
+        while (this != null) {
+            try {
+                Thread.sleep(500);
+
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+            // this.readValue();
+            // String PlcAddress = this.name;
+            // Integer Plccount = this.count;
+
+
+            //B01缁勫悎涓湴鍧�
+           // String b01Address = config.getProperty("B01.address");
+            List<String> addresses = Arrays.asList(config.getProperty("PlcManualonePosition.addresses").split(","));
+
+            List<Short> arraylist = S7control.getinstance().readWords(addresses);
+            // System.out.println(arraylist);
+            List<String> addresses2 = Arrays.asList(config.getProperty("PlcManualonePosition.addresses2").split(","));
+
+            List<Short> arraylist2 = S7control.getinstance().readWords(addresses2);
+
+            List<String> addresses3 = Arrays.asList(config.getProperty("PlcManualonePosition.addresses3").split(","));
+
+            List<Short> arraylist3 = S7control.getinstance().readWords(addresses3);
+
+
+            List<String> addresses4 = Arrays.asList(config.getProperty("PlcManualonePosition.addresses4").split(","));
+
+            List<Short> arraylist4 = S7control.getinstance().readWords(addresses4);
+
+
+            List<Short> arraylist5 = S7control.getinstance().ReadWord("DB106.0", 1);
+            List<Short> arraylist6 = S7control.getinstance().ReadWord("DB106.12", 1);
+            List<Short> arraylist7 = S7control.getinstance().ReadWord("DB106.40", 1);
+            List<Short> arraylist8 = S7control.getinstance().ReadWord("DB106.50", 1);
+            //鏁呴殰
+
+            List<String> addresses9 = Arrays.asList(config.getProperty("PlcManualonePosition.fault").split(","));
+
+            List<Boolean> arraylist9 = S7control.getinstance().readBits(addresses9);
+
+           //鏈洖闆�
+
+            List<String> addresses10 = Arrays.asList(config.getProperty("PlcManualonePosition.Notzero").split(","));
+
+            List<Boolean> arraylist10 = S7control.getinstance().readBits(addresses10);
+
+            //A01鍚姩鍦板潃
+            List<String> A01start = Arrays.asList(config.getProperty("mlp.A01start"));
+            //A02鍚姩鍦板潃
+            List<String> A02start = Arrays.asList(config.getProperty("mlp.A02start"));
+
+            List<String> B01start = Arrays.asList(config.getProperty("mlp.B01start"));
+
+            List<String> B02start = Arrays.asList(config.getProperty("mlp.B02start"));
+
+            // 鏁呴殰鍦板潃
+            List<String> waddresses5 = Arrays.asList(config.getProperty("PlcManualonePosition.fault2").split(","));
+
+
+            // 澶嶄綅鍦板潃
+            List<String> waddresses6 = Arrays.asList(config.getProperty("PlcManualonePosition.Reset").split(","));
+            List<Boolean> readreast = S7control.getinstance().readBits(waddresses6);
+            short[] reast6 = PLCBooleanConverter.convertListsToBinaryShortArray(readreast);
+
+            // 鍥為浂鍦板潃
+            List<String> waddresses7 = Arrays.asList(config.getProperty("PlcManualonePosition.Zero").split(","));
+            List<Boolean> readhuiling = S7control.getinstance().readBits(waddresses7);
+            short[] huiling7 = PLCBooleanConverter.convertListsToBinaryShortArray(readhuiling);
+
+            List<Boolean> A01readstart = S7control.getinstance().readBits(A01start);
+            List<Boolean> A02readstart = S7control.getinstance().readBits(A02start);
+            List<Boolean> B01readstart = S7control.getinstance().readBits(B01start);
+            List<Boolean> B02readstart = S7control.getinstance().readBits(B02start);
+
+            short[] combinedBinaryShortArray = PLCBooleanConverter.convertListsToBinaryShortArray(
+                    A01readstart, A02readstart, B01readstart, B02readstart
+            );
+
+            // Short[] values1 = { 1, 2, 3 };
+            // List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
+            // Short[] values2 = { 1, 2, 3 };
+            // List<Short> arraylist2 = new ArrayList<>(Arrays.asList(values2));
+            // Short[] values3 = { 1, 2, 3 };
+            // List<Short> arraylist3 = new ArrayList<>(Arrays.asList(values3));
+            // Short[] values4 = { 1, 2, 3 };
+            // List<Short> arraylist4 = new ArrayList<>(Arrays.asList(values4));
+            // Short[] values5 = { 5 };
+            // List<Short> arraylist5 = new ArrayList<>(Arrays.asList(values5));
+            // Short[] values6 = { 6 };
+            // List<Short> arraylist6 = new ArrayList<>(Arrays.asList(values6));
+            // Short[] values7 = { 7 };
+            // List<Short> arraylist7 = new ArrayList<>(Arrays.asList(values7));
+            // Short[] values8 = { 8 };
+            // List<Short> arraylist8 = new ArrayList<>(Arrays.asList(values8));
+            // Boolean[] values9 = { false, false, true, true };
+            // List<Boolean> arraylist9 = new ArrayList<>(Arrays.asList(values9));
+            short[] params2 = new short[arraylist9.size()];
+            for (int i = 0; i < arraylist9.size(); i++) {
+                boolean value = arraylist9.get(i);
+                params2[i] = value ? (short) 1 : (short) 0;
+            }
+
+            // Boolean[] values10 = { false, false, true, true };
+            // List<Boolean> arraylist10 = new ArrayList<>(Arrays.asList(values10));
+            short[] params3 = new short[arraylist10.size()];
+            for (int i = 0; i < arraylist10.size(); i++) {
+                boolean value = arraylist10.get(i);
+                params3[i] = value ? (short) 1 : (short) 0;
+            }
+            // List<Short> arraylist9 = S7control.getinstance().readWords(addresses9);
+            arraylist5.addAll(arraylist6);
+            arraylist5.addAll(arraylist7);
+            arraylist5.addAll(arraylist8);
+
+            JSONObject jsonObject = new JSONObject();
+            // System.out.println(arraylist6);
+            jsonObject.append("zuhe1", arraylist);
+            jsonObject.append("zuhe2", arraylist2);
+            jsonObject.append("zuhe3", arraylist3);
+            jsonObject.append("zuhe4", arraylist4);
+            jsonObject.append("shishi1", arraylist5);
+            jsonObject.append("guzhang", params2);
+            jsonObject.append("weihuiling", params3);
+            jsonObject.append("qidong", combinedBinaryShortArray);
+            jsonObject.append("fuwei", reast6);
+            jsonObject.append("huiling", huiling7);
+
+//      WebSocketServer sendwServer = WebSocketServer.sessionMap.get("ManualonePosition");
+//      if (sendwServer != null) {
+//        sendwServer.sendMessage(jsonObject.toString());
+//      }
+
+            ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("ManualonePosition");
+            if (sendwServer != null) {
+                for (WebSocketServer webserver : sendwServer) {
+                    webserver.sendMessage(jsonObject.toString());
+
+//      WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("ManualonePosition");
+                    if (webserver != null) {
+                        List<String> messages = webserver.getMessages();
+
+
+
+
+
+
+                        // System.out.println(messages.isEmpty());
+                        if (!messages.isEmpty()) {
+                            // 灏嗘渶鍚庝竴涓秷鎭浆鎹负 short 绫诲瀷鐨勫垪琛�
+                            String lastMessage = messages.get(messages.size() - 1);
+                            // System.out.println("lastMessage锛�" + lastMessage);
+                            JSONArray messageArray = new JSONArray(lastMessage);
+                            // 鍐欏叆A01
+                            customS7Control.WriteWordToPLC(messageArray, addresses, 0);
+
+                            // 鍐欏叆A02
+                            customS7Control.WriteWordToPLC(messageArray, addresses2, 1);
+                            // 鍐欏叆B01
+                            customS7Control.WriteWordToPLC(messageArray, addresses3, 2);
+
+                            // 鍐欏叆B02
+                            customS7Control.WriteWordToPLC(messageArray, addresses4, 3);
+
+
+                            // 鍐欏叆鏁呴殰鍦板潃
+
+                            customS7Control.writeBitToPLC(messageArray, waddresses5, 4);
+
+
+                            // 鍐欏叆澶嶄綅鍦板潃
+                            customS7Control.writeBitToPLC(messageArray, waddresses6, 5);
+
+                            // 鍐欏叆鍥為浂鍦板潃
+
+                            customS7Control.writeBitToPLC(messageArray, waddresses7, 6);
+                            //A01鍚姩
+                            customS7Control.writeBitToPLC(messageArray, A01start, 7);
+                            //A02鍚姩
+                            customS7Control.writeBitToPLC(messageArray, A02start, 8);
+                            //B01鍚姩
+                            customS7Control.writeBitToPLC(messageArray, B01start, 9);
+                            //B02鍚姩
+                            customS7Control.writeBitToPLC(messageArray, B02start, 10);
+
+                            // 娓呯┖娑堟伅鍒楄〃
+                            webserver.clearMessages();
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcalarmReview.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcalarmReview.java
new file mode 100644
index 0000000..4bc5a75
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcalarmReview.java
@@ -0,0 +1,140 @@
+package com.example.springboot.component;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import com.example.springboot.mapper.AlarmMapper;
+
+import java.io.*;
+import java.util.ArrayList;
+import java.util.List;
+
+public class PlcalarmReview extends Thread {
+  private AlarmMapper alarmMapper;
+
+  String content = "";
+  String name = "";
+  Integer count = 0;
+
+  public List<String> readValue() {
+    String str = "";
+    BufferedReader bufferedReader = null;
+    FileInputStream fileInputStream;
+    try {
+      // 浠庢枃浠朵腑璇诲彇瀛楄妭鏁版嵁瀛樺叆 fileInputStream
+      fileInputStream = new FileInputStream("D:/canadames/Alarm.json");
+      // 璇诲彇 fileInputStream 涓瓧鑺傚苟灏嗗叾瑙g爜涓哄瓧绗�
+      InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
+      // 鎻愰珮璇诲彇鏁堢巼锛屽湪 BufferedReader 鍐呭寘瑁� InputStreamReader
+      bufferedReader = new BufferedReader(inputStreamReader);
+      String line = null;
+      // 灏� bufferedReader 鍐呭涓�琛屼竴琛岃祴鍊肩粰str
+      while ((line = bufferedReader.readLine()) != null) {
+        str += line;
+      }
+
+      // 灏唖tr瀛楃涓叉牸寮忚浆涓簀son
+      JSONObject jsonObject = new JSONObject(str);
+
+      List<String> arraylistss = new ArrayList<>();
+
+      // 鑾峰彇json涓姤璀︿俊鎭殑鍊�
+      JSONArray AlarmContent = jsonObject.getJSONArray("content");
+      for (int i = 0; i < AlarmContent.size(); i++) {
+        JSONObject ress = (JSONObject) AlarmContent.get(i);
+
+        this.content = ress.getStr("name");
+        arraylistss.add(content);
+      }
+      // 鑾峰彇json涓湴鍧�鐨勫��
+      JSONArray address = jsonObject.getJSONArray("address");
+      for (int i = 0; i < address.size(); i++) {
+        JSONObject ress = (JSONObject) address.get(i);
+
+        this.name = ress.getStr("name");
+        this.count = ress.getInt("count");
+
+      }
+
+      return arraylistss;
+    } catch (FileNotFoundException e) {
+      e.printStackTrace();
+    } catch (UnsupportedEncodingException e) {
+      e.printStackTrace();
+    } catch (IOException e) {
+      e.printStackTrace();
+    }
+    return null;
+  }
+
+  @Override
+  public void run() {
+    while (this != null) {
+      try {
+        Thread.sleep(1000);
+      } catch (InterruptedException e) {
+        e.printStackTrace();
+      }
+
+      this.readValue();
+      String PlcAddress = this.name;
+      Integer Plccount = this.count;
+
+      // 鏍规嵁鍦板潃璇诲彇PCL鏁版嵁
+      List<Boolean> plclist = S7control.getinstance().ReadBits(PlcAddress, Plccount);
+//      List<Boolean> plclist = S7control.getinstance().ReadBits(PlcAddress, Plccount);
+      // System.out.println(plclist);
+      // Boolean[] values = { false, false, true, false, true, false, true, false,
+      // true, false, true, false, true, false,
+      // true, false, true, false, true, false, true, false, true, false, true, false,
+      // true, false, true, false, true,
+      // false, true, false, true, false,
+      // true, false, true, false };
+      // List<Boolean> plclist = new ArrayList<>(Arrays.asList(values));
+      if (plclist != null) {
+
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.append("params", plclist);
+        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("alarm");
+        if (sendwServer != null) {
+          for (WebSocketServer webserver : sendwServer) {
+            webserver.sendMessage(jsonObject.toString());
+
+          }
+
+        }
+            // 灏嗚幏鍙栫殑甯冨皵绫诲瀷杞崲涓烘暣鏁扮被鍨�
+            List<Integer> Intlist = new ArrayList<>();
+            for (Boolean value : plclist) {
+              Intlist.add(value == true ? 1 : 0);
+
+            }
+
+            // 灏咺ntlist杞崲涓烘暟缁�
+//             System.out.println(Intlist);
+//     System.out.println(Intlist.toArray().length);
+            Integer[] shuzu1 = Intlist.toArray(new Integer[0]);
+
+            // 瀹氫箟鐨勬姤璀﹀唴瀹规暟缁�,鑾峰彇json杩斿洖鐨勯泦鍚�
+            List<String> myCollection;
+            myCollection = readValue();
+            String[] array1 = myCollection.toArray(new String[myCollection.size()]);
+            //  System.out.println(array1.length);
+            alarmMapper = WebSocketServer.applicationContext.getBean(AlarmMapper.class);
+            for (short i = 0; i < array1.length; i++) {
+              // 鏌ヨ瀵瑰簲鎶ヨ淇℃伅缁撴潫鏃堕棿涓簄ull鐨勬潯鏁�
+              short result = alarmMapper.selectnullti(array1[i]);
+              // 璇诲彇鍒癙LC鐨勫�间负1骞朵笖瀵瑰簲鎶ヨ淇℃伅缁撴潫鏃堕棿涓簄ull鐨勬潯鏁扮殑鏉℃暟涓�0
+    //System.out.println(result);
+              if (shuzu1[i] == 1 && result == 0) {
+                // 濉姞涓�鏉℃姤璀︿俊鎭�,鏈夊紑濮嬫椂闂�
+                alarmMapper.Insertalarm(array1[i]);
+              } else if (shuzu1[i] == 0 && result > 0) {
+                // 淇敼璇ユ潯鎶ヨ淇℃伅鐨勭粨鏉熸椂闂�
+                alarmMapper.updatealarm(array1[i]);
+              }
+            }
+          }
+        }
+      }
+    }
+
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java b/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
index c90575d..a1e7574 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
@@ -63,10 +63,7 @@
             JSONObject jsonObject = new JSONObject();
             try {
                 Thread.sleep(1000);
-                // 娉ㄥ叆mapper
-
-                PlcParameterObject PlcReadObjects=PLCAutoMes.PlcMesObject;
-                
+                // 娉ㄥ叆mapper                
                 homeMapper = WebSocketServer.applicationContext.getBean(HomeMapper.class);
                 spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class);
                 spianService = WebSocketServer.applicationContext.getBean(SpianService.class);
@@ -196,7 +193,7 @@
                 GlassIdList.add(spianService.queGlassid("DB103.114", 14).toString());
                 jsonObject.append("GlassIdList", GlassIdList);
 
-                // 璇诲幓Plc杩涚墖杞︿笌鍑虹墖杞︿綅缃甒
+                // 鑾峰彇Plc杩涚墖杞︿笌鍑虹墖杞︿綅缃�
                 List<String> addressList = new ArrayList<String>();
                 addressList.add("DB106.12");
                 addressList.add("DB106.0");
@@ -204,21 +201,21 @@
                 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> 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<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();
@@ -255,7 +252,7 @@
                     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);
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlchomeNew.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlchomeNew.java
new file mode 100644
index 0000000..3b03f97
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlchomeNew.java
@@ -0,0 +1,403 @@
+package com.example.springboot.component;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.example.springboot.service.*;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.example.springboot.entity.Glass;
+import com.example.springboot.entity.Out_slice;
+import com.example.springboot.entity.Queue;
+import com.example.springboot.entity.StorageCage;
+import com.example.springboot.entity.alarmmg;
+import com.example.springboot.entity.north_glass_buffer1;
+import com.example.springboot.entity.device.PlcBitObject;
+import com.example.springboot.entity.device.PlcParameterObject;
+import com.example.springboot.mapper.HomeMapper;
+import com.example.springboot.mapper.SpianMapper;
+
+public class PlchomeNew extends Thread {
+
+    @Autowired
+    private HomeMapper homeMapper;
+    private OutSliceServive outSliceServive;
+    private SpianMapper spianMapper;
+    private SpianService spianService;
+    private North_Glass_Buffer1Service north_Glass_Buffer1Service;
+    private JdbcConnections dbserve;
+    // 鍑虹墖闃熷垪鏄惁鍏佽鍑虹墖
+    public static Boolean isAllowQueue = true;
+    public static Boolean isAllowReordering = true;
+    // 鍑虹墖闃熷垪璀﹀憡
+    public static Boolean isQueueWarning = false;
+    // 閾濇id
+    public static String FrameNo = "";
+    // 鏄惁闇�瑕佹墜鍔ㄧ‘璁ょ幓鐠�
+    public static Boolean isConfirm = false;
+    // 寰呯‘璁ょ殑鍑虹墖闃熷垪
+    public static List<north_glass_buffer1> AluminumFrame;
+
+    // private Configuration config;
+
+    private StorageCageService storageCageService;
+
+    public static Boolean FeedState = false;
+
+    // public Plchome() throws IOException {
+    // config = new Configuration("config.properties");
+    // }
+
+    // public static Map b=new HashMap<>();
+    // b.put()
+    @Override
+    public void run() {
+        while (this != null) {
+            JSONObject jsonObject = new JSONObject();
+            try {
+                Thread.sleep(1000);
+                // 娉ㄥ叆mapper
+
+                homeMapper = WebSocketServer.applicationContext.getBean(HomeMapper.class);
+                spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class);
+                spianService = WebSocketServer.applicationContext.getBean(SpianService.class);
+                outSliceServive = WebSocketServer.applicationContext.getBean(OutSliceServive.class);
+                north_Glass_Buffer1Service = WebSocketServer.applicationContext
+                        .getBean(North_Glass_Buffer1Service.class);
+                storageCageService = WebSocketServer.applicationContext.getBean(StorageCageService.class);
+                dbserve = WebSocketServer.applicationContext.getBean(JdbcConnections.class);
+
+                // 绗煎瓙浣跨敤鎯呭喌
+                List<StorageCage> tableData = homeMapper.selectAll();
+                jsonObject.append("tableData", tableData);
+                // 鏍肩悊鐗囩鏍煎瓙鐘舵��
+                List<StorageCage> cagelist1 = homeMapper.selectRack1();
+                List<StorageCage> cagelist2 = homeMapper.selectRack2();
+                List<StorageCage> cagelist3 = homeMapper.selectRack3();
+                List<StorageCage> cagelist4 = homeMapper.selectRack4();
+                jsonObject.append("cagelist1", cagelist1);
+                jsonObject.append("cagelist2", cagelist2);
+                jsonObject.append("cagelist3", cagelist3);
+                jsonObject.append("cagelist4", cagelist4);
+                // 杩涘嚭鐗囦换鍔�
+                List<StorageCage> tasklist1 = homeMapper.selectinout(3);
+                List<StorageCage> tasklist2 = homeMapper.selectinout(2);
+                jsonObject.append("tasklist1", tasklist1);
+                jsonObject.append("tasklist2", tasklist2);
+                // 鏌ヨ鎶ヨ淇℃伅
+                List<alarmmg> alarmmg = homeMapper.SelectAlarmmgInfo();
+                jsonObject.append("alarmmg", alarmmg);
+
+                // 浼� 鑾峰彇杩涙槸鍚︽湁寰呯‘璁ょ殑鐜荤拑id
+                String queid = spianMapper.Selectqueueid();
+                int state = spianMapper.Selectqueuestate();
+                jsonObject.append("queid", queid);
+                jsonObject.append("state", state);
+                // 鑾峰彇鎵爜浣嶄笌涓婄墖浣嶇幓鐠冧俊鎭�
+                Queue form2 = homeMapper.GetQueueInfo(2);
+                Queue form3 = homeMapper.GetQueueInfo(1);
+                if (form2.getglassId() != null && form2.getglassId() != "") {
+                    jsonObject.append("form2", form2);
+                }
+                if (form3.getglassId() != null && form3.getglassId() != "") {
+                    jsonObject.append("form3", form3);
+                }
+                // 鑾峰彇鍑虹墖闃熷垪淇℃伅
+                List<Out_slice> listoutslice = outSliceServive.SelectProductionqueue();
+                jsonObject.append("listoutslice", listoutslice);
+                // 鑾峰彇褰撳墠鍑虹墖闃熷垪鍑虹墖鐘舵��
+                jsonObject.append("isAllowQueue", PlchomeNew.isAllowQueue);
+                // 鑾峰彇鍑虹墖闃熷垪璀﹀憡鐘舵��
+                jsonObject.append("isQueueWarning", PlchomeNew.isQueueWarning);
+                // 鑾峰彇褰撳墠鍑虹墖闃熷垪璋冨簭鐘舵��
+                jsonObject.append("isAllowReordering", PlchomeNew.isAllowReordering);
+                // 鏄惁闇�瑕佷汉宸ョ‘璁や笂鐗囩幓鐠�
+                jsonObject.append("isConfirm", isConfirm);
+                // 鏌ヨ褰撳墠閾濇淇℃伅
+                Out_slice CurrentFrame = outSliceServive.SelectCurrentFrame();
+                jsonObject.append("CurrentFrame", CurrentFrame);
+
+                // String E01id = new String( S7controlLK.getinstance().ReadByte("DB17.0",16));
+                // String J01id = new String( S7controlLK.getinstance().ReadByte("DB17.22",14));
+
+                // public static PlcParameterObject plcParameterObject = initUtil.initword(PlcParameter);
+                // public static PlcBitObject plcPlcTest = initUtil.initbit(PlcTest);
+                // public static PlcBitObject plcBitObject = initUtil.initbit(PlcSign);
+                // public static PlcParameterObject plcStateObject = initUtil.initword(PlcState);
+                // public static PlcBitObject plcPlcAlarm = initUtil.initbit(PlcAlarm);
+                // public static PlcParameterObject PlcMesObject = initUtil.initword(PlcMes);
+                // public static PlcParameterObject PlcReadObject = initUtil.initword(PlcRead);
+                // public static PlcParameterObject PlcframeObject = initUtil.initword(Plcframe);
+
+                PlcParameterObject PlcParameter = PLCAutoMes.plcParameterObject;// plc鍙傛暟鍦板潃DB100
+                PlcBitObject PlcTest = PLCAutoMes.plcPlcTest;// plc鏍囪瘑鍦板潃DB101
+                PlcBitObject PlcSign = PLCAutoMes.plcBitObject;// plc璁惧鐘舵�佸湴鍧�DB102
+                PlcParameterObject PlcState = PLCAutoMes.plcStateObject;// plc鐘舵�佸湴鍧�DB103
+                PlcBitObject PlcAlarm = PLCAutoMes.plcPlcAlarm;// plc鎶ヨ鍦板潃DB104
+                PlcParameterObject MesMission = PLCAutoMes.PlcMesObject;// mes浠籑ES鍔″湴鍧�DB105
+                PlcParameterObject PLCMission = PLCAutoMes.PlcReadObject;// plc浠诲姟鍦板潃DB106
+                PlcParameterObject Plcframe = PLCAutoMes.PlcframeObject;// plc閾濇鍦板潃DB17
+
+                // if (S7control.getinstance().CheckConnected() == true) {
+
+                // 閾濇绾夸氦浜�
+                if (S7controlLK.getinstance().CheckConnected() == true) {
+                    if (CurrentFrame != null) {
+                        S7controlLK.getinstance().writeStrings(CurrentFrame.getBarCode(),
+                                Plcframe.getPlcParameter("E01id")
+                                        .getAddress(Plcframe.getPlcParameter("E01id").getAddressIndex()));
+                    }
+                    String E01id = S7controlLK.getinstance().readStrings(Plcframe.getPlcParameter("E01id")
+                            .getAddress(Plcframe.getPlcParameter("E01id").getAddressIndex()));
+                    String J01id = S7controlLK.getinstance().readStrings(Plcframe.getPlcParameter("J01id")
+                            .getAddress(Plcframe.getPlcParameter("J01id").getAddressIndex()));
+
+                    String framerequest = Plcframe.getPlcParameter("J01Quest").getValue();
+                    // List<Short> liststates = S7controlLK.getinstance().ReadWord("DB17.38", 1);
+                    // List<Short> liststate = S7controlLK.getinstance().ReadWord("DB17.20", 1);
+                    // Short framerequest = liststate.get(0);
+                    if (framerequest.equals("1")) {
+                        // 閾濇id
+                        String position;
+                        try {
+                            position = dbserve.SelectPositionByFrameBarcode(J01id);
+                        } catch (SQLException e) {
+                            // TODO Auto-generated catch block
+                            position = "0";
+                            e.printStackTrace();
+                        }
+                        Short send;
+                        if (position.equals("0")) {
+                            send = 0;
+                        } else {
+                            send = 1;
+                        }
+                        S7controlLK.getinstance().WriteWord(Plcframe.getPlcParameter("J01Quest")
+                                .getAddress(Plcframe.getPlcParameter("J01Quest").getAddressIndex()), (short) send);
+                    }
+                }
+
+                // 鑾峰彇褰撳墠鎵爜鏂瑰紡
+                // List<Boolean> Scanningmethods =
+                // S7control.getinstance().ReadBits("DB101.11.4", 1);
+                // if (Scanningmethods != null) {
+                // for (Boolean Scanningmethod : Scanningmethods) {
+                // jsonObject.append("Scanningmethod", Scanningmethod);
+                // }
+                // }
+                //
+                Boolean Scanningmethod = PlcTest.getPlcBit("Scanningmethod").getValue();
+                if (Scanningmethod != null) {
+                    jsonObject.append("Scanningmethod", Scanningmethod);
+                }
+
+                // 鑾峰彇褰撳墠鎵爜鏋幓鐠僫d
+                String CurrrentGlassId=PlcState.getPlcParameter("Scanningguns").getValue();
+
+                // 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);
+                List<String> DeviceStateList=new ArrayList<String>();
+                DeviceStateList.add("D01.State");
+                DeviceStateList.add("D02.State");
+                DeviceStateList.add("B01.State");
+                DeviceStateList.add("B02.State");
+                DeviceStateList.add("A01.State");
+                DeviceStateList.add("A02.State");
+                DeviceStateList.add("D03.State");
+                DeviceStateList.add("D04.State");
+                DeviceStateList.add("D05.State");
+                DeviceStateList.add("D06.State");
+                List<String> DeviceList=PlcState.getPlcParameterValues(DeviceStateList);
+                jsonObject.append("DeviceList", DeviceList);
+                
+                // 鑾峰彇D01-D06,A01,A02,B01,B02鐜荤拑id
+                List<String> GlassStateList=new ArrayList<String>();
+                GlassStateList.add("D01ID");
+                GlassStateList.add("D02ID");
+                GlassStateList.add("B01ID1");
+                GlassStateList.add("B02ID1");
+                GlassStateList.add("A01ID1");
+                GlassStateList.add("A01ID2");
+                GlassStateList.add("A02ID1");
+                GlassStateList.add("D03ID");
+                GlassStateList.add("D04ID");
+                GlassStateList.add("D05ID");
+                GlassStateList.add("D06ID");
+                List<String> GlassIdList = PlcState.getPlcParameterValues(GlassStateList);
+                // 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("A02Position");
+                addressList.add("A01Position");
+                List<String> paramlist=PLCMission.getPlcParameterValues(addressList);
+                // 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=PlcState.getPlcParameter("Frameid").getValue();//寰呯數姘旀洿鏂板湴鍧�琛ㄦ牸
+                // String frameno = spianService.queGlassid("DB103.270", 14).toString();
+                if (!frameno.equals(PlchomeNew.FrameNo)) {
+                    PlchomeNew.FrameNo = frameno;
+                    try {
+                        Short num = 0;
+                        List<north_glass_buffer1> north_glass_buffer1s = north_Glass_Buffer1Service
+                                .SelectAluminumFrameInfoById(PlchomeNew.FrameNo);
+                        for (north_glass_buffer1 north_glass_buffer1 : north_glass_buffer1s) {
+                            if (north_glass_buffer1.getstorageCage() == null) {
+                                break;
+                            }
+                            num++;
+                        }
+                        if (num == north_glass_buffer1s.size()) {
+                            north_Glass_Buffer1Service.AddOutSliceS(PlchomeNew.FrameNo);
+                        } else {
+                            PlchomeNew.AluminumFrame = north_glass_buffer1s;
+                        }
+                    } catch (SQLException e) {
+                        // TODO Auto-generated catch block
+                        e.printStackTrace();
+                    }
+                }
+                if (AluminumFrame != null) {
+                    jsonObject.append("AluminumFrame", AluminumFrame);
+                }
+
+                // 澶嶄綅鍊掕鏃�
+                // 鍦板潃104.9.6
+                Boolean countdown=PlcAlarm.getPlcBit("resetDelay").getValue();
+                jsonObject.append("countdown", countdown);
+                // List<Boolean> countdown = S7control.getinstance().ReadBits("DB104.9.6", 1);
+                // for (Boolean countdowns : countdown) {
+                //     jsonObject.append("countdown", countdowns);
+                // }
+                // jsonObject.append("countdown", true);
+                // 澶嶄綅瀹屾垚淇″彿
+                String reset=PlcState.getPlcParameter("resetDelay").getValue();
+                jsonObject.append("reset", reset);
+                // List<Boolean> resetss = S7control.getinstance().ReadBits("DB103.284", 1);
+                // for (Boolean reset : resetss) {
+                //     jsonObject.append("reset", reset);
+                // }
+
+                // 鏄惁鎬ュ仠
+                Boolean emergencystop=PlcAlarm.getPlcBit("emergencystopalarm").getValue();
+                jsonObject.append("emergencystop", emergencystop);
+
+                // List<Boolean> emergencystops = S7control.getinstance().ReadBits("DB104.5.1", 1);
+                // for (Boolean emergencystop : emergencystops) {
+                //     jsonObject.append("emergencystop", emergencystop);
+                // }
+                // 鑾峰彇杩涚墖璇锋眰鐘舵��
+                String D01Request=PLCMission.getPlcParameter("FeedRequest").getValue();
+
+                // List<Short> D01Request = S7control.getinstance().ReadWord("DB106.24", 1);
+                Boolean D01RequestState = D01Request.contains("1");
+                jsonObject.append("D01RequestState", D01RequestState);
+
+                // 鑾峰彇杩涚墖鍙戦�佺姸鎬�
+                String D01respnse=PLCMission.getPlcParameter("A02QuestStartPosition").getValue();
+                // List<Short> D01respnse = S7control.getinstance().ReadWord("DB106.16", 1);
+                boolean D01ResponseState = D01respnse.contains("1");
+                // jsonObject.append("D01RequestState", D01RequestState);
+                // 鑷姩杩涚墖
+                isConfirm = true;
+                if (isConfirm == true && form3.getglassId() != null && form3.getglassId() != "") {
+                    if ((form3.getglassheight() < 380 || form3.getglasswidth() < 390 || form3.getglassheight() > 1810
+                            || form3.getglasswidth() > 2760)
+                            || (form3.getglassheight() < 390 || form3.getglasswidth() < 380
+                                    || form3.getglassheight() > 2760 || form3.getglasswidth() > 1810)) {
+                        FeedState = true;
+                        jsonObject.append("FeedState", FeedState);
+                        FeedState = false;
+                    } else {
+                        if (D01RequestState == true && D01ResponseState != true) {
+                            storageCageService.InsertQueueGlassId((short) 1, form3);
+                        }
+                    }
+                }
+
+                // }
+
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+
+            boolean dbconnected = false;
+            try {
+                dbserve.getConn();
+                dbconnected = true;
+            } catch (Exception e) {
+                // TODO: handle exception
+                dbconnected = false;
+            }
+            jsonObject.append("dbconnected", dbconnected);
+            // jsonObject.append("params", new short[] { 30, 40, });
+            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();
+                        }
+
+                    }
+
+                }
+            }
+        }
+    }
+}
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 66ecc7f..1cab97a 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
@@ -18,30 +18,30 @@
         System.out.println("鍚姩瀹屾垚");
 
         //  new PlcHold().start();
+        // new PLCAutoMes().start();
 
-        new PLCAutoMes().start();
         new Plchome().start();
-        
-        // new PlcLayout().start();
-        // new Plcalarm().start();
+         new PlcLayout().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 PlcInteractionState().start();
         //new PlcParameter1Review().start();
-       // new PLCAutomaticParameterSettingReview().start();
+        //new PLCAutomaticParameterSettingReview2().start();
+
+    // new PLCManualJogReview().start();
     }
 }
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcBitInfo.java b/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcBitInfo.java
index e3cf8d1..31b2322 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcBitInfo.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcBitInfo.java
@@ -2,6 +2,9 @@
 
 import com.example.springboot.component.S7control;
 
+import java.util.ArrayList;
+import java.util.List;
+
 public  class PlcBitInfo {
 
         public PlcBitInfo(String startAddress) {
@@ -68,7 +71,10 @@
             return stringdatas[0]+"."+dbwindex+"."+bitindex;
         }
 
-        public void setAddressIndex(int addressindex) {
+
+
+
+    public void setAddressIndex(int addressindex) {
             this.addressIndex = addressindex;
         } 
     }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcBitObject.java b/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcBitObject.java
index 292363b..df222d5 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcBitObject.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcBitObject.java
@@ -93,6 +93,24 @@
         return arrayList;
     }
 
+
+    public List<String> getAddressListByCodeId(List<String> codeIdList) {
+        List<String> addressList = new ArrayList<>();
+        for (String codeId : codeIdList) {
+            for (PlcBitInfo plcBitInfo : plcBitList) {
+                if (plcBitInfo.getCodeId().equals(codeId)) {
+                    int index = plcBitInfo.getAddressIndex();
+                    String address = plcBitInfo.getAddress(index);
+                    if (address != null) {
+                        addressList.add(address);
+                    }
+                }
+            }
+        }
+        return addressList;
+    }
+
+
     /**
      * 娣诲姞鍙傛暟瀹炰緥
      * 
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterInfo.java b/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterInfo.java
index 862fd25..e1d7e6e 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterInfo.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterInfo.java
@@ -99,12 +99,22 @@
      */
     public String getAddress(int index) {
         String[] stringdatas = this.startAddress.trim().split("\\.");
-        if (stringdatas.length < 2 )
+        int addressLength=this.addressLength;
+        if (addressLength < 2 ){
             return null;
+        }
 
-        int bitindex = index;
+        if (addressLength == 2 ) {
+            int wordindex = index;
 
-        return stringdatas[0]+"."+bitindex;
+            return stringdatas[0] + "." + wordindex;
+        }
+        if (addressLength == 14 ) {
+            int wordindex = index;
+            int newIndex = wordindex + 13;
+            return stringdatas[0] + "." + wordindex +"-" + newIndex;
+        }
+        return null;
     }
 
     public int getPlcAddress() {
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterObject.java b/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterObject.java
index 76b6fae..dec12e4 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterObject.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterObject.java
@@ -97,6 +97,23 @@
     }
 
 
+    public List<String> getAddressListByCodeId(List<String> codeIdList) {
+        List<String> addressList = new ArrayList<>();
+        for (String codeId : codeIdList) {
+            for (PlcParameterInfo plcParameterInfo : plcParameterList) {
+                if (plcParameterInfo.getCodeId().equals(codeId)) {
+                    int index = plcParameterInfo.getAddressIndex();
+                    String address = plcParameterInfo.getAddress(index);
+                    if (address != null) {
+                        addressList.add(address);
+                    }
+                }
+            }
+        }
+        return addressList;
+    }
+
+
 
 
 
diff --git a/springboot-vue3/src/main/resources/JsonFile/PlcAlarm.json b/springboot-vue3/src/main/resources/JsonFile/PlcAlarm.json
new file mode 100644
index 0000000..a840092
--- /dev/null
+++ b/springboot-vue3/src/main/resources/JsonFile/PlcAlarm.json
@@ -0,0 +1,371 @@
+{
+  "plcAddressBegin": "DB104.0.0",
+  "plcAddressLenght": "91",
+  "dataType": "bit",
+  "parameteInfor": [
+    {
+      "codeId": "D01VFDerror",
+      "addressIndex": 0
+    },
+    {
+      "codeId": "D02VFDerror",
+      "addressIndex": 1
+    },
+    {
+      "codeId": "D03VFDerror",
+      "addressIndex": 2
+    },
+    {
+      "codeId": "D04VFDerror",
+      "addressIndex": 3
+    },
+    {
+      "codeId": "D05VFDerror",
+      "addressIndex": 4
+    },
+    {
+      "codeId": "D06VFDerror",
+      "addressIndex": 5
+    },
+    {
+      "codeId": "B01VFDerror",
+      "addressIndex": 6
+    },
+    {
+      "codeId": "B02VFDerror",
+      "addressIndex": 7
+    },
+    {
+      "codeId": "A01VFDerror",
+      "addressIndex": 8
+    },
+    {
+      "codeId": "A02VFDerror",
+      "addressIndex": 9
+    },
+    {
+      "codeId": "A01servoturnerror",
+      "addressIndex": 10
+    },
+    {
+      "codeId": "A02servoturnerror",
+      "addressIndex": 11
+    },
+    {
+      "codeId": "A01servotravelerror",
+      "addressIndex": 12
+    },
+    {
+      "codeId": "A02servotravelerror",
+      "addressIndex": 13
+    },
+    {
+      "codeId": "B01servotravelerror",
+      "addressIndex": 14
+    },
+    {
+      "codeId": "B02servotravelerror",
+      "addressIndex": 15
+    },
+    {
+      "codeId": "D01DECerror",
+      "addressIndex": 16
+    },
+    {
+      "codeId": "D01poserror",
+      "addressIndex": 17
+    },
+    {
+      "codeId": "D02DECerror",
+      "addressIndex": 18
+    },
+    {
+      "codeId": "D02poserror",
+      "addressIndex": 19
+    },
+    {
+      "codeId": "D03DECerror",
+      "addressIndex": 20
+    },
+    {
+      "codeId": "D03poserror",
+      "addressIndex": 21
+    },
+    {
+      "codeId": "D04DECerror",
+      "addressIndex": 22
+    },
+    {
+      "codeId": "D04poserror",
+      "addressIndex": 23
+    },
+    {
+      "codeId": "D05DECerror",
+      "addressIndex": 24
+    },
+    {
+      "codeId": "D05poserror",
+      "addressIndex": 25
+    },
+    {
+      "codeId": "D06DECerror",
+      "addressIndex": 26
+    },
+    {
+      "codeId": "D06poserror",
+      "addressIndex": 27
+    },
+    {
+      "codeId": "A01DECerror",
+      "addressIndex": 28
+    },
+    {
+      "codeId": "A01poserror",
+      "addressIndex": 29
+    },
+    {
+      "codeId": "A02DECerror",
+      "addressIndex": 30
+    },
+    {
+      "codeId": "A02poserror",
+      "addressIndex": 31
+    },
+    {
+      "codeId": "B01INDECerror",
+      "addressIndex": 32
+    },
+    {
+      "codeId": "B01INposerror",
+      "addressIndex": 33
+    },
+    {
+      "codeId": "B01OUTDECerror",
+      "addressIndex": 34
+    },
+    {
+      "codeId": "B01OUTposerror",
+      "addressIndex": 35
+    },
+    {
+      "codeId": "B02INDECerror",
+      "addressIndex": 36
+    },
+    {
+      "codeId": "B02INposerror",
+      "addressIndex": 37
+    },
+    {
+      "codeId": "B02OUTDECerror",
+      "addressIndex": 38
+    },
+    {
+      "codeId": "B02OUTposerror",
+      "addressIndex": 39
+    },
+    {
+      "codeId": "D01Scanglassexceedinglimit",
+      "addressIndex": 40
+    },
+    {
+      "codeId": "emergencystopalarm",
+      "addressIndex": 41
+    },
+    {
+      "codeId": "Moreglassthanknown",
+      "addressIndex": 42
+    },
+    {
+      "codeId": "lessglassthanknown",
+      "addressIndex": 43
+    },
+    {
+      "codeId": "D01conveyortimeoutalarm",
+      "addressIndex": 44
+    },
+    {
+      "codeId": "D02conveyortimeoutalarm",
+      "addressIndex": 45
+    },
+    {
+      "codeId": "D03conveyortimeoutalarm",
+      "addressIndex": 46
+    },
+    {
+      "codeId": "D04conveyortimeoutalarm",
+      "addressIndex": 47
+    },
+    {
+      "codeId": "D05conveyortimeoutalarm",
+      "addressIndex": 48
+    },
+    {
+      "codeId": "D06conveyortimeoutalarm",
+      "addressIndex": 49
+    },
+    {
+      "codeId": "A01conveyortimeoutalarm",
+      "addressIndex": 50
+    },
+    {
+      "codeId": "A02conveyortimeoutalarm",
+      "addressIndex": 51
+    },
+    {
+      "codeId": "B01conveyortimeoutalarm",
+      "addressIndex": 52
+    },
+    {
+      "codeId": "B02conveyortimeoutalarm",
+      "addressIndex": 53
+    },
+    {
+      "codeId": "A01conveyorLeftsafetyalarm",
+      "addressIndex": 54
+    },
+    {
+      "codeId": "A01conveyorrightsafetyalarm",
+      "addressIndex": 55
+    },
+    {
+      "codeId": "A02conveyorLeftsafetyalarm",
+      "addressIndex": 56
+    },
+    {
+      "codeId": "A02conveyorrightsafetyalarm",
+      "addressIndex": 57
+    },
+    {
+      "codeId": "1#buffersafetyalarm",
+      "addressIndex": 58
+    },
+    {
+      "codeId": "2#buffersafetyalarm",
+      "addressIndex": 59
+    },
+    {
+      "codeId": "3#buffersafetyalarm",
+      "addressIndex": 60
+    },
+    {
+      "codeId": "4#buffersafetyalarm",
+      "addressIndex": 61
+    },
+    {
+      "codeId": "A01.SRrightinposerror",
+      "addressIndex": 62
+    },
+    {
+      "codeId": "A02.SRleftinposerror",
+      "addressIndex": 63
+    },
+    {
+      "codeId": "B01.SRleftinposerror",
+      "addressIndex": 64
+    },
+    {
+      "codeId": "B01.SRleftdecerror",
+      "addressIndex": 65
+    },
+    {
+      "codeId": "B01.SRrightdecerror",
+      "addressIndex": 66
+    },
+    {
+      "codeId": "B01.SRrightinposerror",
+      "addressIndex": 67
+    },
+    {
+      "codeId": "B02.SRleftinposerror",
+      "addressIndex": 68
+    },
+    {
+      "codeId": "B02.SRleftdecerror",
+      "addressIndex": 69
+    },
+    {
+      "codeId": "B02.SRrightdecerror",
+      "addressIndex": 70
+    },
+    {
+      "codeId": "B02.SRrightinposerror",
+      "addressIndex": 71
+    },
+    {
+      "codeId": "A01servoturnhomed",
+      "addressIndex": 72
+    },
+    {
+      "codeId": "A02servoturnhomed",
+      "addressIndex": 73
+    },
+    {
+      "codeId": "A01servotravelhomed",
+      "addressIndex": 74
+    },
+    {
+      "codeId": "A02servotravelhomed",
+      "addressIndex": 75
+    },
+    {
+      "codeId": "B01servotravelhomed",
+      "addressIndex": 76
+    },
+    {
+      "codeId": "B02servotravelhomed",
+      "addressIndex": 77
+    },
+    {
+      "codeId": "resetDelay",
+      "addressIndex": 78
+    },
+    {
+      "codeId": "A01travelNegativelimit",
+      "addressIndex": 79
+    },
+    {
+      "codeId": "A01travelPositivelimit",
+      "addressIndex": 80
+    },
+    {
+      "codeId": "A01turnuplimit",
+      "addressIndex": 81
+    },
+    {
+      "codeId": "A01turndownlimit",
+      "addressIndex": 82
+    },
+    {
+      "codeId": "A02travelNegativelimit",
+      "addressIndex": 83
+    },
+    {
+      "codeId": "A02travelPositivelimit",
+      "addressIndex": 84
+    },
+    {
+      "codeId": "A02turnuplimit",
+      "addressIndex": 85
+    },
+    {
+      "codeId": "A02turndownlimit",
+      "addressIndex": 86
+    },
+    {
+      "codeId": "B01travelNegativelimit",
+      "addressIndex": 87
+    },
+    {
+      "codeId": "B01travelPositivelimit",
+      "addressIndex": 88
+    },
+    {
+      "codeId": "B02travelNegativelimit",
+      "addressIndex": 89
+    },
+    {
+      "codeId": "B02travelPositivelimit",
+      "addressIndex": 90
+    }
+  ]
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/resources/JsonFile/PlcSign.json b/springboot-vue3/src/main/resources/JsonFile/PlcSign.json
index 390a204..8f9295a 100644
--- a/springboot-vue3/src/main/resources/JsonFile/PlcSign.json
+++ b/springboot-vue3/src/main/resources/JsonFile/PlcSign.json
@@ -1,47 +1,460 @@
 {
-  "plcAddressBegin":"DB102.0.0",
-  "plcAddressLenght":"11",
-  "dataType":"bit",
-  "parameteInfor":[
+  "plcAddressBegin": "DB102.0.0",
+  "plcAddressLenght": "112",
+  "dataType": "bit",
+  "parameteInfor": [
     {
       "codeId": "D01.SRdec",
-      "addressIndex":"0"
+      "addressIndex": 0
     },
     {
       "codeId": "D01.SRinpos",
-      "addressIndex":"1"
+      "addressIndex": 1
     },
     {
-      "codeId": "conveyorVelocity(Manual)",
-      "addressIndex":"2"
+      "codeId": "D02.SRdec",
+      "addressIndex": 2
     },
     {
-      "codeId": "A01A02TURNJOGVelocity",
-      "addressIndex":"3"
+      "codeId": "D02.SRinpos",
+      "addressIndex": 3
     },
     {
-      "codeId": "A01A02TRAVELJOGVelocity",
-      "addressIndex":"4"
+      "codeId": "D03.SRinto",
+      "addressIndex": 4
     },
     {
-      "codeId": "B01B02TRAVELJOGVelocity",
-      "addressIndex":"5"
+      "codeId": "D03.SRdec",
+      "addressIndex": 5
     },
     {
-      "codeId": "A01A02TURNPOSVelocityAUTO",
-      "addressIndex":"7"
+      "codeId": "D03.SRinpos",
+      "addressIndex": 6
     },
     {
-      "codeId": "A01A02TURNPOSVelocitymanual",
-      "addressIndex":"8"
+      "codeId": "D04.SRdec",
+      "addressIndex": 7
     },
     {
-      "codeId": "A01A02TRAVELPOSVelocityAUTO",
-      "addressIndex":"9"
+      "codeId": "D04.SRinpos",
+      "addressIndex": 8
+    },
+    {
+      "codeId": "D05.SRdec",
+      "addressIndex": 9
     },
     {
       "codeId": "D05.SRinpos",
-      "addressIndex":"10"
+      "addressIndex": 10
+    },
+    {
+      "codeId": "D06.SRdec",
+      "addressIndex": 11
+    },
+    {
+      "codeId": "D06.SRinpos",
+      "addressIndex": 12
+    },
+    {
+      "codeId": "B01.SRindec",
+      "addressIndex": 13
+    },
+    {
+      "codeId": "B01.SRininpos",
+      "addressIndex": 14
+    },
+    {
+      "codeId": "B01.SRoutdec",
+      "addressIndex": 15
+    },
+    {
+      "codeId": "B01.SRoutinpos",
+      "addressIndex": 16
+    },
+    {
+      "codeId": "B01.SRturnon",
+      "addressIndex": 17
+    },
+    {
+      "codeId": "B01.SRturnoff",
+      "addressIndex": 18
+    },
+    {
+      "codeId": "B01.SRup",
+      "addressIndex": 19
+    },
+    {
+      "codeId": "B01.SRdown",
+      "addressIndex": 20
+    },
+    {
+      "codeId": "B02.SRoutdec",
+      "addressIndex": 21
+    },
+    {
+      "codeId": "B02.SRoutinpos",
+      "addressIndex": 22
+    },
+    {
+      "codeId": "B02.SRindec",
+      "addressIndex": 23
+    },
+    {
+      "codeId": "B02.SRininpos",
+      "addressIndex": 24
+    },
+    {
+      "codeId": "B02.SRturnon",
+      "addressIndex": 25
+    },
+    {
+      "codeId": "B02.SRturnoff",
+      "addressIndex": 26
+    },
+    {
+      "codeId": "B02.SRup",
+      "addressIndex": 27
+    },
+    {
+      "codeId": "B02.SRdown",
+      "addressIndex": 28
+    },
+    {
+      "codeId": "B01.SRinsafety",
+      "addressIndex": 29
+    },
+    {
+      "codeId": "B01.SRoutsafety",
+      "addressIndex": 30
+    },
+    {
+      "codeId": "B02.SRinsafety",
+      "addressIndex": 31
+    },
+    {
+      "codeId": "SB.start(+)",
+      "addressIndex": 32
+    },
+    {
+      "codeId": "SB.stop(-)",
+      "addressIndex": 33
+    },
+    {
+      "codeId": "SB.reset",
+      "addressIndex": 34
+    },
+    {
+      "codeId": "SB.auto/manul",
+      "addressIndex": 35
+    },
+    {
+      "codeId": "D01.SB.confirm",
+      "addressIndex": 36
+    },
+    {
+      "codeId": "SB.emg",
+      "addressIndex": 37
+    },
+    {
+      "codeId": "D01.SB.start",
+      "addressIndex": 38
+    },
+    {
+      "codeId": "D06.SB.start",
+      "addressIndex": 39
+    },
+    {
+      "codeId": "B02.SRoutsafety",
+      "addressIndex": 40
+    },
+    {
+      "codeId": "SafetyDoor.requset",
+      "addressIndex": 41
+    },
+    {
+      "codeId": "SafetyDoor.confirm",
+      "addressIndex": 42
+    },
+    {
+      "codeId": "SafetyDoor.reset",
+      "addressIndex": 43
+    },
+    {
+      "codeId": "Sspce",
+      "addressIndex": 44
+    },
+    {
+      "codeId": "Sspce",
+      "addressIndex": 45
+    },
+    {
+      "codeId": "Sspce",
+      "addressIndex": 46
+    },
+    {
+      "codeId": "Sspce",
+      "addressIndex": 47
+    },
+    {
+      "codeId": "A01.SRleftdec",
+      "addressIndex": 48
+    },
+    {
+      "codeId": "A01.SRleftinpos",
+      "addressIndex": 49
+    },
+    {
+      "codeId": "A01.SRleftsafety",
+      "addressIndex": 50
+    },
+    {
+      "codeId": "A01.SRrightdec",
+      "addressIndex": 51
+    },
+    {
+      "codeId": "A01.SRrightinpos",
+      "addressIndex": 52
+    },
+    {
+      "codeId": "A01.SRrightsafety",
+      "addressIndex": 53
+    },
+    {
+      "codeId": "A01.SRturnhome",
+      "addressIndex": 54
+    },
+    {
+      "codeId": "A01.SRturnup",
+      "addressIndex": 55
+    },
+    {
+      "codeId": "A01.SRturndown",
+      "addressIndex": 56
+    },
+    {
+      "codeId": "A01.SRtravelhome",
+      "addressIndex": 57
+    },
+    {
+      "codeId": "A01.SRtravelleftdec",
+      "addressIndex": 58
+    },
+    {
+      "codeId": "A01.SRtravelleftlimit",
+      "addressIndex": 59
+    },
+    {
+      "codeId": "A01.SRtravelrightdec",
+      "addressIndex": 60
+    },
+    {
+      "codeId": "A01.SRtravelrightlimit",
+      "addressIndex": 61
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 62
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 63
+    },
+    {
+      "codeId": "A02.SRleftdec",
+      "addressIndex": 64
+    },
+    {
+      "codeId": "A02.SRleftinpos",
+      "addressIndex": 65
+    },
+    {
+      "codeId": "A02.SRleftsafety",
+      "addressIndex": 66
+    },
+    {
+      "codeId": "A02.SRrightdec",
+      "addressIndex": 67
+    },
+    {
+      "codeId": "A02.SRrightinpos",
+      "addressIndex": 68
+    },
+    {
+      "codeId": "A02.SRrightsafety",
+      "addressIndex": 69
+    },
+    {
+      "codeId": "A02.SRturnhome",
+      "addressIndex": 70
+    },
+    {
+      "codeId": "A02.SRturnup",
+      "addressIndex": 71
+    },
+    {
+      "codeId": "A02.SRturndown",
+      "addressIndex": 72
+    },
+    {
+      "codeId": "A02.SRtravelhome",
+      "addressIndex": 73
+    },
+    {
+      "codeId": "A02.SRtravelleftdec",
+      "addressIndex": 74
+    },
+    {
+      "codeId": "A02.SRtravelleftlimit",
+      "addressIndex": 75
+    },
+    {
+      "codeId": "A02.SRtravelrightdec",
+      "addressIndex": 76
+    },
+    {
+      "codeId": "A02.SRtravelrightlimit",
+      "addressIndex": 77
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 78
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 79
+    },
+    {
+      "codeId": "B01.SRorigin",
+      "addressIndex": 80
+    },
+    {
+      "codeId": "B01.SRleftlimit",
+      "addressIndex": 81
+    },
+    {
+      "codeId": "B01.SRrightlimit",
+      "addressIndex": 82
+    },
+    {
+      "codeId": "B02.SRorigin",
+      "addressIndex": 83
+    },
+    {
+      "codeId": "B02.SRleftlimit",
+      "addressIndex": 84
+    },
+    {
+      "codeId": "B02.SRrightlimit",
+      "addressIndex": 85
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 86
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 87
+    },
+    {
+      "codeId": "LED.red",
+      "addressIndex": 88
+    },
+    {
+      "codeId": "LED.green",
+      "addressIndex": 89
+    },
+    {
+      "codeId": "LED.yellow",
+      "addressIndex": 90
+    },
+    {
+      "codeId": "D01.LED.green",
+      "addressIndex": 91
+    },
+    {
+      "codeId": "D06.LED.green",
+      "addressIndex": 92
+    },
+    {
+      "codeId": "B01.YV.turn",
+      "addressIndex": 93
+    },
+    {
+      "codeId": "B01.YV.updown",
+      "addressIndex": 94
+    },
+    {
+      "codeId": "B01.YV.gassing",
+      "addressIndex": 95
+    },
+    {
+      "codeId": "B02.YV.turn",
+      "addressIndex": 96
+    },
+    {
+      "codeId": "B02.YV.updown",
+      "addressIndex": 97
+    },
+    {
+      "codeId": "B02.YV.gassing",
+      "addressIndex": 98
+    },
+    {
+      "codeId": "SafetyDoor.Led",
+      "addressIndex": 99
+    },
+    {
+      "codeId": "SafetyDoor.open",
+      "addressIndex": 100
+    },
+    {
+      "codeId": "D01SB.confirm",
+      "addressIndex": 101
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 102
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 103
+    },
+    {
+      "codeId": "A01oilPump",
+      "addressIndex": 104
+    },
+    {
+      "codeId": "A01motorCtr",
+      "addressIndex": 105
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 106
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 107
+    },
+    {
+      "codeId": "A02oilPump",
+      "addressIndex": 108
+    },
+    {
+      "codeId": "A02motorCtr",
+      "addressIndex": 109
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 110
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 111
+    }
+    ,
+    {
+      "codeId": "space",
+      "addressIndex": 111
     }
   ]
-}
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/resources/JsonFile/PlcState.json b/springboot-vue3/src/main/resources/JsonFile/PlcState.json
index 608180e..dfdbaec 100644
--- a/springboot-vue3/src/main/resources/JsonFile/PlcState.json
+++ b/springboot-vue3/src/main/resources/JsonFile/PlcState.json
@@ -1,6 +1,6 @@
 {
   "plcAddressBegin": "DB103.0",
-  "plcAddressLenght": "256",
+  "plcAddressLenght": "258",
   "dataType": "word",
   "parameteInfor": [
     {
@@ -267,6 +267,19 @@
       "addressLenght": "2",
       "unit": ""
     }
-
+    ,
+    {
+      "codeId": "Scanningguns",
+      "addressIndex": "256",
+      "addressLenght": "2",
+      "unit": ""
+    }
+    ,
+    {
+      "codeId": "Frameid",
+      "addressIndex": "270",
+      "addressLenght": "2",
+      "unit": ""
+    }
   ]
 }
\ No newline at end of file
diff --git a/springboot-vue3/src/main/resources/JsonFile/PlcTest.json b/springboot-vue3/src/main/resources/JsonFile/PlcTest.json
new file mode 100644
index 0000000..263c782
--- /dev/null
+++ b/springboot-vue3/src/main/resources/JsonFile/PlcTest.json
@@ -0,0 +1,378 @@
+{
+  "plcAddressBegin": "DB101.0.0",
+  "plcAddressLenght": "93",
+  "dataType": "bit",
+  "parameteInfor": [
+    {
+      "codeId": "D01VFDconveyor",
+      "addressIndex": 0
+    },
+    {
+      "codeId": "D02VFDconveyor",
+      "addressIndex": 1
+    },
+    {
+      "codeId": "D03VFDconveyor",
+      "addressIndex": 2
+    },
+    {
+      "codeId": "D04VFDconveyor",
+      "addressIndex": 3
+    },
+    {
+      "codeId": "D05VFDconveyor",
+      "addressIndex": 4
+    },
+    {
+      "codeId": "D06VFDconveyor",
+      "addressIndex": 5
+    },
+    {
+      "codeId": "A01VFDconveyor",
+      "addressIndex": 6
+    },
+    {
+      "codeId": "A02VFDconveyor",
+      "addressIndex": 7
+    },
+    {
+      "codeId": "B01VFDconveyor",
+      "addressIndex": 8
+    },
+    {
+      "codeId": "B02VFDconveyor",
+      "addressIndex": 9
+    },
+    {
+      "codeId": "A01SERVETURN",
+      "addressIndex": 10
+    },
+    {
+      "codeId": "A02SERVETURN",
+      "addressIndex": 11
+    },
+    {
+      "codeId": "A01SERVETRAVEL",
+      "addressIndex": 12
+    },
+    {
+      "codeId": "A02SERVETRAVEL",
+      "addressIndex": 13
+    },
+    {
+      "codeId": "B01SERVETRAVEL",
+      "addressIndex": 14
+    },
+    {
+      "codeId": "B02SERVETRAVEL",
+      "addressIndex": 15
+    },
+    {
+      "codeId": "A01SERVETURNPOS",
+      "addressIndex": 16
+    },
+    {
+      "codeId": "A02SERVETURNPOS",
+      "addressIndex": 17
+    },
+    {
+      "codeId": "A01SERVETRAVELPOS",
+      "addressIndex": 18
+    },
+    {
+      "codeId": "A02SERVETRAVELPOS",
+      "addressIndex": 19
+    },
+    {
+      "codeId": "B01SERVETRAVELPOS",
+      "addressIndex": 20
+    },
+    {
+      "codeId": "B02SERVETRAVELPOS",
+      "addressIndex": 21
+    },
+    {
+      "codeId": "B01YVTURN",
+      "addressIndex": 22
+    },
+    {
+      "codeId": "B01YVUPDOWN",
+      "addressIndex": 23
+    },
+    {
+      "codeId": "B02YVTURN",
+      "addressIndex": 24
+    },
+    {
+      "codeId": "B02YVUPDOWN",
+      "addressIndex": 25
+    },
+    {
+      "codeId": "B01YVGassing",
+      "addressIndex": 26
+    },
+    {
+      "codeId": "B02YVGassing",
+      "addressIndex": 27
+    },
+    {
+      "codeId": "A01VFDconveyorreverse",
+      "addressIndex": 28
+    },
+    {
+      "codeId": "A02VFDconveyorreverse",
+      "addressIndex": 29
+    },
+    {
+      "codeId": "A01SERVETURNreset",
+      "addressIndex": 30
+    },
+    {
+      "codeId": "A01SERVETURNhome",
+      "addressIndex": 31
+    },
+    {
+      "codeId": "A01SERVETRAVELreset",
+      "addressIndex": 32
+    },
+    {
+      "codeId": "A02SERVETURNreset",
+      "addressIndex": 33
+    },
+    {
+      "codeId": "A02SERVETURNhome",
+      "addressIndex": 34
+    },
+    {
+      "codeId": "A02SERVETRAVELreset",
+      "addressIndex": 35
+    },
+    {
+      "codeId": "B01SERVETRAVELreset",
+      "addressIndex": 36
+    },
+    {
+      "codeId": "B01SERVETRAVELhome",
+      "addressIndex": 37
+    },
+    {
+      "codeId": "B02SERVETRAVELreset",
+      "addressIndex": 38
+    },
+    {
+      "codeId": "B02SERVETRAVELhome",
+      "addressIndex": 39
+    },
+    {
+      "codeId": "Manualstoragestartup",
+      "addressIndex": 40
+    },
+    {
+      "codeId": "Manualoutputstartup",
+      "addressIndex": 41
+    },
+    {
+      "codeId": "A01oilpump",
+      "addressIndex": 42
+    },
+    {
+      "codeId": "A02oilpump",
+      "addressIndex": 43
+    },
+    {
+      "codeId": "A01get1#gridaddress",
+      "addressIndex": 44
+    },
+    {
+      "codeId": "A01get22#gridaddress",
+      "addressIndex": 45
+    },
+    {
+      "codeId": "A01get43#gridaddress",
+      "addressIndex": 46
+    },
+    {
+      "codeId": "A01get64#gridaddress",
+      "addressIndex": 47
+    },
+    {
+      "codeId": "A01get85#gridaddress",
+      "addressIndex": 48
+    },
+    {
+      "codeId": "A01get106#gridaddress",
+      "addressIndex": 49
+    },
+    {
+      "codeId": "A01get127#gridaddress",
+      "addressIndex": 50
+    },
+    {
+      "codeId": "A01get148#gridaddress",
+      "addressIndex": 51
+    },
+    {
+      "codeId": "A01get169#gridaddress",
+      "addressIndex": 52
+    },
+    {
+      "codeId": "A02get190#gridaddress",
+      "addressIndex": 53
+    },
+    {
+      "codeId": "A02get1#gridaddress",
+      "addressIndex": 54
+    },
+    {
+      "codeId": "A02get22#gridaddress",
+      "addressIndex": 55
+    },
+    {
+      "codeId": "A02get43#gridaddress",
+      "addressIndex": 56
+    },
+    {
+      "codeId": "A02get64#gridaddress",
+      "addressIndex": 57
+    },
+    {
+      "codeId": "A02get85#gridaddress",
+      "addressIndex": 58
+    },
+    {
+      "codeId": "A02get106#gridaddress",
+      "addressIndex": 59
+    },
+    {
+      "codeId": "A02get127#gridaddress",
+      "addressIndex": 60
+    },
+    {
+      "codeId": "A02get148#gridaddress",
+      "addressIndex": 61
+    },
+    {
+      "codeId": "A02get169#gridaddress",
+      "addressIndex": 62
+    },
+    {
+      "codeId": "A02get190#gridaddress",
+      "addressIndex": 63
+    },
+    {
+      "codeId": "B01get1#gridaddress",
+      "addressIndex": 64
+    },
+    {
+      "codeId": "B01get22#gridaddress",
+      "addressIndex": 65
+    },
+    {
+      "codeId": "B01get43#gridaddress",
+      "addressIndex": 66
+    },
+    {
+      "codeId": "B01get64#gridaddress",
+      "addressIndex": 67
+    },
+    {
+      "codeId": "B01get85#gridaddress",
+      "addressIndex": 68
+    },
+    {
+      "codeId": "B02get106#gridaddress",
+      "addressIndex": 69
+    },
+    {
+      "codeId": "B02get127#gridaddress",
+      "addressIndex": 70
+    },
+    {
+      "codeId": "B02get148#gridaddress",
+      "addressIndex": 71
+    },
+    {
+      "codeId": "B02get169#gridaddress",
+      "addressIndex": 72
+    },
+    {
+      "codeId": "B02get190#gridaddress",
+      "addressIndex": 73
+    },
+    {
+      "codeId": "D01IDClean",
+      "addressIndex": 74
+    },
+    {
+      "codeId": "D02IDClean",
+      "addressIndex": 75
+    },
+    {
+      "codeId": "D03IDClean",
+      "addressIndex": 76
+    },
+    {
+      "codeId": "D04IDClean",
+      "addressIndex": 77
+    },
+    {
+      "codeId": "D05IDClean",
+      "addressIndex": 78
+    },
+    {
+      "codeId": "D06IDClean",
+      "addressIndex": 79
+    },
+    {
+      "codeId": "A01IDClean",
+      "addressIndex": 80
+    },
+    {
+      "codeId": "A02IDClean",
+      "addressIndex": 81
+    },
+    {
+      "codeId": "B01IDClean",
+      "addressIndex": 82
+    },
+    {
+      "codeId": "B02IDClean",
+      "addressIndex": 83
+    },
+    {
+      "codeId": "abort/resumeTasks",
+      "addressIndex": 84
+    },
+    {
+      "codeId": "A01SERVETRAVELhome",
+      "addressIndex": 85
+    },
+    {
+      "codeId": "A02SERVETRAVELhome",
+      "addressIndex": 86
+    },
+    {
+      "codeId": "A01A02travelHoming",
+      "addressIndex": 87
+    },
+    {
+      "codeId": "A01halfAutoSelect",
+      "addressIndex": 88
+    },
+    {
+      "codeId": "A02halfAutoSelect",
+      "addressIndex": 89
+    },
+    {
+      "codeId": "A02abortTasks",
+      "addressIndex": 90
+    },
+    {
+      "codeId": "emgHMI",
+      "addressIndex": 91
+    },
+    {
+      "codeId": "Scanningmethod",
+      "addressIndex": 92
+  ]
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/resources/JsonFile/alarm.xlsx b/springboot-vue3/src/main/resources/JsonFile/alarm.xlsx
new file mode 100644
index 0000000..50b26dc
--- /dev/null
+++ b/springboot-vue3/src/main/resources/JsonFile/alarm.xlsx
Binary files differ
diff --git a/springboot-vue3/src/main/resources/JsonFile/sign.xlsx b/springboot-vue3/src/main/resources/JsonFile/sign.xlsx
new file mode 100644
index 0000000..3922301
--- /dev/null
+++ b/springboot-vue3/src/main/resources/JsonFile/sign.xlsx
Binary files differ
diff --git a/springboot-vue3/src/main/resources/JsonFile/test.xlsx b/springboot-vue3/src/main/resources/JsonFile/test.xlsx
new file mode 100644
index 0000000..9862cf5
--- /dev/null
+++ b/springboot-vue3/src/main/resources/JsonFile/test.xlsx
Binary files differ

--
Gitblit v1.8.0