УкраїнськаEnglishmRussian
Вход/Новый
В теме много сообщений

[BugWrong] OPC-UA запись атрибута


Автор Сообщение
Сообщение создано: 24. 12. 2012 [22:03]
Vasili
Vasili Pahutsa
Создатель темы
Зарегистрирован(а) с: 28.12.2011
Сообщения: 8
При подключении к Unified Automation OPC-UA Demo server последней версии чтение атрибутов проходит нормально, запись - не работает
То же самое при подключении к OPC-UA серверу контроллера br-automation.
UAExpert нормально пишет и в Demo-server и в контроллер
openscada 0.8.1 собрана из исходников редакция 1945
Сообщение создано: 25. 12. 2012 [08:37]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"Vasili" wrote:

При подключении к Unified Automation OPC-UA Demo server последней версии чтение атрибутов проходит нормально, запись - не работает

У меня запись на собственный OPC-UA сервер работает. На сторонние возможности проверить сейчас нет.
Включайте дебиг режим "-DOSC_DEBUG=5" для модуля OPC-UA и выясняйте.

Learn, learn and learn better than work, work and work.
Сообщение создано: 25. 12. 2012 [11:30]
Vasili
Vasili Pahutsa
Создатель темы
Зарегистрирован(а) с: 28.12.2011
Сообщения: 8
Запись на собственный сервер и у меня работает. Это я в первую очередь проверил.
Подскажите, пожалуйста, подробней, как именно -DOSC_DEBUG включается, что-то не могу найти про это на сайте
Сообщение создано: 25. 12. 2012 [12:20]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"Vasili" wrote:

Подскажите, пожалуйста, подробней, как именно -DOSC_DEBUG включается, что-то не могу найти про это на сайте

Собирайте указанный модуль командой:
$ make CXXFLAGS="-g -O2 -DOSC_DEBUG=5"

Learn, learn and learn better than work, work and work.
Сообщение создано: 25. 12. 2012 [13:34]
Vasili
Vasili Pahutsa
Создатель темы
Зарегистрирован(а) с: 28.12.2011
Сообщения: 8
Собрал и запустил модуль в DEBUG-режиме
При попытке записи булевой переменной в UADemoServer вижу следующее:

1|/test_demo/sub_UI/mod_QTCfg/ | root| Установлен '/test_demo/sub_DAQ/mod_OPC_UA/cntr_UADemo/prm_par1/%2fval%2f4_SimulationActivate' в '0'!
TEST 13: Request 'Write':
4d 53 47 46 76 00 00 00 a3 11 61 00 01 00 00 00
b1 01 00 00 7f 01 00 00 01 00 a1 02 02 00 00 85
11 61 00 34 fe 4a 8a 91 e2 cd 01 7e 01 00 00 00
00 00 00 ff ff ff ff b8 0b 00 00 00 00 00 01 00
00 00 03 04 00 12 00 00 00 53 69 6d 75 6c 61 74
69 6f 6e 41 63 74 69 76 61 74 65 0d 00 00 00 ff
ff ff ff 0d 01 00 02 fe 4a 8a 91 e2 cd 01 02 fe
4a 8a 91 e2 cd 01
TEST 13a: Response 'Write':
4d 53 47 46 40 00 00 00 a3 11 61 00 01 00 00 00
b2 01 00 00 7f 01 00 00 01 00 a4 02 68 07 43 8a
91 e2 cd 01 7e 01 00 00 00 00 00 00 00 00 00 00
00 00 00 00 01 00 00 00 00 00 73 80 00 00 00 00

однако мне это ни о чем не говорит.
Сообщение создано: 25. 12. 2012 [14:20]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"Vasili" wrote:

однако мне это ни о чем не говорит.

Ну так, разбирайтесь, раз Вам нужно.
А вообще говорит он такое:
4D 53 47 46 - SecureChannel message (MSGF).
40 00 00 00 - Message chunk size 64
a3 11 61 00 - Secure channel identifier
01 00 00 00 - Symmetric Algorithm Security Header : TokenId
> Sequence header
b2 01 00 00 - Sequence number
7f 01 00 00 - RequestId
01 00 a4 02 - TypeId (676 - WriteResponse)
>> Body
>>> RespondHeader
68 07 43 8a 91 e2 cd 01 - timestamp
7e 01 00 00 - requestHandle
00 00 00 00 - StatusCode
00 - serviceDiagnostics
00 00 00 00 - stringTable
00 00 00 - Extensible parameter.NodeId (0)
>>> results []
01 00 00 00 - Numbers 1
>>>> value (StatusCode)
00 - Encoding Mask (0)
00 00 73 80 - OpcUa_BadWriteNotSupported
>>> diagnosticInfos []
00 00 00 00

Что означает, что сервер ни разу не поддерживает запись о чём и сообщает. Собственно код данной ошибки (0x80730000) должно быть видно в атрибуте "Error".

Насколько мне помнится ни один из доступных свободно OPC-UA тестовых серверов запись и не поддерживал, почему у меня даже полной разборки операции "Write" не сохранилось, а поддержку я её реализовал в собственном OPC-UA сервере OpenSCADA.

Learn, learn and learn better than work, work and work.
Сообщение создано: 25. 12. 2012 [16:25]
Vasili
Vasili Pahutsa
Создатель темы
Зарегистрирован(а) с: 28.12.2011
Сообщения: 8
Атрибут "Error" не показывает никакой ошибки при записи и вообще ведет себя некорректно - если отключить сервер во время опроса, потом включить, то "0x80ab0000:Ошибка удалённого хоста" так и висит до перезапуска openscada, не помогает ни выкл/вкл параметра, ни выкл/вкл контроллера.

UADemoServer поддерживает запись на сегодняшний день - по крайней мере, запись из UAExpert работает нормально.

Аналогичная ситуация (00 00 73 80 в логе) при записи на OPC-UA сервер br-automation, который я и хочу подружить с openscada.
Сервер br-automation из UAExpert пишется нормально.
Сообщение создано: 25. 12. 2012 [17:03]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"Vasili" wrote:

Атрибут "Error" не показывает никакой ошибки при записи и вообще ведет себя некорректно - если отключить сервер во время опроса, потом включить, то "0x80ab0000:Ошибка удалённого хоста" так и висит до перезапуска openscada, не помогает ни выкл/вкл параметра, ни выкл/вкл контроллера.

Значит ошибка записи затирается при чтении атрибута.
Перезапуск объекта контроллера должен помогать.

"Vasili" wrote:

UADemoServer поддерживает запись на сегодняшний день - по крайней мере, запись из UAExpert работает нормально.
Аналогичная ситуация (00 00 73 80 в логе) при записи на OPC-UA сервер br-automation, который я и хочу подружить с openscada.
Сервер br-automation из UAExpert пишется нормально.

У меня в наличии живых устройств с OPC-UA не было поэтому так и работает.
В целом-же OPC-UA сильно закрыт и хорошо если документ со спецификацией удаётся получить.
Реальная же его работа подчас отличается от спецификации, следовательно без наличия реального оборудования многих функций не реализуешь и не проверишь.
Вывод: Если Вам этот протокол сейчас нужен то Вам и разбираться или финансировать эти разборки удалённо.

Learn, learn and learn better than work, work and work.
Сообщение создано: 09. 01. 2013 [20:32]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"roman" wrote:

У меня в наличии живых устройств с OPC-UA не было поэтому так и работает.
В целом-же OPC-UA сильно закрыт и хорошо если документ со спецификацией удаётся получить.
Реальная же его работа подчас отличается от спецификации, следовательно без наличия реального оборудования многих функций не реализуешь и не проверишь.

На данный момент от UaExpert у меня только работает линуксовый клиент и ни одного сервера.
Виндовый демосервер под Wine просто зависает, ранние версии ещё работали.
Линуксовые тестовые сервера из пакета "Unified Automation UA SDK ANSI C Professional" просто и сразу останавливаются с ошибкой:
UA Server: Main stopped due to ERROR! (0x80050000)

Так что OPC UA в OpenSCADA ещё очень чудно работает, по сравнению со всем этим. :)

Learn, learn and learn better than work, work and work.
Сообщение создано: 09. 01. 2013 [22:34]
Vasili
Vasili Pahutsa
Создатель темы
Зарегистрирован(а) с: 28.12.2011
Сообщения: 8
Спасибо за помощь, Роман. Ситуация ясна.
Под windows UaExpert работает нормально с реальным оборудованием, имеющимся у меня.
Буду пытаться самостоятельно разобраться с OPC-UA и с кодом OpenSCADA.
Это пока единственный нормальный вариант подключить контроллер B&R к OpenSCADA.
Вскрывать собственный закрытый протокол B&R кажется менее реальным. По OPC-UA хоть кое-что можно найти в сети.

[Сообщение редактировалось 1 раз(а), в последний раз 09.01.2013 в 22:36.]



7774