Не могу записать объем данных в kepware

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

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));
            }

person weiweizhou    schedule 24.03.2019    source источник


Ответы (1)


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

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

person Kevin Herron    schedule 25.03.2019