Стартовая страница › Форумы › Понять, как работает ПО › Опрос OPC_DA сервера
- В этой теме 9 ответов, 3 участника, последнее обновление 1 год, 4 месяца назад сделано
Demonidze27.
-
АвторЗаписи
-
02.03.2025 в 17:56 #36943
Demonidze27
УчастникПри переходе на Rapid 6 было замечено, что на одну созданную линию связи можно повесить опрос ОРС_DA сервера только по одному объекту, если добавляешь второй объект, опрашивается только первый, по второму и последующих добавленных в логах выходит ошибка:
«2025-03-02 19:34:17 Создание подписок
Создание подписки «Температура» для устройства [10] zxc (async)
Создание подписки «Температура» для устройства [11] счя (async)
Ошибка при создании подписок:
E_FAIL
IOPCServer.AddGroup
2025-03-02 19:34:21 Устройство [10] zxc. Обработка новых данных. Подписка: Температура
Приём 1879070861/01/Температура/t — Под отоп = 59,549263 (good)»На данном OPC_DA сервере опрашивается несколько объектов каждый со своими тэгами. Раньше в Rapid 5 на одной линии можно было прописать не только несколько объектов (каналов), но и опрашивать разные OPC_DA сервера и проблем не было.
При опросе другого ОРС_UA этой же шестой скадой таких ошибок не возникает, я могу прописать несколько объектов без проблем на одной линии связи и они работают, т.е. опрашиваются.
Поэтому возник вопрос, на одну линию связи опроса OPC_DA сервера приходиться только по одному объекту создавать или я чего не пойму. Использовать для опроса ОРС_UA для конкретного OPC сервера не возможно.
03.03.2025 в 10:40 #36949
MikhailМодераторДобрый день!
В 6-й версии настройки соединения с OPC-сервером хранятся общие для линии связи. В этом можно убедиться посмотрев файлы настроек в Коммуникаторе. Такой подход оптимальнее с точки зрения производительности. Вы можете добавить на линию связи любое количество «устройств» в рамках одного OPC, и все они будут использовать одно общее соединение с OPC-сервером.03.03.2025 в 10:42 #36950
MikhailМодераторОшибка при создании подписок может быть связана с конкретным OPC-сервером. Некоторые не позволяют создать больше определённого количества подписок. С каким у OPC-сервером выдаётся такая ошибка?
03.03.2025 в 11:33 #36952Demonidze27
УчастникИспользуется OPC_DA сервер Контар, у них есть еще и UA_OPC сервер, но есть тонкости, при которых я не могу опрашивать с помощью UA все свои объекты.
Ограничений по подключению замечено не было, на другой машине один такой-же OPC опрашивается несколькими Скадами без проблем.
Дело мне кажется не в OPC, для тестирования прописал подключение к MasterOPC по DA — результат такой же, опрашивается только первый объект, следующие за ним не отвечают. Если создавать отдельную линию связи на этот же OPC с одним отдельным объектом, все работает, опрашиваются без каких либо ограничений.04.03.2025 в 14:00 #36977
MikhailМодераторЕсли есть поддержка от производителя OPC-сервера, было бы полезно им задать вопрос, чтобы они поискали у себя ошибку при создании подписки. Или хотя бы что-то выводили в свой лог.
04.03.2025 в 15:10 #36981Demonidze27
УчастникЯ проверил на двух разных машинах, где установлены OPC_DA сервера разных производителей и Rapid V6 и все они ведут себя одинаково, опрашивается только первое устройство в списке (подписке) последующие со следующими логами Rapid (пример опроса OPC Взлета):
«2025-03-04 16:56:30 Запуск линии связи [7] Тест3
2025-03-04 16:56:30 Соединение с Vzljot.VzljotSpProxyServiceDa/{6afe3637-49fc-4530-974b-9a6080a1fc15}
Соединение с OPC DA сервером установлено2025-03-04 16:56:32 Создание подписок
Создание подписки «Температура» для устройства [14] Тест4 (async)
Создание подписки «Температура» для устройства [15] Тест5 (async)
Ошибка при создании подписок:
E_FAIL
IOPCServer.AddGroup2025-03-04 16:56:33 Устройство [14] Тест4. Обработка новых данных. Подписка: Температура
Приём ns*4;s*EquipSetParam(E*2282;SP*1004).Units = System.Byte[] (good)
Приём ns*4;s*EquipSetParam(E*2282;SP*1005).Units = System.Byte[] (good)
»Если создавать Отдельную линию под каждый объект с одной подпиской, проблем со чтением нет и ограничений нет в количестве подключений. Просто не удобно под каждый объект создавать отдельную линию связи, а их у меня много.
Единственно, что не нравиться при закрытия окна, где создаются подписки выскакивает сообщение «Ошибка при отключении 0х80040200».
04.03.2025 в 18:26 #36982Demonidze27
УчастникНашел, при создании опроса тэгов (подписки) надо ставить галочку «Читать синхронно» и все добавленные в линию связи объекты начинают опрашиваться. Можете разъяснить, что дает этот параметр?
04.03.2025 в 19:03 #36983
JurasskParkУчастникЭто значит что запрос данных идет последовательно, то есть сначала первый девайс опроситься, потом второй, третий ит.д.
04.03.2025 в 19:06 #36984
JurasskParkУчастникКак раз OPC сервера, которые не умеют отдавать данные асинхронно, т.е. сразу всем клиентам и сразу, для них и назван этот режим.
04.03.2025 в 19:35 #36985Demonidze27
УчастникСпасибо!
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.