Не могу записать количество данных в kepware - PullRequest
1 голос
/ 24 марта 2019

Когда я пишу данные на сервер kepware по милу, иногда некоторые данные не могут быть успешно записаны.Но сервер вернул

StatusCode {name = Good, value = 0x00000000, quality = good}

Сервер не отображал данные, которые я написал.
Заранее спасибо за любую помощь

  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 голосов
/ 25 марта 2019

Если вы на самом деле не пишете значение, которое, как вы утверждаете, пишете с сервера, StatusCode of Good означает, что вы не делаете ничего плохого на стороне клиента.

Возможно, вы сможете зафиксировать обменс Wireshark, чтобы доказать, что проблема на стороне сервера.

...