Альфа платформа: обзор архитектуры и возможностей использования
В начале 2000-х гг. наша команда разработки начинала свою деятельность в сотрудничестве со специалистами инжиниринговых компаний, которые участвовали в ряде сложных и нетривиальных проектов. Особенными эти проекты делали их масштабность (от средних до крупных) и разнообразие целевых архитектур, часто нетипичных. Набравшись опыта, познакомившись с задачами и потребностями пользователей, мы поняли, что в продукт, который мы разрабатываем, необходимо заложить возможности, позволяющие реализовывать все подобные проекты. Исходя из этой установки, мы сформировали базовые принципы, которых придерживаемся до сих пор при развитии Альфа платформы:
- гибкость, производительность, масштабируемость;
- преобразование частных требований в общее для всех решение.
Еще одним важным для нас фактором было понимание тенденций развития в мире ИT и в сфере промышленной автоматизации. Общее развитеи технологий, архитектурных практик, тренд сближения информационных и операционных технологий, развитие IoT/IIoT — все это учитывалось при создании Альфа платформы и сделало ее способной одновременно применяться и в миниатюрных проектах в качестве исполняющей системы контроллера в некоторых сценариях использования, и в крупных проектах диспетчеризации для построения распределенных, многосерверных и многоуровневых систем диспетчерского контроля и управления.
Введение
Альфа платформа — это инструментальная программная платформа, которая позволяет реализовывать проекты автоматизации технологических и производственных процессов практически любой сложности.
Подходы, которых мы придерживаемся при проработке архитектуры и функциональности, ориентированы на достижение следующих целей:
- высокая производительность;
- надежность;
- компактность;
- минимизация зависимостей от внешних компонентов;
- кросс-платформенность.
Этим обусловлен и выбор основного языка программирования — C++. Он нативный, позволяет применять особые техники для достижения высокой производительности, обеспечивает кросс-платформенность и при этом не требует развертывания базовых исполняющих средств, таких как .NET, Java или им подобных.
Архитектура Альфа платформы не является монолитной. По смыслу она аналогична сервис-ориентированным архитектурам, в которых функциональность системы сконцентрирована не в одном компоненте, а распределена между несколькими взаимодействующими между собой сервисами, каждый из которых выполняет строго определенный круг задач. Так, в архитектуре Альфа платформы существуют отдельные компоненты, отвечающие за следующие блоки функциональности:
- оперативный сбор данных и обработка;
- визуализация;
- хранение истории и другие.
Разработчик проекта может самостоятельно выбрать нужную ему схему размещения компонентов (точнее, их экземпляров) и связей между ними, реализуя тем самым любую, даже самую изощренную архитектуру целевого решения, начиная от классического локального «всё в одном»» и заканчивая многоуровневыми, многосерверными, распределенными системами диспетчеризации.
При этом для представления данных в системе и описания логики используется единая объектная модель и единый язык программирования Alpha.Om, а для взаимодействия между компонентами — собственный внутренний протокол, учитывающий внутренние механизмы представления и идентификации данных. Разработчик проекта полностью концентрируется на определении нужных ему данных, их распределении в системе, логических связях между ними и реализуемой логике. Ему не нужно дополнительно детально настраивать взаимодействие между компонентами.
Подобная гибкость в реализации проектов для различных систем привела к тому, что вариантов компоновки лицензии для проекта появилось очень много. Для того чтобы упростить выбор необходимой лицензии для проекта, мы ввели понятие «предопределенный комплект лицензий». Основной смысл данного подхода в том, чтобы сформировать набор функциональности, обеспечивающий реализацию проектов для типовых архитектур, которые можно купить «одной строкой».
Так появились:
- One+ — комплектная лицензия на функциональность Альфа платформы, обеспечивающая построение локальных проектов типа HMI («всё в одном», управление по месту) с возможностью передачи данных в вышестоящие системы.
- SCADA — комплектная лицензия на функциональность Альфа платформы, обеспечивающая построение резервированных систем автоматизации для крупного локального критически важного объекта, требующего повышенной надежности, с большим количеством обрабатываемых данных.
- Platform — комплектная лицензия на функциональность Альфа платформы, обеспечивающая построение территориально распределенных систем с высокой информационной емкостью и нагрузкой, резервированием и гарантией обмена данными между уровнями контроля/управления.
- Historian — лицензия на использование компонента сохранения истории.
- Наборы специфических коммуникационных протоколов.
Такой подход позволил существенно упростить процесс заказа лицензий нашего продукта. Тем не менее возможность тонкой настройки при подборе необходимой функциональности проекта и, соответственно, лицензий остается как опция.
Рассмотрим сначала функциональность самой платформы.
Обзор компонентов Альфа платформы
Как уже говорилось выше, Альфа платформа состоит из набора компонентов, которые для удобства можно разделить по смыслу на следующие группы:
- основные компоненты среды исполнения — обеспечивают основную функциональность исполнения проекта автоматизации;
- средства разработки — предоставляют средства разработки, сопровождения и администрирования проекта;
- компоненты доступа к данным — вспомогательные исполняющие компоненты;
- подсистема инфраструктуры — компоненты, обеспечивающие работу домена, лицензирование, безопасность и прочее.
Основные компоненты среды исполнения
Alpha.Server, Alpha.AccessPoint, Alpha.Imitator
За всеми этими названиями скрывается один и тот же базовый компонент среды исполнения, ответственный за оперативный сбор данных, их обработку и доступ к ним. Каждое название отражает роль конкретного узла среды исполнения, представленного соответствующим компонентом:
- узлы Server взаимодействуют с устройствами, внешними системами, выполняют логику, генерируют события, сохраняют данные в историю и обеспечивают доступ к ней (рис. 1);
- узлы AccessPoint обеспечивают «прозрачный» доступ к среде исполнения на рабочих местах и серверах приложений, скрывая ее особенности (распределенность, резервирование), кэшируют данные (рис. 2);
- узлы Imitator позволяют проигрывать историю процесса, запускать сессии пересчета данных «в прошлом» (рис. 3).
Использование в проекте того или иного типа узлов зависит от архитектуры проекта. Так, в локальных системах «всё в одном» использование Alpha.AccessPoint не является обязательным.
В зависимости от роли узел выполняет следующие задачи:
- взаимодействие с устройствами по различным коммуникационным протоколам;
- взаимодействие со сторонними системами по общепринятым стандартным интерфейсам (OPC, SQL);
- резервирование;
- выполнение логики;
- генерация событий;
- взаимодействие с другими узлами среды исполнения и компонентами Альфа платформы;
- сохранение истории.
Более детально все функциональные возможности ролей перечисленных компонентов будут рассмотрены в отдельной статье. Сейчас же дополнительно отметим несколько важных моментов.
Расширяемый набор поддерживаемых коммуникационных протоколов
Поддержка протоколов реализуется за счет модулей расширения, которые подключаются по мере необходимости в конкретном проекте. Сейчас Альфа платформа поддерживает работу по основным коммуникационным протоколам, таким как ModBus, МЭК 61870/60850, BACnet, FINS, SNMP, S7.
Набор поддерживаемых протоколов постоянно расширяется по требованиям заказчиков. Сейчас ведется работа по выпуску и расширению функциональности Ethernet/IP, CANopen, MDLC.
Резервирование
Для обеспечения высокой надежности систем на базе Альфа платформы нами разработана новая подсистема резервирования, которая позволяет гарантировать идентичность состояний master- и slave-реплик резервной пары. Обмен данными между репликами построен на собственном протоколе, обеспечивающем максимально быструю синхронизацию состояния между ними.
При штатных переходах гарантируется возобновление выполнения логики и генерации событий на новой master-реплике именно с той позиции, на которой завершилось исполнение на бывшем master.
В настоящий момент реализована схема резервирования Single Master — Single Slave. В будущем данная схема может быть расширена до Single Master — Multi Slave, если будет потребность у заказчиков.
Транспорт данных
Все узлы среды исполнения взаимодействуют между собой по внутреннему протоколу Alpha.Link. Протокол обеспечивает обмен всеми типами данных в системе: передачу потоков оперативных данных, сгенерированных событий и управляющих воздействий между узлами. Также узлы поддерживают маршрутизацию запросов к истории и результатов их выполнения.
Файловая буферизация потоков данных
Для гарантированного сохранения в историю используется файловая буферизация, обеспечивающая сохранность исторических данных. Это позволяет не терять данные при разрывах сети между узлами, а также нивелировать пиковые нагрузки потоков данных.
Помимо этого, файловая буферизация может быть задействована при передаче потока оперативных данных между различными узлами по модели «публикатор-подписчик». И в этом сценарии учитывается работа в режиме резервирования узлов-публикаторов и узлов-подписчиков.
Общие характеристики:
- модульность архитектуры сервера — использование только необходимых функциональных модулей;
- количество экземпляров на одном аппаратном сервере неограниченно;
- количество тегов на один экземпляр сервера до 1 000 000 (проверено), возможно, больше (не проверялось);
- высокая скорость резервных переходов в резервной паре;
- гарантированное сохранение и доставка данных на другие уровни за счет файловой буферизации.
Alpha.Historian
Это компонент Альфа платформы, предназначенный для сохранения и предоставления исторических данных о технологическом процессе, в основе которого собственный NoSQL-движок баз данных для хранения временных рядов (TSDB).
В первую очередь Alpha.Historian обеспечивает решение задач уровня SCADA-систем по работе с технологическими данными:
- быстрое и без потерь сохранение данных по параметрам;
- быстрое и без потерь сохранение сгенерированных событий;
- быстрое предоставление данных клиентам.
Общие характеристики компонента Alpha.Historian:
- поддержка множества БД на одном аппаратном сервере;
- сохранение данных в среднем 800 000 записей/с;
- надежность получения и сохранения данных без потерь и пропусков;
- производительность предоставления исторических данных: в среднем 1 600 000 записей/с;
- высокая производительность в режиме одновременного сохранения и предоставления данных: запись — в среднем 700 000 записей/с; чтение — в среднем 1 400 000 записей/с.
Alpha.HMI: Desktop и WebViewer
Это компонент визуализации пользовательского интерфейса, доступен в двух вариантах:
- как отдельное приложение — толстый клиент, обеспечивающий исполнение графической части проекта;
- как серверное веб-приложение, обеспечивающее доступ к проекту через любой браузер, установленный на клиентском рабочем месте.
Естественно, в обоих вариантах исполняется один и тот же проект.
Для публикации веб-приложения подойдет любой веб-сервер: Apache, IIS, Nginx и прочие.
Как и другие компоненты Альфа платформы, Alpha.HMI придерживается объектного подхода. Все элементы проекта являются объектами, которые могут взаимодействовать между собой. Для этого в Alpha.HMI есть богатый базовый функционал, а также возможность его расширения с помощью сценариев на языке JavaScript или собственном скриптовом языке Alpha.Om.
Помимо стандартной библиотеки компонентов, дизайнер Alpha.HMI позволяет разрабатывать собственные типы графических объектов и многократно использовать их экземпляры в других проектах.
Уже несколько лет Alpha.HMI используется не только как средство исполнения и разработки проектов автоматизации. Сейчас он содержит набор базовых элементов и реализует подходы, позволяющие реализовывать собственные приложения для проектов автоматизации. Например, уже достаточно давно задачи отображения событий и графиков, которые постоянно используются в проектах автоматизации, реализованы именно средствами Alpha.HMI без привлечения других средств разработки ПО. Отметим, что эти прикладные задачи контура автоматизации являются одними из самых заметных, поскольку:
- каждый заказчик хочет их максимально кастомизировать под свои пожелания/требования;
- эти задачи работают с большими объемами данных (события, временные ряды).
Уже несколько лет эти задачи поставляются в виде решения на базе общедоступной функциональности Alpha.HMI.
Также сейчас в работе реализация различных задач из контура прикладных решений и администрирования проектов:
- контроль целостности;
- контроль уставок;
- тестовый клиент просмотра данных и другие.
Приложения, разработанные на базе Alpha.HMI, могут как запускаться отдельно (обычные приложения), так и встраиваться в проекты автоматизации. Причем в состав дистрибутивов приложений мы включаем проект, который каждый сможет переработать под собственные нужды или попрактиковаться на нем с реализацией собственных решений на Alpha.HMI.
Средства разработки проектов
В состав средств разработки проектов сейчас входят два инструмента: Alpha.HMI.Designer и Alpha.DevStudio. Первый предназначен для разработки графической части проекта — той части, которая впоследствии будет тиражироваться на рабочие места пользователей и на веб-сервер и исполняться Alpha.HMI.Desktop и/или Alpha.HMI.WebViewer. В свою очередь Alpha.DevStudio обеспечивает разработку информационной модели проекта:
- описание физической структуры объектов автоматизации;
- описание логической структуры объектов автоматизации применительно к средствам автоматизации различной функциональной направленности (серверы сбора данных, серверы истории, серверы межуровневого транспорта);
- представление схемы развертывания проекта автоматизации на вычислительных средствах автоматизируемых объектов;
- автоматизированное развертывание проекта на средства автоматизации согласно описанной в проекте схеме.
Alpha.DevStudio допускает командную работу над проектом благодаря возможности использования распространенных систем контроля версий.
В планах компании — слияние этих двух инструментов в единое средство разработки.
Компоненты доступа к данным
API (Python)
Обеспечивает программный доступ ко всем данным проекта, как оперативным, так и историческим. API позволяет расширять базовый функционал системы собственными решениями, обеспечивая высокую степень интеграции между программными компонентами.
В настоящий момент реализован нативный API (C++) и обертка для языка Python, в работе реализация обертки .Net. В дальнейшем предполагается расширение количества поддерживаемых языков программирования.
Alpha.RMap
Позволяет обеспечить доступ ко всем данным системы посредством SQL-запросов. Компонент реализован как надстройка для PostgreSQL и предоставляет возможность не только получать оперативные и исторические данные и события, но и записывать данные в систему.
Alpha.Reports
Предназначен для автоматизации процессов создания и генерации производственной отчетности, отражающих состояние технологического оборудования или технологического процесса.
Обеспечивает следующую базовую функциональность:
- предоставление доступа к отчетам через веб-интерфейс для формирования отчета по запросу и просмотра сформированных отчетов непосредственно в браузере или загрузки на персональный компьютер в различных форматах;
- централизованное хранение шаблонов и сформированных отчетов с разграничением прав доступа;
- настройка формирования отчетности по расписанию;
- рассылка сформированных отчетов по электронной почте.
Мультиплатформенность
С самого начала работы над Альфа платформой мы придерживались практик кросс-платформенной разработки на C++ и в настоящее время имеем единую кодовую базу для Windows, Linux и процессорных архитектур:
- поддерживаемые ОС: MS Windows (актуальные выпуски), Linux (Debian, Ubuntu, CentOS, АстраЛинукс, АльтЛинукс, РедОС, Синтез, включая специальные сборки, имеющие сертификат ФСТЭК);
- поддерживаемые архитектуры процессоров: х86, х8664, ARMv7, ARMv8.
Еще один немаловажный момент: недавно успешно прошли предварительные испытания по использованию компонентов Альфа платформы как исполняющей системы контроллера.
Таким образом, Альфа платформа работает как в кластерах с виртуализацией и мощными вычислительными ресурсами, так и встраивается в контроллеры ПО. Это значительно расширяет возможности применения платформы, поскольку сокращает количество компетенций, требуемых от разработчика проекта: средство разработки проекта будет единым и для контроллера, и для верхнего уровня, как и инструменты администрирования.
Типовые архитектуры проектов
Как уже говорилось во введении, мы выделили три основные архитектуры проектов, для которых сформированы комплекты лицензий.
HMI, или «всё в одном»
Название говорит само за себя. Как правило, такие архитектуры используются для управления оборудованием по месту, реализованы как отдельно стоящий АРМ или комплектное шкафное решение со встраиваемым панельным компьютером.
Функциональность, включенная в комплект лицензий Alpha.One+, позволяет:
- установить на одном вычислительном узлеServer с поддержкой всех основных коммуникационных протоколов и остальными функциональными возможностями данного компонента, исключая резервирование;
- обеспечить обмен данными с оборудованием с числом внешних тегов до 50 000;
- обеспечить запись истории локально в реляционную СУБД илиHistorian (лицензируется отдельно);
- передать оперативные данные в вышестоящую систему по OPC UA илиLink;
- реализовать полнофункциональный графический проект с возможностью управления оборудованием;
- при необходимости добавить коммуникационный протокол, не входящий в базовую лицензиюOne+ (рис. 4) (лицензируется отдельно).
Классическая архитектура с резервированием
В данной архитектуре серверные компоненты могут быть размещены на отдельных аппаратных серверах, но допускается и совместная установка. Это относится и к клиентской части, которая может быть установлена совместно с серверной.
В состав комплекта лицензии Alpha.SCADA входит:
- SCADA Server: Alpha.Server с количеством внешних тегов до 150 000 с резервированием, базовым набором коммуникационных протоколов и остальными функциональными возможностями данного компонента;
- SCADA Client: Alpha.HMI со всеми решениями, разработанными на его основе.
Дополнительно приобретается лицензия на Alpha.Historian (рис. 5). При необходимости можно реализовать сохранение истории в реляционную СУБД.
Многоуровневые системы диспетчеризации
Такие системы характеризуются:
- наличием нескольких уровней контроля и/или управления;
- наличием различных логически обособленных подсистем в рамках единой системы;
- территориальной распределенностью между уровнями/объектами;
- резервированием пунктов контроля/управления.
Комплект лицензий Alpha.Platform позволяет построить систему:
- на множестве аппаратных/виртуальных серверов (количество определяется уровнем лицензии), установив на них множество экземпляровServer с единой емкостью внешних тегов, которая может превышать 2 000 000 (количество определяется уровнем лицензии);
- множество автоматизированных рабочих мест сHMI (количество определяется уровнем лицензии).
Дополнительно приобретается лицензия на Alpha.Historian. При необходимости можно реализовать сохранение истории в реляционную СУБД.
Альфа платформа покрывает не только определенные нами архитектуры систем (рис. 6), но и архитектуры других систем разной степени сложности.
Заключение
Данной статьей мы хотели начать рассказывать об Альфа платформе, ее архитектуре, компонентах и возможностях для разработчиков и пользователей. В дальнейшем планируем подробно описать наиболее значимые составляющие архитектуры и функциональности Альфа платформы и подготовить обзор ее использования в различных архитектурах систем, простых и сложных.