From 9a0dd8244282d90b08b16d2c239683bbac62fab2 Mon Sep 17 00:00:00 2001 From: ZengTao <2773468879@qq.com> Date: 星期二, 16 一月 2024 15:02:21 +0800 Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/CanadaMes --- springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter1Review.java | 218 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 218 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..f3737e1 --- /dev/null +++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter1Review.java @@ -0,0 +1,218 @@ +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()); + + ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Parameter1"); + if (sendwServer != null) { + for (WebSocketServer webserver : sendwServer) { + + webserver.sendMessage(jsonObject.toString()); + + + if (webserver != null) { + + List<String> messages = webserver.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); + } + + // 娓呯┖娑堟伅鍒楄〃 + webserver.clearMessages(); + } + } + + } + } + } + } +} + -- Gitblit v1.8.0