Два года назад я написал статью “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)
xztau
08.02.2019 10:44Сравнили Вы конечно мощно с Simatic WinCC v7.4.
Не Ваш уровень, замечу я. Не тот масштаб.
Ориентируйтесь на SimpleScada, если что тогда уж.
В производительности наносекундами не меряются. Что такое 40-150 раз? Время реакции на тык по объекту какое? Время формирования интерфейса при переходе по страницам? Как быстро теги от полевых устройств подхватывает?
OPC сервер в код интегрируется? А если с другим OPC поработать?
А если у меня ПЛК под Codesys? Как мне его прилепить? Их среда свой OPC имеет.
Сразу: OPC DA в 2019 вообще не в тему. COM объекты это старо, я считаю. Теряется возможность подключиться без е… ли к стороннему серверу, если уж на то пошло.
Покажите-ка архитектуру системы. На первый взгляд, «смешались в кучу кони, люди».
DisclaimerИзвиняюсь, за гневный комментарий, минусуйте, если не прав.
А вот сейчас почитаю:)SimarglSCADA Автор
08.02.2019 11:00WinCC ИМХО все еще лидер отрасли. И так уж исторически сложилось, что он был под рукой. Как сравнить разные SCADA — вопрос очень сложный, но можно сравнивать общие части. Например, пишем перемножение матриц и смотрим сколько времени затрачивается на один и тот же объем вычислений.
Если звезды сложатся — напишу отдельную статью.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»
И надёргать оттуда виджетов.
(Я их, не читал — в английском не силён. Но пролистал местами, когда в руки попалась. Вследствие потом один экран в своей скаде переделал).
Не скажу, что это истина, но всё же выделит Вас среди подобных.
Вырезки иногда встречаются в виде статей. Типа такой.
.Я её уже второй год перевести пытаюсь:)SimarglSCADA Автор
08.02.2019 11:34Спасибо за советы. Мой опыт говорит о том, что большинство разработчиков в области SCADA довольно плохо знают C++, потому и список литературы такой.
xztau
08.02.2019 11:46+2Если разработчик в области SCADA выучит C++, он больше не будет разработчиком SCADA:)
Если уж на то пошло. Не думали, кто бы мог применять Вашу систему?SimarglSCADA Автор
08.02.2019 11:53Между человеком выучившим С++ и профессионально на нем разрабатывающим лежит большая пропасть. Вся разработка Simargl SCADA строится так, чтобы ее мог использовать человек просто знакомый с С++. Большинство стандартных задач там можно решить вообще без написания кода.
FForth
08.02.2019 12:01Можно ли считать подходы применённые, например, в проектах FLProg, HIASM вариантами пользовательского интерфейса и программирования для SCADA?
SimarglSCADA Автор
08.02.2019 12:55К сожалению, я не знаком ни с одним из этих проектов, могу ошибаться чуть более чем полностью.
FLProg — как мне кажется, да. HIASM — я сходу не нашел информации про сопряжение с ПЛК.
SCADA — это диспетчерское управление и сбор данных. Если при помощи какого-либо инструмента можно решать эти задачи, то… Другой вопрос, что гвоздем забивать микроскоп может быть не удобно, а главное не нужно.
FForth
08.02.2019 12:36Есть на рынке и ПЛК контроллеры ES-ForthLogic программируемыe совсем на «экзотике» варианте Форт языка. :)
dzmitry_li
09.02.2019 12:57Вот, тоже хочу найти статьи на русском про «человеческий» HMI.
Из моего опыта работы видел прогресс от вырвиглазного дизайна мнемосхем (где видны только цифры и закрыто-открыто у клапанов и стоп-работа у насосов). Потом был чуть получше (как у автора), но всё равно — много цифры и ничего не видно (как у современного WinCC сейчас). Последняя версия, по моему мнению, самая лучшая — всё серое, можно сказать смотришь — и глаз ни за что не цепляется. Если что-то не так, то Алармы видны сразу же (а аппаратчики против, им нравится вырвиглазный вариант, который годится на плакаты).
У нас проблема усугубляется тем, что на основной мнемосхеме одновременно более 300 аналоговых и дискретных параметров (а вдобавок этому аппаратчику ещё пару мнемосхем, с 150-200 параметров на каждом — вот такое производство, разбить на много мнемосхем не получится — единое целое).xztau
09.02.2019 15:50На русском я набрёл на конференцию wonderware.
Даже пример
разобрали..Который часто в англоязычных статьях встречается. И тот тырен из книжки Холлифилда:)
Segmentq
08.02.2019 10:48Раз уж сравнивать с WinCC, то что насчет резервирования? клиент-серверной архитектуры? web-доступа? внесения изменений «на лету»? какие идеи на этот счет?
SimarglSCADA Автор
08.02.2019 11:14Каждая система имеет свои сильные и слабые стороны. Резервирование, клиент-серверная архитектура пока в отдаленных планах. Внесение изменений «на лету» нужно, если система стартует долго, а если это происходит за несколько секунд, то…
Поймите правильно, я не говорю, что Simargl SCADA круче WinCC (возможно, пока :)). Любой продукт имеет сильные и слабые стороны.
В качестве занудства:
А WinCC можно запустить под Linux? А на моноплатнике? А под Android? А запустить скрипты в несколько протоков?Segmentq
08.02.2019 16:02WinCC OA
SimarglSCADA Автор
08.02.2019 16:24Вы сталкивались с ней на практике? Рекламные мультики классные, реальные скриншоты уже более грустные, а как оно в реальности?
Спрашиваю без ехидства, мне реально интересно — я пока WinCC OA в живую не видел.
unC0Rr
08.02.2019 11:18+1Не рассматриваете переход на Qt Quick? Нестандартные графические элементы более органично выглядят в таких интерфейсах.
GhostWritter
08.02.2019 14:57Наврятли, этот проет будет использоваться кем-то со стороны и в прошленных масшабах. Ведь это все не сертефицированно.
Но желаю авторую довести проект до конца и по возможности принести в отрасль действительно что-то новое. Потому как текущие произодители сильно много просят за свое по и железо. И в случаи с Siemens — куча лицензий. При этом приходится изнывать от их поделок, ведь функционал там очень ограничен.SimarglSCADA Автор
08.02.2019 15:01Как не странно, в большинстве случаев сертификация не требуется, или требуется на уже полностью готовую систему (включая прикладной проект). Не всё так грустно.
Спасибо.GhostWritter
08.02.2019 15:11Просто если что-то ломается на заводе или идет пусконаладка — вызываются подрядчики из голландии с зп в несколько сотен долларов в день, ставят свое по и железо. Но при этом открываешь код для контроллера и видишь что человек в начале страницы умеет в массивы, а через 300 строк уже нет, расписав каждое обращение по индексу еще в 300 строк. И возникает вопрос, почему не сделать свое, самим и дешевле.
SimarglSCADA Автор
08.02.2019 15:21Это уже зависит не от инструментария, а от коммерческих отношений. Там логика бывает не очевидна, или вовсе отсутствует. Сейчас редко отдают обслуживание АСУ кому-нибудь за границу — слишком дорого и долго.
Sfinx88
08.02.2019 18:57Главная проблема всех этих "убийц" winCC — ресурсы. Все же Siemens тратит не сравнимое количество денег на ее развитие. Как мне кажется, разработчикам бесплатных SCADA необходимо объединится и разработать действительно качественную альтернативу. Например существует openScada — этому проекту уже около 15 лет, он все ещё жив и развивается. На мой взгляд — это лучшее из бесплатных. Увы чтобы сделать что то более менее сложное там нужно довольно много программировать...
Siemargl
09.02.2019 23:21Qt для Emdedded — это очень дорого. Либо же GPL.
Какая используется лицензия?
dmsav
Hommit
Ваша система поддерживает МЭК104? Если да, то сколько datapoints поддерживаете с приемлемой производительностью? А это знаем мы этот WinCC…
SimarglSCADA Автор
МЭК104 — это modbus TCP? Да, поддерживается. Касательно второго вопроса — тут затруднюсь ответить, поскольку не было нагрузочного тестирования. Если есть желание и возможность тестировать — свяжитесь со мной через личку или почтой. Думаю, это вопрос тысяч сигналов. Опять же, смотря какое оборудование предполагается…
Hommit
Ээээ… *слегка в ступоре*. Нет, модбас это мобас, а МЭК104 — это совсем другое (Например: docs.cntd.ru/document/gost-r-mek-60870-5-104-2004. В тексте так же упоминается 101 протокол, но это одно и тоже, так как 104 — это по сути 101, обернутый в TCP/IP).
SimarglSCADA Автор
Ок, теперь понятно о чем речь. Нет, пока поддержки этого протокола нет, но при желании можно реализовать.
xztau
Может быть документируете АПИ какое то (в будущем) для написания драйверов протоколов? чтобы можно было пользователю свой протокол наваять (например USS, который в настоящее время никто не будет делать, а мне надо)?