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

Iconics Genesis64 и OPC UA


Автор Повідомлення
Повідомлення створено: 12. 03. 2014 [21:44]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"rxs5" wrote:

Дамп и лог Genesis64 записал.

Тут увидел бравзинг "Objects" и вызов TranslateBrowsePathsToNodeIds.
Добавил реализацию TranslateBrowsePathsToNodeIds на предмет иерархичного поиска.

Learn, learn and learn better than work, work and work.
Повідомлення створено: 13. 03. 2014 [14:42]
rxs5
Дмитрий Лыков
In tech support
Автор теми
Зареєстрован(а) с: 06.11.2013
Повідомлення: 205
"roman" wrote:

Тут увидел бравзинг "Objects" и вызов TranslateBrowsePathsToNodeIds.
Добавил реализацию TranslateBrowsePathsToNodeIds на предмет иерархичного поиска.
Проверил на 2072. Стало лучше - теперь можно зайти в DAQ. Но вот дальше в глубь зайти уже не удается. Клиент Genesis64 при попытке доступа к вложенным в DAQ папкам приписывает одну после другой, хотя должен заменять их в пути, т.к. они на одном уровне. Скриншот и 2 лога добавил.
Вкладений файл

genesis64_opcua_20140313.png (Тип файлу: image/png, Розмір: 47.76 кілобайтів) — 819 завантажень
genesis64_opc_ua_openscada2072.pcapng (Тип файлу: application/octet-stream, Розмір: 124.83 кілобайтів) — 647 завантажень
IcoFwxServer2072.exe.log.xml.zip (Тип файлу: application/x-zip-compressed, Розмір: 22.85 кілобайтів) — 501 завантажень
Повідомлення створено: 14. 03. 2014 [11:41]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"rxs5" wrote:

Проверил на 2072. Стало лучше - теперь можно зайти в DAQ. Но вот дальше в глубь зайти уже не удается. Клиент Genesis64 при попытке доступа к вложенным в DAQ папкам приписывает одну после другой, хотя должен заменять их в пути, т.к. они на одном уровне. Скриншот и 2 лога добавил.

Понял наконец смысл TranslateBrowsePathsToNodeIds. Эта функция используется для получения NodeId из пути имён обзора, теми кому лень прямо хранить полученный в "Browse" NodeId. Чем они увеличивают нагрузку на сервер, повторным браузингом и чем глубже, тем больше нагрузка!
Переписал TranslateBrowsePathsToNodeIds!

Learn, learn and learn better than work, work and work.
Повідомлення створено: 14. 03. 2014 [13:14]
rxs5
Дмитрий Лыков
In tech support
Автор теми
Зареєстрован(а) с: 06.11.2013
Повідомлення: 205
"roman" wrote:

Понял наконец смысл TranslateBrowsePathsToNodeIds. Эта функция используется для получения NodeId из пути имён обзора, теми кому лень прямо хранить полученный в "Browse" NodeId. Чем они увеличивают нагрузку на сервер, повторным браузингом и чем глубже, тем больше нагрузка!
Переписал TranslateBrowsePathsToNodeIds!
Спасибо. Проверил на 2073 - работает браузинг, в том числе и по глубине дерева.
Проверил чтение значений полей узла - они не отображается. Genesis64 отображается ошибку (скриншот).
То же самое поле читается в Indusoft Web Studio и в UAExpert.
Дампы во вложении.
----
Также проверил с системными данными
По строке, которую формирует клиент Genesis64, данные не считываются.
Пример строки
HTML
opc.tcp://192.168.195.97:4848/OSCADA_OPC/None - [None:None:XML]\[OpenSCADA_DAQ]DAQ/System DA/Активные данные/Full CPU Load.load

------------
Посмотрел лог 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: Invalid ID (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(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)


Далее
HTML
UA: opc.tcp://192.168.195.97:4848/OSCADA_OPC/None - [None:None:XML]
CreateMonitoredItems(ns=2;s=DAQ.System.AutoDA.CPULoad.load: Duplicate ID: 1): 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(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)


Затем
HTML
UA: opc.tcp://192.168.195.97:4848/OSCADA_OPC/None - [None:None:XML]
CreateMonitoredItems(ns=2;s=DAQ.System.AutoDA.CPULoad.load: Duplicate ID: 2): 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(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)


И
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.b(Boolean reportAddFailures)
   в Ico.Fwx.Ua.Client.UaClientSession.ab()
   в 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)


Далее они повторяются в таком же порядке
В логе ошибки имеют уровень level="800"

[Повідомлення редагувалось 2 раз(ів), останній раз 14.03.2014 в 13:31.]
Вкладений файл

IcoFwxServer2073.exe.log.xml.zip (Тип файлу: application/x-zip-compressed, Розмір: 44.09 кілобайтів) — 498 завантажень
genesis64_opc_ua_openscada2073.pcapng (Тип файлу: application/octet-stream, Розмір: 279.32 кілобайтів) — 607 завантажень
genesis64_opcua_20140314.png (Тип файлу: image/png, Розмір: 25.42 кілобайтів) — 791 завантажень
Повідомлення створено: 15. 03. 2014 [20:28]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"rxs5" wrote:

Проверил чтение значений полей узла - они не отображается. Genesis64 отображается ошибку (скриншот).
То же самое поле читается в Indusoft Web Studio и в UAExpert.
Дампы во вложении.

Дамп один и в нём нет попыток "CreateMonitoredItems(ns=2;s=DAQ.System.AutoDA.CPULoad.load: Invalid ID (0))"
Само чтение, если не Publish, искать слишком долго, запишите участок короткий но репрезентативный для проблемы.

Для CreateMonitoredItems в дампе видно только:
- DAQ.SBK.sbk_savel.C1_1_2_9_.Data:13
- DAQ.SBK.sbk_savel.C1_1_2_9_.Data:14
- DAQ.SBK.sbk_savel.C1_1_2_9_.Data:18
Кстати для атрибутов 14, 18 это бессмысленно.
Кроме того клиент тупит и рассылает Republish запросы за отсутствующими номерами последовательности.

Learn, learn and learn better than work, work and work.
Повідомлення створено: 17. 03. 2014 [10:34]
rxs5
Дмитрий Лыков
In tech support
Автор теми
Зареєстрован(а) с: 06.11.2013
Повідомлення: 205
"roman" wrote:

"rxs5" wrote:

Проверил чтение значений полей узла - они не отображается. Genesis64 отображается ошибку (скриншот).
То же самое поле читается в Indusoft Web Studio и в UAExpert.
Дампы во вложении.

Дамп один и в нём нет попыток "CreateMonitoredItems(ns=2;s=DAQ.System.AutoDA.CPULoad.load: Invalid ID (0))"
Само чтение, если не Publish, искать слишком долго, запишите участок короткий но репрезентативный для проблемы.
Дампы - имел в виду 1 wireshark + 1 Genesis64. Строка
HTML
CreateMonitoredItems(ns=2;s=DAQ.System.AutoDA.CPULoad.load: Invalid ID (0)): Good

как раз из логе Genesis64, хотя я это и указывал в предыдущем сообщении.

"roman" wrote:

Для CreateMonitoredItems в дампе видно только:
- DAQ.SBK.sbk_savel.C1_1_2_9_.Data:13
- DAQ.SBK.sbk_savel.C1_1_2_9_.Data:14
- DAQ.SBK.sbk_savel.C1_1_2_9_.Data:18
Кстати для атрибутов 14, 18 это бессмысленно.
Кроме того клиент тупит и рассылает Republish запросы за отсутствующими номерами последовательности.
Дамп wireshark делал по элементам DAQ.SBK, а лог Genesis64 по DAQ.System DA. Тут да, мог запутать.
Могу снова сделать дамп и лог по System DA, чтобы исключить влияние не родного для OpenSCADA модуля.

[Повідомлення редагувалось 1 раз(ів), останній раз 17.03.2014 в 10:35.]
Повідомлення створено: 17. 03. 2014 [12:16]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"rxs5" wrote:

Дамп wireshark делал по элементам DAQ.SBK, а лог Genesis64 по DAQ.System DA. Тут да, мог запутать.
Могу снова сделать дамп и лог по System DA, чтобы исключить влияние не родного для OpenSCADA модуля.

Конечно, иначе соотносить невозможно, поскольку в последнем дампе принципиальных проблем не видно.

Learn, learn and learn better than work, work and work.
Повідомлення створено: 17. 03. 2014 [15:41]
rxs5
Дмитрий Лыков
In tech support
Автор теми
Зареєстрован(а) с: 06.11.2013
Повідомлення: 205
"roman" wrote:

Конечно, иначе соотносить невозможно, поскольку в последнем дампе принципиальных проблем не видно.

Сделал на сборке 2073. В вложении дамп и лог. Данные в Genesis64 в Runtime не отображаются.
Ошибки вида
HTML
CreateMonitoredItems(ns=2;s=DAQ.System.AutoDA.CPULoad.load: Invalid ID (0)): Good
и другие есть в логе Genesis64.


[Повідомлення редагувалось 1 раз(ів), останній раз 17.03.2014 в 15:41.]
Вкладений файл

IcoFwxServer2073_read_Genesis64.exe.log.xml.zip (Тип файлу: application/x-zip-compressed, Розмір: 21.67 кілобайтів) — 470 завантажень
genesis64_opc_ua_openscada2073_read_Genesis64.pcapng (Тип файлу: application/octet-stream, Розмір: 104.09 кілобайтів) — 607 завантажень
openscada_opc_ua_error2073_read_genesis64.png (Тип файлу: image/png, Розмір: 30.17 кілобайтів) — 866 завантажень
Повідомлення створено: 17. 03. 2014 [17:45]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"rxs5" wrote:

Сделал на сборке 2073. В вложении дамп и лог. Данные в Genesis64 в Runtime не отображаются.
Ошибки вида
HTML
CreateMonitoredItems(ns=2;s=DAQ.System.AutoDA.CPULoad.load: Invalid ID (0)): Good
и другие есть в логе Genesis64.

Похоже ему нулевые идентификаторы категорически не нравятся.
Пришёл запрос CreateMonitoredItems для DAQ.System.AutoDA.CPULoad.load, соответственно созданы идентификаторы для атрибутов 0:13, 1:14, 2:18 далее он прямо читает атрибуты 14 и 18, а 13 игнорирует.

Дочитал такое:
This primitive data type is an UInt32 that is used as an identifier, such as a handle. All values,
except for 0, are valid.

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

Learn, learn and learn better than work, work and work.
Повідомлення створено: 17. 03. 2014 [22:33]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
"roman" wrote:

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

Сделал!

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



22410