Опрос OPC_DA сервера

Просмотр 10 сообщений - с 1 по 10 (из 10 всего)
  • Автор
    Записи
  • #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 сервера не возможно.

    #36949
    Mikhail
    Модератор

    Добрый день!
    В 6-й версии настройки соединения с OPC-сервером хранятся общие для линии связи. В этом можно убедиться посмотрев файлы настроек в Коммуникаторе. Такой подход оптимальнее с точки зрения производительности. Вы можете добавить на линию связи любое количество «устройств» в рамках одного OPC, и все они будут использовать одно общее соединение с OPC-сервером.

    #36950
    Mikhail
    Модератор

    Ошибка при создании подписок может быть связана с конкретным OPC-сервером. Некоторые не позволяют создать больше определённого количества подписок. С каким у OPC-сервером выдаётся такая ошибка?

    #36952
    Demonidze27
    Участник

    Используется OPC_DA сервер Контар, у них есть еще и UA_OPC сервер, но есть тонкости, при которых я не могу опрашивать с помощью UA все свои объекты.
    Ограничений по подключению замечено не было, на другой машине один такой-же OPC опрашивается несколькими Скадами без проблем.
    Дело мне кажется не в OPC, для тестирования прописал подключение к MasterOPC по DA — результат такой же, опрашивается только первый объект, следующие за ним не отвечают. Если создавать отдельную линию связи на этот же OPC с одним отдельным объектом, все работает, опрашиваются без каких либо ограничений.

    #36977
    Mikhail
    Модератор

    Если есть поддержка от производителя OPC-сервера, было бы полезно им задать вопрос, чтобы они поискали у себя ошибку при создании подписки. Или хотя бы что-то выводили в свой лог.

    #36981
    Demonidze27
    Участник

    Я проверил на двух разных машинах, где установлены 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.AddGroup

    2025-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».

    #36982
    Demonidze27
    Участник

    Нашел, при создании опроса тэгов (подписки) надо ставить галочку «Читать синхронно» и все добавленные в линию связи объекты начинают опрашиваться. Можете разъяснить, что дает этот параметр?

    #36983
    JurasskPark
    Участник

    Это значит что запрос данных идет последовательно, то есть сначала первый девайс опроситься, потом второй, третий ит.д.

    #36984
    JurasskPark
    Участник

    Как раз OPC сервера, которые не умеют отдавать данные асинхронно, т.е. сразу всем клиентам и сразу, для них и назван этот режим.

    #36985
    Demonidze27
    Участник

    Спасибо!

Просмотр 10 сообщений - с 1 по 10 (из 10 всего)
  • Для ответа в этой теме необходимо авторизоваться.