无法将大量数据写入Kepware

时间:2019-03-24 09:01:47

标签: opc milo

当我通过milo将数据写入kepware服务器时,有时某些数据无法成功写入。但是服务器返回了

  

StatusCode {名称=好,值= 0x00000000,质量=好}

服务器未显示我编写的数据。
预先感谢您的帮助

  1. 单线程不起作用。
  2. 开始写入数据时创建新客户端。
  3. 只有一个客户端会响应写作。

所有这些都失败了。

 mWriteClient = new OPCUAClientRunner(KSOPCUASubscription.this).createClient();
                mWriteClient.connect().get();
            } catch (Exception e) {
                e.printStackTrace();
                logger.error("OPCUAClient connect Exception", e);
                return ;
            }
            logger.info("Wrote identifier: " + identifier);
            List<NodeId> nodeIds = ImmutableList.of(new NodeId(namespaceIndex, identifier));//Int32"t|bbb"

            Variant v = new Variant(value);

            // don't write status or timestamps
            DataValue dv = new DataValue(v, null, null);
            logger.info("OPCUAClient begin write");
            // write asynchronously....
            CompletableFuture<List<StatusCode>> f =
                    mWriteClient.writeValues(nodeIds, ImmutableList.of(dv));

            // ...but block for the results so we write in order
            List<StatusCode> statusCodes = null;
            try {
                statusCodes = f.get();
            } catch (InterruptedException e) {
                e.printStackTrace();
                logger.error("OPCUAClient write get response Exception", e);
            } catch (ExecutionException e) {
                e.printStackTrace();
                logger.error("OPCUAClient write get response Exception", e);
            }
            StatusCode status = statusCodes.get(0);
            logger.info("Wrote status: " + status.toString());
            if (status.isGood()) {
                logger.info("Wrote '{}' to nodeId={}", v, nodeIds.get(0));
            }

1 个答案:

答案 0 :(得分:0)

除非您实际上没有写出您声称要写的值,否则服务器发出的StatusCode为“良好”表示您在客户端没有做错任何事情。

也许您可以捕获与Wireshark的交换,以进一步证明问题出在服务器端。