From 4abee8e36e3259fcf77cc1d1879a2d959edc8297 Mon Sep 17 00:00:00 2001
From: zhangyong <517047165@qq.com>
Date: 星期三, 10 一月 2024 17:09:32 +0800
Subject: [PATCH] 增加参数结构化相关设计代码,仅供参考

---
 springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcBitObject.java       |  113 +++++++
 springboot-vue3/src/main/resources/JsonFile/PlcParameter.json                              |   77 ++++
 springboot-vue3/src/main/java/com/example/springboot/component/PlcsignReview.java          |  124 +++++++
 springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcBitInfo.java         |   74 ++++
 springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterObject.java |  149 +++++++++
 springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterInfo.java   |  112 +++++++
 springboot-vue3/src/main/resources/JsonFile/PlcSign.json                                   |   47 ++
 springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter1Review.java    |  213 +++++++++++++
 8 files changed, 909 insertions(+), 0 deletions(-)

diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter1Review.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter1Review.java
new file mode 100644
index 0000000..ab4ee3c
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter1Review.java
@@ -0,0 +1,213 @@
+package com.example.springboot.component;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import org.apache.commons.io.FileUtils;
+import org.apache.tomcat.jni.Lock;
+import org.springframework.beans.factory.annotation.Autowired;
+ 
+
+import java.io.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.locks.ReentrantLock;
+import org.springframework.core.io.Resource;
+import org.springframework.core.io.ResourceLoader;
+
+import com.example.springboot.entity.device.PlcParameterObject;
+import com.example.springboot.entity.device.PlcParameterInfo;
+
+public class PlcParameter1Review extends Thread {
+
+  @Autowired
+  private ResourceLoader resourceLoader;
+  private volatile static PlcParameter1Review instance = null;
+
+  private PlcParameter1Review() {
+    init();
+  }
+
+  // 鍗曚緥妯″紡 绾跨▼瀹夊叏
+  public static PlcParameter1Review getInstance() {
+    if (instance == null) {
+      synchronized (PlcParameter1Review.class) {
+        if (instance == null) {
+          instance = new PlcParameter1Review();
+        }
+      }
+    }
+    return instance;
+  }
+  PlcParameterObject plcParameterObject = new PlcParameterObject();//璇B鍖烘暟鎹疄渚�
+
+  private void init() { 
+    try {
+      String jsonfilename=  PlcParameter1Review.class.getResource("/JsonFile/PlcParameter.json").getFile();
+      FileReader fileReader = new FileReader(jsonfilename);
+      BufferedReader bufferedReader = new BufferedReader(fileReader);
+
+      StringBuilder content = new StringBuilder();
+      String line;
+
+      while ((line = bufferedReader.readLine()) != null) {
+        content.append(line);
+      }
+
+      bufferedReader.close(); 
+      fileReader.close();
+      
+      JSONObject jsonfileobj = new JSONObject(content.toString());
+      JSONArray jsonArray = jsonfileobj.getJSONArray("parameteInfor");
+       plcParameterObject.setPlcAddressBegin(jsonfileobj.getStr("plcAddressBegin"));//璁剧疆璧峰浣嶅湴鍧�
+       plcParameterObject.setPlcAddressLength(Integer.valueOf(jsonfileobj.getStr("plcAddressLenght")));//璁剧疆鍦板潃闀垮害
+       
+
+      for (int i = 0; i < jsonArray.size(); i++) {
+        JSONObject parameterObj = jsonArray.getJSONObject(i); 
+        
+        PlcParameterInfo plcParameterInfo = new PlcParameterInfo(jsonfileobj.getStr("plcAddressBegin")); //鍙傛暟瀹炰緥 
+        String codeid=parameterObj.getStr("codeId");
+        plcParameterInfo.setCodeId(codeid);
+        plcParameterInfo.setAddressIndex(Integer.valueOf(parameterObj.getStr("addressIndex")));
+        plcParameterInfo.setRatio(Integer.valueOf(parameterObj.getStr("ratio")));
+        plcParameterInfo.setAddressLength(Integer.valueOf(parameterObj.getStr("addressLenght"))); 
+        plcParameterInfo.setUnit(parameterObj.getStr("unit")); 
+        plcParameterObject.addPlcParameter(plcParameterInfo);
+      } 
+      System.out.println("");
+    } catch (IOException e) {
+      e.printStackTrace();
+    }
+
+  }
+
+  @Override
+  public void run() {
+    while (this != null) {
+      try {
+        Thread.sleep(1000);
+
+      } catch (InterruptedException e) {
+        e.printStackTrace();
+      }
+      byte[] getplcvlues=S7control.getinstance().ReadByte(plcParameterObject.getPlcAddressBegin(),plcParameterObject.getPlcAddressLength());
+      plcParameterObject.setPlcParameterList(getplcvlues);
+       int index=plcParameterObject.getPlcParameter("conveyorVelocity(AutoFAST)").getAddressIndex();
+      S7control.getinstance().WriteWord(plcParameterObject.getPlcParameter("conveyorVelocity(AutoFAST)").getAddress(index), (short)100);
+     
+      List<String> addresses = new ArrayList<>();
+      addresses.add("conveyorVelocity(AutoFAST)");
+      addresses.add("conveyorVelocity(AutoSLOW)");
+      addresses.add("conveyorVelocity(Manual)");
+      addresses.add("A01A02TURNJOGVelocity");
+      addresses.add("A01A02TRAVELJOGVelocity"); 
+      
+      plcParameterObject.getPlcParameterValues(addresses);
+ 
+      JSONObject jsonObject = new JSONObject(); 
+       
+      jsonObject.append("params", plcParameterObject.getPlcParameterValues(addresses));
+      jsonObject.append("fanzhuan", plcParameterObject.getPlcParameter("conveyorVelocity(AutoFAST)").getValue());
+      jsonObject.append("xiaoche", plcParameterObject.getPlcParameter("").getValue());
+
+      WebSocketServer sendwServer = WebSocketServer.sessionMap.get("Parameter1");
+      if (sendwServer != null) {
+        sendwServer.sendMessage(jsonObject.toString());
+      }
+
+      WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("Parameter1");
+      if (webSocketServer != null) {
+        List<String> messages = webSocketServer.getMessages();
+        List<String> waddresses1 = new ArrayList<>();
+        waddresses1.add("DB100.0");
+        waddresses1.add("DB100.2");
+        waddresses1.add("DB100.4");
+        waddresses1.add("DB100.6");
+        waddresses1.add("DB100.26");
+        waddresses1.add("DB100.28");
+        waddresses1.add("DB100.30");
+        waddresses1.add("DB100.32");
+        waddresses1.add("DB100.34");
+        waddresses1.add("DB100.36");
+        waddresses1.add("DB100.38");
+        waddresses1.add("DB100.40");
+
+        String addressList2 = "DB100.8";
+        String addressList3 = "DB100.12";
+
+        if (!messages.isEmpty()) {
+          // 灏嗘渶鍚庝竴涓秷鎭浆鎹负 short 绫诲瀷鐨勫垪琛�
+          String lastMessage = messages.get(messages.size() - 1);
+          // System.out.println("lastMessage锛�" + lastMessage);
+          JSONArray messageArray = new JSONArray(lastMessage);
+
+          // 鏁村悎绗� 1 鍒� 3 涓暟缁勫苟鍘绘帀 null 鍏冪礌
+          List<Short> mergedList = new ArrayList<>();
+          for (int i = 0; i < 3; i++) {
+            JSONArray sublist = messageArray.getJSONArray(i);
+            for (int j = 0; j < sublist.size(); j++) {
+              Object value = sublist.get(j);
+              if (value != null && !value.toString().equals("null")) {
+                try {
+                  String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+                  short sValue = Short.parseShort(cleanedValue.trim());
+                  mergedList.add(sValue);
+                } catch (NumberFormatException e) {
+                  // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+                  System.err.println("Could not parse value: " + value);
+                }
+              }
+            }
+          }
+
+          // 鍐欏叆绗竴涓湴鍧�
+          if (messageArray.getJSONArray(3).size() > 0) {
+            Object value = messageArray.getJSONArray(3).get(0);
+            if (value != null && !value.toString().equals("null")) {
+              try {
+                String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+                short sValue = Short.parseShort(cleanedValue.trim());
+                S7control.getinstance().WriteWord(addressList2, Arrays.asList(sValue));
+                System.out
+                    .println("messageValue锛�" + Arrays.asList(sValue) + " written to PLC at address " + addressList2);
+              } catch (NumberFormatException e) {
+                // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+                System.err.println("Could not parse value: " + value);
+              }
+            }
+          }
+
+          // 鍐欏叆绗簩涓湴鍧�
+          if (messageArray.getJSONArray(4).size() > 0) {
+            Object value = messageArray.getJSONArray(4).get(0);
+            if (value != null && !value.toString().equals("null")) {
+              try {
+                String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+                short sValue = Short.parseShort(cleanedValue.trim());
+                S7control.getinstance().WriteWord(addressList3, Arrays.asList(sValue));
+                System.out
+                    .println("messageValue锛�" + Arrays.asList(sValue) + " written to PLC at address " + addressList3);
+              } catch (NumberFormatException e) {
+                // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+                System.err.println("Could not parse value: " + value);
+              }
+            }
+          }
+
+          // 鍐欏叆绗笁涓湴鍧�
+          if (!mergedList.isEmpty()) {
+            S7control.getinstance().WriteWord(waddresses1, mergedList);
+            System.out.println("messageValue锛�" + mergedList + " written to PLC at address " + waddresses1);
+          }
+
+          // 娓呯┖娑堟伅鍒楄〃
+          webSocketServer.clearMessages();
+        }
+
+      }
+
+    }
+  }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcsignReview.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcsignReview.java
new file mode 100644
index 0000000..ef6af2d
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcsignReview.java
@@ -0,0 +1,124 @@
+package com.example.springboot.component;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.example.springboot.entity.device.PlcBitObject;
+import com.example.springboot.entity.device.PlcBitInfo;
+
+public class PlcsignReview extends Thread {
+  String name = "";
+  Integer count = 0;
+  private volatile static PlcsignReview instance = null;
+
+  private PlcsignReview() {
+    init();
+  }
+
+  // 鍗曚緥妯″紡 绾跨▼瀹夊叏
+  public static PlcsignReview getInstance() {
+    if (instance == null) {
+      synchronized (PlcsignReview.class) {
+        if (instance == null) {
+          instance = new PlcsignReview();
+        }
+      }
+    }
+    return instance;
+  }
+  PlcBitObject plcBitObject = new PlcBitObject();//璇B鍖烘暟鎹疄渚�
+
+  private void init() { 
+    try {
+      String jsonfilename=  PlcsignReview.class.getResource("/JsonFile/PlcSign.json").getFile();
+      FileReader fileReader = new FileReader(jsonfilename);
+      BufferedReader bufferedReader = new BufferedReader(fileReader);
+
+      StringBuilder content = new StringBuilder();
+      String line;
+
+      while ((line = bufferedReader.readLine()) != null) {
+        content.append(line);
+      }
+
+      bufferedReader.close(); 
+      fileReader.close();
+      
+      JSONObject jsonfileobj = new JSONObject(content.toString());
+      JSONArray jsonArray = jsonfileobj.getJSONArray("parameteInfor");
+       plcBitObject.setPlcAddressBegin(jsonfileobj.getStr("plcAddressBegin"));//璁剧疆璧峰浣嶅湴鍧�
+       plcBitObject.setPlcAddressLength(Integer.valueOf(jsonfileobj.getStr("plcAddressLenght")));//璁剧疆鍦板潃闀垮害
+       
+
+      for (int i = 0; i < jsonArray.size(); i++) {
+        JSONObject parameterObj = jsonArray.getJSONObject(i); 
+        
+        PlcBitInfo plcBitInfo = new PlcBitInfo(jsonfileobj.getStr("plcAddressBegin")); //鍙傛暟瀹炰緥 
+        String codeid=parameterObj.getStr("codeId");
+        plcBitInfo.setCodeId(codeid);
+        plcBitInfo.setAddressIndex(Integer.valueOf(parameterObj.getStr("addressIndex")));
+        
+        plcBitObject.addPlcBit(plcBitInfo);
+      } 
+      System.out.println("");
+    } catch (IOException e) {
+      e.printStackTrace();
+    }
+  }
+   
+
+  @Override
+  public void run() {
+    while (this != null) {
+      try {
+        Thread.sleep(1000);
+      } catch (InterruptedException e) {
+        e.printStackTrace();
+      }
+      List<Boolean> getplcbits=S7control.getinstance().ReadBits(plcBitObject.getPlcAddressBegin(),plcBitObject.getPlcAddressLength());
+      plcBitObject.setPlcBitList(getplcbits);
+//      this.readValue();
+//      String PlcAddress = this.name;
+//      Integer Plccount = this.count;
+      // System.out.println(PlcAddress);
+
+//      List<Boolean> plclist = S7control.getinstance().ReadBits(PlcAddress, Plccount);
+       List<Boolean> plclist = S7control.getinstance().ReadBits("DB102.0.0", 64);
+
+//       Boolean[] values = { true, true, true, true, 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, true, false, null,
+//       true, false,
+//       true, false, true, false, true, false,
+//       true, false, true, false, true, };
+//       List<Boolean> plclist = new ArrayList<>(Arrays.asList(values));
+
+      if (plclist != null) {
+        // 灏嗚幏鍙栫殑甯冨皵绫诲瀷杞崲涓烘暣鏁扮被鍨�
+        List<Integer> Intlist = new ArrayList<>();
+        for (Boolean value : plclist) {
+          if (value != null) {
+            Intlist.add(value == true ? 0 : 1);
+          }
+
+        }
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.append("sig", Intlist);
+        WebSocketServer sendwServer3 = WebSocketServer.sessionMap.get("Sign");
+        if (sendwServer3 != null) {
+          sendwServer3.sendMessage(jsonObject.toString());
+        }
+
+      }
+    }
+  }
+}
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
new file mode 100644
index 0000000..e3cf8d1
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcBitInfo.java
@@ -0,0 +1,74 @@
+package com.example.springboot.entity.device;
+
+import com.example.springboot.component.S7control;
+
+public  class PlcBitInfo {
+
+        public PlcBitInfo(String startAddress) {
+            this.startAddress = startAddress;
+        }
+        private String startAddress;
+        // 鍙傛暟鏍囪瘑
+        private String codeId;
+
+        // 鍙傛暟鍚嶇О
+        private String name;
+
+        // 璇诲彇 鍙傛暟鍊�
+        private Boolean value;
+        // 鍙傛暟鍦板潃
+        private int addressIndex;
+
+        public String getCodeId() {
+            return this.codeId;
+        }
+
+        public void setCodeId(String codeId) {
+            this.codeId = codeId;
+        }
+
+        public String getName() {
+            return this.name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public Boolean getValue() {
+            return this.value;
+        }
+
+        public void setValue(Boolean value) {
+            this.value = value;
+        } 
+         
+
+        public int getAddressIndex() {
+            return this.addressIndex;
+        } 
+         /**
+     * 鑾峰彇鍦板潃
+     * 
+     * @param index 绱㈠紩鍦板潃
+     */
+        public String getAddress(int index) {
+            String[] stringdatas = this.startAddress.trim().split("\\.");
+            if (stringdatas.length < 2 )
+                return null;
+            int dbwindex = 0;
+            int bitindex = 0;
+             if (stringdatas.length == 3) {
+                dbwindex = Integer.parseInt(stringdatas[1]);
+                bitindex = Integer.parseInt(stringdatas[2]);
+            } else
+                return null; 
+              dbwindex+=index/8;
+              bitindex+=index%8;
+            return stringdatas[0]+"."+dbwindex+"."+bitindex;
+        }
+
+        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
new file mode 100644
index 0000000..643664b
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcBitObject.java
@@ -0,0 +1,113 @@
+package com.example.springboot.entity.device;
+
+import java.lang.reflect.Array;
+import java.util.ArrayList;
+import java.util.List;
+
+public class PlcBitObject {
+
+    // 璇ユā鍧楁暟鎹被鍨嬶紝鏁版嵁璧峰浣嶇疆
+    private String plcAddressBegin;
+    // 鏁版嵁鍦板潃闀垮害锛氱涓�鍙傛暟鍒版渶鍚庝竴涓弬鏁扮殑闀垮害
+    private int plcAddressLength;
+    private ArrayList<PlcBitInfo> plcBitList;
+
+    /**
+     * @return 鏁版嵁鍖哄紑濮嬪湴鍧�
+     */
+    public String getPlcAddressBegin() {
+        return plcAddressBegin;
+    }
+
+    /**
+     * @param plcAddressBegin 璁剧疆鏁版嵁鍖哄紑濮嬪湴鍧�
+     */
+    public void setPlcAddressBegin(String plcAddressBegin) {
+        this.plcAddressBegin = plcAddressBegin;
+    }
+
+    /**
+     * @return 鏁版嵁鍖� 璇诲彇鎵�鏈夋暟鎹墍闇�鐨勯暱搴︼紙浠yte绫诲瀷涓哄熀鍑嗭級
+     */
+    public int getPlcAddressLength() {
+        return plcAddressLength;
+    }
+
+    /**
+     * @return 璁剧疆锛氭暟鎹尯 璇诲彇鎵�鏈夋暟鎹墍闇�鐨勯暱搴︼紙浠yte绫诲瀷涓哄熀鍑嗭級
+     */
+    public void setPlcAddressLength(int plcAddressLength) {
+        this.plcAddressLength = plcAddressLength;
+    }
+
+    /**
+     * @return 鑾峰彇鍙傛暟瀹炰緥闆嗗悎
+     */
+    public ArrayList<PlcBitInfo> getBitList() {
+        return plcBitList;
+    }
+
+    /**
+     * 鏍规嵁鍙傛暟鏍囪瘑 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     * 
+     * @param codeid 鍙傛暟鏍囪瘑
+     * @return 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     */
+    public PlcBitInfo getPlcBit(String codeid) {
+        if (plcBitList != null) {
+            for (PlcBitInfo plcbitInfo : plcBitList) {
+                if (plcbitInfo.getCodeId().equals(codeid))
+                    return plcbitInfo;
+            }
+            return null;
+        } else
+            return null;
+    }
+
+    /**
+     * 鏍规嵁鍙傛暟鏍囪瘑 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     * 
+     * @param codeid 鍙傛暟鏍囪瘑
+     * @return 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     */
+    public List<Boolean> getPlcBitValues(List<String> codeids) {
+        List<Boolean> arrayList = new ArrayList();
+        if (plcBitList != null) {
+            for (PlcBitInfo plcbitInfo : plcBitList) {
+                if (codeids.contains(plcbitInfo.getCodeId().toString()))
+                    arrayList.add(plcbitInfo.getValue());
+            }
+        }
+        return arrayList;
+    }
+     
+    /**
+     * 娣诲姞鍙傛暟瀹炰緥
+     * 
+     * @param param 鍙傛暟瀹炰緥
+     */
+    public void addPlcBit(PlcBitInfo param) {
+        if (plcBitList != null)
+            plcBitList.add(param);
+        else {
+            plcBitList = new ArrayList<PlcBitInfo>();
+            plcBitList.add(param);
+        }
+    }
+
+    /**
+     * 鏍规嵁PLC杩斿洖鐨勬暟鎹� 缁欏弬鏁板疄渚嬭祴鍊�
+     * 
+     * @param plcValueArray PLC璇诲彇鍥炴潵鐨刡yte绫诲瀷鏁版嵁闆嗗悎
+     */
+    public void setPlcBitList(List<Boolean> plcValueArray) {
+        if (plcBitList != null) {
+            for (PlcBitInfo plcbitInfo : plcBitList) {
+                plcbitInfo.setValue(plcValueArray.get(plcbitInfo.getAddressIndex()));
+            }
+        }
+    }
+   
+
+   
+}
\ No newline at end of file
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
new file mode 100644
index 0000000..ff39eba
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterInfo.java
@@ -0,0 +1,112 @@
+package com.example.springboot.entity.device;
+public  class PlcParameterInfo {
+      public PlcParameterInfo(String startAddress) {
+        this.startAddress = startAddress;
+      } 
+        private String startAddress;
+        // 鍙傛暟鏍囪瘑
+        private String codeId;
+
+        // 鍙傛暟鍚嶇О
+        private String name;
+
+        // 璇诲彇 鍙傛暟鍊�
+        private String value;
+
+        // // 鍐欏叆 鍙傛暟鍊�
+        // private String writeValue;
+
+        // 鍙傛暟鍗曚綅
+        private String unit;
+
+        // 鍙傛暟鍊艰浆鎹㈢郴鏁�
+        private int ratio;
+
+        // 鍙傛暟鍦板潃
+        private int addressIndex;
+
+        // 鍙傛暟鍦板潃浣嶉暱搴�
+        private int addressLength;
+
+        public String getCodeId() {
+            return this.codeId;
+        }
+
+        public void setCodeId(String codeId) {
+            this.codeId = codeId;
+        }
+
+        public String getName() {
+            return this.name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public String getValue() {
+            return this.value;
+        }
+
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+        // public String getWriteValue() {
+        //     return this.writeValue;
+        // }
+
+        // public void setWriteValue(String writeValue) {
+        //     this.writeValue = writeValue;
+        // }
+
+        public String getUnit() {
+            return this.unit;
+        }
+
+        public void setUnit(String unit) {
+            this.unit = unit;
+        }
+
+        public int getAddressIndex() {
+            return this.addressIndex;
+        }
+
+        public void setAddressIndex(int addressindex) {
+            this.addressIndex = addressindex;
+        }
+
+        public int getAddressLength() {
+            return this.addressLength;
+        }
+
+        public void setAddressLength(int addresslength) {
+            this.addressLength = addresslength;
+        }
+
+        public int getRatio() {
+            return this.ratio;
+        }
+
+        public void setRatio(int ratio) {
+            this.ratio = ratio;
+        }
+
+           /**
+     * 鑾峰彇鍦板潃
+     * 
+     * @param index 绱㈠紩鍦板潃
+     */
+    public String getAddress(int index) {
+        String[] stringdatas = this.startAddress.trim().split("\\.");
+        if (stringdatas.length < 2 )
+            return null;
+        int dbwindex = 0;
+        int bitindex = 0;
+         if (stringdatas.length == 2) {
+            dbwindex = Integer.parseInt(stringdatas[1]);
+        } else
+            return null; 
+        return stringdatas[0]+"."+dbwindex+bitindex;
+    } 
+    }
\ No newline at end of file
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
new file mode 100644
index 0000000..163c45e
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterObject.java
@@ -0,0 +1,149 @@
+package com.example.springboot.entity.device;
+
+import java.lang.reflect.Array;
+import java.util.ArrayList;
+import java.util.List;
+
+public class PlcParameterObject {
+
+    // 璇ユā鍧楁暟鎹被鍨嬶紝鏁版嵁璧峰浣嶇疆
+    private String plcAddressBegin;
+    // 鏁版嵁鍦板潃闀垮害锛氱涓�鍙傛暟鍒版渶鍚庝竴涓弬鏁扮殑闀垮害
+    private int plcAddressLength;
+    private ArrayList<PlcParameterInfo> plcParameterList;
+
+    /**
+     * @return 鏁版嵁鍖哄紑濮嬪湴鍧�
+     */
+    public String getPlcAddressBegin() {
+        return plcAddressBegin;
+    }
+
+    /**
+     * @param plcAddressBegin 璁剧疆鏁版嵁鍖哄紑濮嬪湴鍧�
+     */
+    public void setPlcAddressBegin(String plcAddressBegin) {
+        this.plcAddressBegin = plcAddressBegin;
+    }
+
+    /**
+     * @return 鏁版嵁鍖� 璇诲彇鎵�鏈夋暟鎹墍闇�鐨勯暱搴︼紙浠yte绫诲瀷涓哄熀鍑嗭級
+     */
+    public int getPlcAddressLength() {
+        return plcAddressLength;
+    }
+
+    /**
+     * @return 璁剧疆锛氭暟鎹尯 璇诲彇鎵�鏈夋暟鎹墍闇�鐨勯暱搴︼紙浠yte绫诲瀷涓哄熀鍑嗭級
+     */
+    public void setPlcAddressLength(int plcAddressLength) {
+        this.plcAddressLength = plcAddressLength;
+    }
+
+    /**
+     * @return 鑾峰彇鍙傛暟瀹炰緥闆嗗悎
+     */
+    public ArrayList<PlcParameterInfo> getPlcParameterList() {
+        return plcParameterList;
+    }
+
+    /**
+     * 鏍规嵁鍙傛暟鏍囪瘑 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     * 
+     * @param codeid 鍙傛暟鏍囪瘑
+     * @return 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     */
+    public PlcParameterInfo getPlcParameter(String codeid) {
+        if (plcParameterList != null) {
+            for (PlcParameterInfo plcParameterInfo : plcParameterList) {
+                if (plcParameterInfo.getCodeId().equals(codeid))
+                    return plcParameterInfo;
+            }
+            return null;
+        } else
+            return null;
+    }
+
+    /**
+     * 鏍规嵁鍙傛暟鏍囪瘑 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     * 
+     * @param codeid 鍙傛暟鏍囪瘑
+     * @return 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     */
+    public List<String> getPlcParameterValues(List<String> codeids) {
+        List<String> arrayList = new ArrayList();
+        if (plcParameterList != null) {
+            for (PlcParameterInfo plcParameterInfo : plcParameterList) {
+                if (codeids.contains(plcParameterInfo.getCodeId().toString()))
+                    arrayList.add(plcParameterInfo.getValue());
+            }
+        }
+        return arrayList;
+    }
+     
+    /**
+     * 娣诲姞鍙傛暟瀹炰緥
+     * 
+     * @param param 鍙傛暟瀹炰緥
+     */
+    public void addPlcParameter(PlcParameterInfo param) {
+        if (plcParameterList != null)
+            plcParameterList.add(param);
+        else {
+            plcParameterList = new ArrayList<PlcParameterInfo>();
+            plcParameterList.add(param);
+        }
+    }
+
+    /**
+     * 鏍规嵁PLC杩斿洖鐨勬暟鎹� 缁欏弬鏁板疄渚嬭祴鍊�
+     * 
+     * @param plcValueArray PLC璇诲彇鍥炴潵鐨刡yte绫诲瀷鏁版嵁闆嗗悎
+     */
+    public void setPlcParameterList(byte[] plcValueArray) {
+        if (plcParameterList != null) {
+            for (PlcParameterInfo plcParameterInfo : plcParameterList) {
+                byte[] valueList = new byte[plcParameterInfo.getAddressLength()];
+                for (int i = 0; i < plcParameterInfo.getAddressLength(); i++) {
+                    Array.setByte(valueList, i, plcValueArray[plcParameterInfo.getAddressIndex() + i]);
+                }
+                if (plcParameterInfo.getAddressLength()==2) { 
+                      plcParameterInfo.setValue(String.valueOf(byte2short(valueList)));
+                }
+                else
+                {
+                    String valuestr = new String(valueList);
+                    plcParameterInfo.setValue(valuestr);
+                }
+            }
+        }
+    }
+     /**
+     * short绫诲瀷杞琤yte[]
+     * 
+     * @param s short绫诲瀷鍊�
+     */
+    public static byte[] short2byte(short s){
+        byte[] b = new byte[2]; 
+        for(int i = 0; i < 2; i++){
+            int offset = 16 - (i+1)*8; //鍥犱负byte鍗�4涓瓧鑺傦紝鎵�浠ヨ璁$畻鍋忕Щ閲�
+            b[i] = (byte)((s >> offset)&0xff); //鎶�16浣嶅垎涓�2涓�8浣嶈繘琛屽垎鍒瓨鍌�
+        }
+        return b;
+   }
+     /**
+     * byte[]绫诲瀷杞瑂hort
+     * 
+     * @param b byte[]绫诲瀷鍊�
+     */
+   public static short byte2short(byte[] b){
+       short l = 0;
+       for (int i = 0; i < 2; i++) {
+           l<<=8; //<<=鍜屾垜浠殑 +=鏄竴鏍风殑锛屾剰鎬濆氨鏄� l = l << 8 
+           l |= (b[i] & 0xff); //鍜屼笂闈篃鏄竴鏍风殑  l = l | (b[i]&0xff)
+       }
+       return l;
+   }
+
+   
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/resources/JsonFile/PlcParameter.json b/springboot-vue3/src/main/resources/JsonFile/PlcParameter.json
new file mode 100644
index 0000000..1a63c24
--- /dev/null
+++ b/springboot-vue3/src/main/resources/JsonFile/PlcParameter.json
@@ -0,0 +1,77 @@
+{
+   "plcAddressBegin":"DB100.0",
+   "plcAddressLenght":"86",
+   "dataType":"word",
+   "parameteInfor":[
+      {
+         "codeId": "conveyorVelocity(Max)",
+         "addressIndex":"0",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+          "codeId": "conveyorVelocity(AutoSLOW)",
+          "addressIndex":"6",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"m/min"      
+       },
+       {
+          "codeId": "conveyorVelocity(Manual)",
+          "addressIndex":"4",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"m/min"       
+       },
+       {
+          "codeId": "A01A02TURNJOGVelocity",
+          "addressIndex":"6",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"m/min"        
+       },
+       {
+          "codeId": "A01A02TRAVELJOGVelocity",
+          "addressIndex":"8",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"m/min"        
+       },
+       {
+          "codeId": "B01B02TRAVELJOGVelocity",
+          "addressIndex":"10",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"m/min"      
+       },
+       {
+          "codeId": "A01A02TURNPOSVelocityAUTO",
+          "addressIndex":"12",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"m/min"        
+       },
+       {
+          "codeId": "A01A02TURNPOSVelocitymanual",
+          "addressIndex":"14",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"m/min"        
+       },
+       {
+          "codeId": "A01A02TRAVELPOSVelocityAUTO",
+          "addressIndex":"16",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"m/min"      
+       },
+       {
+         "codeId": "DO1id",
+         "addressIndex":"18",
+         "addressLenght":"14",
+         "ratio":"1",
+         "unit":"m/min"      
+      }
+  ]
+}
diff --git a/springboot-vue3/src/main/resources/JsonFile/PlcSign.json b/springboot-vue3/src/main/resources/JsonFile/PlcSign.json
new file mode 100644
index 0000000..6a40941
--- /dev/null
+++ b/springboot-vue3/src/main/resources/JsonFile/PlcSign.json
@@ -0,0 +1,47 @@
+{
+   "plcAddressBegin":"DB100.0.0",
+   "plcAddressLenght":"20",
+   "dataType":"bit",
+   "parameteInfor":[
+      {
+         "codeId": "D01.SRdec",
+         "addressIndex":"0"
+      },
+      {
+          "codeId": "conveyorVelocity(AutoSLOW)",
+          "addressIndex":"1"
+       },
+       {
+          "codeId": "conveyorVelocity(Manual)",
+          "addressIndex":"2"
+       },
+       {
+          "codeId": "A01A02TURNJOGVelocity",
+          "addressIndex":"3"
+       },
+       {
+          "codeId": "A01A02TRAVELJOGVelocity",
+          "addressIndex":"4"
+       },
+       {
+          "codeId": "B01B02TRAVELJOGVelocity",
+          "addressIndex":"5"
+       },
+       {
+          "codeId": "A01A02TURNPOSVelocityAUTO",
+          "addressIndex":"12"
+       },
+       {
+          "codeId": "A01A02TURNPOSVelocitymanual",
+          "addressIndex":"14"
+       },
+       {
+          "codeId": "A01A02TRAVELPOSVelocityAUTO",
+          "addressIndex":"16"
+       },
+       {
+         "codeId": "DO1id",
+         "addressIndex":"18" 
+      }
+  ]
+}

--
Gitblit v1.8.0