Мониторинг данных АСУ ТП и не только

Здравствуйте, пользователи сообщества Хабр.

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

С чего началось.

На одном из производств энергетического сектора было автоматизировано порядка 20 агрегатов с количеством сигналов более 10000, необходимо было разработать систему диспетчеризации для мониторинга данных АСУ ТП.

В связи с этим, мне было интересно реализовать IT-решение для визуализации данных в виде графиков и видеокадров (мнемосхем). Решение должно быть масштабируемым, кроссплатформенным, простым в использовании, web-приложением. И так, функционал – мнемосхемы, графики. Поехали …

Мнемосхемы


Для разработки мнемосхем необходим графический редактор.

Разрабатывать свой сложно, дорого, поэтому был выбран Visio.

Почему именно Visio?

1 – поддерживает векторную графику;
2 – имеет встроенный редактор vba;
3 — позволяет создавать свою библиотеку графических элементов;
4 — имеет возможность добавить к графическому объекту произвольный набор свойств (см. рис.1)
5- распространённый редактор, много пользователей.

Поэтому идеальным редактором для моих целей стал Visio.


Рис.1.

Графики


Тут было проще, сначала рассматривалась библиотека highcharts, но так как она платная,
выбор был сделан в пользу d3.js.

d3.js – очень крутой framework, большие возможности, немного сложен в освоении, но на просторах сети много примеров.

Web-форма “Графики” позволяет просматривать графики на разных временных диапазонах, координатных плоскостях, задавать шкалы и другие возможности.

Платформа для разработки приложения


Для разработки web-приложения выбрана платформа web-программирования ASP.NET, framework ASP.NET MVC, в дальнейшем приложение было переведено на ASP.NET Core MVC.

Как работает приложение


Итак, как работает приложение?

Приложение получает данные через web api интерфейс и отображает их пользователю в виде графиком и мнемосхем.

Приложение может работать в двух вариантах.

Первый вариант:


Рис.2.

Как было уже сказано, в приложении реализован web api интерфейс, через который оно получает данные, непосредственно получением данных с источников занимаются сервисы данных (программные модули). В первом варианте работы видно, что сервисы реализованы внутри приложения, это удобно когда, например, приложение и источники данных находятся в одной сети.

Второй вариант:


Рис.3

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

Основным объектом в приложении является Tag – переменная, измеренное значение технологического процесса. Набор методов (например GetTagOnline, GetTagArchive и др.) для работы с тегами реализует web api интерфейс.

Итак, приложение забирает данные с сервисов, подгружает мнемосхему, разработанную пользователем в Visio, и отображает эти данные.

Анимация графических объектов на мнемосхеме


Для анимации графических элементов мнемосхемы используется javascript. Для того, чтобы упростить пользователю разработку функций анимации, в приложении есть небольшая библиотека, которая включает, например следующие функции: printf(Text), SetText(Object, Index, Value), SetBackColor(Object, Index, Value), SetVisible(Object, Value), GetTag(TagName) и др.
Например, функция отображения измеренного значения:

Function Field (Object, Property) {
var Tag = GetTag(Property.Tag1);
SetText(Object,1,Tag.Value);
}

Администрирование, настройка.

Для настройки используются конфигурационные файлы, где пользователь создаёт профили, добавляет сервисы и др. Данное приложение – консольное, может работать как win-сервис.
Приложение использует встроенный кроссплатформенный веб-сервер Kestrel.

Статья называется “Мониторинг данных АСУ ТП и не только.”. Приложение может отображать в принципе любые данные, которые можно представить в виде схемы, диаграммы и т.п.
Всем спасибо, что дочитали, интересна критика, любые отзывы. Спасибо.

На этом всё, ниже несколько картинок работы приложения.

Пример мнемосхемы (была сделана из файла eplan — >autocad ->visio. ):





Графики:



Комментарии 37

    +1

    А чем существующие решения не устроили, та же опенскада?

      +8
      «Каждый АСУТПшник должен в своей жизни хоть раз сделать свой функциональный блок управления задвижкой, свой расширенный вариант Modbus'а и свою самописную web-скаду...» ©
        +1
        Это не Scada. У вас есть любой источник данных (не обязательно АСУ ТП), написав к нему сервис — вы получаете определенный готовый функционал. В этом проекте, источниками данных являются сервер архивных данных и др.
          +1
          А каким образом реализуется добавление новых, нестандартных устройств? Функции управления этими устройствами?

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

          Сомневаюсь, что конечный пользователь сможет самостоятельно вносить изменения в этот продукт, а подрядчики просто не возьмутся за это и сделают все с нуля.

          К дизайну тоже есть вопросы (масштабы значений, не читаемый из-за фона текст и т.д.).

          Графики это хорошо, но можно ли их масштабировать для разных значений? Изменять динамически размер перьев?

          Не увидел журнала событий.

          Очень интересно какими средствами ведется сбор данных с полевого оборудования и оборудования среднего уровня?
            0
            А каким образом реализуется добавление новых, нестандартных устройств? Функции управления этими устройствами?
            — что понимается под устройствами? если это графический объект с анимацией — то это делается не сложно, динамику можно реализовать для любого нарисованного в Visio объекта.

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

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

            К дизайну тоже есть вопросы (масштабы значений, нечитаемый из-за фона текст и т.д.).
            — Дизайн реализует дизайнер с помощью графического редактора (Visio).
              +2
              для задач, которые не решают готовые продукты


              Какие это могут быть задачи? То, что я увидел в этой презентации легко реализуется любой SCADA системой + к этому добавляется куча надстроек по визуализации и контролю данных, которых в Вашей системе нет.

              Конечный пользователь — это кто? если вы имеете ввиду разработчика — то сможет, там ничего сложного вроде нет.


              Конечный пользователь это служба эксплуатации на объекте, которую мониторит система. Не каждый разработчик знаком со средствами, которые Вы применяли в разработке. И точно не каждый разработчик разберется в этой системе без сопроводительной документации.

              — что понимается под устройствами? если это графический объект с анимацией — то это делается не сложно, динамику можно реализовать для любого нарисованного в Visio объекта.


              Не будет ли это слишком трудозатратно по времени?
              ____________________________________________________

              Очень интересно как реализован обмен данными с подконтрольным оборудованием?
                0
                Какие это могут быть задачи? То, что я увидел в этой презентации легко реализуется любой SCADA системой + к этому добавляется куча надстроек по визуализации и контролю данных, которых в Вашей системе нет.

                — Это не скада. Пока у меня было 2 задачи:
                1. Отображение данных в виде графиков для источника (файлы c данными), при этом приложение развернуто на хостинге. Экран графиков с определенным функционалом от заказчика.
                2. Мониторинг данных с систем АСУ ТП, источник — БД и энергосфера.

                Конечный пользователь это служба эксплуатации на объекте, которую мониторит система. Не каждый разработчик знаком со средствами, которые Вы применяли в разработке. И точно не каждый разработчик разберется в этой системе без сопроводительной документации.

                — ну так документацию нужно делать.

                Не будет ли это слишком трудозатратно по времени?

                — всё относительно, не знаю.

                Очень интересно как реализован обмен данными с подконтрольным оборудованием?

                — это приложение не для задач сбора данных с оборудования, хотя можно и для этого использовать.

                Это приложение — визуализатор данных.

                  +1
                  Вы сказали
                  Это приложение больше подходит, для задач, которые не решают готовые продукты.
                  а потом пишете
                  Пока у меня было 2 задачи:
                  1. Отображение данных в виде графиков для источника (файлы c данными), при этом приложение развернуто на хостинге. Экран графиков с определенным функционалом от заказчика.
                  2. Мониторинг данных с систем АСУ ТП, источник — БД и энергосфера.
                  Собственно, комментатор выше и говорит, что оба пункта практически «из коробки» либо с небольшим скриптованием решаются довольно широким спектором существующих продуктов, поэтому либо вы сами себе противоречите, либо забыли перечислить что-то еще :) Вот нам и интересно, что именно.
                    0
                    Да зачем спорить? если решаются, это же хорошо :)
                      +2
                      Тут основной вопрос другой, как по мне.

                      Зачем сажать заказчика на такую систему, пусть она и решает текущие потребности заказчика, если можно взять готовый и продуманный продукт с которым сможет работать любой подрядчик когда Вы покинете проект?

                      Я не спорю, что система дешевая на начальной стадии, но будет ли она так не дорога и проста на длине?
                        0
                        Ок, задача — источники данных — БД, веб-сервис.
                        Приложение должно предоставлять пользователю данные в виде мнемосхем и графиков, при этом иметь win-аутентификацию, авторизацию, считать часовые, суточные значения, легко добавлять, изменять мнемосхемы, показывать данные за большие периоды (~год, не представляю как вы скриптом скады это сделаете и какой скады). Какую я должен был скаду взять?
                          0
                          Я думаю, что подобная SCADA решила бы все поставленные задачи.
                            0
                            Возможно, я не специалист по masterscada.
                          0
                          Идея была в том, чтоб сделать веб-морду с некоторым api, остальное реализуют разработчики сервисов, как и откуда эти данные (OPC, Modbus и тп) брать.
                            0
                            данные в виде мнемосхем и графиков, при этом иметь win-аутентификацию, авторизацию, считать часовые, суточные значения, легко добавлять, изменять мнемосхемы, показывать данные за большие периоды (~год,

                            Если не секрет, то сколько по времени заняла разработка этого решения и все ли поставленные задачи были решены? Действительно ли система обрабатывает 10000 сигналов?
                              0
                              Могу сказать 100%, что разработчик .net может легко выполнить такую задачу.
                              Задачи были выполнены все, приложение лет 5 как работает. Да, в системе ~ 10000 сигналов, ~ 50 пользователей, в онлайне постоянно пользователей 10 сидит.
                              Про masterscada не могу ничего сказать. Реально может всё это реализовать? Вы разработчик masterscada?
                                +1
                                Да, может и сразу из коробки. Правда, для доступа через web придется поставить несколько расширений.
                                Но с построением отчетов и графиков различной сложности проблем точно не возникнет.
                                С мнемосхемами такая же история, достаточно создать несколько типовых блоков, комбинация которых со всеми настройками потом тиражируется на весь проект.
                                Звуковые, sms, e-mail оповещения, контроль границ значения с отображением выхода значения за границу на графике, контроль качества и достоверности переменной, изменение настроек пера (масштаб, размер линии, форма линии и ее цвет) в режиме реального времени. Отображает архивные данные глубиной до 5 лет точно.
                                Легко коннектится ко всем популярным БД и OPC серверам, поддерживает кучу протоколов.
                                Просто хороший продукт, за него не стыдно.

                                Я не разработчик конкретно MasterScada, но регулярно пользуюсь этим продуктом по работе.
                                  0
                                  Вы сами реализовывали тренды c помощью masterscada c источников любых форматов данных?
                                  Пользоваться и разрабатывать проекты, это немного разное.
                                    0
                                    Словосочетание «разработчик Masterscada» можно понять по-разному: либо это разработчик, использующий MasterScada для создания проектов, либо как разработчик, разрабатывающий саму систему MasterScada и её компоненты.
                                    Подозреваю, что вы и автор комментария говорите о разных вещах :)
                                      0
                                      я имел ввиду — разработчика, который использует MasteScada для создания проектов и который сделал на этой скаде хотя бы пару десятков проектов.
                                        +1
                                        Да, этот парень — я.
                                  +1
                                  Могу сказать 100%, что разработчик .net может легко выполнить такую задачу.

                                  а это бесплатный проект? если да — то где исходники чтобы разработчики на .net смогли посмотреть?,
                                  если нет,
                                  то таких отображалок из бд в суровом энтерплайзе куча и в каждой конторе пишут свои, в этом нет ничего плохого и ничего особенного… это просто рабочие моменты…

                                  Про masterscada не могу ничего сказать. Реально может всё это реализовать? Вы разработчик masterscada?

                                  я, например, не разработчик мастескада, но мне доводилось ей пользоваться, и да — она умеет всё это из коробки…

                                    +1
                                    Цель статьи — показать, как можно реализовать подобные задачи, используя готовые инструменты и как для этих целей подходит Visio, также сделать расширяемый сервисами инструмент, отделив View от данных.

                                    Любая скада отображает информацию из БД своего формата, я думаю мастерскада не исключение, если допустим у вам, скажем 1000 файлов с данными, я не знаю, как вы реализуете отображение этих данных скадой и как быстро это будет ещё работать, но и спорить с Вами не буду, умеет, значит умеет.


                                      +1
                                      в целом на вопрос то вы не ответили — где поглядеть исходники?

                                      но я ещё раз повторю свою позицию — вы молодец. отстаиваете и боретесь за свою точку зрения и статью, именно за это вам и плюс.
                                      и да мне очень понравилась идея Visio-мнемосхема, хочется увидеть как это реализовано…

                                      не любая скада отображает из бд — смысл скады как раз в том, что она может работать с датчиками на прямую, а писать в бд — это уже бонусы скады… например чтобы заставить скаду WinCC писать в базу — тот ещё геморррой…
                                        –1
                                        исходники не планировал выкладывать.
                                        если интересно как создавать динамические объекты, могу добавить это в статью.
                                        Данное приложение может понадобиться, когда источник с данными уже есть (и такое бывает) и нужно, например, через веб показать их.
                                        Работаю много лет с WinCC и продуктами siemens, не всё могут делать скады, а если могут, то это будут костыли. Для каждой задачи — свой инструмент, при этом скады ограничены различными лицензиями на количество пользователей, точек и тп.
                +1
                а где самое интересное то? то что находится в коричневом квадратика с названием Data Services? как он то реализован? какие там протоколы поддерживаются что там собственно внутри?
                  0
                  На текущий момент приложение получает данные с БД и веб-сервиса Энергосферы. Собственно Data Servis — это Rest сервис.
                    +2
                    т.е. в целом это просто отображатель некоторых картинок из базы и\или парсер веб-сервиса…
                    непонятно причём тут SCADA и АСУ… заголовок слегка вводит в заблуждение…
                    но лично мне понравилась идея как использовать Visio для автоматизации создания мнемосхем. очень интересная мысль…
                      0
                      Потому, что этот отображатель как раз используется на текущий момент только в АСУ ТП и имеет некоторый функционал SCADA. И Вы как раз правильно определили — это именно отображатель.
                  –3
                  А кому нужны эти графики? Избыточная информация.
                  Много лет отработал оператором, не понимаю зачем они?
                  Может для дальнейшей обработки для ИИ надо, проходит время параметр меняется от огромного числа переменных (температура, расход, ветер, ночь, день...) и через какое-то время (два месяца?) поступает подсказка — надо проверить систему охлаждения 25 агрегата.

                    +2
                    Графики нужны для анализа и «разбора полётов». И они реально нужны и ими пользуются.
                      0
                      Для операторов может и не нужны, а вот для технологов — очень даже.
                        +1
                        Если всего пяток параметров, графики может быть и не нужны, но когда их несколько сотен… При нормальном техпроцессе в графиках видна цикличность. Когда хоть один параметр начал чудить — «картинка портится», и тут надо срочно искать причину, если успеешь…
                        0
                        Интересуюсь темой (а потому что работаю в АСУТП), и всегда вопрос — почему такое всё цветастое (особенно мнемосхемы)? И все этим грешат. Понимаю что заказчик хочет красивую обёртку для «показать», но работают то обычные люди, которым цветовой шум как таковой не нужен.
                          +1
                          Это потому, что мало-кто из разработчиков АСУТП слышал об ISA-101 и каждый «сам-себе художник».
                            0
                            Согласен с Вами, но статья не об этом.
                              0
                              по моему опыту… мало кто из инженеров-анализаторов смотрит на мнемосхему…
                              на мнемосхему смотрят операторы, и для локальных операторов придумывают раскраску…
                              есть стандарты: красное-плохо, зелёное-норма, желтое-непонятно… (но в целом — как удобнее для операторов, как у них привычно)

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

                              но, я ссылаюсь на свой личный опыт…

                              isa-101 для операторов. не для инженеров, которые анализируют процесс…

                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                            Самое читаемое