Куда приводят поиски идеальной SCADA

    Два года назад я написал статью “SCADA: в поисках идеала”. Идея была проста — превратить Qt Creator в среду для разработки SCADA. Теперь хочу рассказать, какой путь проделан и что получилось.



    Удалось ли достигнуть идеального результата? — Разумеется, нет. На то он и идеал, что недостижим. Зато удалось заметно к нему приблизиться.


    Информация для самых нетерпеливых.


    Теперь любой желающий может скачать бета-версию Simargl SCADA. Для упрощения погружения в тему есть краткое руководство и его видеоверсия. Ссылки в конце статьи.


    Simargl SCADA состоит из двух частей — ядро (драйверы, система тегов и т.п.) и набор виджетов, интегрируемых в Qt Creator.


    Когда проект начинался, большая ставка делалась на удобство уже готовой среды. Здесь все очень хорошо — Qt Creator становится лучше (ИМХО), а значит и создавать прикладные проекты все приятнее. Правда, был замечен интересный эффект – после работы с Simargl SCADA возвращаться к классическим пакетам SCADA уже довольно некомфортно, поскольку IDE чаще всего сильно проигрывает Qt Creator.


    Сильной стороной Simargl SCADA является получение на выходе скомпилированного файла, что обеспечивает заведомо большую производительность по сравнению с интерпретаторами кода. В какой-то момент стало интересно, насколько именно будет выигрывать по производительности прикладной проект в сравнении с каким-нибудь популярным пакетом. Оказалось, что много — в сравнении с Simatic WinCC v7.4 от 50 до 150 раз на различных тестах (математика, работа графических элементов, доступ к тегам). Если у сообщества будет интерес, могу попробовать написать отдельную статью.


    Хорошая производительность означает, что можно использовать менее мощное оборудование, например, собрать прикладной проект для одноплатного компьютера. Результат оказался положительным и принес новый интересный опыт. Если у вас есть возможность собрать Qt под вашу платформу, то и Simargl SCADA будет работать.


    Помимо основных задач, характерных для компьютерного уровня систем АСУ, есть еще несколько случаев, в которых использование Simargl SCADA оказалось удобным.


    Часто возникает необходимость проверить работу системы на этапе создания ПО, но при минимальных изменениях рабочего кода как ПЛК, так и основной SCADA (стендовые испытания). Тогда можно использовать возможности Simargl SCADA для удобной эмуляции сценариев работы оборудования.


    Еще один сценарий, с которым доводилось сталкиваться на практике, это необходимость независимой регистрации состояния сигналов в уже существующих системах. Так бывает, что приходится работать с системами, где нет физической или юридической возможности вносить изменения в ПО, но есть необходимость отследить, что происходит с сигналами на некотором промежутке времени для выявления источника проблем. Тогда берем ноутбук с Simargl SCADA, настраиваем соединения и получаем возможность отслеживать и записывать, что, собственно, происходит.


    Сейчас можно скачать тестовую версию Simargl SCADA.


    Что вошло в эту версию:


    • драйверы — internal, OPC DA2, Modbus-мастер, Simatic;
    • элементы для построения мнемосхем;
    • сбор данных и вывод архивной информации – журналы, тренды.

    Что не вошло:


    • средства для анимированного отображения связанных объектов (трубопроводы, схемы электроснабжения и т.п.). Было принято решение доработать до более внятного способа задания правил раскраски. Думаю, что эта работа будет вскоре завершена.

    Актуальные ссылки:


    Страница проекта в facebook.
    Скачать Simargl SCADA можно здесь.
    Знакомство стоит начать с прочтения краткого руководства.
    Видео по краткому руководству.
    Готовый тестовый проект из руководства и картинки.

    Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

    Какие элементы системы стоит добавить в первую очередь?

    • 53.5%Отрисовка графических примитивов прямо в Qt Creator с возможностью привязки их свойств к тегам.15
    • 28.5%Элементы для работы с векторными изображениями.8
    • 7.1%Возможность простого использования gif-анимации.2
    • 32.1%Драйвер OPC UA.9
    • 50%Драйвер Modbus-слейв.14
    • 25%Конфигуратор настроек проекта.7
    • 3.5%Что-то другое (напишу в каменты).1
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 43

      0
      В какой-то момент стало интересно, насколько именно будет выигрывать по производительности прикладной проект в сравнении с каким-нибудь популярным пакетом. Оказалось, что много — в сравнении с Simatic WinCC v7.4 от 50 до 150 раз на различных тестах (математика, работа графических элементов, доступ к тегам). Если у сообщества будет интерес, могу попробовать написать отдельную статью.
      Эта информация будет очень актуальна. Интересно будет сравнение не только с WinCC, но и с другими SCADA.
        0
        Ваша система поддерживает МЭК104? Если да, то сколько datapoints поддерживаете с приемлемой производительностью? А это знаем мы этот WinCC…
          –1
          МЭК104 — это modbus TCP? Да, поддерживается. Касательно второго вопроса — тут затруднюсь ответить, поскольку не было нагрузочного тестирования. Если есть желание и возможность тестировать — свяжитесь со мной через личку или почтой. Думаю, это вопрос тысяч сигналов. Опять же, смотря какое оборудование предполагается…
            +3
            Ээээ… *слегка в ступоре*. Нет, модбас это мобас, а МЭК104 — это совсем другое (Например: docs.cntd.ru/document/gost-r-mek-60870-5-104-2004. В тексте так же упоминается 101 протокол, но это одно и тоже, так как 104 — это по сути 101, обернутый в TCP/IP).
              0
              Ок, теперь понятно о чем речь. Нет, пока поддержки этого протокола нет, но при желании можно реализовать.
                0
                Может быть документируете АПИ какое то (в будущем) для написания драйверов протоколов? чтобы можно было пользователю свой протокол наваять (например USS, который в настоящее время никто не будет делать, а мне надо)?
                  0
                  На самом деле, все еще проще. Есть специальный класс SDeviceDriver — наследуетесь от него и реализуете любой протокол.
                    0
                    А что, есть исходники для клиентов?

                    Идея компилируемой СКАДЫ интересная. Например для IoT

                    Без прочтения инструкции оказалось неочевидно =)
                      0
                      Не совсем исходники, но есть заголовочные файлы и возможность подключать Simargl SCADA как библиотеку к своему проекту в Qt Creator. Собственно, это и есть основная идея. Примерно также Вы используете Qt без исходников.
                0
                Ну в 101 и в 104 достаточно различий, ЕМНИП, т.к. приходилось реализовать и тот и другой (у них есть общие пакеты, а есть специфичные для каждого) ну и канальный уровень тоже отличается.
          0
          Сравнили Вы конечно мощно с Simatic WinCC v7.4.
          Не Ваш уровень, замечу я. Не тот масштаб.
          Ориентируйтесь на SimpleScada, если что тогда уж.
          В производительности наносекундами не меряются. Что такое 40-150 раз? Время реакции на тык по объекту какое? Время формирования интерфейса при переходе по страницам? Как быстро теги от полевых устройств подхватывает?
          OPC сервер в код интегрируется? А если с другим OPC поработать?
          А если у меня ПЛК под Codesys? Как мне его прилепить? Их среда свой OPC имеет.
          Сразу: OPC DA в 2019 вообще не в тему. COM объекты это старо, я считаю. Теряется возможность подключиться без е… ли к стороннему серверу, если уж на то пошло.

          Покажите-ка архитектуру системы. На первый взгляд, «смешались в кучу кони, люди».

          Disclaimer
          Извиняюсь, за гневный комментарий, минусуйте, если не прав.
          А вот сейчас почитаю:)
            0
            WinCC ИМХО все еще лидер отрасли. И так уж исторически сложилось, что он был под рукой. Как сравнить разные SCADA — вопрос очень сложный, но можно сравнивать общие части. Например, пишем перемножение матриц и смотрим сколько времени затрачивается на один и тот же объем вычислений.
            Если звезды сложатся — напишу отдельную статью.
              0
              Извиняюсь. Зря я Вас раскритиковал. Не обращайте внимания на мой гневный отзыв — осудил «не читая». Плодите контент! Это хорошо.
              Единственное пара советов.
              Определитесь с тем, куда ориентируете систему: коммерческий продукт или OpenSource (подключите сообщество).
              И какой будет масштаб. Проработайте архитектуру ВСЕЙ системы с возможным расширением (включая web доступ, отдельный клиент-сервер). Я так понял, сначала у Вас был код:)
              Далее. В списке литературы в документе «Simagrl SCADA getting started» ну совсем не те книги.
              Казалось бы — изобретая систему компьютерного зрения, книги должны быть по компьютерному зрению. C++ и так все, кто в эту тему знают:)
              Это я к чему: нет ни одной статьи по HMI.
              Можно попробовать добыть The High Performance HMI Handbook Холлифилда.
              У него так же есть Alarm Management Handbook.
              Или «Human-Machine Interface Design for Process Control Applications»
              И надёргать оттуда виджетов.
              (Я их, не читал — в английском не силён. Но пролистал местами, когда в руки попалась. Вследствие потом один экран в своей скаде переделал).
              Не скажу, что это истина, но всё же выделит Вас среди подобных.
              Вырезки иногда встречаются в виде статей. Типа такой.
              .
              Я её уже второй год перевести пытаюсь:)

              Можно обратиться к опыту ITER. Те вообще на Control System Studio делают. Это что то на eclipse завязано. Кажись, на гитхабе они есть.
              Думайте о задачах, решаемых системой. И о том, как в них приятно будет работать пользователю:)
                0
                Спасибо за советы. Мой опыт говорит о том, что большинство разработчиков в области SCADA довольно плохо знают C++, потому и список литературы такой.
                  +2
                  Если разработчик в области SCADA выучит C++, он больше не будет разработчиком SCADA:)
                  Если уж на то пошло. Не думали, кто бы мог применять Вашу систему?
                    0
                    Между человеком выучившим С++ и профессионально на нем разрабатывающим лежит большая пропасть. Вся разработка Simargl SCADA строится так, чтобы ее мог использовать человек просто знакомый с С++. Большинство стандартных задач там можно решить вообще без написания кода.
                      0
                      Можно ли считать подходы применённые, например, в проектах FLProg, HIASM вариантами пользовательского интерфейса и программирования для SCADA?
                        0
                        del
                          0
                          К сожалению, я не знаком ни с одним из этих проектов, могу ошибаться чуть более чем полностью.
                          FLProg — как мне кажется, да. HIASM — я сходу не нашел информации про сопряжение с ПЛК.
                          SCADA — это диспетчерское управление и сбор данных. Если при помощи какого-либо инструмента можно решать эти задачи, то… Другой вопрос, что гвоздем забивать микроскоп может быть не удобно, а главное не нужно.
                        0
                        Есть на рынке и ПЛК контроллеры ES-ForthLogic программируемыe совсем на «экзотике» варианте Форт языка. :)
                      0
                      Вот, тоже хочу найти статьи на русском про «человеческий» HMI.
                      Из моего опыта работы видел прогресс от вырвиглазного дизайна мнемосхем (где видны только цифры и закрыто-открыто у клапанов и стоп-работа у насосов). Потом был чуть получше (как у автора), но всё равно — много цифры и ничего не видно (как у современного WinCC сейчас). Последняя версия, по моему мнению, самая лучшая — всё серое, можно сказать смотришь — и глаз ни за что не цепляется. Если что-то не так, то Алармы видны сразу же (а аппаратчики против, им нравится вырвиглазный вариант, который годится на плакаты).
                      У нас проблема усугубляется тем, что на основной мнемосхеме одновременно более 300 аналоговых и дискретных параметров (а вдобавок этому аппаратчику ещё пару мнемосхем, с 150-200 параметров на каждом — вот такое производство, разбить на много мнемосхем не получится — единое целое).
                        0
                        На русском я набрёл на конференцию wonderware.
                        Даже пример
                        разобрали.
                        .
                        Который часто в англоязычных статьях встречается. И тот тырен из книжки Холлифилда:)

                        Больше не встречал. Хотя можно попробовать коллективным разумом пару-тройку статей осилить под руководством гугл-переводчика:)
                        У нас проблема усугубляется тем, что на основной мнемосхеме одновременно более 300 аналоговых

                        В этом случае я бы провёл декомпозицию и группировку по агрегатам от общего к частному (по уровням). Если не лепиться на один монитор — пусть будет видеостена :) с общими параметрами. А у каждой службы свой набор экранов со своей частью параметров нужных только им в своей коморке. Как в ЦУПе. Но 300 параметров мне кажется это лишка для одного оператора в одно время.
                        а аппаратчики против

                        Тут надо свои стандарты предприятия проработать. Как в ITER И каждому подсунуть свою часть. Чтобы на всё предприятия однотипно было. Тогда ни у кого вопросов против бумажки не будет. В конечном счёте SCADA — не мультик.
                          0
                          Это вообще говоря общая проблема — как убедить аппаратчиков, что новая схема лучше, если они уже привыкли к чему-то другому.
                          И еще одно мое наблюдение: на западе редко делают ситуационные планы, когда можно одним взглядом охватить всю ситуацию на производстве. Возможно из-за этого большие SCADA плохо приспособлены к таким мнемосхемам.
                    0
                    Раз уж сравнивать с WinCC, то что насчет резервирования? клиент-серверной архитектуры? web-доступа? внесения изменений «на лету»? какие идеи на этот счет?
                      0
                      Каждая система имеет свои сильные и слабые стороны. Резервирование, клиент-серверная архитектура пока в отдаленных планах. Внесение изменений «на лету» нужно, если система стартует долго, а если это происходит за несколько секунд, то…
                      Поймите правильно, я не говорю, что Simargl SCADA круче WinCC (возможно, пока :)). Любой продукт имеет сильные и слабые стороны.
                      В качестве занудства:
                      А WinCC можно запустить под Linux? А на моноплатнике? А под Android? А запустить скрипты в несколько протоков?
                        0
                        WinCC OA
                          0
                          Вы сталкивались с ней на практике? Рекламные мультики классные, реальные скриншоты уже более грустные, а как оно в реальности?
                          Спрашиваю без ехидства, мне реально интересно — я пока WinCC OA в живую не видел.
                            0
                            Я сталкивался с ней на стенде. И знаю где она успешно работает в энергетике в составе ПТК верхнего уровня.
                      +1
                      Не рассматриваете переход на Qt Quick? Нестандартные графические элементы более органично выглядят в таких интерфейсах.
                        0
                        Пока не планирую.
                      • НЛО прилетело и опубликовало эту надпись здесь
                          0
                          Как не странно, в большинстве случаев сертификация не требуется, или требуется на уже полностью готовую систему (включая прикладной проект). Не всё так грустно.
                          Спасибо.
                          • НЛО прилетело и опубликовало эту надпись здесь
                              0
                              Это уже зависит не от инструментария, а от коммерческих отношений. Там логика бывает не очевидна, или вовсе отсутствует. Сейчас редко отдают обслуживание АСУ кому-нибудь за границу — слишком дорого и долго.
                          0
                          del
                            0

                            Главная проблема всех этих "убийц" winCC — ресурсы. Все же Siemens тратит не сравнимое количество денег на ее развитие. Как мне кажется, разработчикам бесплатных SCADA необходимо объединится и разработать действительно качественную альтернативу. Например существует openScada — этому проекту уже около 15 лет, он все ещё жив и развивается. На мой взгляд — это лучшее из бесплатных. Увы чтобы сделать что то более менее сложное там нужно довольно много программировать...

                              0
                              Полностью согласен. В моей первой статье на Хабре я именно об этом и писал. И именно по этой причине я взял Qt Creator как основу — не надо писать редакторы и создавать свое IDE, а это очень большой кусок работы.
                              0
                              Qt для Emdedded — это очень дорого. Либо же GPL.

                              Какая используется лицензия?
                                0
                                Да, Qt for Embedded Devices дорого. Но вроде бы никто не запрещает просто собирать Qt и использовать его под LGPL. Не используя инструментов Qt for Embedded Devices.
                                +1
                                Ох, сколько сломано копий об эти скады.
                                Пока она у вас простая, это по сути, даже не скада, а просто приложение, написанное «как скада».
                                Фишка всех скад в том — что они конфигурируются людьми, далекими от программирования (во многих случаях).
                                Т.е. нарисовал кружок (или выбрал готовый эллемент), привязал к нему тег и вот у тебя отображения элементарного датчика.
                                Но когда дело дойдет хотя бы до хороших, быстрых, легкоконфигурируемых трендов, юзеров, ролей, вот тут уже начнут появляться вопросы. И это без разговоров о резервировании, лицензировании. разрешения ФСТЭК и прочем.
                                  0
                                  Все как то говорят о SCADA в основном с позиции «SC», а вот про «and DA» как то все забыли:) СУБД, судя по всему, нужно прикручивать свою? Как взаимодействие картинки тегов и алармов устроено?
                                    0
                                    Во всех скадах что я видел и работал, а это почти все самые популярные у нас в стране — WinCC, InTouch, iFix и даже российская разработка (Телескоп+), базы данных использовались сторонние (MS SQL, например), причем ты просто настраивал к ним подключение и ничего более делать было не надо, но стандартные. Но не везде эти данные использовались для хрения именно трендов. Где-тотрендов. где-то журнала событий, где-то, как в Т+, в базе вообще хранилось все, включая проект и настройку сборки данных.
                                    Но по сути, во всех системах, отображение — это совсем не связанная вещь с накоплением и хранением. Даже теги зачастую свои (отдельные) под отображение и под трендирование.
                                      0
                                      По-умолчанию хранение архивной информации (тренды, алармы) производится в базе SQLite. Если будут нужны большие объемы хранения, то можно будет прикрутить другую СУБД.

                                      Как взаимодействие картинки тегов и алармов устроено?

                                      Тут всё хорошо. Просмотрите Getting started, многие вопросы отпадут.

                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                    Самое читаемое