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

Iconics Genesis64 и OPC UA


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

Добавил бравзинг при нулевом ReferenceTypeId, обработку которого я по сути по догадкам делал, поскольку прямо это не описано.
2067 Дерево узлов отобразилось. Однако при переходе в DAQ уже ничего не отображается. Еще замечу, что браузинг проходит долго - минуты 1-2-3. В то время, как обычно с другими клиентами и серверами это секунды.
Добавил дамп wireshark и лог Genesis64.
Из ошибок в логе Genesis64
1. Так и осталась ошибка подписки Subscription Create FAILED
HTML
<message>ServiceResultException : Subscription has not been created.</message>
  <details>
    <exceptionStackTrace>Opc.Ua.ServiceResultException
   в Opc.Ua.Client.Subscription.VerifySubscriptionState(Boolean created)
   в Opc.Ua.Client.Subscription.CreateItems()
   в Opc.Ua.Client.Subscription.Create()
   в Ico.Fwx.Ua.Client.UaClientSession.s()
</exceptionStackTrace>
    <stackTrace>   в Ico.Fwx.Ua.Client.UaClientSession.s()
   в Ico.Fwx.Ua.Client.UaClientSession.get_Connected()
   в Ico.Fwx.Ua.Client.UaClientSession.f(String serverUrl)
   в 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)
</stackTrace>

2. Еще ошибка, видимо она связана с тем, что в DAQ ничего не отображается при браузинге.
HTML
>UA: opc.tcp://192.168.195.97:4848/OSCADA_OPC/None - [None:None:XML]
TranslateBrowsePaths(): Good
[0] Start=i=85; Path=/2:DAQ  --&gt; BadNoMatch
 <stackTrace>   в 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(StatusCode A_0, BrowsePathCollection A_1, BrowsePathResultCollection A_2)
   в Ico.Fwx.Ua.Client.UaClientSession.a(BrowsePathCollection A_0, List`1 A_1, List`1&amp; A_2, List`1&amp; A_3)
   в Ico.Fwx.Ua.Client.UaClientSession.TranslateBrowsePathsToNodeIds(List`1 parsedPointNames, List`1 requiredNodeClasses, List`1 forceTranslationFromServer, NodeId[]&amp; nodeIds, StatusCode[]&amp; results)
   в Ico.Fwx.Ua.Client.UaClientSession.TranslateBrowsePathsToNodeIds(List`1 operations, NodeId[]&amp; nodeIds, StatusCode[]&amp; results)
   в Ico.Fwx.Ua.Client.UaClientSession.k(OperationList A_0)
   в Ico.Fwx.Ua.Client.UaClientSession.l(OperationList A_0)
   в Ico.Fwx.Ua.Client.UaClientSession.i()
   в 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)
</stackTrace>
Attachment

IcoFwxServer2067.exe.log.xml.zip (File type: application/x-zip-compressed, Size: 22.97 kilobytes) — 502 downloads
genesis64_opc_ua_openscada2067.pcapng (File type: application/octet-stream, Size: 182.12 kilobytes) — 557 downloads
Written on: 10. 03. 2014 [16:31]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"rxs5" wrote:

2067 Дерево узлов отобразилось. Однако при переходе в DAQ уже ничего не отображается. Еще замечу, что браузинг проходит долго - минуты 1-2-3. В то время, как обычно с другими клиентами и серверами это секунды.

В целом там опять проблемы со связью, поскольку много "Retransmission".
DAQ может не отображаться в виду проблем со связью или превратного отношения клиента к узлу "DAQ", а именно попытки преобразования его из некоего пути в NodeId, хотя он изначально NodeId и является.
Т.е. то, что он говорит
"rxs5" wrote:
[0] Start=i=85; Path=/2:DAQ --> BadNoMatch

Это ответ на функцию "TranslateBrowsePathsToNodeIds" и такой ответ в случае других клиентов говорит им, что это и есть NodeId. Чего оно ему такое не говорит я не знаю.

"rxs5" wrote:

[html] <message>ServiceResultException : Subscription has not been created.</message>

Не увидел причин таких заявлений с его стороны.
Разница между DemoСервером, только в повторном запросе CreateSubscription c OpenSCADA, а разница в ответе только в том, что ID Subscription = 0, но это, согласно спецификации не ошибка.
Однако превратность отношения к 0 идентификатору подтверждается проблемой-же клиента.
А именно: он таки забывает про ранее созданные сеансы и тупо начинает новые, не закрывая старые. При чём это видно и по сеансу с ДемоСервером. И в момент создания нового сеанса и создания нового Subscription, такой вызов всего один, поскольку ID Подписки не нулевой. И кстати в результате этой каши накапливается поток Publish, на которые отвечают и предыдущие-забытые сеансы.

По поводу "TranslateBrowsePathsToNodeIds" и пути как класс я погляжу и может просто буду отвечать тем-же NodeId.

По поводу Subscription == 0 то это не ошибка:

The Server-assigned identifier for the Subscription (see 7.13 for IntegerId
definition). This identifier shall be unique for the entire Server, not just for the
Session, in order to allow the Subscription to be transferred to another Session
using the TransferSubscriptions service.


А значит ругань на это это проблема клиента, кроме того потом он их с запасом наплодит кучу.

Learn, learn and learn better than work, work and work.
Written on: 10. 03. 2014 [19:00]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"roman" wrote:

DAQ может не отображаться в виду проблем со связью или превратного отношения клиента к узлу "DAQ", а именно попытки преобразования его из некоего пути в NodeId, хотя он изначально NodeId и является.
Т.е. то, что он говорит
"rxs5" wrote:
[0] Start=i=85; Path=/2:DAQ --> BadNoMatch

Это ответ на функцию "TranslateBrowsePathsToNodeIds" и такой ответ в случае других клиентов говорит им, что это и есть NodeId. Чего оно ему такое не говорит я не знаю.

Судя по всему запрашивает расшифровку BrowseName для узла "DAQ", что опять-же странно для клиента и никто так не делает, поскольку сам NodeId там-же рядом и лежит.
Вызов TranslateBrowsePathsToNodeIds пока только встречал для разного рода мета-атрибутов, например, Icons к данному узлу.
Запишите дамп бравзинга узла "Objects" для ДемоСервера или Ignition (на Ignition похожим к "DAQ" в OpenSCADA объект "Devices" представлен).

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

Судя по всему запрашивает расшифровку BrowseName для узла "DAQ", что опять-же странно для клиента и никто так не делает, поскольку сам NodeId там-же рядом и лежит.
Вызов TranslateBrowsePathsToNodeIds пока только встречал для разного рода мета-атрибутов, например, Icons к данному узлу.
Запишите дамп бравзинга узла "Objects" для ДемоСервера или Ignition (на Ignition похожим к "DAQ" в OpenSCADA объект "Devices" представлен).

Что заметил - Genesis64 не отображает Root папку для ДемоСервера, а сразу отображается содержимое Objects. Скриншоты во вложении.
Дампы сделал.
Не знаю, насколько соответствуют спецификации действия клиента Genesis64, но если менять что-то под него, то только при условии, что работоспособность других клиентов OPC UA не будет нарушена.
Attachment

uaexpert_demoserver.png (File type: image/png, Size: 10.11 kilobytes) — 686 downloads
genesis64_demoserver.png (File type: image/png, Size: 49.49 kilobytes) — 703 downloads
IcoFwxServer_DemoServer.exe.log.xml.zip (File type: application/x-zip-compressed, Size: 18.91 kilobytes) — 480 downloads
genesis64_opc_ua_DemoServer.pcapng (File type: application/octet-stream, Size: 103.01 kilobytes) — 1536 downloads
Written on: 11. 03. 2014 [22:25]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"rxs5" wrote:

Что заметил - Genesis64 не отображает Root папку для ДемоСервера, а сразу отображается содержимое Objects. Скриншоты во вложении.
Дампы сделал.

Не увидел в дампе бравзинга "Objects" или "Root". Всё там бравзинг типов сразу после создания сеанса и до создания подписки.

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

"rxs5" wrote:

Что заметил - Genesis64 не отображает Root папку для ДемоСервера, а сразу отображается содержимое Objects. Скриншоты во вложении.
Дампы сделал.

Не увидел в дампе бравзинга "Objects" или "Root". Всё там бравзинг типов сразу после создания сеанса и до создания подписки.
Тем не менее это полный дамп. Значит так клиент Genesis64 работает. Что еще можно сделать ?
Written on: 12. 03. 2014 [11:56]
rxs5
Дмитрий Лыков
In tech support
Topic creator
registered since: 06.11.2013
Posts: 205
"rxs5" wrote:

Тем не менее это полный дамп. Значит так клиент Genesis64 работает. Что еще можно сделать ?
Не понимаю еще вот чего. В сообщении UA Secure Conversation Message: BrowseRequest для ДемоСервера есть поля
AuthenticationToken: NodeId
NodeId Namespace Id: 0
Для OPC UA в OpenSCADA нет такого запроса.
Written on: 12. 03. 2014 [12:28]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"rxs5" wrote:

Не понимаю еще вот чего. В сообщении UA Secure Conversation Message: BrowseRequest для ДемоСервера есть поля
AuthenticationToken: NodeId
NodeId Namespace Id: 0
Для OPC UA в OpenSCADA нет такого запроса.

Опять!!
Уже десять раз говорил, что для двухбайтовой записи NodeId, NS=0 подразумевается!

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

Уже десять раз говорил, что для двухбайтовой записи NodeId, NS=0 подразумевается!
Это не ответ от Серверов, а запрос от клиента к разным серверам. Мне кажется странным, что запрос у клиента меняется в зависимости от сервера.
Written on: 12. 03. 2014 [14:07]
rxs5
Дмитрий Лыков
In tech support
Topic creator
registered since: 06.11.2013
Posts: 205
"rxs5" wrote:

Что заметил - Genesis64 не отображает Root папку для ДемоСервера, а сразу отображается содержимое Objects. Скриншоты во вложении.
Дампы сделал.
Не знаю, насколько соответствуют спецификации действия клиента Genesis64, но если менять что-то под него, то только при условии, что работоспособность других клиентов OPC UA не будет нарушена.
Для OPC UA сервера Ignition такая же ситуация - при открытии строки адреса OPC UA сервера в браузере Genesis64 сразу открывается папка Objects и она
в Genesis64 видна как корневая папка. Почему он также не может сделать для OpenSCADA и показать содержимое папки Objects непонятно.
Дамп и лог Genesis64 записал.
Attachment

genesis64_opc_ua_Ignition.pcapng (File type: application/octet-stream, Size: 130.81 kilobytes) — 574 downloads
IcoFwxServer_IgnitionOPCUA.exe.log.xml.zip (File type: application/x-zip-compressed, Size: 2.03 kilobytes) — 508 downloads



20963