Режим реального времени в WebScada на базе технологий OPC UA и WebSocket. Часть вторая

    Приветствую всех хаброжителей! И спасибо за интерес к теме реализации WebSCADA на базе синтеза технологий OPC UA и WebSocket.

    В предыдущем посте я начал описание создания мини WebSCADA с разработки OPCUA-WebSocket шлюза позволяющего транслировать сигналы от OPC сервера в браузер и обратно по протоколу WebSocket. Кому интересно, можно ознакомиться здесь.

    В этой статье хочу продолжить описание работы в данном направлении и представить web-приложение, которое работает с ранее написанным шлюзом.

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

    Для серверной части я использовал Yii, на клиенте – jQuery и Backbone, для отрисовки приборов контроля и графиков – библиотеку Нighcharts работающей с графикой в формате svg. К слову, хотелось бы заметить в пользу WebScada тот факт, что на просторах Интернет можно найти огромное количество готовых библиотек и фрэимворков работающих с графикой, что позволяет сделать довольно незаурядный интерфейс.

    Еще, я не стал делать некий абстрактный тестовый стенд, а сделал приложение, как бы, для контроля распределенных объектов (например подстанций). Потому как, именно в распределенных системах WebScada могут быть востребованы больше всего.

    Была создана администраторская часть (backend) посредством которой производятся настройки web-приложения, создание объектов мониторинга, внесение учетных записей пользователей, привязка объектов к узлам на OPC сервере, привязка объектов к пользователям для разграничения прав доступа и т.д. В дальнейшем расширяя администраторскую часть, можно будет адаптировать ее для нужд той сферы, для которой планируется применение системы. Это пока в мечтах, но база заложена.

    Соответственно была также создана лицевая часть интерфейса (frontend), на которой размещаются визуальные элементы, и производится контроль и управление технологическим процессом. Иными словами, в этой части приложения строится АРМ оператора. Данную часть трудно назвать фронтендом в классическом понимании, так как к ней тоже необходим доступ по паролю. Различие между частями web-приложения состоит в том что к бэкенду имеют доступ только супер администраторы, а к фронтенду операторы АРМ.

    И вот что у меня получилось:

    Администраторская часть.

    image
    Страница управления узлами

    Для начала заносим всю информацию о контролируемых узлах сервера в базу web-приложения (их ID и наименования) чтобы в дальнейшем привязать их к объектам. Для упрощения задачи при соединении с сервером данные об активных узлах транслируются в приложении и отображаются на странице управления узлами. Остается лишь сохранить полученную информацию в базе данных веб приложения, дать узлам осмысленные наименования и определить способ отображения поступающих с узлов данных.

    image
    Подключение к серверу (в обведенной области узлы активные в данный момент на сервере)

    image
    После нажатия кнопки «синхронизировать», узлы попадают в базу данных веб-приложения.

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

    image
    Редактирование объекта

    На создании и редактировании учетных записей пользователей я подробно останавливаться не буду. Здесь все достаточно стандартно и Yii для этого предоставляет все необходимые инструменты. Приведу лишь рисунок.

    image
    Страница управления учетными записями пользователей

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

    image
    Редактирование учетной записи пользователя

    АРМ оператора

    image
    Страница авторизации. Доступ к АРМ.

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

    image
    Панель контроля параметров

    Соединяемся с ранее написанным шлюзом по протоколу WebSocket и сразу же начинаем получать данные от узлов OPC UA сервера в режиме реального времени.

    image
    Просмотр в браузере данных передаваемых OPC сервером в режиме реального времени.

    Вся прелесть протокола WebSocket заключается в том, что данные могут передаваться по инициативе сервера посредством предварительно установленного долгоживущего соединения. То есть в браузере теперь можно получать данные по подписке на события на узлах контроля технологического процесса как в настольной SCADA системе, но делать это из любой точки мира и на любом устройстве с браузером, поддерживающим протокол WebSocket. Создание этого протокола вывело web-приложения на новый уровень, так почему-бы не использовать его возможности в WebScada.

    Далее нужно будет добавить в web-приложение возможность записывать информацию в узлы и отправлять управляющие сигналы. Делать это буду когда возникнет необходимость в таком функционале. Это достаточно просто, ведь возможность передавать данные по инициативе браузера (а точнее пользователя) существовала всегда.

    Спасибо за внимание.
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

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

      0
      А можно уточнить про оборудование и нижний уровень?
        0
        Для тестирования использовался OPCUA демо-сервер, от разработчика OPCUA SDK («Unified Automation GmbH»), эмулирующий работу «боевого сервера» и подключенного к нему оборудования. Но теоретически возможно использование любого оборудования, если для него написан OPC UA сервер.
        Так же, возможно использование оборудования с OPC DA сервером. Для этого в компании «Unified Automation» разработана оболочка для OPC DA.
        При разработке данного софта в качестве источников данных рассматривалось, в основном, оборудование компании "Инкотекс". Но, повторюсь, испытаний на реальном оборудовании пока не проводилось.
        Основной целью на данном этапе являлось тестирование передачи данных от OPC UA узлов в браузер поверх WebSocket.
        Буду рад описать использование разработки на реальном оборудовании, как только мне удастся это сделать.
        0
        как скадоводу по профессии интересна ваше поделие, сам подобное в голове проигрывал… это не SCADA, а скорее смотрелка параметров, это не значит, что это не нужно, далеко не всегда нужно управлять, алармы и прочее, иногда нужна смотрелка-обозревалка (особенно с веб-мордой) параметров кучи устройств в одно месте… поскольку мои познания в вебе ограничены php+html+css+табличная_верстка, картинка у меня не такая красивая как у вас (сразу видно, что вы больше дизайнер, чем асутпшник ) (мы используем веб-морду для архива журнала алармов для Citect и RSView32)… только я прикидывал как драйвер modbusTCP экзешник связать с php (ну или кто будет странички отрисовывать)… modbus — потому что самый распространенный (и открытый) протокол, TCP потому что получше RS-485… есть подобие вашей WebSCADA в секторе ынтерпрайз — АльфаЦЕНТР Программное обеспечение для АСКУЭ от Эльстер, собирает данные с кучи устройств
        Картинка структурной схемы АльфаЦентра
        image

        … интересно, что вы выбрали малораспространенный OPC UA… можете назвать ПЛК (и другие шалабушки), которые идут с OPC UA серверами ????

        … я использовал Yii…
        — как вы произносите три гласные подряд?
        для отрисовки приборов контроля и графиков – библиотеку Нighcharts работа
        посмотрел Нighcharts — оболденно, как сказал мой коллега «За это не жаль деньги отдать»… в одном проекте он как раз реализовывал собственные тренды на python+Qt… потом еще пришлось на питоне написать программку, которая писала тренды в БД (используем Postgres)? освободив отого скучного занятия скаду…
        У вас это исключительно развлечение или мало-мальски планируете практический интерес и доведение до релиз_кандидата?
          0
          вас только OPC UA интересует или можете и SNMP, MODBUS, DCON, карточки DiamondBoards, ProfiNET (на базе Библиотека Libnodave)?
            0
            Так случилось, что имея образование инженера по автоматизации техпроцессов, я работаю веб-программистом.

            очевидные плюсы:
            1) платят больше, чем в АСУТП
            1) можно работать удаленно
            2) никаких командировок в Мухо… ну типа Бованенково-Ухта
              0
              chers добавьте, пожалуйста, статью в хаб *SCADA* — WebSCADA просто обязана быть в хабе *SCADA*

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

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