Scada-система Citect - что внутри?, "PCWeek", N 48, 1999

Калядин А. Ю., ЗАО «РТСофт», Москва

Клик, клик — обычно достаточно нескольких щелчков мыши и внесения данных в пару форм на экране, плюс запущенный и сконфигурированный сервер ввода-вывода, чтобы в любом SCADA (supervisory control and data acquisition — супервизорный контроль и сбор данных) пакете отобразить на экране какой либо объект из реальной жизни (датчик, выключатель, индикатор) и привязать его параметры к аппаратуре.

Простым нажатием кнопки на экране мы запускаем и останавливаем мотор или конвейер, контролируем температуру в печи и регулируем скорость подачи заготовки. В простых тестах все выглядит и работает прекрасно и, как правило, в любом SCADA пакете мы сможем добавить автоматическую генерацию сигналов тревоги (alarm) при превышении параметром заданного нами значения, отобразить в реальном времени параметры на графиках (trend) и напечатать простейший отчет (report) (см. Рис. 1).

SCADA выбрана, пришло время работы над реальном проектом. Создано требуемое количество интерфейсов для оператора, учтены и добавлены все параметры, подсоединены все контроллеры. Запускаем… Но что это:

Клик-клик, а мотор не включается, или включается с большой задержкой;
Работа функции, которую мы написали для обработки данных, препятствует работе всего приложения;
Данные от аппаратуры поступают с ошибками;

Локальная сеть настолько перегружена, что нельзя добавить дополнительные места оператора…

Нет, все еще не так страшно, путем многочисленных компромиссов можно достичь более-менее приличной работы приложения — худшее конечно впереди:

При попытке добавления дополнительной аппаратуры становится понятно, что система находится и так у предела своих возможностей;
Модернизация автоматически влечет за собой полное изменение проекта;

Интеграция SCADA в существующие корпоративные системы управления крайне затруднена.

Слишком мрачно? Отнюдь. Здесь перечислена лишь малая часть проблем, с которыми компании, внедряющие системы АСУТП (читай SCADA) сталкиваются повсеместно. Упоминал ли я, что решение всех этих проблем влечет за собой значительное увеличение стоимости проекта?

Конечно, программное обеспечение не идеально. Не идеальны и SCADA пакеты. Но время играет здесь на руку потребителю. На смену SCADA пакетам первой волны, получившим достаточное распространение в СНГ, приходят другие, более совершенные решения, хорошо известные за рубежом, но пока практически неизвестные на нашем рынке. Примером такого программного обеспечения является SCADA пакет Citect компании Ci Technologies.

Имеющая почти 20-летнюю историю разработки программного обеспечения для автоматизации производственных процессов, Ci Technologies сумела создать пакет, свободный от большинства недостатков, благодаря четкой и изначально продуманной концепции. Работающий на более 20000 предприятий во всем мире, Citect часто с легкостью решает трудно достижимые, или просто невыполнимые задачи.

Что выделяет Citect на фоне SCADA пакетов аналогичного назначения?

Полностью многозадачное ядро реального времени

Не секрет, что во многих SCADA пакетах обновление данных организовано на основе опроса параметров в рамках одной основной задачи и соответствующего обновления экрана по заданным промежуткам времени. Этот алгоритм очень напоминает кооперативную многозадачность, реализованную в Windows 3.X. При этом последствия для работы всего приложения практически идентичны — если по каким либо причинам работа любой функции основной задачи нарушается, то нарушается работа всего пакета. Так, например, задержка получении данных, необходимых для обновления результатов на одном (!) из графиков часто приводит в таких системах к полной остановке работы всего приложения, до тех пор пока запрос не будет обработан. Хотя здесь нечему удивляться. Многие SCADA пакеты появились в эпоху Windows 3.Х и их ядро не изменялось с тех далеких пор.

Ядро Citect было изначально задумано и реализовано с учетом принципов построения систем реального времени. Анимация объектов на экране, обмен данными, функции, созданные пользователем и встроенные в систему обрабатываются своими независимыми потоками с четким распределением приоритетов. При этом многопоточность реализована по схеме с вытеснением, когда задача с большим приоритетом вытесняет задачу с меньшим, а внутри класса задач с одним приоритетом вытеснение производится по круговой схеме (round robin) путем выделения квантов процессорного времени.

Для искушенных пользователей предусмотрена возможность непосредственного использования объектов синхронизации (!) работы потоков и управления их созданием и завершением.

Архитектура клиент-сервер

Несмотря на то, что большинство SCADA пакетов так или иначе стремятся воплотить эту концепцию, Citect позволяет это сделать наиболее элегантно. Масштабируется не только система целиком — то есть по схеме один сервер — несколько клиентов (см. Рис.1), но и по отдельным задачам. Так на отдельные компьютеры можно распределить задачи сигнализации (alarms), графиков реального времени (trends) и отчетов (reports) (см. Рис2).

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

Резервирование

Обладая возможностью не только отображать что-то    на экране, но и генерировать управляющие воздействия большинство SCADA пакетов под Windows так и остаются лишь красивыми картинками. Основная причина этого — низкая надежность вследствие отсутствия средств встроенной поддержки резервирования. Если компьютер, на котором функционирует SCADA выходит из строя, если обрывается связь с аппаратурой или сетью — выходит из строя вся цепь управления.

В Citect можно резервировать все: весь сервер, его отдельные задачи (alarms, trends, reports, files), сетевые соединения и связь с аппаратурой (см.Рис. 3).

Соедините это с возможностями масштабирования и становится понятно, почему Citect может применяться в любой отрасли промышленности и не только для отображения красивых картинок. Настройка резервирования встроена в продукт и вступает в действие автоматически после ответа на вопросы мастера (Wizard) настройки конфигурации. Алгоритм, используемый при реализации резервирования является достаточно интеллектуальным, для того, чтобы не создавать удвоенную нагрузку на сеть. Основной сервер взаимодействует с аппаратурой и периодически посылает сообщения резервному серверу для того, чтобы последний мог сохранять в памяти текущий статус системы. Если основной сервер выходит из строя резервный берет управление на себя и работает до тех пор, пока основной не приступит к работе. Сразу после этого происходит обновление базы данных основного сервера данными резервного и управление переходит обратно к основному серверу. Конечно связь между серверами можно сделать как по той же, так и другой (выделенной) сети. И их тоже резервировать…

Скорость, скорость, скорость

Что думает оператор про SCADA систему когда он нажимает на кнопку включения мотора (любого ответственного механизма), но ничего не происходит? А если сигнал тревоги (alarm) сгенерированный на объекте поступает к оператору не сразу, а через 5 (10…?) секунд? Адекватная работа с сигналами из реальной аппаратуры, особенно когда они составляют замкнутую цепь управления — задача номер 1 для любого SCADA пакета. К сожалению большинство SCADA пакетов очень плохо масштабируются при изменении нагрузки, то есть при изменении количества сигналов и параметров (окон, элементов управления, количества выполняемых функций и т.д.). Если мы будем сравнивать скорость отклика системы при минимальном числе входных параметров, то получим весьма схожие результаты, но принципиально различные при увеличении нагрузки.

Основной причиной этого является отсутствие в большинстве SCADA пакетов ядра реального времени, так как это сделано в Citect. Именно поэтому теоретическим и практическим пределом для обычных SCADA пакетов является 10000-30000 параметров (tags), в то время, как Citect может работать с числом переменных до 500000. И эта величина не является теоретическим пределом, скорее практическим. Конечно, такие большие системы реализуются достаточно редко, но даже и в диапазоне 5000-10000 параметров Citect имеет бесспорные и ощутимые преимущества. Citect работает с разрешением по времени 1 миллисекунда. Это относится как работе с данными, так и обновлению графиков реального времени (trends) и других объектов.

Оптимизация ввода-вывода

Конечно, эффективная организация ядра системы очень важна, но не менее ответственным элементом любого SCADA пакета является реализация подсистемы ввода-вывода, то есть обмена данными с аппаратурой. Несмотря на увеличивающееся число промышленных контроллеров с высокоскоростными интерфейсами (Ethernet, промышленные сети), число контроллеров, обменивающихся с компьютером по низкоскоростным интерфейсам типа RS-232 (422,485) еще очень велико, и неэффективная обмен данными в этом случае драматически сказывается на скорости работы всей системы.

Наряду с оптимизацией протоколов обмена как таковых, Citect применяет различные методы кэширования данных для устранения перегрузки низкоскоростных сетей. То есть, если 2 различных клиента в течение установленного промежутка времени (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.

Про Citect можно говорить долго, но, как говорится, лучше один раз попробовать…Именно тем, кто нуждается в действительно современных технологиях Ci Technologies дает такую возможность, поскольку система разработки Citect практически бесплатна. Это, прежде всего, позволяет полностью реализовать проект и проверить НА ПРАКТИКЕ работу выбранной SCADA системы, не затратив ни копейки. Нетрудно понять, насколько важным, является это обстоятельство, поскольку, как упоминалось выше, проблемы возникают на стадии реализации проекта. Время работает на потребителя, предоставляя новые возможности в старой обертке. SCADA пакеты не являются исключением.

15.04.2014