В этом небольшом (частей в несколько) обзоре, я хочу, поделиться с Вами своим видением перспектив развития систем АСУТП, показать возможности современных web-технологий и, самое главное, поднять вопрос о том, действительно ли нам всё ещё нужно тратить огромные деньги на покупку такого, казалось бы важнейшего на сегодня, компонента АСУТП, как SCADA (а может даже и ещё что-то лишнее найдём).
Итак, для начала давайте рассмотрим, как выглядит структурная схема современной АСУТП и опишем задачи, которые решаются каждым из её компонентов.
С нижним уровнем всё понятно, — полевое оборудование (датчики и исполнительные механизмы), подключенное к контроллерам через специализированные цифровые шины (profibus, fieldbus …) или просто аналоговым сигналом по двум проводам.
Средний уровень — это различные контроллеры (ПЛК), которые собирают информацию от датчиков, обрабатывают её (согласно заложенным в ПЛК алгоритмам) и выдают управляющие воздействия на исполнительных механизмы. То есть ПЛК как раз и осуществляют автоматическое управление процессами.
Ну и наконец верхний уровень. Здесь расположены сервера и операторские станции. Задача этого уровня — обеспечение взаимодействия между автоматикой (в лице управляющих контроллеров) и человеком (оператором), а так же хранение исторической информации (история тревог, тренды, история действий операторов …)
Задачи верхнего уровня как правило решаются с помощью специального программного обеспечения, именуемого SCADA. SCADA — это аббревиатура от английских слов Supervisory Control And Data Acquisition, что можно перевести как диспетчерское управление и сбор данных.
На самом деле, SCADA обычно представляет собой довольно большой и довольно дорогой пакет программ, заточенных под клиент-серверную архитектуру. То есть, в составе SCADA-системы есть серверная часть (обычно набор серверов), которая отвечает за: обмен данными с контроллерами (через OPC или драйвера), хранение исторической информации, формирование отчётов и тому подобное, и есть клиентская часть, которая отвечает за: визуализацию и доступ оператора к данным серверов, то есть отображает информацию с серверов и даёт оператору возможность через сервера управлять процессом (изменять какие-то параметры). При этом, если сервера и клиенты физически разнесены на разные машины, то в качестве линий связи между ними обычно используется Ethernet.
При этом, сразу хочу сказать, что в нормальных системах все алгоритмы управления закладываются в контроллер, а не в скаду (хотя SCADA-системы зачастую позволяют реализовать и алгоритмы ПИД-регулирования, и какие-нибудь циклограммы и прочие вещи). Любой контроллер на порядок надёжнее и стабильнее компа. SCADA ставится поверх обычной операционки, чаще всего Windows, о надёжности которой и так ходят легенды, плюс туда накатывают ещё какое-нить левое ПО — в итоге всё начинает глючить, падать и виснуть. В контроллере же обычно стоит только real-time OS, в которой крутятся ваши алгоритмы, и никакого левого ПО.
Таким образом всё управление в скаде оператором сводится к тому, чтобы по нажатию кнопки сбросить или установить в контроллере какой-нибудь один битик, изменяющий работу заложенного в контроллер алгоритма, ну, или максимум, ввести какое-то число (целое или с плавающей точкой).
Что-то я отвлёкся, вернёмся к нашей скаде. Что же в итоге получилось? Получилось, что SCADA — это такой набор дорогущих программ (каждая часть этого набора отдельно лицензируется и стоит отдельных денег), который позволяет нам получать и отправлять данные по сети Ethernet, красиво их отображать и всяко-разно обрабатывать.
И всё? Ага, и всё. Клиент-сервер, Ethernet, отображение данных, хм, где-то я всё это уже слышал. Да вот же, ё-моё — web-технологии!
Чем обычный web-сервер, скажем апач, в связке с обычным браузером, хуже SCADA-системы. Да ничем. Отдать данные пользователю через Ethernet, принять данные от пользователя через Ethernet — да пожалуйста, через http такое вполне реально (на сайте есть статья как сделать простейший http-сервер самому).
Визуализация? Да бросьте. С внедрением SVG это вообще перестало быть проблемой. Рисуйте что хотите и как хотите, — есть куча редакторов, позволяющих нарисовать что угодно и экспортировать в SVG (а можете вообще прямо в блокноте «рисовать»). При этом, в отличии от многих скад, у вас не будет никаких проблем с масштабированием (вектор — есть вектор).
Хранение данных? А мускул (MySQL) на что? Вполне себе отличная БД. Пихайте данные туда и храните сколько хотите и как хотите.
Авторизация, защита данных? Используйте https вместо обычного http, добавьте своё шифрование и передавайте по http зашифрованные данные, используйте и то, и другое и что-нибудь ещё. Ну а уж авторизация вообще на каждом форуме прикручена, тут проблем нет (проблему решают всё те же мускул и php).
Интерактив, генерация отчётов? А javascript на что? А php? На них, кстати, можно, в принципе, и алгоритмы управления реализовать. По крайней мере для какой-то бытовухи (как я уже писал, для серьёзных систем такое неприемлемо, и даже возникновение такого желания — это извращение и повод обратиться, если не к психиатру, то хотя бы к психологу).
Что там у нас осталось неохваченным? Обмен данными с контроллером? Да, вот здесь придётся либо разбираться с драйверами (что довольно проблематично для огромного количества различных железок), либо пользоваться OPC. Но прикол в том, что как раз OPC-сервера (в отличии от скад) обычно даются производителем оборудования совершенно бесплатно, остаётся только прикрутить к ним своего OPC-клиента. Конечно вменяемость технологии OPC оставляет желать лучшего (что они там все курили?), но всё же это вполне реально.
Итак, на сегодня у нас есть всё необходимое, чтобы полностью отказаться от таких дорогих, глючных и неэффективных программ, как SCADA-системы. Чего не хватает? Не знаю, может быть как раз вот этой статьи 🙂
Фишка в том, что все перечисленные выше программы, призванные заменить скады, — совершенно, абсолютно, категорически бесплатны. Плюс открытый код, плюс поддержка сообществами разработчиков-энтузиастов.
Как вы думаете, кто сделает лучший продукт — миллионы разработчиков-энтузиастов из разных стран или какая-нибудь жадная закрытая контора, в которой работают пусть даже сто программистов (хоть тысяча), но за деньги и под присмотром эффективных менеджеров? По-моему ответ очевиден.
Что ж, надеюсь в «светлом» будущем SCADA-систем я вас убедил, поэтому в следующих частях попробую перейти от слов к делу и на каком-нибудь простеньком примере реализовать изложенную выше концепцию по построению АСУТП без всяких этих, как там они назывались, ну эти, дорогие, допотопные программы, ну вот, уже забыл…
- Часть 1. Противостояние неизбежно, результат — предсказуем.
- Часть 2. Простой удалённый мониторинг через web-браузер.
- Часть 3. Удалённое управление через web-браузер.
- Часть 4. Продвинутая визуализация в web-браузере. АСУТП аквариума.