From 69d6f1711a32ba4d1a989fef6b3640ff5ae4f2e2 Mon Sep 17 00:00:00 2001 From: wuyouming666 <2265557248@qq.com> Date: 星期二, 12 十二月 2023 13:15:40 +0800 Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/CanadaMes --- springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java | 233 ++++++++++------------------------------------------------ 1 files changed, 41 insertions(+), 192 deletions(-) diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java index 3859be2..88bd43d 100644 --- a/springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java +++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java @@ -13,13 +13,18 @@ public class PlcServoManualone extends Thread { - + // 鐢ㄤ簬瀛樺偍搴旂敤绋嬪簭鐨勯厤缃俊鎭� private Configuration config; + + // 鍒涘缓涓�涓嚜瀹氫箟鐨� S7 鎺у埗鍣ㄦ秷鎭鐞嗗櫒瀵硅薄 + MessageHandler customS7Control = new MessageHandler(); + public PlcServoManualone() throws IOException { config = new Configuration("config.properties"); } +//灏嗗竷灏斿垪琛ㄨ浆鎹负浜岃繘鍒剁殑 short 鏁扮粍 public static class PLCBooleanConverter { public static short[] convertListsToBinaryShortArray(List<Boolean>... lists) { @@ -59,18 +64,7 @@ } return writedstrIdOut; } -//鍐欏叆id - public void outmesid(String glassid,String address) { - //System.out.println("outmesid:" + glassid); - List<Byte> glassidlist = new ArrayList(); - char ds[]=glassid.toCharArray(); - for (char iditem : ds) { - glassidlist.add((byte)iditem); - } - byte[] bytes = Bytes.toArray(glassidlist); - System.out.println("outmesidbytes:" + bytes.length); - S7control.getinstance().WriteByte(address, bytes); - } + @Override public void run() { @@ -81,6 +75,8 @@ } catch (InterruptedException e) { e.printStackTrace(); } + + //A01缁勫悎涓湴鍧�琛ㄩ泦鍚� List<String> addresses = Arrays.asList(config.getProperty("A01.addresses").split(",")); @@ -134,7 +130,7 @@ StringBuilder queueid1 = queGlassid(inputGlassIdAddress, 14); // 瀛樼墖id鍦板潃 StringBuilder queueid2 = queGlassid(outputGlassIdAddress, 14); - +//A01 A02鍚姩 鍗婅嚜鍔ㄥ惎鍔� List<Boolean> A01readstart = S7control.getinstance().readBits(A01start); List<Boolean> A02readstart = S7control.getinstance().readBits(A02start); List<Boolean> A01readBstart = S7control.getinstance().readBits(A01Bstart); @@ -171,7 +167,7 @@ } - +//鎵�鏈夋湭鍥為浂鎸夐挳杞崲涓�1鍜�0 List<Boolean> arraylist8 = S7control.getinstance().readBits(addresses8); short[] params = new short[arraylist8.size()]; for (int i = 0; i < arraylist8.size(); i++) { @@ -258,201 +254,54 @@ // 鍐欏叆AO1缁勫悎 + customS7Control.WriteWordToPLC(messageArray, addresses,0); if (messageArray.getJSONArray(0).size() > 0) { - JSONArray jsonArray = messageArray.getJSONArray(0); - List<Short> sValue = new ArrayList<>(); - for (int i = 0; i < jsonArray.size(); i++) { - Object value = jsonArray.get(i); - if (value != null && !value.toString().equals("null")) { - try { - String cleanedValue = value.toString().replaceAll("[^0-9-]", ""); - short val = Short.parseShort(cleanedValue.trim()); - sValue.add(val); - System.out.println("messageValue锛�" + Arrays.asList(val) + " added to the list"); - } catch (NumberFormatException e) { - // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒� - System.err.println("Could not parse value: " + value); - } + if (A01readstart != null && !A01readstart.isEmpty()) { + // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊� + List<Boolean> a01startval = new ArrayList<>(); + // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊� + for (Boolean bit : A01readstart) { + // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑 + a01startval.add(!bit); } - } - if (!sValue.isEmpty()) { - - S7control.getinstance().WriteWord(addresses, sValue); - // 妫�鏌ユ槸鍚﹁鍙栧埌浜嗕綅鍊硷紝骞朵笖鍒楄〃涓嶄负绌� - if (A01readstart != null && !A01readstart.isEmpty()) { - // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊� - List<Boolean> a01startval = new ArrayList<>(); - // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊� - for (Boolean bit : A01readstart) { - // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑 - a01startval.add(!bit); - } - // 鍐欏叆鏂扮殑浣嶅�煎垪琛� - S7control.getinstance().WriteBit(A01start, a01startval); - } - System.out.println("Values " + sValue + " written to PLC at address " + addresses); + // 鍐欏叆鏂扮殑浣嶅�煎垪琛� + S7control.getinstance().WriteBit(A01start, a01startval); } } - //// 鍐欏叆AO2缁勫悎 + // 鍐欏叆AO2缁勫悎 + customS7Control.WriteWordToPLC(messageArray, addresses2,1); if (messageArray.getJSONArray(1).size() > 0) { - JSONArray jsonArray2 = messageArray.getJSONArray(1); - List<Short> sValue2 = new ArrayList<>(); - for (int i = 0; i < jsonArray2.size(); i++) { - Object value = jsonArray2.get(i); - if (value != null && !value.toString().equals("null")) { - try { - String cleanedValue = value.toString().replaceAll("[^0-9-]", ""); - short val = Short.parseShort(cleanedValue.trim()); - sValue2.add(val); - System.out.println("messageValue锛�" + Arrays.asList(val) + " added to the list"); - } catch (NumberFormatException e) { - // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒� - System.err.println("Could not parse value: " + value); - } + if (A02readstart != null && !A02readstart.isEmpty()) { + // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊� + List<Boolean> a02startval = new ArrayList<>(); + // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊� + for (Boolean bit : A02readstart) { + // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑 + a02startval.add(!bit); } - } - if (!sValue2.isEmpty()) { - S7control.getinstance().WriteWord(addresses2, sValue2); - - if (A02readstart != null && !A02readstart.isEmpty()) { - // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊� - List<Boolean> a02startval = new ArrayList<>(); - // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊� - for (Boolean bit : A02readstart) { - // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑 - a02startval.add(!bit); - } - // 鍐欏叆鏂扮殑浣嶅�煎垪琛� - S7control.getinstance().WriteBit(A02start, a02startval); - } - System.out.println("Values " + sValue2 + " written to PLC at address " + addresses2); + // 鍐欏叆鏂扮殑浣嶅�煎垪琛� + S7control.getinstance().WriteBit(A02start, a02startval); } } - // 澶嶄綅鎸夐挳鍐欏叆 - if (messageArray.getJSONArray(2).size() > 0) { - JSONArray jsonArray3 = messageArray.getJSONArray(2); - List<Boolean> sValue3 = new ArrayList<>(); - for (int i = 0; i < jsonArray3.size(); i++) { - Object value = jsonArray3.get(i); - if (value != null && !value.toString().equals("null")) { - try { - String cleanedValue = value.toString().replaceAll("[^0-9-]", ""); - boolean val = "1".equals(cleanedValue.trim()); - sValue3.add(val); - System.out.println("messageValue: " + Arrays.asList(val) + " added to the list"); - } catch (NumberFormatException e) { - // 濡傛灉鏃犳硶瑙f瀽涓� boolean 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒� - System.err.println("Could not parse value: " + value); - } - } - } - if (!sValue3.isEmpty()) { - S7control.getinstance().WriteBit(Reset, sValue3); - System.out.println("Values " + sValue3 + " written to PLC at address " + Reset); - } - } + customS7Control.writeBitToPLC( messageArray, Reset,2); //鍥為浂鎸夐挳鍐欏叆 - if (messageArray.getJSONArray(3).size() > 0) { - JSONArray jsonArray4 = messageArray.getJSONArray(3); - List<Boolean> sValue4 = new ArrayList<>(); - for (int i = 0; i < jsonArray4.size(); i++) { - Object value = jsonArray4.get(i); - if (value != null && !value.toString().equals("null")) { - try { - String cleanedValue = value.toString().replaceAll("[^0-9-]", ""); - boolean val = "1".equals(cleanedValue.trim()); - sValue4.add(val); - System.out.println("messageValue: " + Arrays.asList(val) + " added to the list"); - } catch (NumberFormatException e) { - // 濡傛灉鏃犳硶瑙f瀽涓� boolean 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒� - System.err.println("Could not parse value: " + value); - } - } - } - if (!sValue4.isEmpty()) { - S7control.getinstance().WriteBit(waddresses4, sValue4); - System.out.println("Values " + sValue4 + " written to PLC at address " + waddresses4); - } - } + customS7Control.writeBitToPLC( messageArray, waddresses4,3); - - //鍙栫墖ID鍐欏叆 - if (messageArray.getJSONArray(5).size() > 0) { -// JSONArray jsonArray5 = messageArray.getJSONArray(4); - String jsonArray5 = String.valueOf(messageArray.getJSONArray(5)); - if (!jsonArray5.isEmpty()) { -// String value = (String) jsonArray5.get(0); - jsonArray5 = jsonArray5.replaceAll("[\\[\\]\"]", ""); // 鍘婚櫎鏂规嫭鍙峰拰鍙屽紩鍙� - outmesid(jsonArray5, outputGlassIdAddress); - System.out.println("Values1 " + jsonArray5 + " written to PLC at address " + outputGlassIdAddress); - } - } // 杩涚墖ID鍐欏叆 - if (messageArray.getJSONArray(4).size() > 0) { - JSONArray jsonArray6 = messageArray.getJSONArray(4); + customS7Control.writeStringToPLC( messageArray,inputGlassIdAddress,4); + //鍙栫墖ID鍐欏叆 + customS7Control.writeStringToPLC( messageArray,outputGlassIdAddress,5); - if (!jsonArray6.isEmpty()) { - String value2 = (String) jsonArray6.get(0); - outmesid(value2.trim(), inputGlassIdAddress); - System.out.println("Values2 " + value2 + " written to PLC at address " + inputGlassIdAddress); - } - } + //A01鍗婅嚜鍔� + customS7Control.writeBitToPLC( messageArray, A01Bstart,6); - - if (messageArray.getJSONArray(6).size() > 0) { - JSONArray jsonArray4 = messageArray.getJSONArray(6); - List<Boolean> sValueb4 = new ArrayList<>(); - for (int i = 0; i < jsonArray4.size(); i++) { - Object value = jsonArray4.get(i); - if (value != null && !value.toString().equals("null")) { - try { - String cleanedValue = value.toString().replaceAll("[^0-9-]", ""); - boolean val = "1".equals(cleanedValue.trim()); - sValueb4.add(val); - System.out.println("messageValue: " + Arrays.asList(val) + " added to the list"); - } catch (NumberFormatException e) { - // 濡傛灉鏃犳硶瑙f瀽涓� boolean 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒� - System.err.println("Could not parse value: " + value); - } - } - } - if (!sValueb4.isEmpty()) { - - S7control.getinstance().WriteBit(A01Bstart, sValueb4); - System.out.println("Values " + sValueb4 + " written to PLC at address " + A01Bstart); - } - } - - - if (messageArray.getJSONArray(7).size() > 0 && !messageArray.isNull(7)) { - JSONArray jsonArray4 = messageArray.getJSONArray(7); - List<Boolean> sValueb5 = new ArrayList<>(); - for (int i = 0; i < jsonArray4.size(); i++) { - Object value = jsonArray4.get(i); - if (value != null && !value.toString().equals("null")) { - try { - String cleanedValue = value.toString().replaceAll("[^0-9-]", ""); - boolean val = "1".equals(cleanedValue.trim()); - sValueb5.add(val); - System.out.println("messageValue: " + Arrays.asList(val) + " added to the list"); - } catch (NumberFormatException e) { - // 濡傛灉鏃犳硶瑙f瀽涓� boolean 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒� - System.err.println("Could not parse value: " + value); - } - } - } - if (!sValueb5.isEmpty()) { - - S7control.getinstance().WriteBit(A02Bstart, sValueb5); - System.out.println("Values " + sValueb5 + " written to PLC at address " + A02Bstart); - } - } - + //A02鍗婅嚜鍔� + customS7Control.writeBitToPLC( messageArray, A02Bstart,7); -- Gitblit v1.8.0