Написать значение с помощью OPC UA Java (OPC Foundation)

Я пытаюсь подключиться к удаленной среде с помощью стека Java OPC UA из OPC Foundation. Чтение значений работает правильно, для этого я использую следующий код:

NodeId nodeId= NodeId.get(IdType.String, 2, "TYPES!M!MULTIPLYER!MU_79.MULTIPLYER_BIAS");
ReadResponse res = mySessionChannel.Read(null, 500.0, TimestampsToReturn.Source, new ReadValueId(nodeId, Attributes.Value, null, null));

Теперь я пытаюсь использовать команду записи для установки этой (входной) переменной следующим образом:

NodeId nodeId = NodeId.get(IdType.String, 2, "TYPES!M!MULTIPLYER!MU_79.MULTIPLYER_BIAS");
DataValue dataValue = new DataValue(new Variant(999));
WriteValue writeValue[] = new WriteValue[1];
writeValue[0] = new WriteValue(nodeId, Attributes.Value, "0", dataValue);

RequestHeader requestHeader = new RequestHeader(nodeId, null, null, null, null, null, null);
WriteRequest writeRequest = new WriteRequest(requestHeader, writeValue);
WriteResponse response = mySessionChannel.Write(writeRequest);

Команда write выполняется без ошибок, но значение никогда не изменяется. Кто-нибудь может мне помочь?

1 ответ

Вы определяете "0" как IndexRange (3-й параметр WriteValue). Я полагаю, у вас есть скалярная переменная, поэтому вы должны просто использовать ноль вместо этого.

Также вам нужно проверить ответ, чтобы увидеть, действительно ли он успешен или нет.

E: Параметр записи должен соответствовать DataType узла Variable.

Другие вопросы по тегам