Добрый день. Есть данные в OPCDA сервере. Надо читать 10000 тегов каждые 500 мс и складывать их в какую-то time-series базу данных (пока рассматриваю Victoria Metrics). Далее надо как-то отображать эти данные для анализа в виде трендов (как у Aveva Historian Client - приложил картинку). Что-то типа Grafana на ум приходит, но не уверен, что там подобный функционал можно реализовать - чтобы был список тегов, по группам разбитый и можно было бы выбирать и добавлять на дашборд нужные. Нужен совет - чем читать данные из OPCDA сервера с такой периодичностью и в таком объеме и чем отображать тренды? Должно быть именно отдельное решение так как имеющееся сейчас на базе СКАДА не устраивает Смотрю на NodeRED, читать он может из OPCDA, вопрос - справится ли он с таким объемом и частотой? Кто-нибудь работал с ним?

Комментарии: 40

  1. Aleksey

    Я бы сделал шлюз OPC DA-UA, читал бы telegraf в influxDB и отображал бы в grafana. Я развернул эту часть без шлюза, тк был opcua и все работает год без проблем, все в графане можно настроить. Написал телеграм бот, который дублирует аварии со скады в телеграм и все гладко на 50000 тэгов

    • Nikita

      Спасибо! А как вы выбираете теги для мониторинга в Графане из вашего объема в 50к? В самой influxdb не используете Chronograph для отображения? Я ранее использовал influxdb и там вроде был достаточно мощный язык запросов + можно было теги по бакетам раскидывать. Я больше за UI часть переживаю, так как там конечные пользователи будут, а на вкус и цвет.. Ожидаю, что будут вопросы по удобству поиска и выбора тега для отображения. И вообще, в Графана такое возможно сделать, чтобы на чарт добавлять нужные теги из какого-то списка?

      • Aleksey

        Разбил все данные на разные measurements, внутри них конкретное оборудование и отдельные переменные через точку по группам оборудования, дальше переменными прямо в grafana выбираю сначала группу оборудования, потом единицу, потом отображаемые переменные. Ну и отдельно сделал потом кастомные дэшборлы подобным образом

        • Anonim

          На хабре случаем не писали про свою реализацию?

          • Aleksey

            Ну тогда выбираете второй путь с отдельными дэшбордами под разное оборудование (ГРЩ, ИБП, Охлаждение, что угодно), а уже внутри в переменных дэшборда прямо в графане задаете возможный выбор словарем (ток фазы А : I1, …), пользователь выбирает русское название, в коде для графика берете английское значение и из них кодом «собираете» имя нужной переменной Нет, мысли есть об этом, но компания не дает добро этим заниматься пока что

            • Aleksey

              Ну и дальше можно для условной видео стены сделать несколько обобщающих статичных дэшбордов, на котором цветом понятно норм или не норм

      • Danila

        Я для удобства из системной таблицы вычитывал комментарии к столбца а комментарий был записано название тега и по этой строке встроенным фильтром граваны фильтровал графики

      • Xabrs

        Немного порекламирую, для просмотра трендов писал свою небольшую программу. Веб. Миллионы точек плавно отображает https://github.com/xabrs/trendviewer

        • Arina

          Всем доброго дня! Ищу в СПб инженера АСУТП в крупную компанию стройматериалов. Кому актуально, пишите в лс, всё расскажу

          • Anonim

            Можно здесь сразу и рассказать всем со ссылкой на вакансию.

        • Danila

          С постгрес дБ может ?

          • Xabrs

            Напишите на питоне плагин, сможет. Я старался сторонние библиотеки не таскать в основную сборку

            • Danila

              А математические операции между сигналами может делать ?

              • Xabrs

                Нет. С самим сигналом только. Пока нет нужды, так как у меня обычно временные метки не совпадают

      • Aleksey

        А, ну и да, видя ссылку выше по поводу самописных решений - influx и любая другая бд отлично опрашивается кодом и если руки золотые, а требования понятные, то можно писать что угодно самому, просто графана быстро разворачивается с нуля и с открытым кодом

      • Aleksey

        Добрался до рабочего места, в итоге получилось вот так и по всем типам оборудования свои варианты сделаны. Пользователи многие с компьютером на "Вы", но сами и без вопросов с базовыми вещами разобрались

        • Nikita

          Классно выглядит! То, что нужно, в принципе. А можете подробнее объяснить, как вы данные сгруппировали и как вы сделали такой выпадающий список? У вас получается на панели один чарт и на него вы добавляете теги?

          • Aleksey

            Напишу в личку

    • Andrey

      А зачем? Диспетчер в телеге сидит? И если Дурова опять прижмут, то что?

      • Aleksey

        Диспетчер сидит у Скады и действует по инструкции, а ответственные по направлениям сидят дома и в случае аварийной ситуации через минуту уже готовы реагировать и понимают, что у него на объекте происходит. А через 5 может открыть графану и посмотреть любой интересующий параметр А если Дурова прижмут, то изменив адрес в POST запросе я могу отправить в любой другой мессенджер с API, в Slack, Discord, почту или на любой webhook

      • Danila

        не телеграм а телеграф тот что по проводам работает

        • Aleksey

          Только сейчас увидел, что telegraf неправильно написал в оригинальном сообщении, исправил, там f на конце

  2. Danila

    Я писал скрипт на питоне для opc da и складывал данные в клик хаус а потом грфаной отображал , но я тогда не знал что есть node red возможно с помощью неё тоже можно сделать , и предложение Алексея тоже можно попробовать оно достаточно разумное , пробуйте вариантов много

  3. Dyakonenkora

    А что за данные требуется так часто читать?

    • Nikita

      Обычные данные с производственных линий. Именно с такой частотой нужны далеко не все, может 1% от всех данных. В большинстве случаев раз в секунду достаточно

      • Dyakonenkora

        Можно питоном собирать с разной частотой. Класть в influxdb или prometheus. И таскать данные графаной Но вот только для питона вроде всего одна либа для opcda. И немного заморочно ставить ее

        • Anonim

          Лучше не запросами собирать а по подписке на изменения. А запись в базу отдельным потоком с небольшим буфером

  4. Anonim

    А почему не в скьюль базу данных?

    • Nikita

      Mssql (если вы его имеете в виду) - реляционная бд, она не оптимальна для time-series данных

      • Dyakonenkora

        Для такого потока пойдёт

  5. Dan

    Возможно ZIIOT от Zyfra подойдет

    • Anton

      Давай по порядку OPC-DA мертвое никому ненужное легаси ТАЙМСЕРИАЛ БАЗА это исходя из каких требований? Потому что с твоей задачей справится самая обычная постгрес с партиционированием таблиц Ну и 10к тегов у тебя изменяются что ли непрерывно. У тебя там OPC он может оповещать об изменениях тегов.

      • Dan

        Знаю что много кто заменил Графану на Цифру в РФ промке Но отказаться от этого старья тоже проблема. Если есть завод/цех который уже сейчас генерирует деньги и стоит на решениях начал 00ых Вариантов там не много Сам лично с таким сталкиваюсь, когда дирекция хочет цифровизовывать площадки с обородованием начал 00 ых

        • Dan

          И одно из условий, ничего останавливать нельзя))))

        • Anton

          Цифру? Чёт не слышал. Или ты про КАСКАД ЦИФРА

        • Anton

          Если уже есть, то конечно это другой разговор

          • Dan

            Я думаю других причин для OPC DA и DCOM нет) В современных решениях DA уже почти нигде нет Даже как опции

            • Anton

              Да я буквально недавно видел новый птк, который крутился на OPC-DA только потому, что местные программисты так сделали. Причём там был сделано так crevis -> modbus -> aropc -> simple scada с opc-da клиентом...

Не нашли ответ?

Вам также может быть интересно