Два года назад я написал статью “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 можно здесь.
Знакомство стоит начать с прочтения краткого руководства.
Видео по краткому руководству.
Готовый тестовый проект из руководства и картинки.

Комментарии (31)


  1. dmsav
    08.02.2019 10:36

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


    1. Hommit
      08.02.2019 13:25

      Ваша система поддерживает МЭК104? Если да, то сколько datapoints поддерживаете с приемлемой производительностью? А это знаем мы этот WinCC…


      1. SimarglSCADA Автор
        08.02.2019 13:35
        -1

        МЭК104 — это modbus TCP? Да, поддерживается. Касательно второго вопроса — тут затруднюсь ответить, поскольку не было нагрузочного тестирования. Если есть желание и возможность тестировать — свяжитесь со мной через личку или почтой. Думаю, это вопрос тысяч сигналов. Опять же, смотря какое оборудование предполагается…


        1. Hommit
          08.02.2019 13:44
          +2

          Ээээ… *слегка в ступоре*. Нет, модбас это мобас, а МЭК104 — это совсем другое (Например: docs.cntd.ru/document/gost-r-mek-60870-5-104-2004. В тексте так же упоминается 101 протокол, но это одно и тоже, так как 104 — это по сути 101, обернутый в TCP/IP).


          1. SimarglSCADA Автор
            08.02.2019 13:56

            Ок, теперь понятно о чем речь. Нет, пока поддержки этого протокола нет, но при желании можно реализовать.


            1. xztau
              08.02.2019 16:51

              Может быть документируете АПИ какое то (в будущем) для написания драйверов протоколов? чтобы можно было пользователю свой протокол наваять (например USS, который в настоящее время никто не будет делать, а мне надо)?


  1. xztau
    08.02.2019 10:44

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

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

    Disclaimer
    Извиняюсь, за гневный комментарий, минусуйте, если не прав.
    А вот сейчас почитаю:)


    1. SimarglSCADA Автор
      08.02.2019 11:00

      WinCC ИМХО все еще лидер отрасли. И так уж исторически сложилось, что он был под рукой. Как сравнить разные SCADA — вопрос очень сложный, но можно сравнивать общие части. Например, пишем перемножение матриц и смотрим сколько времени затрачивается на один и тот же объем вычислений.
      Если звезды сложатся — напишу отдельную статью.


      1. xztau
        08.02.2019 11:24

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

        .
        Я её уже второй год перевести пытаюсь:)


        1. SimarglSCADA Автор
          08.02.2019 11:34

          Спасибо за советы. Мой опыт говорит о том, что большинство разработчиков в области SCADA довольно плохо знают C++, потому и список литературы такой.


          1. xztau
            08.02.2019 11:46
            +2

            Если разработчик в области SCADA выучит C++, он больше не будет разработчиком SCADA:)
            Если уж на то пошло. Не думали, кто бы мог применять Вашу систему?


            1. SimarglSCADA Автор
              08.02.2019 11:53

              Между человеком выучившим С++ и профессионально на нем разрабатывающим лежит большая пропасть. Вся разработка Simargl SCADA строится так, чтобы ее мог использовать человек просто знакомый с С++. Большинство стандартных задач там можно решить вообще без написания кода.


              1. FForth
                08.02.2019 12:01

                Можно ли считать подходы применённые, например, в проектах FLProg, HIASM вариантами пользовательского интерфейса и программирования для SCADA?


                1. xztau
                  08.02.2019 12:18

                  del


                1. SimarglSCADA Автор
                  08.02.2019 12:55

                  К сожалению, я не знаком ни с одним из этих проектов, могу ошибаться чуть более чем полностью.
                  FLProg — как мне кажется, да. HIASM — я сходу не нашел информации про сопряжение с ПЛК.
                  SCADA — это диспетчерское управление и сбор данных. Если при помощи какого-либо инструмента можно решать эти задачи, то… Другой вопрос, что гвоздем забивать микроскоп может быть не удобно, а главное не нужно.


            1. FForth
              08.02.2019 12:36

              Есть на рынке и ПЛК контроллеры ES-ForthLogic программируемыe совсем на «экзотике» варианте Форт языка. :)


        1. dzmitry_li
          09.02.2019 12:57

          Вот, тоже хочу найти статьи на русском про «человеческий» HMI.
          Из моего опыта работы видел прогресс от вырвиглазного дизайна мнемосхем (где видны только цифры и закрыто-открыто у клапанов и стоп-работа у насосов). Потом был чуть получше (как у автора), но всё равно — много цифры и ничего не видно (как у современного WinCC сейчас). Последняя версия, по моему мнению, самая лучшая — всё серое, можно сказать смотришь — и глаз ни за что не цепляется. Если что-то не так, то Алармы видны сразу же (а аппаратчики против, им нравится вырвиглазный вариант, который годится на плакаты).
          У нас проблема усугубляется тем, что на основной мнемосхеме одновременно более 300 аналоговых и дискретных параметров (а вдобавок этому аппаратчику ещё пару мнемосхем, с 150-200 параметров на каждом — вот такое производство, разбить на много мнемосхем не получится — единое целое).


          1. xztau
            09.02.2019 15:50

            На русском я набрёл на конференцию wonderware.
            Даже пример
            разобрали.

            .
            Который часто в англоязычных статьях встречается. И тот тырен из книжки Холлифилда:)


  1. Segmentq
    08.02.2019 10:48

    Раз уж сравнивать с WinCC, то что насчет резервирования? клиент-серверной архитектуры? web-доступа? внесения изменений «на лету»? какие идеи на этот счет?


    1. SimarglSCADA Автор
      08.02.2019 11:14

      Каждая система имеет свои сильные и слабые стороны. Резервирование, клиент-серверная архитектура пока в отдаленных планах. Внесение изменений «на лету» нужно, если система стартует долго, а если это происходит за несколько секунд, то…
      Поймите правильно, я не говорю, что Simargl SCADA круче WinCC (возможно, пока :)). Любой продукт имеет сильные и слабые стороны.
      В качестве занудства:
      А WinCC можно запустить под Linux? А на моноплатнике? А под Android? А запустить скрипты в несколько протоков?


      1. Segmentq
        08.02.2019 16:02

        WinCC OA


        1. SimarglSCADA Автор
          08.02.2019 16:24

          Вы сталкивались с ней на практике? Рекламные мультики классные, реальные скриншоты уже более грустные, а как оно в реальности?
          Спрашиваю без ехидства, мне реально интересно — я пока WinCC OA в живую не видел.


  1. unC0Rr
    08.02.2019 11:18
    +1

    Не рассматриваете переход на Qt Quick? Нестандартные графические элементы более органично выглядят в таких интерфейсах.


    1. SimarglSCADA Автор
      08.02.2019 11:38

      Пока не планирую.


  1. GhostWritter
    08.02.2019 14:57

    Наврятли, этот проет будет использоваться кем-то со стороны и в прошленных масшабах. Ведь это все не сертефицированно.

    Но желаю авторую довести проект до конца и по возможности принести в отрасль действительно что-то новое. Потому как текущие произодители сильно много просят за свое по и железо. И в случаи с Siemens — куча лицензий. При этом приходится изнывать от их поделок, ведь функционал там очень ограничен.


    1. SimarglSCADA Автор
      08.02.2019 15:01

      Как не странно, в большинстве случаев сертификация не требуется, или требуется на уже полностью готовую систему (включая прикладной проект). Не всё так грустно.
      Спасибо.


      1. GhostWritter
        08.02.2019 15:11

        Просто если что-то ломается на заводе или идет пусконаладка — вызываются подрядчики из голландии с зп в несколько сотен долларов в день, ставят свое по и железо. Но при этом открываешь код для контроллера и видишь что человек в начале страницы умеет в массивы, а через 300 строк уже нет, расписав каждое обращение по индексу еще в 300 строк. И возникает вопрос, почему не сделать свое, самим и дешевле.


        1. SimarglSCADA Автор
          08.02.2019 15:21

          Это уже зависит не от инструментария, а от коммерческих отношений. Там логика бывает не очевидна, или вовсе отсутствует. Сейчас редко отдают обслуживание АСУ кому-нибудь за границу — слишком дорого и долго.


  1. SimarglSCADA Автор
    08.02.2019 15:00

    del


  1. Sfinx88
    08.02.2019 18:57

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


  1. Siemargl
    09.02.2019 23:21

    Qt для Emdedded — это очень дорого. Либо же GPL.

    Какая используется лицензия?