Роман
Савоченко об OpenSCADA
OpenSCADA
и OpenSCADA - одно и то же?
Видимо,
путаницы всё же не избежать, но в нашем случае речь идёт только о
названиях, искать общее и отличное в деталях технического исполнения
этих двух проектов мы не станем. Расставляем первые точки: есть
проект OpenSCADA - openscada.org,
только что отметившийся выходом версии 0.2.0. Есть и проект OpenSCADA
- oscada.diyaorg.dp.ua,
ведомый Романом Савоченко (rom_as на diyaorg
dp ua), научным сотрудником НИП "ДІЯ".
Последний сегодня доступен в версии 0.5.0, о нём и пойдёт речь. И
тот, и другой полноправно называют себя "Системой диспетчерского
управления и сбора данных". И тот, и другой нацелены на сферу
автоматизации технологических процессов. Тёзки.
Как
всё начиналось.
Нередко
начинающему проекту как воздух необходим взгляд со стороны. Хорошо,
если разработчики сами это понимают и приглашают постороннего
человека на роль эксперта – неважно, как и где это делается, в
случае с открытой моделью разработки это может быть и переписка, и
форум. Кто-то вольно, или невольно, ищет решения своих проблем в
материалах, подобных этому. История создания любой программы –
коктейль, который смешивает сам читатель. Если хотите, это и есть
секрет "чужих граблей". Можно и дальше льстить человеку,
что он-де не знает чужих ошибок, но скорее дело в том, что он не
видит, где заканчиваются свои.
С.
М.: Скажите, Роман, как вообще возник замысел OpenSCADA, что
толкнуло Вас на создание проекта?
Р.
С.: Дело в том, что это не первый мой проект в данной области.
Первым был Complex2 (НИП "ДIЯ"). Работа над ним вскрыла все
недостатки работы над закрытым проектом, причём настолько ярко, что
желание когда-либо ещё строить подобные проекты на закрытой основе
окончательно пропало. Замысел же создать открытую SCADA возник на
этапе завершения проекта Complex2 (2002 г.) и осознания необходимости
создания потенциально новой системы основанной на принципах
открытости, модульности, многоплатформенности и масштабируемости с
предварительным созданием полноценного проекта.
С.
М.: То есть, изначально в выбранной модели разработки OpenSCADA
нет этого пафоса "знамени GPL" и т. п. - обычное практичное
решение без тени философии и романтизма – я Вас правильно
понимаю?
Р.
С.: Почему же, философией OpenSource проект пропитан в полном
объёме. Потому как эта философия совпадает с моей личной, и они
встретились в нужном месте и в нужное время. Скорее, это смесь
философии движения открытых исходников с практической необходимостью,
как, собственно, и всё в этом мире формируется из различных частей,
каждая из которых придаёт свой оттенок. Кроме того, идея должна быть
в любом начинании и от того насколько она сильна зависит устойчивость
проекта к дестабилизирующим факторам.
С.
М.: Вернёмся к истокам
OpenSCADA...
Р.
С.: Проект Complex2 основан на ранней, закрытой, практически
внутренней, разработке SCADA Complex (1993 г.) фирмы НИП "ДIЯ".
Complex была создана для платформы DOS16 и имела массу недостатков,
обусловленных множественными ограничениями платформы, особенно ярко
выраженных в свете использования 32-разрядных процессоров. Имея
"честь" практически использовать Complex в своей работе, я
в полной мере ощутил эти проблемы на себе. Устав мириться с
закоренелыми проблемами и пассивностью разработчиков, я начал искать
решения этих проблем. Эти решения, в совокупности, и вылились в
проект Complex2 (2000 г.). Complex2 уже работал на платформе DOS32 и
исключал все проблемы Complex, оставаясь при этом совместимым
с ним. К сожалению, всё та же инерционность разработчиков и политика
решения только сиюминутных проблем, при полном отсутствии
планомерности в долгосрочном развитии, сделала Complex2 моей личной
разработкой. Продолжая разработку Complex2, я выжал из платформы
DOS32 практически все, что можно, значительно расширив её
возможности и применив для расширенного динамического моделирования
целых производственных процессов. Накопив такой опыт и не имея
возможности опубликовать свою работу (Complex2 основан на коде
коммерческого и закрытого Complex), я решился пройти этот путь с
самого начала, создав открытый и принципиально новый проект
SCADA-системы.
С.
М.: Отказаться от всего, что уже есть, что уже работает,
что уже приносит практическую пользу... Таких примеров, когда что-то
полностью отвергается только для того, чтобы всё начать заново, с
чистого листа, немного.
Р.
С.: И тяжело, но иногда неизбежно. К осознанию этого я пришёл не
сразу. Какое-то время пытался вытянуть Complex2 в QNX и Linux, и
конфигуратор в каком-то виде там уже работал, но вовремя осознал, что
таким образом я благополучно перенесу ограничения, наложенные старой
архитектурой, пусть даже и расширенного Complex2, на другую
платформу. Да и потом, опубликовать и, тем более, публично защитить
такой проект будет практически невозможно, как минимум из-за
отсутствия полноценного проекта и идеи, его движущей.
С
другой стороны, я начал не с нуля, а с неплохим опытом, имея пул
своих наработок и идей, на которые лицензионные ограничения не
накладываются и которые я в OpenSCADA вытащил.
Впоследствии
продолжительное время искал подобные открытые разработки именно
потому, что прекрасно понимал чего стоит начать такой проект, да ещё
и с нормальным подходом к проектированию и разработке. В процессе
поисков (это был 2002 г.) были обнаружены три проекта.
FreeSCADA.
Проект находился в явно заброшенном состоянии. В целом, была
сформулирована только общая концепция и не прослеживалась
деятельность с 2000 г.. Попытки связаться с авторами не увенчались
успехом.
OpenSCADA.
Также, как и в случае с FreeSCADA, о проекте создавалось впечатление
заброшенности.
Visual
- visual.sourceforge.net.
Проект оказался практически единственным активным, и многие
заложенные в него идеи понравились. Я начал прорабатывать его,
однако, разобравшись в архитектуре, отказался от идеи развивать его
по причине значительных ограничений, заложенных в архитектуре и узкой
направленности проекта. Кроме того, связаться с автором и обсудить
эти вопросы не получилось.
Окончательно
прийдя к выводу о необходимости создания нового проекта, открытой
SCADA (впоследствии получившей название OpenSCADA), я начал с
создания полноценного проекта (ТЗ и тщательной проработки
архитектурных решений), т. е. "сверху вниз". Это
потребовало дополнительного изучения многих направлений IT:
программные платформы (QNX, Linux, POSIX), аппаратные платформы,
сетевые архитектуры, общие концепции и особенности языков
программирования и их компиляторов, теорию проектирования и
разработки ПО и многое другое. Кстати, с целью систематизации своих
знаний я получал в 2003-2005 гг. второе высшее образование
программиста (первая специальность – электронщик).
Устраняя
пробелы в знаниях и систематизируя их, были внедрены многие решения в
практическую деятельность, позволившие прочувствовать различные
подходы в построении ПО на различных платформах и выделить общее в
многоплатформенных разработках. Так, был создал сервер фирмы
diyaorg.dp.ua на основе ОС Linux, на нём были запущены многие
сервисы, и сам я, в результате, полностью перешёл на Linux, осознав,
что создавать многоплатформенные программы легче именно там (полгода
до этого экспериментировал в QNX). И только после того, как
почувствовал все оттенки среды, в которой будет работать программа, я
закончил проект и приступил к реализации. Именно ощущение широты
возможных решений и понимание того, что предусмотреть всё невозможно,
сделало OpenSCADA настолько аморфной, гибкой в конфигурировании и
открытой новым возможностям.
С.
М.: На момент создания своего проекта Вы уже знали о
существовании другой OpenSCADA. Это та же система, что попала недавно
в анонс на LinuxRSP?
Р.
С.: Похоже, что нет. Тот проект располагался на SourceForge
и создавал устойчивое впечатление заброшенного проекта. Проект на
openscada.org
открыл в 2005 г. Jens Reimann. Проект реализуется на языке Java. С
автором этого проекта я уже довольно плотно общался и даже переводил
для него обзорный документ своего проекта на английский.
С.
М.: Вас не смущает эта путаница в названиях?
Р.
С.: Я сознательно пошёл на дублирование имени с заброшенным
проектом, прекрасно понимая, что такое громкое имя за моим проектом
может не удержаться. И меня это не смущало, это имя я воспринимал как
название, наиболее полно и ярко представляющее то, что было задумано
и символизирующее знамя, которое я подхватил. Такое название нужно
было именно для начального привлечения внимания к разработке и может
впоследствии быть изменено, выполнив свою показательную роль.
О
Протве...
С.
М.: Судя по информации на страницах OpenSCADA, Вы активно
участвуете в различных мероприятиях. Два года назад на первой
конференции на Протве Вы анонсировали
выход OpenSCADA,
планируете ли приехать и в этом году?
Р.
С.: Планы были, но сейчас много работы и неизвестно, смогу ли я
вырваться. Значительно активизирован процесс развития системы в
направлении создания среды визуализации для полноценного внедрения в
ближайшее время. На пятой всеукраинской наверняка буду.
С.
М.: И раз уж о Протве разговор... какие впечатления оставляют
такие встречи? Это для тех, кто ещё взвешивает "за" и
"против" поездок.
Р.
С.: Вообще, идея совместить несколько мероприятий мне
понравилась, всё логично: сначала ввести в курс дела новичков, обучив
их на курсах, затем устроить обмен мнениями и опытом для тех, кто в
курсе, и в завершение расслабиться, собраться с мыслями и пообщаться
в непринуждённой обстановке с коллегами. Впечатления, в целом,
приятные, хотя некоторые замечания есть. А как же без них?
Первое
– неплохо бы Fest разбавить культурно-массовыми мероприятиями.
Когда туда попадает человек, который точно знает, чего хочет –
это лишнее, но когда новичок, ещё и никого не знающий – это
более, чем нужно. Знаю по себе, хотя кое-кого я там знал.
Второе
– слишком рано прекращается приём заявок на выступление. Я
прекрасно понимаю, что стоит за организацией такого мероприятия, но
встречаются люди, которые не могут так рано определится с
возможностью участия в конференции, да и основание к докладу может
возникнуть за пару недель до доклада. Это я о себе.
В
целом же, хочу сказать большое спасибо ALT
Linux за
то, что они организовывают такие мероприятия, затрачивая огромные
усилия и время, популяризируя идеи свободы в мире ПО. Удачи им в этом
важном деле.
С.
М.: Если возможность всё же предоставится, чем бы хотели
поделиться в этот раз? 27 июня вышла новая версия программы...
Р.
С.: Если поеду на конференцию, то доклад будет по версии 0.5.0,
основываясь на анонсе этой версии:
http://diyaorg.dp.ua/oscadawiki/wakka.php?wakka=Doc/OpenSCADA050
С.
М.: Если бы Вам предложили проранжировать самые главные проблемы
проекта, что бы Вы выделили особенно? Оглянувшись на два года назад,
что можно считать успехом?
Р.
С.: Проблема одна – ресурсы. Я по-прежнему тяну его
один. Всё остальное не проблема, а временно-перманентное состояние.
Эта проблема, возможно, из-за ограничения круга осведомленных
русскоязычной аудиторией. Что я и начал исправлять, создав новый сайт
и начав перевод его интерфейса и базовой документации на английский.
Из
успехов можно выделить то, что завершена реализация базовой
функциональности ядра системы и проект вплотную приблизился к
реализации базовой функциональности SCADA-системы в целом. То есть,
на повестке дня стоит разработка и реализация среды визуализации.
Успехом можно считать и первые шаги практического использования.
С.
М.: Вы могли бы выделить кого-нибудь из тех, кто имеет хоть
какое-то активное отношение к проекту?
Р.
С.: Слова "какое-то" и "активно" явно
противоречат...
С.
М.: Явно...
Р.
С.: ...на этапе проектирования помогал Бортник Тимофей
(timbortnik на mailru com),
выполняя функции технического консультанта. Позже Зайчук Евгений
(evgen на diyaorg dp ua)
спроектировал и реализовал на базовом уровне среду визуализации
основанную на QT библиотеке (проект Vision).
С.
М.: Что нужно для того, чтобы
присоединиться к работе над OpenSCADA?
Р.
С.: Как и в любом деле, для
этого нужно желание, желание по-настоящему. А умение при наличии
желания всегда прийдет.
Со
стороны проекта всё для коллективной работы уже есть. Есть
репозиторий Subversion на diyaorg.dp.ua,
есть документация по API и системе в целом, и есть система
управлением знаниями на основе Wiki http://diyaorg.dp.ua/oscadawiki.
Ну и конечно же, есть план развития системы и список задач, требующих
реализации
http://diyaorg.dp.ua/oscadawiki/wakka.php?wakka=works/ToDo.
Модель
разработки OpenSCADA.
С.
М.: Рассматривали ли Вы иной вариант с лицензированием, или GNU
GPL изначально была безальтернативным выбором?
Р.
С.: Поначалу рассматривалось двойное лицензирование. Первая, в
обязательном порядке, свободная (BSD, GPL, LGPL...) вторая –
коммерческая. Однако, после затяжного согласования и обсуждения
коммерческой лицензии в фирме НИП "ДIЯ" было решено от неё
отказаться. Свободная лицензия выбиралась из соображений совместной
работы над проектом, а не просто использования наработок OpenSCADA
внутри коммерческих проектов. Поэтому отпала BSD лицензия и остался
открытым вопрос выбора между GPL и LGPL. В общем, используется GPL,
пока кто-нибудь аргументированно не докажет целесообразность
использования LGPL для OpenSCADA.
С.
М.: Это только с первого взгляда GNU GPL захватывает свободой.
Если позволительно ассоциациями, то тогда GPL – это твёрдая
точка, мерить до неё одной ответственностью, конечно, нельзя (это
только кусочек влияния на выбор лицензии), но такое напряжение, когда
конкуренция идёт не только извне, но постепенно обостряется и внутри
– здесь это выражено предельно. Нередко в будущем удачного
свободного ли, или открытого, проекта места его создателю не
остаётся. Пусть это сегодня не относится к OpenSCADA, но что об этом
думаете? И потом, Вы ощущаете на себе влияние подобных проектов?
Р.
С.: Наличие под боком (внутри фирмы) конкурирующего проекта
научило меня спокойно относиться к этому факту, особенно в свете
того, что существуют более серьёзные закрытые проекты за пределами
моей видимости.
А
конкуренция между открытыми проектами – это скорее не
конкуренция, а сотрудничество. Хотя и в разных проектах, но
сотрудничество. Я всегда могу воспользоваться наработками других
открытых проектов, сделав свой лучше и не затратив на это
значительных усилий. В свою очередь, другие могут воспользоваться
моими наработками. В целом, мы создаём спектр решений с
индивидуальным оттенком свойств, предоставляя более широкий выбор,
как и видовое разнообразие в природе. В качестве доказательства моих
слов, на Wiki-ресурсе OpenSCADA вы можете найти перечень
коллег, то
есть схожих открытых проектов.
Область
практического применения OpenSCADA и вокруг неё.
С.
М.: Проблема автоматизации управления технологическим процессом –
настоящая головная боль для многих постсоветских предприятий,
специалистам нужны работающие решения, но узнав о стоимости закрытых
систем, руководство вспоминает о долгих ящиках и предпочитает по
старинке платить зарплату Ивановым и Сидоровым, периодически экономя
на их премиальных. Есть проект OpenSCADA, дошедший до практической
реализации на конкретном оборудовании, и самим собой напрашивается:
почему не вложить силы собственных программистов (благо, и
документированности проекта можно позавидовать) именно сюда?
Мотивация – и решение конкретной задачи на предприятии, и
повышение квалификации собственных специалистов, и экономия на
наладке и обслуживании, свобода от лицензионных отчислений, можно
продолжать...
Р.
С.: Это извечная проблема выбора. Выбора между
слабоконтролируемым решением под ключ и полностью подконтрольным
открытым решением. Это как известная мудрость: "Если государство
не хочет кормить свою армию, оно будет кормить чужую". В нашем
случае: "Если предприятие не хочет держать свой штат
программистов, способных адаптировать свободные решения, оно будет
платить чужим за закрытые решения". Есть недостатки и
преимущества у каждого из этих подхода, и здесь вопрос только в
выборе и праве каждого на собственный выбор. Проблема только в том,
что про преимущества открытых решений мало, кто знает, а вот об этом
нужно говорить.
Из
практики, далеко немногие предприятия позволяют себе держать
серьёзный штат программистов и вести политику на внедрение открытых
решений. Многим предприятиям всё равно, что за SCADA стоит –
главное, чтобы за неё кто-то отвечал, и она работала. И он готов за
спокойный сон платить. А этим "кем-то" обычно является
сторонняя внедренческая организация. Вот для них OpenSCADA и может
иметь значительный интерес. Об этом я на Протве рассказывал.
С.
М.: Насколько серьёзным, по-Вашему, должен быть этот штат
специалистов? Понятно, что вряд ли кто откажется от больших
программистов, но чаще достаточно грамотных администраторов, тем
более в случае, если сначала работой занимается сторонняя
организация...
Р.
С.: На самом деле для внедрения
открытых решений большой штат не нужен. Достаточно взвешенной
политики предприятия, направленной на это, и несколько грамотных
программистов с достаточно широким кругозором для адаптации открытых
решений в сотрудничестве с разработчиками и внедренческой
организацией. Сила открытых решений как раз и заключается в
распределённом механизме создания и сопровождения, наиболее полно
учитывающем потребности конечного потребителя.
С.
М.: Отношения
"заказчик-исполнитель" достигают баланса профессионального
и личного сотрудничества, когда никто не станет раздражаться из-за
телефонного звонка, даже если понимание вопроса с той и другой
стороны различно по масштабу – у первых "беда", для
вторых – "небольшая проблема"?
Р.
С.: Что интересно, но ощущение
ответственности у автора за допущенные ошибки в свободном проекте
подчас выше, чем у служб поддержки коммерческих проектов, хотя по
условиям лицензии он никому ничего не должен. И действительно,
немаловажную роль здесь играют личные взаимоотношения.
С.
М.: OpenSCADA уже внедрена на практике, насколько здесь Ваш опыт
выходит за пределы обычной рутины установки и наладки? Что нельзя
предугадать в этой работе? Сложно ли стать на сторону заказчика и
оценить свои предложения со стороны?
Р.
С.: О полноценном внедрении
говорить ещё рано, а вот практическое использование, для внутренних
целей фирмы, уже имело место.
Опыт
всё настойчивее указывает на неэффективность использования
фиксированных решений. Всё чаще встречаются предприятия, для которых
стандартные решения уже не являются достаточными, причём даже в одной
технологической сфере. Кроме того, невозможность предложить решения
вспомогательных проблем является большим минусом в конкурентной
борьбе. Система OpenSCADA учитывает эти проблемы, избегая
фиксированных решений и предлагая шаблонные механизмы для унификации
отдельных решений с возможностью формирования шаблонов самим
пользователем.
Если
касаться вопроса работы с заказчиком, то я считаю, что создание любой
системы без обратной связи с пользователем является заведомо
утопичным занятием. Поэтому прилагаю все усилия для обеспечения такой
связи как прямым, так и косвенным образом. Во-первых, я сам являюсь
практиком, не понаслышке знающем проблемы SCADA-систем и особенности
их использования, т.е. практически я создаю инструмент, в котором мне
будет удобно работать. Во-вторых, имеется опыт внедрения и
использования других SCADA-систем с их достоинствами и недостатками,
пропущенными через "фильтр" пользователя. В-третьих, вся
работа по проекту и его проектные решения публикуются и доступны для
всестороннего анализа потенциальными пользователями.
С.
М.: Скажите, какую роль играет НИП "ДІЯ" в
проекте OpenSCADA?
Р.
С.: Если коротко, то НИП "ДIЯ"
– это организация, которая занимается полным циклом создания и
внедрения АСУ-ТП, и я в ней работаю научным сотрудником. Проект
OpenSCADA – это моя разработка, которая неофициально
поддерживается и финансируется фирмой. Прямого участия в разработке
фирма не принимает. Выражаясь просто, ожидает готового решения,
периодически подкидывая задачи, которые другими средствами решить не
получается, т.е. чисто потребительский подход.
С.
М.: Люди чаще просто держатся за работу обеими руками и не каждый
может найти смелость что-то высказать, не пеняя на титулы, хотя,
по-моему, любой человек, уважающий собственный труд, должен быть
немного шантажистом перед своим руководством...
Р.
С.: У меня подход к работе такой: работа – это сочетание
заработка (в той или иной форме) и удовольствия, получаемого от
самореализации или занятия тем, что нравится. Чаще встречается
перекос в сторону первой составляющей, и работа для таких людей
превращается в повинность со всеми вытекающими. Реже, и в основном
для творческих натур, это сочетание сбалансировано. И такие люди
получают возможность управлять этой пропорцией, получая при этом
определённую свободу в общении с руководством. И я готов жертвовать
весомой частью первой составляющей в пользу второй. Опять же, из
избитых истин известно, что работа, которая делается с удовольствием,
делается значительно качественнее и без лишнего формализма.
О
личном.
С.
М.: Роман, Вы – человек семейный?
Р.
С.: Не семейный, а если бы был, то, наверное, просто не нашёл бы
на проект времени. В этом я, наверное, эгоист, стараюсь все вопросы
своего жизнеобеспечения переложить на других, освободив для себя как
можно больше времени.
С.
М.: Возможно, есть какое-нибудь
увлечение – рыбалка, охота, спорт..?
Р.
С.: Рыбалку и охоту воспринимаю как пустую трату времени. Спорт
уважаю и раньше занимался, как минимум, с целью улучшения здоровья.
Сейчас запустил, и за это сам с собой борюсь.
А
увлечение, в общем смысле, это стремление к познанию всего, что
познано и не познано. Практически это нереальная цель, которая не
даёт остановиться. Как результат стремления к этой цели, я занимаюсь
электроникой (раннее хобби), программированием (как дополнение
электроники и реализация моделирования), администрированием (как
дополнение программирования), моделированием (как познание
мироздания), SCADA-системами (как инструмент изучения и моделирования
окружающей среды).
С.
М.: Мы начинали разговор с
размышлений, тем и заканчиваем... Большое спасибо за общение. Счастья
и успехов лично Вам, оригинальных находок и решений. Мы будем с
интересом следить за дальнейшим развитием OpenSCADA.
Р.
С.: Большое спасибо за пожелания и интервью. Удачи вам в вашей
деятельности вообще и освещении движения свободного ПО, в частности.
Интервью
с Романом Савоченко специально для LinuxRSP.ru
брал Мороз Сергей.
Кратко
об OpenSCADA.
Система
OpenSCADA – это открытая реализация SCADA (Supervisory controll
and data acquisition)-системы. Основными свойствами системы являются
открытость
(GPL),
многоплатформенность,
модульность
и масштабируемость.
Предлагаемая
с 27 июня OpenSCADA 0.5.0 вплотную приблизилась к реализации всех
запроектированных базовых функций SCADA-системы. Среди ключевых
изменений новой версии необходимо выделить полную поддержку
архивирования значений, реализацию поддержки жесткого реального
времени, поддержку параметров логического уровня, унификацию
механизма уведомления об ошибках через параметры контроллера,
поддержку параметров в модуле вычисления на основе Java-подобного
языка Java Like Calc и модуле вычислений на основе блоков BlockCalc,
поддержку сбора данных плат фирмы Diamond Systems, переработанную
подсистему БД и предоставление интерфейса доступа к БД прямо через
SQL-запросы, создание объектной модели с пользовательскими функциями,
добавление среды визуализации Vision и поддержку платформы x86_64.
OpenSCADA
0.5.0 доступна загрузке
в исходниках, RPM-сборках для ALT Linux 3.0, openSUSE 10.1, Mandriva
Linux 2006.