Клик-клик - несколько щелчков мыши, вносим данные в пару форм на экране, запускаем сконфигурированный сервер ввода-вывода - и любой SCADA-пакет отображает на экране нужный объект из реальной жизни (датчик, выключатель, индикатор) и привязывает его параметры к аппаратуре.
Одним нажатием кнопки на экране мы запускаем и останавливаем мотор или конвейер, контролируем температуру в печи и регулируем скорость подачи заготовки. В простых тестах все выглядит и работает прекрасно, и, как правило, в любом SCADA-пакете можно добавить автоматическую генерацию сигналов тревоги при превышении параметром заданного нами значения, отобразить в реальном времени параметры на графиках и напечатать простейший отчет (рис. 1).
Рис. 1. Одним нажатием кнопки начинаем готовить тесто
Допустим, SCADA выбрана, пришло время работы над реальным проектом. Создано требуемое количество интерфейсов для оператора, учтены и добавлены все параметры, подсоединены все контроллеры. Запускаем... Но что это:
- клик-клик - а мотор не включается или включается с большой задержкой;
- функция, которую мы написали для обработки данных, препятствует ходу всего приложения;
- данные от аппаратуры поступают с ошибками;
- локальная сеть настолько перегружена, что нельзя добавить дополнительные места оператора...
Нет, все это не так страшно, путем многочисленных компромиссов можно достичь более-менее приличного функционирования приложения, - худшее еще впереди:
- при попытке добавления дополнительной аппаратуры становится понятно, что система находится и так у предела своих возможностей;
- модернизация автоматически влечет за собой полное изменение проекта;
- интеграция SCADA в существующие корпоративные системы управления крайне затруднена.
Слишком мрачно? Отнюдь. Здесь перечислена лишь малая часть проблем, с которыми сталкиваются повсеместно компании, внедряющие системы АСУТП (читай: SCADA). И что немаловажно, решение всех этих проблем невозможно без значительного увеличения стоимости проекта.
Конечно, программное обеспечение не идеально. Не идеальны и SCADA-пакеты. Но время играет на руку потребителю. На смену SCADA-пакетам первой волны, получившим достаточное распространение в СНГ, приходят другие, более совершенные решения, широко применяемые за рубежом, но пока практически неизвестные на нашем рынке. Примером такого программного обеспечения является SCADA-пакет Citect австралийской компании Ci Technologies (www.cit.com.au).
Имеющая почти 20-летнюю историю разработки программного обеспечения для автоматизации производственных процессов Ci Technologies, благодаря четкой и изначально продуманной концепции, сумела создать пакет, свободный от большинства недостатков. Citect работает более чем на 20 000 предприятий во всем мире и часто с легкостью решает многие ранее невыполнимые задачи.
Что выделяет Citect на фоне SCADA-пакетов аналогичного назначения?
Полностью многозадачное ядро реального времени. Не секрет, что в некоторых SCADA-пакетах обновление данных организовано на основе опроса параметров в рамках одной основной задачи и соответствующего обновления экрана в заданные моменты времени. Подобный алгоритм очень напоминает кооперативную многозадачность, реализованную в Windows 3.х. При этом последствия для работы всего приложения практически идентичны - если по каким-либо причинам происходит сбой любой функции основной задачи, то нарушается работа всего пакета. Так, задержка с получением данных, необходимых для обновления результатов на одном (!) из графиков, часто приводит в таких системах к полной остановке всего приложения до тех пор, пока запрос не будет выполнен. Хотя этому нечего удивляться. Многие SCADA-пакеты появились в эпоху Windows 3.х, и их ядро не изменялось с тех давних пор.
Ядро Citect изначально задумано и реализовано с учетом принципов построения систем реального времени. Анимация объектов на экране, обмен данными, функции, созданные пользователем и встроенные в систему, обрабатываются своими независимыми потоками с четким распределением приоритетов. Многопоточность реализована по схеме с вытеснением, когда более приоритетная задача вытесняет менее приоритетную, а внутри класса задач с одним приоритетом вытеснение производится по круговой схеме (round robin) путем выделения квантов процессорного времени.
Для искушенных пользователей предусмотрена возможность использования объектов синхронизации работы потоков и управления их созданием и завершением.
Рис. 2. Один сервер - несколько клиентов
Архитектура клиент-сервер. Большинство SCADA-пакетов так или иначе стремятся воплотить данную концепцию, но Citect делает это особенно элегантно. Масштабируется не только система целиком, т. е. по схеме один сервер - несколько клиентов (рис. 2), но и каждая из задач. Так, на разные компьютеры можно распределить задачи построения (рис. 3).
Рис. 3. Несколько серверов - несколько клиентов
Это позволяет максимально эффективно регулировать компьютерные и сетевые ресурсы в системе для достижения требуемой производительности. Кроме того, последующая модернизация системы будет происходить легко и безболезненно.
Для хранения самого приложения и файлов конфигурации можно также выделить отдельный файл-сервер. Нужно ли упоминать, что клиент-серверная архитектура в Citect может быть реализована с использованием Интернета?
Резервирование. Обладая возможностью не только отображать что-то на экране, но и генерировать управляющие воздействия, большинство SCADA-пакетов под Windows так и остаются лишь красивыми картинками. Основная причина этого - низкая надежность вследствие отсутствия средств встроенной поддержки резервирования. Если компьютер, на котором функционирует SCADA, выходит из строя, если обрывается связь с аппаратурой или сетью - выходит из строя вся цепь управления.
В Citect можно резервировать все: сервер целиком, его отдельные задачи (alarms, trends, reports, files), сетевые соединения и связь с аппаратурой (рис. 4).
Рис. 4. Резервируем все
Прибавьте еще функции масштабирования, и вам станет понятно, почему Citect может применяться в любой отрасли промышленности и не только для отображения красивых картинок. Настройка резервирования встроена в продукт и вступает в действие автоматически после ответа на вопросы мастера настройки конфигурации.
Алгоритм, используемый при реализации резервирования, является достаточно интеллектуальным для того, чтобы не создавать удвоенную нагрузку на сеть. Основной сервер взаимодействует с аппаратурой и периодически посылает сообщения резервному серверу, благодаря чему последний может сохранять в памяти текущий статус системы. Если основной сервер выходит из строя, резервный берет управление на себя и работает до тех пор, пока основной не приступит к работе. Сразу после этого происходит обновление базы данных основного сервера данными резервного и управление переходит обратно к основному серверу.
Конечно, связь между серверами можно сделать как по одной сети, так и по разным (выделенным) сетям. И их тоже резервировать...
Скорость, скорость, скорость. Что думает оператор про SCADA-систему, когда он нажимает на кнопку включения мотора (любого ответственного механизма), но ничего не происходит? А если сигнал тревоги, сгенерированный на объекте, поступает к оператору не сразу, а через 5, 10... секунд?
Адекватная работа с сигналами от реальной аппаратуры, особенно когда они составляют замкнутую цепь управления, - главная задача для любого SCADA-пакета. К сожалению, большинство SCADA-пакетов очень плохо масштабируются при изменении нагрузки, т. е. при изменении числа сигналов и параметров (окон, элементов управления, количества выполняемых функций и т. д.). Если мы будем сравнивать скорость отклика системы при минимальном числе входных параметров, то получим весьма схожие результаты, но скорость отклика при увеличении нагрузки принципиально изменится.
Основная причина заключается в том, что в большинстве SCADA-пакетов, базирующихся на Windows, в отличие от Citect отсутствует ядро реального времени. Именно поэтому теоретический и практический предел для таких SCADA-пакетов - 10 000 - 30 000 параметров (tags), в то время как Citect может работать с числом переменных до 500 000. И эта величина теоретически не является пределом.
Хотя такие большие системы реализуются достаточно редко, но даже и в диапазоне 5000 - 10 000 параметров Citect имеет бесспорные и ощутимые преимущества. Пакет работает с разрешением по времени 1 мс. Это относится как к работе с данными, так и к обновлению графиков реального времени и других объектов.
Оптимизация ввода-вывода. Эффективная организация ядра системы очень важна, но не менее ответственным элементом любого SCADA-пакета является реализация подсистемы ввода-вывода, т. е. обмена данными с аппаратурой. Несмотря на увеличивающееся число промышленных контроллеров с высокоскоростными интерфейсами (Ethernet, промышленные сети), число контроллеров, обменивающихся с компьютером по низкоскоростным интерфейсам типа RS-232 (422, 485), еще очень велико, и неэффективный обмен данными в этом случае сильно сказывается на скорости работы всей системы.
Наряду с оптимизацией протоколов обмена как таковых, Citect предлагает различные методы кэширования данных для устранения перегрузки низкоскоростных сетей. Так, если два различных клиента в течение установленного промежутка времени (cache threshold) запрашивают у сервера одни и те же данные, он не посылает два запроса к контроллеру, как делают многие SCADA-пакеты, а лишь один, предоставляя второму клиенту данные из кэш-памяти.
Для эффективной оптимизации обмена величина cache threshold является настраиваемой, хотя в большинстве случаев параметры по умолчанию оптимальные. Кроме того, ядро Citect автоматически пополняет кэш-память свежими данными (read-ahead), считывая их в фоновом режиме, пропорционально загрузке системы. Уместно упомянуть, что в Citect есть более 130 драйверов к различным контроллерам плюс полная поддержка OPC.
Открытость. Подавляющее большинство SCADA-пакетов, несмотря на их реализацию на стандартной платформе Windows, являются закрытыми, если речь идет о структуре данных, с которыми они работают. Многие из них имеют стандартные интерфейсы типа DDE, OLE, ODBC и пр., но сохраняют специализированные, нестандартные форматы файлов для архивов, графиков и сигнализаторов. Для того чтобы получить доступ к данным в подобных системах, необходимо воспользоваться специализированными пакетами разработчика, но часто это вообще невозможно.
Citect не делает секрета из формата своих данных - все параметры и данные приложения хранятся в формате dBase, понимаемом любым пакетом. Данные можно сохранять и в более современных SQL базах данных, используя стандартные интерфейсы Citect.
Такая открытость будет по достоинству оценена теми, кто не имел возможности, скажем, отобразить на экране данные из архива в требуемом оператору виде, а не так, как умеет SCADA.
Еще Citect дает возможность вызывать стандартные библиотеки DLL Windows, обеспечивая дополнительный метод доступа к данным. Эти библиотеки могут также быть написаны разработчиком на Си++ или другом языке, используя специализированный интерфейс CTAPI.
Принятая Ci Technologies схема лицензирования Citect не предполагает платы за систему разработки. Для создания и проверки проектов можно использовать тот же диск, который распространяется в качестве демоверсии, поскольку он не ограничивает разработчика ни в количестве параметров (до 42 000), ни в использовании переменных ввода-вывода. Единственное ограничение состоит во времени работы среды исполнения. Здесь есть два варианта - 15 минут или 8 часов. В последнем случае необходимо заказать специальный ключ стоимостью $365 долларов. Эта версия также может поставляться для создания проектов на любое число переменных. Таким образом, версия со специальным ключом может использоваться системными интеграторами для построения и отладки систем любой сложности до принятия решения о закупке программного обеспечения. Все доступные драйверы, разработанные Ci Technologies или ее партнерами, поставляются вместе с демонстрационным диском и не требуют оплаты при применении в проектах.
Время работает на потребителя, предоставляя новые возможности в старой упаковке. SCADA-пакеты не являются исключением.
С автором статьи можно связаться по телефону: (095) 742-6828.
Olympic Dam
Комплекс в Западной Австралии по добыче и переработке меди, урана, золота и серебра представляет собой крупнейшее предприятие, расположенное на площади более 29 000 га, и в то же время крупнейшую в мире SCADA-систему, реализованную с помощью Citect.
Общее число переменных, поступающих из контроллеров, равняется 441 257, что является абсолютным мировым рекордом. При этом время отклика на 17 клиентских узлах на отдельно взятом объекте графической страницы ~0,5 с, продолжительность загрузки новой страницы ~1,5 с. При работе система регистрирует и отображает без потерь данных 64 000 сигнализаторов и 20 500 параметров на графиках реального времени. Общее число физических устройств (датчики, реле, моторы и т. д.) превышает 40 000.