Дипломная работа: Потоковая визуализация данных в системе автоматизации производств SEDMAX

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

АСКУЭ - обеспечивает коммерческий учёт электроэнергии (мощности). Это автоматизированная система коммерческого учета электроэнергии, полноценным образом обеспечивающей дистанционный сбор информации со специально оборудованных приборов учета, передачу сведений на верхнюю ступень при условии их обработки [1].

АСУ ТП - это группа решений технических и программных средств, предназначенных для автоматизации управления технологическим оборудованием на промышленных предприятиях[1].

SCADA (аббр. от англ. Supervisory Control And Data Acquisition --

диспетчерское управление и сбор данных) - это программный, предназначенный для разработки или обеспечения работы в реальном времени систем сбора, обработки, отображения и архивирования информации об объекте мониторинга или управления [2].

SEDMAX может использоваться для построения различных автоматизированных систем: телемеханики, учета энергоресурсов, регистрации аварийных событий, контроля качества электроэнергии, коммерческого диспетчирования, комплексного мониторинга и диагностики работоспособности систем, при этом указанные направления комбинируются в любых сочетаниях.

В качестве источников информации могут применяться измерительные преобразователи, приборы учета, устройства сбора и передачи данных (УСПД), ИТ оборудование, программные комплексы.

SEDMAX поддерживает как стандартные протоколы обмена информацией, так и собственные протоколы производителей устройств. Для отображения информации на рабочих местах не требуется установка специальных клиентских приложений.

Система имеет удобный web-интерфейс, позволяющий получать информацию как с помощью стационарного ПК, так и с любого мобильного устройства, подключенного к локальной сети или сети Интернет.

SEDMAX - это одновременно и АСУ ТП, и АСКУЭ, и даже нечто большее, чем SCADA система. При этом все перечисленное объединяется промышленный интернет вещей.

1.4 Постановка задачи ВКР

Целью данной выпускной квалификационной работы является реализация потоковой визуализации данных в системе автоматизации производств SEDMAX.

Для выполнения цели ВКР должны быть выполнены следующие задачи:

1. Переработка существующего инструмента «Виджеты»:

1.1. Улучшение работы веб-сокетов;

1.2. Переработка фронтенда.

2. Доработка мнемосхем:

2.1. Доработка паспорта объекта;

2.2. Возможность ручного ввода в паспорте;

2.3. Получение оперативной информации с устройств;

2.4. Создание «диспетчерских меток» на фронтенде.

3. Создание модуля «Анализ полноты данных»:

3.1. Реализовать возможность анализа данных по датам в месяцах;

3.2. Реализовать возможность анализа данных по часам в датах.

4. Создание модуля «Редактор наборов»:

4.1. Возможность создания наборов по протоколу Modbus;

4.2. Возможность создания наборов по протоколу МЭК-104.

2. РАЗРАБОТКА РЕШЕНИЙ ДЛЯ СИСТЕМЫ АВТОМАТИЗАЦИИ

2.1 Описание используемой системы

SEDMAX представляет из себя многокомпонентную систему, в которой функционал распределен между множеством взаимодействующих между собой компонентов (сервисов). Это, так называемая, микросервисная архитектура, которая позволяет строить приложение на слабо связанных модулях, которые взаимодействуют между собой с помощью специального API (Application Program Interface).

В отличии от монолитной архитектуры, микросервисы:

- создаются из независимых частей и изолированы друг от друга, что позволяет приложению работать корректно при неисправности в каком-то отдельном модуле

- позволяют создавать модули с помощью разных технологических стеков

- более просты в понимании, так как слабо связанны, при том что каждый микросервис выполняет 1 или 2 конкретных функции.

В составе SEDMAX можно выделить следующие основные группы сервисов:

1. Сервисы сбора и передачи данных, выполняющие сбор данных с внешних устройств и систем и осуществляющие передачу данных во внешние устройства/системы;

2. Сервисы web приложения, осуществляющие предоставление пользователям интерфейсов взаимодействия с системой и данных, а также разграничивающие права доступа;

3. Сервисы обработки данных, выполняющие прием данных, их потоковую обработку и пост-обработку;

4. Системные сервисы, выполняющие задачи концентрации потоков данных, хранения данных и конфигурации системы, резервирования, мониторинга и объединения сервисов и передачи специфических сигналов между сервисами.

Для реализации цели ВКР понадобятся следующие сервисы:

Таблица 2.1 - Результат сравнения приложений меньшей функциональности

Имя сервиса

Назначение

SedmaxBackendUI

sed_ui

Сервис обработки запросов за webресурсами (js, css, html файлы)

SedmaxBackendWidgets

sed_widgets

Сервис, обслуживающий пользовательские интерфейсы drag'n'drop виджетов

SedmaxBackendMnemonicDiagrams sed_mnemonic_diagrams

Сервис, обслуживающий пользовательские интерфейсы мнемосхем v2

nginx nginx

Web-сервер

SedmaxBackendArchive

sed_archive

Сервис, обслуживающий пользовательские интерфейсы анализа учета электроэнергии и энергоресурсов

Так же, данные сервисы внутри себя обращаются уже к другим сервисам.

2.2 Разработка структуры системы

Для выполнения ВКР нужно будет создать и переработать пользовательские интерфейсы, а также дорабатывать их бэкенд.

Так же нужно:

- Улучшить cтабильность React-компонентов;

- Улучшить стабильность веб-сокетов;

- Поддерживать верстку при различных размерах окна браузера;

- Ограничить некоторые действия пользователя, которые могут привести к некорректному отображению интерфейса.

Структурная схема элементов, которые в которых будут вестись работы представлена на рисунке 2.1.

Реализация на уровне пользовательского интерфейса

Начиная новый проект, программист сталкивается с выбором: какой JavaScript фреймворк выбрать для сайта - Vue.js, React или Angular? Различия между ними есть, и довольно существенные. Однако каждый из них подходит для решения задач. Поэтому остается открытым вопрос эффективности работы.

Рисунок 2.1 - структура работы с модулями для решения задач ВКР

2.3 Определение технологий для разработки

Преимущества использования JavaScript фреймворков:

- Эффективность - проекты, которые раньше заняли бы месяцы и сотни строчек кода, сейчас могут быть реализованы намного быстрее с хорошо структурированными готовыми шаблонами и функциями.

- Безопасность - лучшие JavaScript фреймворки имеют фирменную систему безопасности и поддерживаются крупным сообществом, члены которого и просто пользователи выступают в роли тестировщиков.

- Расходы - большинство фреймворков с открытым кодом и бесплатны. Поскольку они помогают программистам быстрее разрабатывать пользовательские решения, итоговая цена веб приложения будет ниже.

Возможные варианты фреймворков:

1. Angular.js

Angular.js часто называют MVW (Model-View-Whatever) фреймворк и среди главных выгод называют: быстрое написание кода, быстрое тестирование любой части приложения и двухсторонняя привязка данных (изменения в бэкэнде сразу же отражаются на пользовательском интерфейсе). С момента выхода его экосистема вышла за пределы воображения. Сейчас его заслуженно называют наиболее используемым JS фреймворком для разработки одностраничных приложений (SPA Single-Page-Applications) и он может похвастаться крупнейшим сообществом разработчиков.

2. React.js

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

Он по праву считается самым быстрорастущим JS фреймвком: на сегодня насчитывается около 1000 авторов Github. В MVC (Model-View-Controller) моделе React.js действует как “V” и может быть легко интегрирован в любую архитектуру. Благодаря использованию виртуального DOM дерева он обеспечивает больший рост производительности в сравнении с Angular 1.x. В дополнение к этому, компоненты React могут быть созданы и повторно использованы в других приложениях или даже переданы для общественного использования.

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

3. Vue.js

Углубляясь, Vue.js предлагает двухстороннюю привязку данных (как в AngularJS), визуализацию на стороне сервера (как в Angular2 и ReactJS), Vue-cli (scaffolding инструмент для быстрого старта) и опционально поддержку JSX. Его создатель утверждает, что Vue2 один из самых быстрых фрейворков в целом.

Vue.js лучший выбор для быстрой разработки кроссплатформенных приложений. Он может стать прочной основой для высокопроизводительных приложений в одну страницу (SPAs) и выгодным решением для тех случаев, когда производительность важнее, чем хорошая организация кода или структура приложения.

Реализация на программном уровне

Go - это язык программирования, который был разработан корпорацией Google. Часто его еще называют “Golang” - сокращение от “Google language”. Это компилируемый и многопоточный язык, релиз которого состоялся в ноябре 2009 года.

Одной из ключевых фигур, которые принимали участие в создании Go, является Роб Пайк, известный разработчик языков программирования, а также операционных систем, в данный момент работающий в Google. Выступая на одной из конференций, он отметил, что язык Go - это попытка перенять лучшие стороны таких языков, как C++ и Java [3].

У языка Go есть несколько положительных черт, выделяемых программистами, которые на нем пишут.

Во-первых, это его простота. Язык Go разрабатывался в качестве замены C: его высокая производительность почти сопоставима с языком Си, но более простой синтаксис дает возможность разрабатывать приложения гораздо быстрее (к примеру, как на Python). При этом многие разработчики изучают этот язык после Python или PHP либо используют два языка в связке (Python/Go и PHP/Go). Упрощенный синтаксис облегчает не только написание своего собственного кода, но и чтение кода, написанного другими программистами, что особенно важно в командной работе. Эта особенность Go, в свою очередь, ведет к другому важному факту: быстрое освоение Go позволяет перевести внимание с изучения самого языка на изучение программирования в целом.

Во-вторых, Go имеет большое количество библиотек, благодаря которым можно выполнить практически любую поставленную задачу. Многое можно реализовать, используя только стандартную библиотеку Go, которая легко читается, а также отличается хорошим качеством и скоростью. Отдельного внимания заслуживает эффективное взаимодействие с библиотеками языка Си; некоторые отмечают, что Go-библиотеки по факту являются просто обертками над С-библиотеками.

В-третьих, Go это компилируемый язык, на котором можно быстро написать необходимое приложение. Go имеет такую же строгую статическую типизацию, как Pascal, но в то же время он имеет гораздо больший прикладной характер (и это роднит его с Python). Тут необходимо отметить высокую производительность Golang, которая характерна для компилируемых языков.

Также в Go значительно облегчена кроссплатформенность [3].

База данных - MongoDB

MongoDB - документно-ориентированная система управления базами данных (СУБД) с открытым исходным кодом, не требующая описания схемы таблиц. Классифицирована как NoSQL, использует JSON - подобные документы и схему базы данных.

Ниже приведены преимущества MongoDB по сравнению с другими СУБД:

- данные хранятся в JSON формате;

- поддержка динамических запросов;

- отсутствие сложных запросов;

- отсутствие схемы, различные сущности не идентичны по структуре;

- понятная структура каждого объекта;

- для хранения используемых в данный момент данных используется;

- внутренняя память, что позволяет получать более быстрый доступ;

- легко масштабируется;

- имеется поддержка индексов.

Так же MongoDB может работать с наборами реплик, то есть поддерживать копии данных в актуальном состоянии, при этом каждый набор реплик может выступать в роли или главной, или вспомогательной реплики. Вспомогательные реплики поддерживаются в актуальном состоянии и, если основная реплика дает сбой, то СУБД проводит выбор, которая из вспомогательных реплик станет основной.

2.4 Разработка алгоритмов

В разработке используются следующие основные инструменты: React JS, Redux, Golang, MongoDB.

Так как с помощью фреймворка Redux, как правило, обрабатывается большая часть логики, то нужно представить алгоритм его работы.

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

Теперь объясним, как работает Redux в нашем проекте.

Источник: https://otherreferats.allbest.ru/download/1181521/