EnglishУкраїнськаmRussian
Login/New
Topic with many replies

Iconics Genesis64 и OPC UA


Author Message
Written on: 18. 03. 2014 [13:34]
rxs5
Дмитрий Лыков
In tech support
Topic creator
registered since: 06.11.2013
Posts: 205
"roman" wrote:

"roman" wrote:

Сделаю эти идентификаторы ненулевыми.

Сделал!
Спасибо за новую сборку. Проверил на 2075, но не помогло. Данные клиент Genesis64 не показывает. В логе Genesis64 есть такая ошибка
HTML
UA: opc.tcp://192.168.195.97:4848/OSCADA_OPC/None - [None:None:XML]
CreateMonitoredItems(ns=2;s=DAQ.System.AutoDA.CPULoad.load: Revised queue size = 0): Good
в Ico.Fwx.Ua.Client.UaClientSession.a(String A_0, Int32 A_1, StatusCode A_2, String A_3, List`1 A_4, List`1 A_5)
   в Ico.Fwx.Ua.Client.UaClientSession.a(Int32 A_0, String A_1)
   в Ico.Fwx.Ua.Client.UaClientSession.a(MonitoredItem A_0)
   в Ico.Fwx.Ua.Client.UaClientSession.a(Subscription A_0, Boolean A_1)
   в Ico.Fwx.Ua.Client.UaClientSession.n()
   в Ico.Fwx.Ua.Client.UaClientSession.ad()
   в Ico.Fwx.Ua.Client.UaClientSession.ae()
   в Ico.Fwx.Ua.Client.UaClientSession.d(Object A_0)
   в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   в System.Threading.ThreadHelper.ThreadStart(Object obj)


Дамп Wireshark и лог Genesis64 во вложении.
Attachment

IcoFwxServer2075.exe.log.xml.zip (File type: application/x-zip-compressed, Size: 20.68 kilobytes) — 647 downloads
genesis64_opc_ua_openscada2075.pcapng (File type: application/octet-stream, Size: 120.94 kilobytes) — 686 downloads
Written on: 18. 03. 2014 [20:36]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"rxs5" wrote:

Спасибо за новую сборку. Проверил на 2075, но не помогло. Данные клиент Genesis64 не показывает. В логе Genesis64 есть такая ошибка
[html]UA: opc.tcp://192.168.195.97:4848/OSCADA_OPC/None - [None:None:XML]
CreateMonitoredItems(ns=2;s=DAQ.System.AutoDA.CPULoad.load: Revised queue size = 0): Good

Установил Revised queue size в диапазон [1...1000].

Learn, learn and learn better than work, work and work.
Written on: 19. 03. 2014 [04:54]
rxs5
Дмитрий Лыков
In tech support
Topic creator
registered since: 06.11.2013
Posts: 205
"roman" wrote:

Установил Revised queue size в диапазон [1...1000].
Проверил на 2076. Genesis64 данные отображает.
Спасибо.
Однако есть ошибки в логе Genesis64
HTML
SESSION TIMED OUT: opc.tcp://192.168.195.97:4848/OSCADA_OPC/None - [None:None:XML]

и
HTML
SESSION FAILURE DETECTED: opc.tcp://192.168.195.97:4848/OSCADA_OPC/None - [None:None:XML]

Чем они могли быть вызваны ?
Добавил во вложение дамп wireshark и лог Genesis64.

[This article was edited 2 times, at last 19.03.2014 at 04:57.]
Attachment

genesis64_opc_ua_openscada2076.pcapng (File type: application/octet-stream, Size: 127.38 kilobytes) — 683 downloads
IcoFwxServer2076.exe.log.xml.zip (File type: application/x-zip-compressed, Size: 21.49 kilobytes) — 690 downloads
Written on: 19. 03. 2014 [21:22]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"rxs5" wrote:

"roman" wrote:

Установил Revised queue size в диапазон [1...1000].
Проверил на 2076. Genesis64 данные отображает.

OK

"rxs5" wrote:

Однако есть ошибки в логе Genesis64
HTML
SESSION TIMED OUT: opc.tcp://192.168.195.97:4848/OSCADA_OPC/None - [None:None:XML]

и
HTML
SESSION FAILURE DETECTED: opc.tcp://192.168.195.97:4848/OSCADA_OPC/None - [None:None:XML]


Этому объясенения в дампе я не вижу.
Зато по прежнему вижу много Retransmission пакетов.

Learn, learn and learn better than work, work and work.
Written on: 20. 03. 2014 [17:39]
rxs5
Дмитрий Лыков
In tech support
Topic creator
registered since: 06.11.2013
Posts: 205
"roman" wrote:

Этому объясенения в дампе я не вижу.
Зато по прежнему вижу много Retransmission пакетов.
Тоже не увидел по дампу с чем связаны такие сообщения.
Из последнего: проверил чтение запись OPC UA OpenSCADA <----> Genesis64 - все работает. Но в логе Genesis64 встречаются сообщения типа warning уровня level="700"
Причем они не одиночные, как предыдущие ошибки, а повторяются.
1. UA: opc.tcp://192.168.195.97:4848/ - [None:None]
CreateSession(Session Timeout: Requested=0 Revised=60000): Good
2. PUBLISH/REPUBLISH ERROR BadSubscriptionIdInvalid 'BadSubscriptionIdInvalid'
3. Adjusting Timeouts
Attachment

IcoFwxServer2076_rw.exe.log.xml.zip (File type: application/x-zip-compressed, Size: 43.91 kilobytes) — 637 downloads
genesis64_opc_ua_openscada2076_rw.pcapng (File type: application/octet-stream, Size: 168.5 kilobytes) — 710 downloads
Written on: 20. 03. 2014 [21:10]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"rxs5" wrote:

Причем они не одиночные, как предыдущие ошибки, а повторяются.
1. UA: opc.tcp://192.168.195.97:4848/ - [None:None]
CreateSession(Session Timeout: Requested=0 Revised=60000): Good
2. PUBLISH/REPUBLISH ERROR BadSubscriptionIdInvalid 'BadSubscriptionIdInvalid'
3. Adjusting Timeouts

Это как раз прямой результат плохой связи и множества Retransmission. Когда клиент не получает Publish ответов и информации о доступных для перезапроса последовательностей. Т.е. он перезапрашивает последовательности, которых уже нет в виду очистки на глубину KeepAlive подписки.

Learn, learn and learn better than work, work and work.
Written on: 21. 12. 2014 [14:12]
rxs5
Дмитрий Лыков
In tech support
Topic creator
registered since: 06.11.2013
Posts: 205
Добрый день, Роман.
Наблюдаю при работе OPC UA сервер Openscada <-> OPC UA клиент Genesis64 постоянный рост числа подключенных клиентов.
Сделал простую проверку и записал дамп в wireshark (во вложении).
Проверка - установил макс. число клиентов 3, и записывал дамп в wireshark до момента, пока в openscada не появилось 2 закрытых по лимиту соединения (сверх тех открытых 3, что уже были выделены для теста). Весь процесс по времени занял около 30 секунд.
Количество доступных соединений, выделенных в Openscada не играет роли для Genesis 64 - ставил 75, и они тоже открываются все, спустя некоторое время. Увеличивать число открытых соединений это не решение, желательно понять причину такого поведения и устранить ее.

По дампу, мои поиски (сервер .21, клиент .175)
1-е соединение
24 - открытие сессии 1
79 - создание подписки
608 - запрос клиента удалить подписку
612 - запрос клиента закрытие сессии 1

2-е соединение
641 - открытие сессии
698 - создание подписки
1268 - запрос клиента на удаление подписки
1272 - запрос клиента на закрытие сессии 2

3-е соединение
1297 - открытие сессии 3
1350 - создание подписки
1661 - запрос клиента на удаление подписки
1666 - запрос клиента на закрытие сессии 3

Вижу следующее: клиент делает запрос на удаление подписки и закрытие сессии и не получает от сервера ответа и подтверждение. Поэтому сессия и подписки остаются среди открытых. А клиент, для получения данных, открывает новое соединение и новую подписку. И так по нарастающей, пока не будет выбран весь лимит на соединения.

Для примера OPC UA сервер Openscada <-> OPC UA клиент UAexpert
На запросы клиента на удаление подписки от сервера приходит ответ
UA Secure Conversation Message: DeleteSubscriptionsResponse

Также на запросы клиента на закрытие сессии от сервера приходит ответ
UA Secure Conversation Message: CloseSessionResponse


Хотелось бы получить рекомендации - почему при использовании клиента Genesis64 c OPC UA из Openscada сервер не удаляет подписки и не закрывает сессии, как это запрашивает клиент. И что с этим делать.
Attachment

wireshark_opcua_limit_exceeded_genesis64.pcapng (File type: application/octet-stream, Size: 278.01 kilobytes) — 645 downloads
wireshark_opcua_limit_normal_uaxpert.pcapng (File type: application/octet-stream, Size: 26.95 kilobytes) — 634 downloads
Written on: 21. 12. 2014 [14:38]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"rxs5" wrote:

Хотелось бы получить рекомендации - почему при использовании клиента Genesis64 c OPC UA из Openscada сервер не удаляет подписки и не закрывает сессии, как это запрашивает клиент. И что с этим делать.

Хотелось-бы чтобы Вы начали записывать, раз забываете, оговоренное ранее или перечитывайте тему!
А именно, уже многократно оговаривалось:
- сервер закрывает подключения только по прямым командам закрытия от клиента;
- сервер сам никогда не закрывает подписки и сеансы, т.е. только по команде клиента; сеанс может быть удалён сервером только по таймауту отсутствия активности, который достаточно большой;
- закрытие сеанса или подписок никогда не приводит к закрытию подключения, который закрывается запросом "CloseSecureChannel";
- для случаев внезапного исчезновения клиента или "забывания" им про ранние подключения есть KeepAlive время, которое Вы категарически не ставили;
- у меня нет проблем с ростом подключений на UAExpert, что как минимум подтверждает корректность работы сервера.

"rxs5" wrote:

Для примера OPC UA сервер Openscada <-> OPC UA клиент UAexpert
На запросы клиента на удаление подписки от сервера приходит ответ
UA Secure Conversation Message: DeleteSubscriptionsResponse

Также на запросы клиента на закрытие сессии от сервера приходит ответ
UA Secure Conversation Message: CloseSessionResponse


У меня приходят.

Learn, learn and learn better than work, work and work.
Written on: 21. 12. 2014 [14:58]
rxs5
Дмитрий Лыков
In tech support
Topic creator
registered since: 06.11.2013
Posts: 205
Роман, ведите себя цивилизованно и уважительно. Без криков со знаками !!! И давайте вместо выяснения кто умнее решать вопрос.
сервер закрывает подключения только по прямым командам закрытия от клиента;

Вы видели дамп? Я считал, что после того, как расписал по номерам пакетов что и когда происходит, вопроса о порядке взаимодействия не возникнет.
Клиент Genesis64 запрос на удаление подписки делает. Что отвечает сервер?
Клиент Genesis64 запрос на закрытие сессии делает. Что отвечает сервер?

- для случаев внезапного исчезновения клиента или "забывания" им про ранние подключения есть KeepAlive время, которое Вы категарически не ставили;

Каким образом KeepAlive поможет серверу отвечать на запросы клиента?
И в добавление к этому, насколько я помню, как раз Вы и советовали KeepAlive устанавливать в 0 здесь http://oscada.org/ua/forum/posts//indusoft_web_studio_i_opc_ua//2/

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

Это подтверждает, что openscada<->uaexpert имеют согласованный порядок общения, т.е. и клиент и сервер корректно обрабатывают сообщения.
Делать из этого вывод, что если с одним клиентом все работает, то виноваты все кроме сервера не продуктивно.

И еще раз. Последний. Это не претензия к Вам и не претензия к ПО. Я вижу некорректную ситуацию работы клиента и сервера, сообщаю о ней, чтобы обсудить варианты решения.

[This article was edited 1 times, at last 21.12.2014 at 14:59.]
Written on: 21. 12. 2014 [15:04]
rxs5
Дмитрий Лыков
In tech support
Topic creator
registered since: 06.11.2013
Posts: 205
У меня приходят.
Так и я написал, что в случае UAexpert на запрос клиента сервер отвечает нормально и удаляет подписку, и закрывает сессию. В случае клиента Genesis64 запрос на сервер есть, ответа от сервера нет. В этом и суть предыдущего моего сообщения с примерами.
Если это некорректное поведение клиента, то не пойму в чем оно выражается. Клиент Genesis64 запросы от отключение делает, судя по дампу. Если можете указать в чем именно некорректность Genesis64 - сообщу разработчикам.

[This article was edited 1 times, at last 21.12.2014 at 15:06.]



2056