En

Интеграция с Rapid SCADA

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

Перед изучением данного материала рекомендуется внимательно прочитать Техническое описание Rapid SCADA.

Структура данных Rapid SCADA

Для интеграции с Rapid SCADA интерес представляют категории данных, описанные в следующей таблице.

Категория данных Расположение по умолчанию Описание
Текущие данные C:\SCADA\ArchiveDAT\Cur Текущие значения и статусы входных каналов
Архивные данные C:\SCADA\ArchiveDAT\Min
C:\SCADA\ArchiveDAT\Hour
Значения и статусы входных каналов за определённое время
События C:\SCADA\ArchiveDAT\Events События и тревоги
Конфигурация C:\SCADA\BaseDAT «Рабочая копия базы конфигурации программного комплекса
описывающая автоматизированную систему в целом»

Приведённые выше данные сохраняются в файлах специально разработанного формата DAT. Этот формат обеспечивает быстрый доступ на чтение и запись, а также работоспособность комплекса в случае повреждения части файла.

Информацию в файлах DAT можно представить в виде таблиц базы данных, состоящих из столбцов и строк. Поэтому работа с данными Rapid SCADA привычна для разработчиков и не представляет сложности.

Способы получения данных

Интеграция с Rapid SCADA подразумевает, прежде всего, интеграцию с приложением SCADA-Сервер, которое входит в состав программного комплекса. SCADA-Сервер управляет текущими и архивными данными системы на основе конфигурации, принимает и предоставляет информацию приложениям.

Считать данные Rapid SCADA и преобразовать в набор объектов можно с помощью библиотеки ScadaData.dll. Актуальную версию этой библиотеки можно получить, установив Rapid SCADA и выполнив поиск файла ScadaData.dll в директории установки. Исходный код библиотеки доступен на GitHub по ссылке.

Библиотека ScadaData.dll использует платформу .NET и написана на языке программирования C#. Поэтому разрабатываемые интеграционные модули должны быть написаны на одном из .NET совместимых языков. Для разработки необходимо использовать Microsoft Visual Studio версии 2010 или выше. Не забудьте добавить ссылку на ScadaData.dll к Вашему проекту.

Далее рассматриваются два основных способа обмена данными между Rapid SCADA и сторонними приложениями, которые реализованы в ScadaData.dll.

1-й способ. Прямой доступ к файлам

Считывание текущих и архивных данных

Текущие и архивные данные хранятся в файлах формата DAT в виде таблиц срезов. Срез – это набор значений и статусов входных каналов в определённый момент времени.

По умолчанию текущие, архивные данные и события сохраняются SCADA-Сервером в директорию C:\SCADA\ArchiveDAT. Файл текущих данных имеет имя current.dat. Файлы архивов именуются в формате mYYMMDD.dat для минутных архивов и hYYMMDD.dat для часовых архивов, где YYMMDD – год, месяц и день данных, хранящихся в файле. Каждый архивный файл содержит данные за одни сутки.

Для работы с файлами DAT, которые содержат таблицы срезов, предназначен класс Scada.Data.SrezAdapter.

Пример считывания данных из файла таблицы срезов:

В приведённом примере адаптер заполняет таблицу срезов типа SrezTableLight. Кроме таблицы SrezTableLight, указанной в примере, адаптер поддерживает загрузку данных в объекты типов DataTable и Trend.

DataTable – это стандартная реализация таблицы в .NET. Она работает значительно медленнее по сравнению со SrezTableLight, поэтому использовать DataTable следует лишь в тех случаях, когда это явно необходимо.

Класс Trend предназначен для быстрой работы с данными одного входного канала. Этот класс может использоваться, например, если необходимо построить график значений канала.

Следующий пример выводит в консоль данные из таблицы срезов:

Считывание событий

Считывание событий из файла формата DAT выполняется аналогично считыванию срезов. Класс EventAdapter производит чтение данных в экземпляр класса EventTableLight или DataTable. Класс EventTableLight предпочтителен по отношению к DataTable из-за скорости работы.  Файлы событий именуются в формате eYYMMDD.dat, где YYMMDD – год, месяц и день событий, хранящихся в файле.

Пример считывания и вывода событий:

Возможности записи в файлы текущих, архивных данных и событий не рассматривается в данной статье, т.к. запись в эти файлы выполняется SCADA-Сервером. Другие приложения не должны напрямую изменять файлы архивов, вместо этого необходимо взаимодействовать со SCADA-Сервером по протоколу TCP, как описано далее.

Считывание базы конфигурации

База конфигурации редактируется с помощью программы SCADA-Администратор. После того, как в базу конфигурации внесены необходимые правки, по щелчку на соответствующей кнопке создаётся рабочая копия базы, которая используется остальными приложениями Rapid SCADA. Рабочая копия базы конфигурации сохраняется в файлах формата DAT и располагается по умолчанию в директории C:\SCADA\BaseDAT. Каждый файл DAT содержит одну таблицу базы данных. Содержимое этих файлов можно просмотреть с помощью пользовательского интерфейса SCADA-Сервера.

Для считывания информации из файлов DAT, содержащих таблицы базы конфигурации, предназначен класс Scada.Data.BaseAdapter. Данные загружаются в таблицу типа DataTable. Для базы конфигурации, таблицы которой содержат не более 65535 строк, быстродействия DataTable вполне достаточно.

Пример считывания таблицы базы конфигурации:

Работа с объектами DataTable подробно описана в MSDN.

2-й способ. Взаимодействие по протоколу TCP.

Для обмена информацией между SCADA-Сервером и другими приложениями, например, SCADA-Коммуникатором, SCADA-Web, используется протокол TCP.  В дополнение к функциям запроса данных, используя протокол TCP, возможно передавать SCADA-Серверу команды телеуправления, которые затем будут направлены контроллерам.

SCADA-Сервер открывает на компьютере TCP порт, указанный в его настройках, остальные приложения подключаются к нему в качестве клиентов. Список подключенных клиентов можно проконтролировать в текстовом файле состояния SCADA-Сервера. При подключении клиент должен отправить серверу имя пользователя и пароль, чтобы получить права на запрос данных и отправку команд. Имя пользователя и пароль прописываются в базе конфигурации или в Active Directory, при этом пользователь должен иметь роль Приложение.

Следующий пример показывает, как создать объект для подключения к SCADA-Серверу и получить таблицу срезов:

Как видно из примера, для взаимодействия со SCADA-Сервером по протоколу TCP существует специальный класс Scada.Client.ServerComm. Настройки соединения задаются с помощью объекта типа CommSettings. Полученные данные таблицы срезов записываются в объект типа SrezTableLight, уже знакомый по предыдущим примерам.

Основные методы класса ServerComm, используемые для интеграции с Rapid SCADA, перечислены в следующей таблице.

Имя метода Описание
ReceiveBaseTable Принять таблицу базы конфигурации от SCADA-Сервера
ReceiveSrezTable Принять таблицу срезов от SCADA-Сервера
ReceiveTrend Принять тренд входного канала от SCADA-Сервера
ReceiveEventTable Принять таблицу событий от SCADA-Сервера
ReceiveFileAge Принять дату и время изменения файла от SCADA-Сервера
SendStandardCommand Отправить стандартную команду ТУ SCADA-Серверу
SendBinaryCommand Отправить бинарную команду ТУ SCADA-Серверу
SendRequestCommand Отправить команду внеочередного опроса КП SCADA-Серверу
ReceiveCommand Принять команду ТУ от SCADA-Сервера
SendSrez Отправить текущий срез SCADA-Серверу
SendArchive Отправить архивный срез SCADA-Серверу
SendEvent Отправить событие SCADA-Серверу
CheckEvent Отправить команду квитирования события SCADA-Серверу
Close Завершить работу со SCADA-Сервером и освободить ресурсы

Подключаемые модули для SCADA-Сервера

Функциональность SCADA-Сервера можно гибко расширять с помощью подключаемых модулей. Подключаемый модуль представляет собой библиотеку, написанную на .NET совместимом языке программирования, например, C# с соблюдением определённых правил. Модуль позволяет добавить дополнительную логику, срабатывающую при определённых внутренних действиях SCADA-Сервера. Это может быть запуск и остановка, получение новых данных или событий и т.д.

Серверные модули удобно использовать в следующих случаях:

  • если необходима передача информации в сторонние системы или базы данных сразу в момент её получения SCADA-Сервером;
  • если необходима дополнительная сложная обработка получаемых SCADA-Сервером данных;
  • если требуется автоматически генерировать команды управления при выполнении заданных условий.

Разработка подключаемых модулей выполняется в среде Microsoft Visual Studio версии 2010 и выше. Чтобы реализовать модуль, необходимо создать проект типа Class Library и реализовать два класса, унаследованных от классов Scada.Server.Modules.ModView и Scada.Server.Modules.ModLogic. Первый класс описывает пользовательский интерфейс модуля, а второй – логику его работы.

Рекомендуется скачать решение OpenModules с GitHub по ссылке, которое содержит простой для изучения пример создания тестового модуля ModTest. Можно создавать собственные модули, используя данный проект как образец.

При создании проекта и классов необходимо соблюдать правила именования:

  1. Имя файла библиотеки модуля должно начинаться с префикса Mod. Например, ModTest.dll.
  2. Классы, унаследованные от ModView и ModLogic, должны относиться к пространству имён Scada.Server.Modules.
  3. Имена классов, унаследованных от ModView и ModLogic, должны иметь вид ModTestView и ModTestLogic соответственно, где ModTest – имя DLL модуля.
  4. Имена классов чувствительны к регистру символов.

Скомпилированную DLL серверного модуля необходимо скопировать в директорию подключаемых модулей SCADA-Сервера, по умолчанию C:\SCADA\Server\Mod\

Затем перейти на страницу Модули SCADA-Сервера, добавить модуль, сохранить настройки и перезапустить службу SCADA-Сервера.

Теги: ,