Как я СКАДу писал. Часть девятая

Доброго времени суток всем!

Вот и настал очередной этап рассказать о моем проекте и куда в итоге он меня привел. Предыдущие мио публикации по данной теме можно найти в моем профиле. С момента последней публикации прошло 7 лет, за это время произошло очень много всего, как вокруг моей разработки, так и того, чему она стала инициатором. После выпуска 2-й версии системы в 2017-м году, она достаточно успешно показала себя в нескольких крупных внедрениях. Объем поддержки и разработки системы ощутимо вырос и стал достаточно много требовать моего личного времени. Кроме того — меня пригласил один крупный холдинг создать им некую отраслевую скада—систему, поэтому времени на свое хобби, в рамках которого так и продолжал развиваться мой проект, стало не очень много. Поэтому в 2020-м году я объявил в кругах АСУТП, что буду не против дать проекту возможность встать на коммерческие рельсы. Неспешно пошли предложения, и также не спешно шел процесс их обсуждений и анализа продукта заинтересованными сторонами. В конечном итоге, на меня вышла группа ИТ-компаний, которые очень заинтересовались продуктом и возможностью диверсифицировать с его помощью бизнес еще и на рынок АСУТП. Так в июле 2022-го года родилась компания-вендор, в основу которой вошла интеллектуальная база проекта с исходным кодом 2-й версии моей разработки. Я вошел в состав ее учредителей и сейчас занимаю должность технического директора компании. За полтора года была сформирована отличная команда: разработчиков, инженеров и менеджеров. Первоочередной задачей, которая была поставлена перед нами — было создание новой версии скады, которая бы удовлетворяла текущим тенденциям и ситуациям, которые происходили в это самое время. А события, как вы понимаете, в этот период сыпались как из рога изобилия, и с каждым из них мы всей командой все больше понимали, что именно сейчас мы делаем то, что нужно нашему рынку автоматизации и это то, что нужно уже сейчас. Насколько у нас это получилось — теперь можно будет оценить, ведь буквально в начале февраля этого года мы выпустили официальный первый релиз нашего нового продукта: SCADA+ 3.0! И выпущен он уже компанией-вендором, которая теперь специализируется на его разработке, поддержке и сопровождении.

Система стала мультиплатформенной. Причем, под этим понимается не то, что многие вендоры скада заявляют как поддержку различных платформ своим продуктом, когда под каждую платформу они выпускают отдельный продукт, работающий только под эту платформу: отдельные продукты под ОС Winodws и отдельные под ОС Linux. Мультиплатформенность нашей системы означает то, что у нас один и тот же набор бинарников работает под тремя различными ОС: Windows, Linux и MacOS. Нет отдельных модулей и версий под конкретную ОС, одна версия запускается и работает под всеми тремя этими типами ОС. Для разработчиков прикладных проектов это: единая среда разработки, единое ядро и графический движок, который не будет давать неприятных нюансов при использовании разнородных модулей под разными ОС и платформами. А также простой перенос системы и прикладного проекта между этими ОС без специальных процедур конвертации. С некоторыми вендорами отечественных ОС Linux мы даже получили сертификаты соответствия, среди них: ОС Astra Linux, Атлант и РЕД ОС.

Мультиоконный интерфейс среды разработчика (MDI) предоставляет инженеру возможность гибко распределять окна среды и ее редакторов на многомониторных рабочих местах, позиционируя окна как внутри самой среды, так и в виде отдельных окон, с поддержкой растягивания на весь экран, на отдельных мониторах.

Рис.01: Мультиоконный интерфейс среды разработчика

Рис. 01: Мультиоконный интерфейс среды разработчика

Рис.02: Мультиоконный интерфейс среды разработчика

Рис. 02: Мультиоконный интерфейс среды разработчика

Политика распространения продукта сохранила идеологию, которая следует с самой первой версии скады: Среда разработчика — полностью бесплатный продукт, который не имеет ограничений по функционалу и не имеет привязок к рабочему месту разработчика. По сути, это портируемая версия ПО, которую можно использовать на неограниченном количестве рабочих мест, а еще проще — просто держать с собой на флэшке всегда под рукой, ведь сам продукт не имеет инсталляции, просто копируй и работай на любом ПК, с любой ОС из поддерживаемых системой. И максимальная минимизация прайс-листа на исполнительные модули, по сути их только два типа, с градацией по объемам лицензируемых параметров: для рантаймов общего назначения — это количество параметров, а для сетевых рантаймов (в основном предназначенных для организации рабочих мест оперативного персонала) — по количеству этих рабочих мест. Нет делений и опций по функциям и другим категориям, которые зачастую создают очень мудреный квест для конечных пользователей, выбирающих решение под свои задачи. Все функции включены в продукт по-умолчанию, нет необходимости долго собирать пазл из функционала по прайсу, чтобы получить то, что необходимо для решения базовых задач.

Система сохранила идеологию: единый инструмент для задач любых масштабов. Внутренняя архитектура была переработана под работу с информационными структурами от десятка до сотен миллионов параметров. И это потребовало значительных усилий по доработке многих средств работы с деревом проекта таких масштабов без потерь в производительности для разработчика. Это не просто заявление, что мы можем создать проект на несколько миллионов точек ввода/вывода, в нашем случае мы больше акцентируем на том, что наша система даст адекватную производительность при работе с проектом таких объемов без заметной просадки в ней в отличии от проекта на сотню точек ввода-вывода. И этим на практике могут похвастаться не все, большинство ограничиваются только заявлениями, основанными на заложенных в архитектуре индексаторах компонентов, не более. При этом SCADA+ сохраняет вполне адекватные требования к аппаратуре и оперативной памяти для работы с проектами таких масштабов.

Для 3-й версии SCADA+ был разработан новый графический движок, который учитывает мультиплатформенное применение и работу с многомониторными решениями для рабочих мест и организации видеостен в диспетчерских для вывода графической информации в прикладном проекте. Графика прошла очень кропотливую оптимизацию для увеличения скорости ее обновления в реальном времени, по сравнению со 2-й версией производительность по тестам показала увеличение скорости в десятки раз, что отразилось также на времени ее загрузки и занимаемой оперативной памяти в процессе выполнения в рантайме. Сам графический редактор включил в себя много удобств, которые были позаимствованы на основе опыта многих современных векторных редакторов графики и САПР-систем, наиболее распространенных среди пользователей подобных решений. И конечно же функция масштабирования графики как в режиме разработки, так и в исполнительной системе, чтобы адекватно адаптироваться под различные размеры мониторов без модификации экранных форм проекта.

Рис.03: Внешний вид графического редактора мнемосхем в среде разработчика

Рис. 03: Внешний вид графического редактора мнемосхем в среде разработчика

Встроенный механизм работы с графическими компонентами — позволяет формировать на базе штатных графических примитивов сложные графические элементы с анимацией и интерактивностью. Правка компонента в библиотеке автоматически может быть применена ко всем его реализациям на всех экранах проекта.

Рис.04: Навигатор компонентов пользовательской графической библиотеки

Рис. 04: Навигатор компонентов пользовательской графической библиотеки

Рис.05: Навигатор компонентов пользовательской графической библиотеки

Рис. 05: Навигатор компонентов пользовательской графической библиотеки

Кроме компонентов библиотеки поддерживают стили. Стили позволят быстро сменить общий внешний вид проекта через правку этих стилей в библиотеке без кропотливой правки всех графических элементов на всех экранах прикладного проекта.

Переработан WYSIWYG-редактор визуальных алгоритмов FBD. Расширен функционал отладки FBD-программ. Редактор C#-алгоритмов получил возможность подключения NuGet-пакетов.

Рис.06: Внешний вид визуального редактора алгоритмов FBD (Functional Block Diagram)

Рис. 06: Внешний вид визуального редактора алгоритмов FBD (Functional Block Diagram)

Рис.07: Внешний вид редактора алгоритмов на языке C#

Рис. 07: Внешний вид редактора алгоритмов на языке C#

Основное внимание мы стараемся уделять именно скорости разработки прикладных проектов. Поэтому система получила очень удобные механизмы тиражирования наработок и сохранения их в файлы, из которых удобно формировать библиотеки компонентов проекта по всем уровням — от оборудования до графики и информационных структур. Также мы не забыли и о командной работе над прикладным проектом группой инженеров. Архитектура проекта была серьезно проработана с точки зрения совместимости с профессиональными системами репозиториев. Уже сейчас все наши текущие работы над проектами как внутри компании, так и совместно с интеграторами ведутся с использованием системы Git. Это очень упрощает версионирование проекта, а также слияние результатов труда каждого инженера в единый прикладной проект.

В среду разработки встроен функционал удаленного обновления и управления работой исполнительных модулей. Теперь разработчик прикладного проекта может выполнять все процедуры по обновлению проекта на узлах системы и их рестарта без непосредственного нахождения на этих рабочих местах, прямо из среды разработки по сети Ethernet. А встроенный отладчик в среду разработчика позволяет подключиться в режиме он-лайн к работающим узлам проекта и в непрерывном режиме контролировать и управлять всеми параметрами системы в ручном режиме. Эти функции особенно полезны при работе с ПЛК, которые с недавнего времени поддерживают сквозное программирование прямо из SCADA+. В связи с уходом с нашего рынка импортных решений по программированию ПЛК, эта ниша активно начинает заниматься вендорами отечественных скада-систем. Мы не стали исключением и сейчас активно ведем интеграцию российских ПЛК в нашу скада-систему. В новом релизе уже есть поддержка двух вендоров ПЛК и теперь этот успешный опыт мы продолжаем развивать в отношении других отечественных вендоров, которые решили заручиться поддержкой в нашей SCADA+.  Таким образом наша скада становится по сути готовым инструментом РСУ в руках разработчика прикладного проекта автоматизации и значительно сокращает процесс наладки и сопровождения проекта с распределенной архитектурой.

Рис.08: Панель удаленного управления рантаймами исполнительной системы

Рис. 08: Панель удаленного управления рантаймами исполнительной системы

Рис.09: Окно удаленного отладчика, встроенного в среду разработки

Рис. 09: Окно удаленного отладчика, встроенного в среду разработки

Очень интересным решением для прикладной разработки будет поддержка комплексного шаблонирования моделей в прикладном проекте SCADA+. Этот механизм позволит прикладному разработчику создавать проект на основе готовых моделей, которые подразумевают готовый элемент проекта, состоящий из экранных форм, алгоритмов, описателей оборудования и протоколов, с которыми эта модель связана, а также всей внутренней обвязкой информационной структуры. Комплексное шаблонирование позволяет использовать уже созданные модели как составные элементы структуры более сложных моделей, то есть — неограниченная вложенность моделей друг в друга. Таким образом, при должной типизации проекта, его построение фактически может быть сведено к построению всей АСУТП предприятия на основе таких моделей от простого к сложному, а внесение изменений в однотипные реализации моделей будет затрагивать только саму модель, а изменения всех ее реализаций в логической инфраструктуре проекта будет применяться автоматически. Это дает колоссальную скорость прикладной разработки, а формирование собственных библиотек таких моделей позволит в дальнейшем также значительно сократить разработку в тех решениях, где применяется похожая модель оборудования, или агрегата. По сути получаем своеобразный Лего-конструктор, где базовые детали создаются в виде моделей, из них могут быть созданы более сложные конструкции, из которых будет в итоге создана финальная структура всей АСУТП.

Рис.10: Комплексное шаблонирование в прикладном проекте на основе моделей объектов и агрегатов

Рис. 10: Комплексное шаблонирование в прикладном проекте на основе моделей объектов и агрегатов

Конечно же мы как практикующий вендор оказываем нашим интеграторам поддержку в разработке реальных проектов. В данный момент в работе два крупных проекта по автоматизации ЦОД: один на 500 стоек, а второй на 1200 стоек. Разработка проекта на 500 стоек с подготовкой к испытаниям прямо на объекте, у компании интегратора, заняла всего три недели работы небольшой команды инженеров! Неплохой показатель для системы почти на 100 тысяч параметров. Этим летом в г. Москва был введен в эксплуатацию уже второй ЦОД на базе SCADA+ на 1200 стоек. Примечательно, что этот проект прошел успешную приемку комиссией «Uptime Institute».  Проект уже введен в эксплуатацию и получил очень хороший фидбэк от инженеров по эксплуатации, которые отмечают очень высокую скорость и стабильность работы SCADA+ по сравнении с аналогичными системами на западных брендах скада, с которыми до этого пришлось работать службе эксплуатации на аналогичных объектах ЦОД. Для статистики: в этом проекте сейчас примерно 350.000 параметров, около 18.000 графических экранов и около 1.900 алгоритмов, а также 4.500 устройств по протоколам ModBus и SNMP, и все это обрабатывается одним сервером под управлением нашей SCADA+ 3-й версии. И это пока еще не окончательные цифры, потому как проект вышел на второй этап реализации, который подразумевает почти двухкратное его увеличение. Обратная связь с инженерами, работающими на нашей системе уже сейчас, очень хорошо помогает нам дополнять продукт необходимыми сервисами, а также проверять работу и нагрузку на систему на реальных данных, а не искусственных тестах, которые не всегда дают адекватную картину.

Для желающих вживую увидеть на основные функции системы и работу в ней — мы приглашаем на наши периодические вэбинары. Запись одного из них можно посмотреть по здесь: Romer на RUTUBE: 4 видео — смотреть онлайн и бесплатно (35330645)

А всех желающих опробовать наше новое решение в работе — прошу обращаться через наш сайт www.scadaplus.ru для заказа версии разработчика.

Для программистов наиболее интересным будет наш опыт работы с библиотекой AvaloniaUI, именно она была выбрана для реализации данного проекта и позволила нам достичь всех необходимых нам характеристик. Надо сказать, что было немного боязно переходить на не совсем еще настолько известное решение на тот момент. Но, в целом результат превзошел все наши ожидания и могу сказать, что AvaloniaUI себя очень хорошо показала в работе. Наш продукт стал одним из немногих масштабных программных продуктов на данной бибилиотеке, который достаточно серьезно использует ее возможности, а также очень крупным и высокопроизводительным решением на ее базе. Огромное спасибо ее разработчикам, а также сообществу — мы постоянно были на связи, и вполне оперативно решаем возникающие в процессе разработки вопросы, связанные с ней. Очень рекомендуем это решение для тех, кто ищет именно мультиплатформу и хороший GUI для своих разработок!

Вот так, обычный домашний пет-проект за эти годы вырос в серьезный и успешный коммерческий продукт, благодаря которому, теперь на Российском рынке ПО для автоматизации появился еще один вендор, который вполне успешно составляет конкуренцию не только отечественным брендам, но и вытесняет западные решения, предлагая уникальный, мощный и быстрый инструмент для инженеров! Хобби стало бизнесом, собравшим очень уникальную команду. Надеюсь, что этот пример будет вполне хорошим мотиватором для тех, кто не только мечтает, но и что-то делает, несмотря ни на что, чтобы создать себе свою личную работу мечты.

Спасибо всем за уделяемое моим опусам время, внимание и обратную связь!

© Habrahabr.ru