zhangyong
2024-01-10 4abee8e36e3259fcf77cc1d1879a2d959edc8297
增加参数结构化相关设计代码,仅供参考
8个文件已添加
909 ■■■■■ 已修改文件
springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter1Review.java 213 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcsignReview.java 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcBitInfo.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcBitObject.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterInfo.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterObject.java 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/resources/JsonFile/PlcParameter.json 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/resources/JsonFile/PlcSign.json 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter1Review.java
New file
@@ -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();//该DB区数据实例
  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) {
                  // 如果无法解析为 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) {
                // 如果无法解析为 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) {
                // 如果无法解析为 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();
        }
      }
    }
  }
}
springboot-vue3/src/main/java/com/example/springboot/component/PlcsignReview.java
New file
@@ -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();//该DB区数据实例
  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());
        }
      }
    }
  }
}
springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcBitInfo.java
New file
@@ -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;
        }
    }
springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcBitObject.java
New file
@@ -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 数据区 读取所有数据所需的长度(以byte类型为基准)
     */
    public int getPlcAddressLength() {
        return plcAddressLength;
    }
    /**
     * @return 设置:数据区 读取所有数据所需的长度(以byte类型为基准)
     */
    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读取回来的byte类型数据集合
     */
    public void setPlcBitList(List<Boolean> plcValueArray) {
        if (plcBitList != null) {
            for (PlcBitInfo plcbitInfo : plcBitList) {
                plcbitInfo.setValue(plcValueArray.get(plcbitInfo.getAddressIndex()));
            }
        }
    }
}
springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterInfo.java
New file
@@ -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;
    }
    }
springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterObject.java
New file
@@ -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 数据区 读取所有数据所需的长度(以byte类型为基准)
     */
    public int getPlcAddressLength() {
        return plcAddressLength;
    }
    /**
     * @return 设置:数据区 读取所有数据所需的长度(以byte类型为基准)
     */
    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读取回来的byte类型数据集合
     */
    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类型转byte[]
     *
     * @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[]类型转short
     *
     * @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;
   }
}
springboot-vue3/src/main/resources/JsonFile/PlcParameter.json
New file
@@ -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"
      }
  ]
}
springboot-vue3/src/main/resources/JsonFile/PlcSign.json
New file
@@ -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"
      }
  ]
}