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

Iconics Genesis64 и OPC UA


Author Message
Written on: 04. 03. 2014 [14:34]
rxs5
Дмитрий Лыков
In tech support
Topic creator
registered since: 06.11.2013
Posts: 205
Из прочих различающихся параметров могу выделить такой.
В сообщениях UA Secure Conversation Message: CreateSessionResponse
В Unified Automation
SessionId: NodeId
NodeId EncodingMask: URI (0x04)
NodeId Namespace Id: 1
Guid: f0c34b4a-a7be-6e45-908c-225a8d3ac0df
AuthenticationToken: NodeId
NodeId EncodingMask: Numeric of arbitrary length (0x02)
NodeId Namespace Id: 0
NodeId Identifier Numeric: 1113836920

В OpenSCADA
SessionId: NodeId
NodeId EncodingMask: Two byte encoded Numeric (0x00)
NodeId Identifier Numeric: 8
AuthenticationToken: NodeId
NodeId EncodingMask: Two byte encoded Numeric (0x00)
NodeId Identifier Numeric: 8

В Ignition
SessionId: NodeId
NodeId EncodingMask: Numeric of arbitrary length (0x02)
NodeId Namespace Id: 1337
NodeId Identifier Numeric: 7
AuthenticationToken: NodeId
NodeId EncodingMask: Numeric of arbitrary length (0x02)
NodeId Namespace Id: 1337
NodeId Identifier Numeric: 8

Параметр Namespace в OPC UA OpenSCADA отсутствует. Про этот параметр
The NodeId is a builtin DataType. However, there is a structure behind this DataType as described in Fig. 2.35. The first part of the NodeId is the NamespaceIndex, followed by an be a numeric value, a GUID, a string, or an opaque value (byte string). Together with the NamespaceIndex it uniquely identifies a Node in an OPC UA server.


И подробнее в книге http://books.google.ru/books?id=de9uLdXKj1IC&printsec=frontcover&hl=ru&source=gbs_ge_summary_r&cad=0#v=onepage&q=Specific%20Built-in%20DataTypes&f=false

[This article was edited 3 times, at last 04.03.2014 at 14:37.]
Written on: 04. 03. 2014 [19:38]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"rxs5" wrote:

Параметр Namespace в OPC UA OpenSCADA отсутствует.

Да, отсутствует. Точнее он нулевой, а для NodeId используется первый, простейший тип с нулевым NS и идентификатором от 0 до 255.

"rxs5" wrote:

Про этот параметр

Я в курсе и использованный вариант "0" корректен.

Но добавил NS=100 для проверки.

P.S. Судя по дампу, Genesis64 таким поведением плодит кучу сеансов, не закрывая их. Погляжу на предмет закрытия их по таймауту.

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

"rxs5" wrote:

Про этот параметр

Я в курсе и использованный вариант "0" корректен.

Но добавил NS=100 для проверки.

P.S. Судя по дампу, Genesis64 таким поведением плодит кучу сеансов, не закрывая их. Погляжу на предмет закрытия их по таймауту.
Я хотел 2-ю часть написать после ответа про Namespace.
Там еще есть отличия: в Genesis64 только 1 readrequest/readresponse c OpenSCADA OPC UA, а в других OPC UA серверах (ignition и unified automation) 3 readrequest/readresponse после чего в них идет browserequest/browseresponse. А вот при подключении Genesis64 к OpenSCADA OPC UA нет browserequest/browseresponse. Думаю это происходит из-за того, что клиент Genesis64 не собрал достаточно данных, и потому вышел на session id и node id в которых везде есть namespace, кроме OpenSCADA OPC UA.
И да, действительно не происходит закрытия канала при общении Genesis64 c OpenSCADA OPC UA - после единственного readrequest/readresponse идет обмен поTCP и потом снова Hello. Думаю, что для клиента Genesis64 что-то не так прошло при обмене (нет 2, 3 readrequest/readresponse и других пакетов) и он делает запрос снова.
Проверю 2061 немного позже и напишу результат.

[This article was edited 1 times, at last 05.03.2014 at 12:40.]
Written on: 05. 03. 2014 [16:37]
rxs5
Дмитрий Лыков
In tech support
Topic creator
registered since: 06.11.2013
Posts: 205
"rxs5" wrote:

Проверю 2061 немного позже и напишу результат.
Проверил. Не помогло. Как и раньше только 1 readrequest/readresponse c OpenSCADA OPC UA и нет browserequest/browseresponse.
Хотя, увидел Namespace только в SessionId: NodeId, а в AuthenticationToken: NodeId он так и не появился.
И еще, может NodeId Namespace Id это не случайное значение, а от чего-то зависит ?
Новый дамп во вложении.

[This article was edited 1 times, at last 05.03.2014 at 16:37.]
Attachment

genesis64_opc_ua_openscada5.pcapng (File type: application/octet-stream, Size: 30.79 kilobytes) — 554 downloads
Written on: 05. 03. 2014 [17:21]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"rxs5" wrote:

Хотя, увидел Namespace только в SessionId: NodeId, а в AuthenticationToken: NodeId он так и не появился.

Ну так, о AuthenticationToken речи не шло. Кроме того NS в нём отличается, в примерах.

"rxs5" wrote:

И еще, может NodeId Namespace Id это не случайное значение, а от чего-то зависит ?

Не встречал об этом никакой информации и использовал по назначению, только для выделения узлов подсистемы DAQ.
Кроме того проблема только с Genesis.

Может он чего-то особого от сертификата ожидает и тупо про это молчит. Попробуйте от него консоли добиться и нормальных сообщений.

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

"rxs5" wrote:

Хотя, увидел Namespace только в SessionId: NodeId, а в AuthenticationToken: NodeId он так и не появился.

Ну так, о AuthenticationToken речи не шло. Кроме того NS в нём отличается, в примерах.
Как не шло речи, если в примерах они указаны были ? И да, отличаются, что может подтверждать, что они не просто так указываются, а с чем-то связаны.
Written on: 05. 03. 2014 [19:11]
rxs5
Дмитрий Лыков
In tech support
Topic creator
registered since: 06.11.2013
Posts: 205
Нашел в логах Genesis64 ошибку
HTML
<record level="800" timestamp="2014-03-05T16:52:54.859" processID="6532" threadID="86" file="Unknown" lineNo="0" SeqNo="919666" colNo="0" processName="C:\Program Files\ICONICS\GENESIS64\Components\IcoFwxServer.exe" threadName="Session Worker: opc.tcp://192.168.195.97:4848 - [None:None]" appDomainID="50081034" appDomainName="IcoFwxServer.exe" assemblyName="IcoUaClient, Version=10.80.118.0, Culture=neutral, PublicKeyToken=58aa7495915e8ed4" assemblyCodebase="file:///c:/program files/ICONICS/genesis64/components/IcoUaClient.DLL" namespace="Ico.Fwx.Ua.Client" class="UaClientSession" method="a(String A_0, PasswordCache A_1, Boolean A_2, String&amp; A_3)">
  <message>Cannot open a session with opc.tcp://192.168.195.97:4848 - [None:None], The first namespace in the table must be the OPC-UA namespace.</message>
</record>
<record level="800" timestamp="2014-03-05T16:52:54.860" processID="6532" threadID="86" file="Unknown" lineNo="0" SeqNo="920493" colNo="0" processName="C:\Program Files\ICONICS\GENESIS64\Components\IcoFwxServer.exe" threadName="Session Worker: opc.tcp://192.168.195.97:4848 - [None:None]" appDomainID="50081034" appDomainName="IcoFwxServer.exe" assemblyName="IcoUaClient, Version=10.80.118.0, Culture=neutral, PublicKeyToken=58aa7495915e8ed4" assemblyCodebase="file:///c:/program files/ICONICS/genesis64/components/IcoUaClient.DLL" namespace="Ico.Fwx.Ua.Client" class="UaClientSession" method="a(String A_0, PasswordCache A_1, Boolean A_2, String&amp; A_3)">
  <message>ArgumentException : The first namespace in the table must be the OPC-UA namespace.</message>
  <details>
    <exceptionStackTrace>System.ArgumentException
   в Opc.Ua.NamespaceTable.Update(IEnumerable`1 namespaceUris)
   в Opc.Ua.Client.Session.FetchNamespaceTables()
   в Opc.Ua.Client.Session.Open(String sessionName, UInt32 sessionTimeout, IUserIdentity identity, IList`1 preferredLocales)
   в Ico.Fwx.Ua.Client.UaClientSession.a(String A_0, PasswordCache A_1, Boolean A_2, String&amp; A_3)
</exceptionStackTrace>
    <stackTrace>   в Ico.Fwx.Ua.Client.UaClientSession.a(String A_0, PasswordCache A_1, Boolean A_2, String&amp; A_3)
   в Ico.Fwx.Ua.Client.UaClientSession.a(String A_0, PasswordCache A_1)
   в 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>
  </details>
</record>
Written on: 05. 03. 2014 [21:56]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"rxs5" wrote:

И да, отличаются, что может подтверждать, что они не просто так указываются, а с чем-то связаны.

Ничто это не подтверждает, поскольку ни с чем не связано, и проблемы только в Genesis. Или указывайте с чем связано!
Добавил NS 100 для AuthenticationToken.

"rxs5" wrote:

Cannot open a session with opc.tcp://192.168.195.97:4848 - [None:None], The first namespace in the table must be the OPC-UA namespace.

И о чём это говорит, разве только о проблемах с таблицей NS у клиента.

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

Ничто это не подтверждает, поскольку ни с чем не связано, и проблемы только в Genesis. Или указывайте с чем связано!
Добавил NS 100 для AuthenticationToken.
Не помогло для 2063. Думаю что добавление NS 100 случайным образом и не должно было помочь. Слишком уж просто все было бы. Вряд ли проблемы в серт. клиенте, который также работает с серт. серверами. Я могу предположить, что он клиент Genesis64 работает более строго, чем остальные клиенты.
"roman" wrote:

И о чём это говорит, разве только о проблемах с таблицей NS у клиента.
А таблицу NS клиент строит не получая ли ее от сервера ? Почему с другими серверами нет проблемы с таблицей NS ? Может как раз потому, что у других серверов эти NS присутствуют и в нужном синтаксисе и содержании ?
Добавил скриншот полного лога как появляется ошибка и весь лог.
Attachment

IcoFwxServer2063.exe.log.xml.zip (File type: application/x-zip-compressed, Size: 13.01 kilobytes) — 538 downloads
openscada_opc_ua_error2063_genesis64.png (File type: image/png, Size: 64.49 kilobytes) — 836 downloads
Written on: 06. 03. 2014 [12:08]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"rxs5" wrote:

"roman" wrote:

Ничто это не подтверждает, поскольку ни с чем не связано, и проблемы только в Genesis. Или указывайте с чем связано!
Добавил NS 100 для AuthenticationToken.
Не помогло для 2063. Думаю что добавление NS 100 случайным образом и не должно было помочь. Слишком уж просто все было бы. Вряд ли проблемы в серт. клиенте, который также работает с серт. серверами. Я могу предположить, что он клиент Genesis64 работает более строго, чем остальные клиенты.

Почитав спецификацию увидел там ссылку индексов NS на список NameSpaces в параметре 2055.
Поглядев на дамп с сервером UA увидел, что связь прослеживается, поскольку значения NS не превышает 5, размерности списка NameSpace.
Однако в случае с Ignition такой связи нет, тут ещё вечером погляжу на список NS.

Собственно в OpenSCADA добавил NS3 для DAQ узлов OpenSCADA, а для sessionId и authenticationToken установил NS в 1 и 0, как в UA-Server.

Проверяйте!

Learn, learn and learn better than work, work and work.



21573