Программист и технолог — вавилонские строители
При создании АСУ ТП любой сложности всегда существовала тяжело решаемая проблема: как заставить программистов и технологов понимать друг друга или хотя бы заставить и тех и других общаться на каком-либо «эсперанто» типа блок-схем. К со-жалению, практика показывает почти полную невозможность добиться от «главного специалиста по...» хотя бы словесного описания алгоритма, и успешнее всего работы по созданию АСУ ТП идут только там, где программисты смиряют свою гордыню и вникают во все тонкости конкретного технологического процесса. Но, как известно, нельзя «объять необъятное»: технологий много, а желающих становиться школяром в начале каждого нового проекта автоматизации даже среди склонных к обучению программистов мало. Тут бы за новинками в своей области уследить. Развелось, понимаешь, всяких борландов с майкрософтами, понаделали объектов с окошками... Отношение же рядового технолога к программированию каждый может проверить сам, в зависимости от уверенности в собственной неуязвимости. Про язык Васик он, конечно, читал что-то в «Науке и жизни» за 1988 год, но... в общем, не царское это дело. Так бы и «жили они в любви и согласии и умерли в один день», если бы не лень, великий двигатель прогресса. Надоело программистам разбираться с задвижками-клапанами-моторами, и начали они изобретать всяческие языки функциональных блоков, лестничных диаграмм, специализированных графических редакторов с элементами динамики или, иными словами, методов «программирования без програм-мирования», доступных для понимания простому инженеру-технологу. В результате этой деятельности появились программные пакеты для создания интерфейса человек-машина (Man Machine Interface, MMI) и программно-го обеспечения операторских станций АСУ ТП (Supervisor Control And Data Acquisition, SCADA). Дело в том, что задачи, стоящие перед создателями верхнего уровня АСУ ТП, имеют много общего во всех областях деятельности и легко поддаются унификации.«Джентльменский» набор
Что, как правило, нужно реализовать программисту при создании программы для рабочего места оператора АСУ ТП? Это типичный набор функций, которые повторяются во всех проектах автоматизации:- органы управления различных типов, например кнопки, рубильники, ползунковые или поворотные регуляторы;
- экранные формы отображения параметров процесса типа стрелочных, полосковых или цифровых индикаторов, а также сигнализирующие табло различной формы и содержания;
- возможность создания архивов аварий, событий и поведения переменных процесса во времени (так называемые тренды), а также полное или выборочное сохранение параметров процесса через заданные промежутки времени постоянно или по условию;
- упрощенный язык для реализации алгоритмов управления, математических и логических вычислений;
- средства документирования как самого алгоритма, так и технологического процесса;
- ядро или монитор реального времени, который обеспечивает детерминизм поведения системы или, иными словами, предсказуемое время отклика на внешние события;
- драйверы к оборудованию нижнего уровня АСУ ТП;
- сетевые функции;
- средства защиты от несанкционированного доступа в систему;
- многооконный графический интерфейс и другие очевидные функции, такие как импорт изображений и создание собственных библиотек алгоритмов, динамических объектов, элементов мнемосхем и т. п.
— У нас свои наработки под DOS, год назад для каких-то нефтяников делали. Полгода на доработку — и для других сгодится, — скажут другие. И тоже будут по-своему правы. Только время уж больно быстрое стало. И сильно «хозрасчетное». Некогда ждать полгода, желательно за пару месяцев оборудование собрать и еще за один — программу отладить. Причем отлаживать алгоритм техпроцесса, а не умничать по поводу преимуществ «объектно-ориентированных» над остальными, вторую неделю устанавливая связь меж-ду нарисованной кнопкой и настоящим реле. Где же выход, и есть ли он? Конечно, есть. Нужно всего лишь выбрать подходящий пакет ПО для АСУ ТП.
Программирование без программирования
Прежде чем рассматривать конк-ретные реализации пакетов АСУ ТП (SCADA, MMI), давайте на простом примере разберемся, как в них происходит программирование. Поскольку все пакеты SCADA в общих чертах похожи друг на друга, не будем связывать пример ни с одним из них конкретно. Предположим, что нам нужно создать экран операторской станции, который состоит из следующих элементов:- кнопка «Старт»,
- полосковый индикатор состояния аналогового входа «Температура»,
- табло «Авария».
1. Формирование статического изображения рабочего окна. Это может быть фон, заголовки, мнемосхема техпроцесса и т. п. Для создания статического изображения, как правило, используются внешние графические редакторы, например Paint Brush, а готовое изображение затем импортируется в пакет SCADA. Хотя некоторые пакеты имеют собственные средства рисования, все они содержат и средства импорта изображений в форматах типа BMP или WMF.
2. Формирование динамических объектов (ДО) рабочего окна. Как правило, динамические объекты создаются при помощи специализированного графического редактора cамого пакета SCADA по жестко заданному алгоритму или на основе набора библиотечных элементов с последующим присвоением параметров. В частности, для изображения полоскового индикатора нам нужно будет в простейшем случае изобразить прямоугольники, соответствующие начальному и конечному значению параметра, и задать эти значения. На этом же шаге ДО присваивается логическое имя, под которым он будет фигурировать в алгоритме управления. Одновременно путем ответов на вопросы меню или при заполнении соответствующего формуляра задается привязка логического имени ДО к конкретному каналу ввода-вывода. В конце этого шага мы имеем набор необходимых нам ДО, соответствующим образом размещенных на фоне статического изображения, и базу каналов ввода-вывода. Единственное, что остается сделать для получения работающей программы операторской станции, — описать взаимосвязи между логическими именами ДО и алгоритм функционирования системы.
3. Описание алгоритма отображения и управления. Этот шаг выполняется в разных SCADA-системах по-разному, хотя общие черты остаются. В простейшем случае при помощи обычного текстового редактора на языке типа BASIC записываются логические и математические формулы с использованием ло-гических имен ДО. Например, если при превышении значения 90 параметра «Температура» нам нужно включить табло «Авария», то делается запись:
IF ТЕМПЕРАТУРА > 90 THEN АВАРИЯ=1 ELSE АВАРИЯ=0
В более сложных пакетах алгоритм может описываться при помощи языка функциональных блоков (ФБ). Причем исходные наборы ФБ включают в себя все, что душе угодно: от простых фильтров и математических функций до PID-регуляторов. Как правило, в таких системах предусматривается возможность создания собственных ФБ, содержащих тексты программ или формул на встроенном языке высокого уровня. На этом шаге процесс «программирования» заканчивается. Все, что нам остается сделать, — запустить полученную стратегию под управлением следующей неотъемлемой части всех пакетов SCADA — программы-монитора, или, как ее часто называют, Runtime. Достаточно просто, не правда ли? И, вы обратили внимание, знание языка С нам не потребовалось. И если вам понравился такой подход к программированию верхнего уровня АСУ ТП — самое время познакомиться с конкретными пакетами SCADA.
Итак,
GENESIS: «Процесс управления на кончиках пальцев»
Первая версия пакета Genesis была разработана фирмой Iconics (США) еще в 1986 году. С тех пор количество проданных копий пакета перевалило за двадцать тысяч, а системы на его ба-зе работают практически во всех странах мира. Последняя версия, Genesis for Windows (GFW), работает под Windows 3.11 или Windows 95 и позволяет осуществлять автоматизацию объектов различной сложности, от лаборатории до завода, в зависимости от варианта поставки. В GFW реализована вытесняющая приоритетная многозадачность на основе специальной программы-ядра реального времени, RTS (Real Time Ser-ver). RTS обеспечивает опрос каналов ввода-вывода с гарантированным временем реакции до 50 мс. В составе пакета имеется более 250 драйверов к оборудованию ведущих европейских и американских производителей средств автоматизации. Одной из главных отличительных черт пакета является его модульность, что позволяет конечному пользователю сократить финансовые затраты, приобретая только необходимые для реализации проекта части пакета.RTS, «сердце» пакета GFW, состоит из исполнительной и инструментальной частей. Исполнительная часть отвечает за опрос каналов ввода-вывода, выполнение алгоритмов сбора информации и управления, а также обрабатывает запросы всех остальных приложений GFW. В состав инструментальной части входит средство конфигурирования RTS при помощи графического языка функциональных блоков. Иными словами, если вы можете описать поведение вашего процесса в виде блок-схемы, для вас не составит большого труда повторить то же самое на языке графических символов Strategy Builder — инструмента создания стратегии для RTS. Библиотека предлагаемых функциональных блоков включает в себя блоки ввода-вывода аналоговых и цифровых сигналов, математических и логических операций, блоки реализации алгоритмов управления типа PID-регуляторов, интеграторов и еще множество самых разнообразных элементарных «кирпичиков» для построения алгоритмов (рис. 1, 2).


Не менее важной частью GFW является модуль GraphWorks+, реализующий интерфейс человек-машина (MMI), иными словами, то, что оператор почти все время видит на экране компьютера. Эта часть GFW позволяет создавать при помощи специализированного графического редактора экраны отображения поведения процесса и выводить их на дисплей оператора. Набор возможностей GraphWorks+ достаточно богат — вы можете создавать кадры отображения практически любой сложности, от текстов и мнемосхем процесса до кадров с анимацией в реальном времени.
Следующий модуль GFW — AlarmWorX — отвечает за отображение и ведение архива аварийных ситуаций. Форма генерируемых отчетов и сообщений может произвольно настраиваться. Предусмотрена возможность автономного использования этого модуля без остальных частей пакета GFW.
Еще один модуль — TrendWorX+ — предназначен для отображения поведения переменных процесса в виде графиков в реальном времени и хранения данных предыстории процесса.
Модуль DataSpy реализует функции интерфейса DDE с другими приложениями Windows.
Один из наиболее важных модулей GFW — I/O Server — отвечает за связь пакета с конкретным оборудованием АСУ ТП. Каждый I/O Server обслуживает определенный тип внешних устройств ввода-вывода. Принимаемые и выдаваемые данные представляются в стандартном формате ODBC фирмы Microsoft, что делает их доступными для других приложений Windows. Несмотря на огромный список оборудования, для которого соответствующие драйверы уже написаны, фирма Iconics поставляет инструментарий (I/O Server Tool Kit) для создания собственных вариантов I/O Server.
Trace Mode: «Нарисуйте АСУ ТП...»
А что же происходит на ниве SCADA-систем в родном отечестве? Есть ли еще что ответить Керзону и не перевелись ли еще Ильи Муромцы? Оказывается, не перевелись и давно уже не сидят на печи, а вполне достойно продвигают на российском рынке аналогичные системы. Наиболее успешно, на мой взгляд, это удается делать московской фирме AdAstra, разработавшей пакет ТРЕЙС МОУД. Несмотря на желание многих отечественных потребителей приобретать все импортное и «блестящее», нельзя сбрасывать со счетов следующие факторы.1. Простота освоения такого сложного продукта, как SCADA-система. На фоне далеко не поголовного знания английского программистами и технологами добротная документация и учебник по проектированию в ТРЕЙС МОУД на русском языке — просто сказочный подарок. Плюс к этому — доступность консультаций производителя. В Калифорнию не очень-то позвонишь, а AdAstra пока еще московская фирма (рис. 3).

2. ТРЕЙС МОУД имеет драйверы к оборудованию, распространенному в России. Ну, не знают на Западе, что такое Ремиконт или Ш-711, а у нас этого добра все еще навалом.
3. Стоимость пакета для большинства потребителей вполне приемлема.
Что касается функциональных возможностей, методов проектирования систем на основе ТРЕЙС МОУД и состава пакета, то следует отметить, что изобретением велосипеда авторы не занимались и все решили достаточно традиционно. Программирование происходит в три приема: в специализированных графических редакторах создаются последовательно база каналов ввода-вывода, статиче-ский рисунок мнемосхем процесса и динамические формы отображения технологических параметров. Затем полученные файлы стратегии поведения системы запускаются под управлением соответствующего МРВ (монитора реального времени) для DOS или Windows. Среди функциональных возможностей пакета хочется отметить встроен-ную поддержку наиболее распрост-раненного в нашей стране оборудования для АСУ ТП: контроллеров MODICON, OMRON, Ломиконт, Ш-711, МicroPC, ADAM 4000 и других, а также возможность программирования задач верхнего и нижнего уровня АСУ ТП в одной инструментальной среде.
Genie: «Дешевле — только даром...»
И это действительно так. Производитель Genie — американское отделение фирмы Advanteсh, известной как производитель компьютеров и электроники для промышленной автоматизации. Получить полноценную систему SCADA для Windows всего за несколько сотен долларов, без защиты, со стоимостью Runtime версии всего за сотню? Даже «доморощенные» пакеты с неясным будущим за такую цену уже давно никто не предлагает. А почувствовать себя честным пользователем лицензионно чистой копии добротно сделанного продукта фирмы с мировым именем почти даром — просто приятно. Секрет низкой цены в этом случае раскрывается просто — пакет Genie предназначен для программной поддержки аппаратуры фирмы Advantech и в первую очередь содержит драйверы именно для нее. Хотя никто не запрещает использовать его и с оборудова-нием других изготовителей: значительная часть «Руководства пользователя» посвящена процедуре написания собственных DLL, обслуживающих «нестандартные» устройства ввода-вывода. Если проводить аналогии с тем же Genesis, то по своим функ-циональным возможностям пакет занимает промежуточное положение между версией Genesis-Light и Genesis-Basics, причем ближе ко второму. Одна из главных отличительных черт этого пакета — прекрасно продуманный интерфейс пользователя. Намеренно сократив число «степеней свободы» в инструментальной части пакета и написав прекрасный Help, авторы создали уникальный по простоте освоения программный продукт. В лучшем случае через несколько часов знакомства с пакетом вы уже сможете на-писать что-нибудь работающее. В худшем... стоит задуматься о смене профессиональной ориентации. Прекрасно выполненная демо-версия пакета одновременно служит и хорошим учебным пособием — разобравшись в работе десятка примеров несложных программ, можно спокойно принять решение о приобретении полной версии (рис. 4).
Выбор за вами!
Ничто не помогает при выборе сложного программного продукта лучше, чем сравнительная таблица возможностей. Итак, сравнивайте и выбирайте!

●
© СТА-ПРЕСС, 2025
Если вам понравился материал, кликните значок — вы поможете нам узнать, каким статьям и новостям следует отдавать предпочтение. Если вы хотите обсудить материал —не стесняйтесь оставлять свои комментарии : возможно, они будут полезны другим нашим читателям!

