En

Подключение устройств по протоколу Modbus

На рынке представлено огромное количество устройств, работающих в самых разных областях автоматизации, которые поддерживают обмен данными по протоколу Modbus. Modbus – это открытый коммуникационный протокол, использующий клиент-серверную модель, основанную на транзакциях, состоящих из запроса и ответа. Реализация поддержки протокола Modbus комплексом Rapid SCADA на порядок расширяет перечень устройств, с которыми может работать комплекс. Поддерживаются следующие режимы передачи данных: RTU, ASCII, TCP.

Внимание. Обновлённая версия статьи доступна по ссылке.

Общая последовательность настройки:

  1. Создать соответствующий объект, линию связи и КП в базе конфигурации с помощью программы SCADA-Администратор.
  2. Настроить обмен данными между SCADA-Коммуникатором и устройствами.
  3. С помощью SCADA-Администратора создать входные каналы в базе конфигурации, соответствующие элементам Modbus (элементы также называются переменными или тегами). Создать каналы управления, соответствующие командам.
  4. Создать одно или несколько представлений (таблиц или схем) для отображения информации в SCADA-Web. Прописать представления с помощью утилиты SCADA-Web конфигуратор.

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

Предварительная настройка базы конфигурации

Редактирование базы конфигурации выполняется с помощью программы SCADA-Администратор.

Запустите SCADA-Администратор. Откройте таблицу Объекты и добавьте новую строку для объекта 21 «Тестовый объект» (рис. 1). Затем откройте таблицу Линии связи и добавьте линию 16 «Тестовая линия» (рис. 2). После чего откройте таблицу КП и добавьте КП 61 «Тестовый КП» (рис. 3).

Для КП необходимо заполнить следующие поля (рис. 3):

Тип КП: Modbus
Адрес: Modbus адрес Вашего устройства, например, 1
Позывной: IP адрес, если устройство подключено по сети Ethernet
Линия связи: «Тестовая линия», которая была только что создана

Добавление объекта
Рис. 1. Добавление объекта

Добавление линии связи
Рис. 2. Добавление линии связи

Добавление КП
Рис. 3. Добавление КП

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

Настройка обмена данными с устройствами

Запустите SCADA-Коммуникатор (точнее его графическую оболочку). При этом служба SCADA-Сервера должна быть запущена.

Щёлкните правой кнопкой мыши по элементу дерева Линии связи и выберите в контекстном меню пункт Импорт линий связи и КП (рис. 4). В появившемся окне отметьте галочкой созданную линию связи и КП, после чего нажмите кнопку Импорт (рис. 5). Линия связи и КП появятся в SCADA-Коммуникаторе.

Контекстное меню линий связи
Рис. 4. Контекстное меню линий связи

Выбор импортируемых КП
Рис. 5. Выбор импортируемых КП

Щёлкните в дереве по элементу Линия 16 «Тестовая линия» и на странице Параметры линии связи выберите и настройте канал связи, например, Последовательный порт. Поставьте галочку Команды ТУ разрешены, если необходимо управлять устройством (рис. 6).

Параметры линии связи
Рис. 6. Параметры линии связи

Типичные параметры последовательного порта в зависимости от типа протокола Modbus содержатся в следующей таблице.

RTU ASCII TCP
8 битов данных,
с проверкой чётности (even – чёт.),
1 стоп-бит
7 битов данных,
с проверкой чётности (even – чёт.),
1 стоп-бит
8 битов данных,
без проверки чётности,
2 стоп-бита
7 битов данных,
без проверки чётности,
2 стоп-бита

В режимах RTU и ASCII необходимо установить одинаковую скорость передачи данных в SCADA-Коммуникаторе и на устройствах. На одной линии связи все устройства должны работать по протоколу Modbus одного типа и с одной скоростью.

Далее перейдите на страницу Опрос КП и выберите в таблице «Тестовый КП» (рис. 7). Если не указывать время или период опроса КП, то опрос устройств производится циклически. Команды отправляются сразу после завершения очередного опроса.

Таблица опроса КП
Рис. 7. Таблица опроса КП

Нажмите кнопку , чтобы открыть форму настройки дополнительных свойств КП (рис. 8). На форме свойств КП необходимо выбрать тип протокола Modbus, который должен быть указан в документации на устройство.

Свойства КП
Рис. 8. Свойства КП

Нажмите кнопку , чтобы выбрать существующий шаблон устройства, или кнопку , чтобы создать новый шаблон. При нажатии на кнопку создания  или на кнопку редактирования шаблона  вызывается Редактор шаблонов устройств (рис. 9). В данной статье используется существующий шаблон KpModbus_Adam6015.xml.

Редактор шаблонов устройств
Рис. 9. Редактор шаблонов устройств

Шаблон устройства отражает структуру пакетов данных протокола Modbus. Данные, запрашиваемые от устройства, объединены в группы элементов (тегов). Группа элементов описывается наименованием, таблицей данных, адресом и количеством элементов.

Для команд, если они поддерживаются устройством, необходимо задать наименование, таблицу данных, адрес и номер команды КП (от 1 и далее по порядку).

Наименования элементов и команд могут быть произвольными. Таблицы данных и адреса элементов должны содержаться в документации на подключаемое устройство. По стандарту протокола Modbus адресация элементов начинается с 1, однако многие производители в своей документации начинают адресацию с 0-го адреса. В этом случае при создании шаблона необходимо добавлять 1 к каждому адресу, указанному производителем.

Для сохранения настроек SCADA-Коммуникатора нажмите кнопку . Теперь можно запустить службу SCADA-Коммуникатора с помощью кнопки и проверить связь с устройством.

Щёлкните элемент дерева КП 61 «Тестовый КП», чтобы проконтролировать состояние КП и наличие данных (рис. 10). Данные появятся не сразу после запуска, а после завершения первого опроса КП.

При отсутствии связи с устройством используйте журнал линии связи для анализа причины проблемы. Чтобы открыть журнал, щёлкните по элементу дерева Статистика линии связи и перейдите на страницу Журнал линии связи. С помощью онлайн инструмента Online Modbus Parser можно получить расшифровку пакетов данных, скопировав их на веб форму из журнала линии связи.

Данные КП
Рис. 10. Данные КП

Завершение настройки базы конфигурации

После того, как связь с устройством установлена, необходимо создать входные каналы и каналы управления в базе конфигурации. Для этого необходимо вновь открыть программу SCADA-Администратор.

Сервис автоматического создания каналов поможет сэкономить время. Выберите в главном меню программы Сервис → Создание каналов.

На открывшейся форме (рис. 11) выберите в выпадающем списке «Тестовая линия», затем поставьте галочку напротив «Тестового КП», а также установите «Тестовый объект» в столбце Объект. Нажмите сначала кнопку Рассчитать номера каналов, затем кнопку Создать.

Каналы создаются автоматически на основе шаблона устройства, который был создан и назначен КП в предыдущем разделе статьи. Посмотреть созданные каналы можно, щёлкнув в SCADA-Администраторе по элементу дерева Входные каналыТестовый КП или Каналы управленияТестовый КП. Рекомендуется вручную заполнить поля Величина и Размерность для входных каналов и поле Значения команды для каналов управления. Однако в случае первого опыта это делать необязательно.

Создание каналов
Рис. 11. Создание каналов

Полезно понимать, что входные каналы привязываются к тегам КП с помощью поля Сигнал. Каналы управления привязываются к командам КП в соответствии с полем Номер команды.

После того, как редактирование базы конфигурации завершено, следует нажать кнопку  для передачи изменений SCADA-Серверу, перезапустить SCADA-Сервер и SCADA-Коммуникатор с помощью кнопок  и .

Откройте страницу Данные КП в SCADA-Коммуникаторе и убедитесь, что созданные входные каналы связаны с тегами КП – столбец Канал должен содержать номера созданных входных каналов (рис. 12).

В результате проделанных действий данные должны собираться с устройства и сохраняться в архив. Осталось настроить пользовательский интерфейс оператора.

Данные КП с привязкой каналов
Рис. 12. Данные КП с привязкой каналов

Настройка интерфейса оператора

Рассмотрим создание табличного представления для SCADA-Web. Для этого нам понадобится программа SCADA-Редактор таблиц (если необходимо отобразить данные на мнемосхеме, то вместо редактора таблиц используйте SCADA-Редактор схем).

Откройте SCADA-Редактор таблиц и заполните табличное представление, как показано на рис. 13. Добавить канал в таблицу (из левой части окна в правую) можно по кнопке , двойному щелчку на строке канала или по клавише Enter.

Сохраните созданное табличное представление в файл с именем TestTable.tbl в папку C:\SCADA\Interface\Test

Редактор таблиц
Рис. 13. Редактор таблиц

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

Представления группируются по наборам. В качестве примера был добавлен новый «Тестовый набор» (рис. 14). Обратите внимание, что для набора представлений необходимо указать директорию. В нашем случае используется директория Test\

Добавьте представление, как показано на рис. 15, и сохраните настройки.

Добавление набора представлений
Рис. 14. Добавление набора представлений

Добавление представления
Рис. 15. Добавление представления

Теперь запустите браузер и введите адрес http://localhost/scada/

На форме входа в систему используйте логин admin, пароль 12345 и Тестовый набор представлений (рис. 16).

Вход в систему
Рис. 16. Вход в систему

Веб-приложение SCADA-Web
Рис. 17. Веб-приложение SCADA-Web

Если настройка выполнена правильно, то после входа в систему Вы увидите таблицу с получаемыми от устройства данными, аналогичную рис. 17.

Преобразование значений тегов Modbus

Каждый элемент Modbus, относящийся к таблицам Input Register и Holding Registers, состоит из двух байт. В зависимости от установленного для элемента типа полученные от устройства данные преобразуются в значение по-разному.

Если выбран 4-х байтный тип (uint, int, float), то значение элемента получается в результате преобразования 2-х элементов с идущими подряд адресами. Если выбран 8-и байтный тип (ulong, long, double), то значение получается в результате преобразования 4-х элементов.

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

В ряде случаев для получения вещественных или отрицательных величин потребуется пересчёт, который выполняется SCADA-Сервером.  Способ пересчёта зависит от используемого устройства и должен указываться его производителем. Два распространённых варианта пересчёта для 2-х байтных значений без знака (ushort) приводятся ниже.

Вариант 1. Пропорциональный пересчёт.

Пусть требуемое вещественное значение изменяется в диапазоне от A до B, X – полученное от устройства целое значение. Тогда пересчёт выполняется по следующей формуле:

X * (B — A) / 65536 + A.

Формулу следует ввести в поле Формула входного канала в базе конфигурации, установив для данного канала признак Исп. формулу. Например, значение измеряемого параметра изменяется в диапазоне от -40 до 160. Тогда формула для ввода в базу конфигурации получится:

Cnl*200/65536-40

Вариант 2. Использование для пересчёта дополнительного кода (two’s complement).

Пусть требуемое вещественное значение изменяется в диапазоне от A до B. При этом нижней границе соответствует целое значение A’, получаемое от устройства, верхней границе – целое значение B’, получаемое от устройства, а нулевому вещественному значению соответствует 0, получаемый от устройства. Значения A’ и B’ устанавливаются производителем устройства.

Если старший бит полученного значения X равен 0, т.е. X является положительным, то вещественное значение вычисляется по формуле:

X * B / B’.

Если старший бит полученного значения X равен 1, т.е. X является отрицательным, то вещественное значение вычисляется по формуле:

(~X | 128 + 1) * A / (~A’ | 128 + 1),
где ~ – оператор побитового отрицания, | – оператор побитового ИЛИ.

Пример:
A = -210, A’ = 56482 (0xDCA2), B = 760, B’ = 32767 (0x7FFF).

Тогда формула для ввода в базу конфигурации:
Cnl<32768 ? Cnl*760/32767 : -(double)(ushort)(~(ushort)Cnl|128+1)*210/9182

Рекомендуется создать функцию, выполняющую описанный пересчёт, в таблице Формулы базы конфигурации, чтобы сократить последующую запись формул при многократном использовании:

Вызов этой функции в поле Формула таблицы Входные каналы :
Convert(Cnl)

Теги: ,