From c684729c17bb02ab968cdc2fceae74dacaa9593f Mon Sep 17 00:00:00 2001 From: wuyouming666 <2265557248@qq.com> Date: 星期三, 06 十二月 2023 16:53:28 +0800 Subject: [PATCH] 增加 急停后中止/继续选择 --- springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 101 insertions(+), 16 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 01b178d..4366a77 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 @@ -20,6 +20,32 @@ config = new Configuration("config.properties"); } + 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; + } + } //璇诲彇id public StringBuilder queGlassid(String address,int count) { @@ -80,16 +106,11 @@ //B02缁勫悎鍦板潃 String b02Address = config.getProperty("B02.address"); List<Short> arraylist6 = S7control.getinstance().ReadWord(b02Address, 2); - System.out.println(b02Address); +// System.out.println(b02Address); // 鎵�鏈夋晠闅滄寜閽湴鍧� List<String> addresses7 = Arrays.asList(config.getProperty("faultButtonAddresses").split(",")); List<Boolean> arraylist7 = S7control.getinstance().readBits(addresses7); - // 杩涚墖id鍦板潃 - String inputGlassIdAddress = config.getProperty("inputGlassIdAddress"); - String outputGlassIdAddress = config.getProperty("outputGlassIdAddress"); - StringBuilder queueid1 = queGlassid(inputGlassIdAddress, 14); - // 瀛樼墖id鍦板潃 - StringBuilder queueid2 = queGlassid(outputGlassIdAddress, 14); + //A01鍚姩鍦板潃 List<String> A01start = Arrays.asList(config.getProperty("A01start")); //A02鍚姩鍦板潃 @@ -98,12 +119,33 @@ List<String> A01Bstart = Arrays.asList(config.getProperty("A01Bstart")); //A02鍗婅嚜鍔ㄥ湴鍧� List<String> A02Bstart = Arrays.asList(config.getProperty("A02Bstart")); + // + List<String> abortresumeTasks = Arrays.asList(config.getProperty("abortresumeTasks")); //鍥為浂鎸夐挳鍦板潃 List<String> waddresses4 = Arrays.asList(config.getProperty("HomedButtonAddresses").split(",")); // 鎵�鏈夊浣嶆寜閽湴鍧� - List<String> Reset = Arrays.asList(config.getProperty("resetButtonAddresses")); + List<String> Reset = Arrays.asList(config.getProperty("resetButtonAddresses").split(",")); +// System.out.println(Reset); // 鎵�鏈夋湭鍥為浂鎸夐挳鍦板潃 - List<String> addresses8 = Arrays.asList(config.getProperty("notHomedButtonAddresses")); + List<String> addresses8 = Arrays.asList(config.getProperty("notHomedButtonAddresses").split(",")); + // 杩涚墖id鍦板潃 + String inputGlassIdAddress = config.getProperty("inputGlassIdAddress"); + String outputGlassIdAddress = config.getProperty("outputGlassIdAddress"); + StringBuilder queueid1 = queGlassid(inputGlassIdAddress, 14); + // 瀛樼墖id鍦板潃 + StringBuilder queueid2 = queGlassid(outputGlassIdAddress, 14); + + List<Boolean> A01readstart = S7control.getinstance().readBits(A01start); + List<Boolean> A02readstart = S7control.getinstance().readBits(A02start); + List<Boolean> A01readBstart = S7control.getinstance().readBits(A01Bstart); + List<Boolean> A02readsBtart = S7control.getinstance().readBits(A02Bstart); + + List<Boolean> resumeTasks = S7control.getinstance().readBits(abortresumeTasks); + + short[] combinedBinaryShortArray = PLCBooleanConverter.convertListsToBinaryShortArray( + A01readstart, A01readBstart, A02readstart, A02readsBtart + ); + // 鎵�鏈夋晠闅滄寜閽浆鎹负1鍜�0 short[] params2 = new short[arraylist7.size()]; @@ -114,7 +156,7 @@ List<Boolean> Reset1 = S7control.getinstance().readBits(Reset); - + // System.out.println(Reset1); // 鎵�鏈夋晠闅滄寜閽浆鎹负1鍜�0 short[] rReset = new short[Reset1.size()]; for (int i = 0; i < Reset1.size(); i++) { @@ -182,6 +224,8 @@ jsonObject.append("jinpianid", queueid1); jsonObject.append("qupianid", queueid2); jsonObject.append("fuwei", rReset); + jsonObject.append("qidong", combinedBinaryShortArray); + jsonObject.append("resumeTasks", resumeTasks); @@ -224,9 +268,18 @@ if (!sValue.isEmpty()) { S7control.getinstance().WriteWord(addresses, sValue); - Boolean[] a01values7 = { true}; - List<Boolean> a01startval = new ArrayList<>(Arrays.asList(a01values7)); - S7control.getinstance().WriteBit(A01start, a01startval); + // 妫�鏌ユ槸鍚﹁鍙栧埌浜嗕綅鍊硷紝骞朵笖鍒楄〃涓嶄负绌� + 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); } } @@ -253,9 +306,17 @@ if (!sValue2.isEmpty()) { S7control.getinstance().WriteWord(addresses2, sValue2); - Boolean[] a02values7 = {true}; - List<Boolean> a02startval = new ArrayList<>(Arrays.asList(a02values7)); - S7control.getinstance().WriteBit(A02start, a02startval); + 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); } } @@ -380,6 +441,30 @@ } } + if (messageArray.getJSONArray(8).size() > 0) { + JSONArray jsonArray5 = messageArray.getJSONArray(8); + List<Boolean> sValueb5 = new ArrayList<>(); + for (int i = 0; i < jsonArray5.size(); i++) { + Object value = jsonArray5.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(abortresumeTasks, sValueb5); + System.out.println("Values " + sValueb5 + " written to PLC at address " + A02Bstart); + } + } + // 娓呯┖娑堟伅鍒楄〃 webSocketServer.clearMessages(); -- Gitblit v1.8.0