Техническое описание rapid scada
Документация по Rapid SCADA на русском
2-й способ. взаимодействие по протоколу tcp.
Для обмена информацией между SCADA-Сервером и другими приложениями, например, SCADA-Коммуникатором, SCADA-Web, используется протокол TCP. В дополнение к функциям запроса данных, используя протокол TCP, возможно передавать SCADA-Серверу команды телеуправления, которые затем будут направлены контроллерам.
SCADA-Сервер открывает на компьютере TCP порт, указанный в его настройках, остальные приложения подключаются к нему в качестве клиентов. Список подключенных клиентов можно проконтролировать в текстовом файле состояния SCADA-Сервера. При подключении клиент должен отправить серверу имя пользователя и пароль, чтобы получить права на запрос данных и отправку команд.
Следующий пример показывает, как создать объект для подключения к SCADA-Серверу и получить таблицу срезов:
Как видно из примера, для взаимодействия со SCADA-Сервером по протоколу TCP существует специальный класс Scada.Client.ServerComm. Настройки соединения задаются с помощью объекта типа CommSettings. Полученные данные таблицы срезов записываются в объект типа SrezTableLight, уже знакомый по предыдущим примерам.
Основные методы класса ServerComm, используемые для интеграции с Rapid SCADA, перечислены в следующей таблице.
Видео
Видеоуроки по Rapid SCADA версии 5.7
Видеоуроки по Rapid SCADA версии 5.6
Видео от сообщества
Подключаемые модули для scada-сервера
Функциональность SCADA-Сервера можно гибко расширять с помощью подключаемых модулей. Подключаемый модуль представляет собой библиотеку, написанную на .NET совместимом языке программирования, например, C# с соблюдением определённых правил. Модуль позволяет добавить дополнительную логику, срабатывающую при определённых внутренних действиях SCADA-Сервера. Это может быть запуск и остановка, получение новых данных или событий и т.д.
Серверные модули удобно использовать в следующих случаях:
- если необходима передача информации в сторонние системы или базы данных сразу в момент её получения SCADA-Сервером;
- если необходима дополнительная сложная обработка получаемых SCADA-Сервером данных;
- если требуется автоматически генерировать команды управления при выполнении заданных условий.
Разработка подключаемых модулей выполняется в среде Microsoft Visual Studio версии 2021 и выше. Чтобы реализовать модуль, необходимо создать проект типа Class Library и реализовать два класса, унаследованных от классов Scada.Server.Modules.ModView и Scada.Server.Modules.ModLogic. Первый класс описывает пользовательский интерфейс модуля, а второй – логику его работы.
Способы получения данных
Интеграция с Rapid SCADA подразумевает, прежде всего, интеграцию с приложением SCADA-Сервер, которое входит в состав программного комплекса. SCADA-Сервер управляет текущими и архивными данными системы на основе конфигурации, принимает и предоставляет информацию приложениям.
Считать данные Rapid SCADA и преобразовать в набор объектов можно с помощью библиотеки ScadaData.dll. Актуальную версию этой библиотеки можно получить, установив Rapid SCADA и выполнив поиск файла ScadaData.dll в директории установки. Исходный код библиотеки доступен на GitHub по ссылке.
Библиотека ScadaData.dll использует платформу .NET и написана на языке программирования C#. Поэтому разрабатываемые интеграционные модули должны быть написаны на одном из .NET совместимых языков. Для разработки необходимо использовать Microsoft Visual Studio версии 2021 или выше. Не забудьте добавить ссылку на ScadaData.dll к Вашему проекту.
Далее рассматриваются два основных способа обмена данными между Rapid SCADA и сторонними приложениями, которые реализованы в ScadaData.dll.
Структура данных rapid scada
Для интеграции с Rapid SCADA интерес представляют категории данных, описанные в следующей таблице.
Приведённые выше данные сохраняются в файлах специально разработанного формата DAT. Этот формат обеспечивает быстрый доступ на чтение и запись, а также работоспособность комплекса в случае повреждения части файла.
Информацию в файлах DAT можно представить в виде таблиц базы данных, состоящих из столбцов и строк. Поэтому работа с данными Rapid SCADA привычна для разработчиков и не представляет сложности.
Считывание базы конфигурации
База конфигурации редактируется с помощью программы SCADA-Администратор. После того, как в базу конфигурации внесены необходимые правки, по щелчку на соответствующей кнопке создаётся рабочая копия базы, которая используется остальными приложениями Rapid SCADA.
Рабочая копия базы конфигурации сохраняется в файлах формата DAT и располагается по умолчанию в директории C:SCADABaseDAT. Каждый файл DAT содержит одну таблицу базы данных. Содержимое этих файлов можно просмотреть с помощью пользовательского интерфейса SCADA-Сервера.
Для считывания информации из файлов DAT, содержащих таблицы базы конфигурации, предназначен класс Scada.Data.BaseAdapter. Данные загружаются в таблицу типа DataTable. Для базы конфигурации, таблицы которой содержат не более 65535 строк, быстродействия DataTable вполне достаточно.
Пример считывания таблицы базы конфигурации:
Работа с объектами DataTable подробно описана в MSDN.
Считывание событий
Считывание событий из файла формата DAT выполняется аналогично считыванию срезов. Класс EventAdapter производит чтение данных в экземпляр класса EventTableLight или DataTable. Класс EventTableLight предпочтителен по отношению к DataTable из-за скорости работы. Файлы событий именуются в формате eYYMMDD.dat, где YYMMDD – год, месяц и день событий, хранящихся в файле.
Пример считывания и вывода событий:
Возможности записи в файлы текущих, архивных данных и событий не рассматривается в данной статье, т.к. запись в эти файлы выполняется SCADA-Сервером. Другие приложения не должны напрямую изменять файлы архивов, вместо этого необходимо взаимодействовать со SCADA-Сервером по протоколу TCP, как описано далее.
Считывание текущих и архивных данных
Текущие и архивные данные хранятся в файлах формата DAT в виде таблиц срезов. Срез – это набор значений и статусов входных каналов в определённый момент времени.
По умолчанию текущие, архивные данные и события сохраняются SCADA-Сервером в директорию C:SCADAArchiveDAT. Файл текущих данных имеет имя current.dat. Файлы архивов именуются в формате mYYMMDD.dat для минутных архивов и hYYMMDD.dat для часовых архивов, где YYMMDD – год, месяц и день данных, хранящихся в файле. Каждый архивный файл содержит данные за одни сутки.
Для работы с файлами DAT, которые содержат таблицы срезов, предназначен класс Scada.Data.SrezAdapter.
Пример считывания данных из файла таблицы срезов:
В приведённом примере адаптер заполняет таблицу срезов типа SrezTableLight. Кроме таблицы SrezTableLight, указанной в примере, адаптер поддерживает загрузку данных в объекты типов DataTable и Trend.
DataTable – это стандартная реализация таблицы в .NET. Она работает значительно медленнее по сравнению со SrezTableLight, поэтому использовать DataTable следует лишь в тех случаях, когда это явно необходимо.
Класс Trend предназначен для быстрой работы с данными одного входного канала. Этот класс может использоваться, например, если необходимо построить график значений канала.
Следующий пример выводит в консоль данные из таблицы срезов:
Часть i. установка rapid scada на raspberry
1. Заполняем форму на сайте Rapid Scada для получения дистрибутива и скачиванием последнюю версию для Linux.
2. Разархивируем скаченные файлы и копируем папку «scada» в директорию /opt устройства.
3. Кладем три скрипта из папки «daemons» в директорию /etc/init.d
4. Даем полный доступ трем папкам приложения:
sudo chmod -R ugo rwx /opt/scada/ScadaWeb/config
sudo chmod -R ugo rwx /opt/scada/ScadaWeb/log
sudo chmod -R ugo rwx /opt/scada/ScadaWeb/storage⠀5. Делаем скрипты исполняемыми:
sudo chmod x /opt/scada/make_executable.sh
sudo /opt/scada/make_executable.sh⠀6. Добавляем репозиторий:
Часть ii. установка rapid scada на windows
Установка Rapid SCADA на Windows потребуется для настройки Raspberry и конфигурации проекта. В теории можно это делать и на самой малине, но в технической поддержке нам посоветовали использовать среду разработки на Windows, поскольку здесь она работает корректнее, чем на Linux.
Итак, приступим:
- Обновляем Microsoft .NET Framework до самой свежей версии;
- Скачиваем дистрибутив Rapid SCADA для Windows и устанавливаем в автономном режиме;
- Запускаем приложение «Администратор». В нём мы будем разрабатывать сам проект.
При разработке необходимо обратить внимание на некоторые моменты:
1. Нумерация регистров в данной SCADA-системе начинается с 1 адреса, поэтому нам пришлось увеличить нумерацию своих регистров на единицу. В нашем случае это: 512 1 и так далее:
Рисунок 3 — Нумерация регистров в Rapid SCADA (картинка кликабельна)
2. Для перенастройки директорий и корректного развертывания проекта на операционной системе Linux, в настройках необходимо зайти в «Сервер» -> «Общие параметры» и нажать кнопку «Для Linux»:
Рисунок 4 — Перенастройка директорий в Rapid SCADA (картинка кликабельна)
3. Определяем порт опроса для Modbus RTU таким образом, как он определяется в системе Linux устройства. В нашем случае это /dev/ttyUSB0
Рисунок 5 — Перенастройка директорий в Rapid SCADA (картинка кликабельна)
Часть iii. разработка проекта и его загрузка на устройство
Разработка и визуализация проекта создается непосредственно в самом браузере. Это не совсем привычно после десктопных SCADA-систем, но вполне имеет место быть.
Отдельно хотелось бы отметить ограниченный набор элементов визуализации (рисунок 6). Из встроенных компонентов здесь есть светодиод, кнопка, тумблер, ссылка и указатель. Однако большой плюс в том, что данная SCADA-система поддерживает динамические изображения и текст.
Рисунок 6 — Инструменты редактора схем в Rapid SCADA
В рамках данной статьи не было цели расписывать поэтапно процесс графического создания проекта в Rapid SCADA. Поэтому подробно не будем останавливаться на этом пункте. В среде разработчика наш простенький проект «Системы подачи сжатого воздуха» компрессорной станции выглядит следующим образом (рисунок 7):
Рисунок 7 — Редактор схем в Rapid SCADA (картинка кликабельна)
Далее заливаем наш проект на устройство. Для этого указываем IP-адрес устройства для передачи проекта не на localhost, а на наш встраиваемый компьютер:
Рисунок 8 — Загрузка проекта на устройство в Rapid SCADA (картинка кликабельна)
В итоге у нас получилось нечто подобное (рисунок 9). В левой части экрана находятся светодиоды, отражающие статус работы всей системы (компрессора), а также статус работы задвижек (открыты или закрыты), а в центральной части экрана — визуализация технологического процесса с возможностью управления устройствами посредством тумблеров.
Рисунок 9 — Проект компрессорной станции (GIF-анимация кликабельна)
Выводы
Появление мощных встраиваемых промышленных компьютеров позволяет расширить и дополнить функционал программируемых логических контроллеров. Установка на них подобных SCADA-систем может покрыть задачи небольшого производства или технологического процесса.
Для более крупных задач с большим количеством пользователей или повышенным требованием безопасности, скорее всего, придется устанавливать полноценные сервера, шкафы автоматики и привычные ПЛК. Однако для точек средней и малой автоматизации по типу небольших производственных зданий, котельных, насосных или умного дома — подобное решение кажется целесообразным. По нашим подсчетам, подобные устройства подойдут для задач до 500 точек ввода-вывода данных.
Если у вас есть опыт рисования в различных графических редакторах и вас не смущает то, что вам придется самостоятельно создавать элементы мнемосхем, то вариант с Rapid SCADA под Raspberry весьма оптимален. Её функционал как готового решения несколько ограничен, поскольку это Open Source, однако и он позволяет покрыть задачи небольшого производственного здания.
Таким образом, чтобы понять, насколько полезным может быть для вас подобное решение на Raspberry и насколько ваши проекты заменимы Open Source SCADA-системами на Linux, возникает вполне резонный вопрос: какими SCADA-системами вы пользуетесь чаще всего?




