From 33b6f6877817d01939cbd4c24493dc428bd6e32c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=B1=9F=E7=8E=AE?= Date: Mon, 9 Oct 2023 15:44:29 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E8=AF=BB=E4=BF=A1=E5=8F=B7=20=E5=86=99?= =?UTF-8?q?=E4=BF=A1=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../standard_inspect/ReadUtil.java | 28 +++++++++++++------ .../nl/acs/opc/DeviceOpcProtocolRunable.java | 7 +++-- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/standard_inspect/ReadUtil.java b/acs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/standard_inspect/ReadUtil.java index 4ce2cde..7b98a8f 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/standard_inspect/ReadUtil.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/standard_inspect/ReadUtil.java @@ -157,25 +157,35 @@ public class ReadUtil { } public static void write(Map strings, Server server) { + write(strings, server, 0); + } + + public static void write(Map strings, Server server, int writeCount) { try { //Group group = this.opcServerService.getServer(opcServiceCode); + if (writeCount == 3) { + return; + } + try { + server.connect(); + } catch (AlreadyConnectedException ignored) { + } Group group = server.addGroup(); - Iterator it = strings.keySet().iterator(); - while (it.hasNext()) { - String key = (String) it.next(); + for (String key : strings.keySet()) { Item byteItem = group.addItem(key); Object o = strings.get(key); - if (o == null || o.equals("")) { - break; + if (o == null) { + continue; } WriteRequest write1 = new WriteRequest(byteItem, new JIVariant(o.toString())); - List list = new ArrayList(); + List list = new ArrayList<>(); list.add(write1); - OpcUtl.writeValue(group, (WriteRequest[]) list.toArray(new WriteRequest[0])); + OpcUtl.writeValue(group, list.toArray(new WriteRequest[0])); } - server.disconnect(); } catch (Exception e) { - e.printStackTrace(); + write(strings, server, ++writeCount); + } finally { + server.disconnect(); } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java b/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java index b4fdfe4..04ddcf7 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java @@ -26,6 +26,7 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC private int all_null; private Map itemSearchCache; + public DeviceOpcProtocolRunable() { this.error_num = 0; this.all_null = 0; @@ -93,7 +94,6 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC server.disconnect(); log.trace("清理server..."); } - this.server = OpcServerUtl.getServerWithOutException(this.OpcServer.getOpc_host(), this.OpcServer.getCls_id(), this.OpcServer.getUser(), this.OpcServer.getPassword(), this.OpcServer.getDomain()); this.server.addStateListener(this); group = this.server.addGroup(); @@ -186,7 +186,7 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC Object his = accessor_value.getValue(itemId); if (!ObjectUtl.isEquals(itemState.getQuality(), QualityTypeValue.OPC_QUALITY_GOOD) && his != null) { log.warn("opc 值不健康 item: {}, 状态: {}", itemId, itemState.getQuality()); - valueAllNotNull = true; + valueAllNotNull = false; } if (!UnifiedDataAppService.isEquals(value, his)) { @@ -220,7 +220,8 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC log.warn("{} 所有内容都为空, all_null:{} ,暂定{}s", tag, all_null,5000 + random); } - ThreadUtl.sleep((long) (5000 + random)); + ThreadUtl.sleep((long) ((new Random()).nextInt(3) +1) * 1000); + break start; } else if (this.all_null < 6) { if (log.isWarnEnabled()) { log.warn(tag + "重新创建server");