2013-12-11 3 views
0

Я пытаюсь подключиться к удаленной среде, используя стек OPC UA Java из OPC Foundation. значения Чтение работает правильно, для этого я использую следующий код:Напишите значение с OPC UA Java (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); 

В записи команда запускается без ошибок, но значение никогда не изменяется. Может кто-нибудь мне помочь?

ответ

0

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

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

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

+0

я изменил его на нуль, изменяя значение разве и ответ: WriteResponse (ID = 1474131049) ResponseHeader = ResponseHeader (ID = 676105376) ServiceDiagnostics = DiagnosticInfo (ID = 967078155) localizedText = NULL локаль = NULL innerDiagnosticInfo = NULL symbolicId = NULL innerStatusCode = NULL additionalInfo = NULL stringTable = NULL StringArray = класс java.lang.String [0] NamespaceURI = NULL stringTable = класс java.lang.String [0] – user3083205

+0

RequestHandle = UnsignedInteger (id = 1526310589) значение = 1 Отметка = DateTime (ID = 1925333515) значение = 130393207472672000 AdditionalHeader = NULL ServiceResult = StatusCode (ID = 2163771) значение = 0 DiagnosticInfos = Класс org.opcfoundation.ua.builtintypes.DiagnosticInfo [0] Результаты = класс org.opcfoundation.ua.builtintypes.StatusCode [1] [0] = StatusCode (id = 2006760845) value = -2139881472 – user3083205

+0

Лучше напечатать StatusCodes как строку: он скажет вам фактический код, например response.getResults() [0] –

Смежные вопросы