4.8. Настройка обмена по MODBUS RTU и MODBUS-подобным протоколам
Контроллеры серии «Синком-Д» поддерживают считывание значений ТС и ТИ с регистров устройств, а также запись в регистры устройств данных из памяти контроллера в протоколе MODBUS RTU.
На одном канале COM можно настроить до 50 отдельных запросов считывания и записи данных различных устройств с использованием разных протоколов. Рекомендуемое ограничение - количество устройств, подключаемых к одному СОМ-порту, не должно превышать 8.
После включения контроллер непрерывно последовательно выдает сконфигурированные запросы и полученные от устройств данные (в ответах на запросы) складываются в общий массив контроллера.
Чтобы настроить работу COM-портов контроллера по протоколу MODBUS RTU необходимо выполнить следующие действия:
-
Подключиться к Web-конфигуратору и открыть вкладку «Каналы связи».
-
Перейти к разделу «COM-порты (асинхронные)».
-
Задать параметру «Доп. функция» портов, которые планируется задействовать, значение «MODBUS».
-
Задать параметру «Режим» портов, которые планируется задействовать, значение в соответствии с необходимым интерфейсом.
Внимание: Порты 3 и 4 контроллеров серии «Синком-Д» могут работать только по интерфейсу RS-485.
-
Задать параметр «Скорость» портов, которые планируется задействовать.
Допустимые значения: от 50 до 115200 бод для порта 1 и от 1200 до 115200 бод для портов 2, 3 и 4.
-
Задать параметры «Четность» и «Стоповый бит» портов, которые планируется задействовать.
Рекомендуемые значения параметра «Стоповый бит»: 2 бита без контроля чётности и 1 бит с контролем чётности.
-
Открыть вкладку «COM x – MODBUS», где x – номер настраиваемого порта.
Внимание: Каждая строка описания соответствует одному запросу протокола обмена.
-
Задать параметр «Адрес устройства».
Параметр задаётся в диапазоне от 1 до 65535. Также адрес можно задать в шестнадцатиричной кодировке – для этого перед адресом необходимо поставить один из знаков: $, &, x, X (должна использоваться латинская раскладка).
-
Задать параметр «Код функции».
Контроллеры серии «Синком-Д» поддерживают несколько стандартных кодов функций, согласно протоколу MODBUS, и несколько специальных – для поддержки конкретных устройств и реализаций протокола. Поддерживаемые стандартные коды функций:
Код функции
|
Функция
|
1
|
Read Coil Status
|
2
|
Read Input Status
|
3
|
Read Holding Registers
|
4
|
Read Input Registers
|
6
|
Preset Single Register
|
Поддерживаемые специальные коды функций:
Внимание: так как специальные функции предназначены для поддержки конкретных протоколов и устройств, могут потребоваться специфичные настройки каналов связи и параметров запроса. Данные вопросы будут подробнее рассмотрены в разделах, посвященных конкретному коду функции.
Код функции
|
Устройство/реализация
|
90
|
МВ110-8А
|
111
|
Тэкон-19
|
100
|
Щит S2000
|
200
|
DCON чтение
|
202
|
DCON запись
|
205
|
ЭЛЕМЕР
|
Каждый из кодов функций имеет собственный набор поддерживаемых типов данных.
Чтобы настроить запрос необходимо выполнить следующие действия:
-
Задать параметр «Адрес регистра».
Число задающее адрес первого считываемого запросом регистра.
Адрес регистра можно задать в шестнадцатиричной кодировке – для этого перед адресом необходимо поставить один из знаков: $, &, x, X (должна использоваться латинская раскладка).
Внимание: Первые 10 адресов в массиве ТИ, как правило, используются в сервисных целях. В разных описаниях наблюдается разная система адресации «прямая» или с «0» и относительная с «1». В настройке контроллера необходимо указывать «прямой» адрес, т.е. указанное число переносится в запрос без изменений.
-
Задать параметр «Количество регистров».
Параметр описывает количество считываемых запросом регистров.
Внимание: Назначение параметра при работе по коду функции 6 отличается. Вопрос рассмотрен более детально в соответствующем разделе.

-
Задать параметр «Тип данных».
-
если указан тип данных ТС – ответные данные будут декодированы как 16 значений ТС для каждого полученного регистра, а общее количество полученных ТС = 16*количество
-
-
если указан тип данных 16 бит без знака – каждый принятый регистр будет декодирован как целое число без знака (значение ТИ) 16 бит (диапазон 0 - 65535)
-
если указан тип данных 16 бит со знаком – каждый принятый регистр будет декодирован как целое число со знаком (значение ТИ) 16 бит в дополнительном коде (диапазон -32767 +32767)
-
если указан тип данных 32 бит – каждые подряд принятые 2 регистра будут декодированы как целое число без знака (значение ТИ) 32 бит (порядок следования байтов в принятых регистрах можно выбрать)
-
если указан тип данных пл, точка – каждые подряд принятые 2 регистра будут декодированы как число (значение ТИ) в кодировке IEEE Standard Binary Floating-Poin (порядок следования байтов в принятых регистрах можно выбрать).
Каждому выбранному ‘Коду функции’ соответствует свой актуальный набор ‘Типа данных’.
-
Задать параметр «Время ответа устройства».
Этот параметр устанавливает паузу после передачи запроса, в течении которой оживляется прием ответа от устройства. Задается в мсек. В идеальном случае время ответа должно быть равно времени передачи ответного пакета + время передачи 3.5 байт. Время передачи 1 байта на скорости 9600 примерно 1 мс. Однако встречаются устройства, отвечающие на запрос с дополнительной паузой, не описанной в документации.
Рекомендация: При первичном конфигурировании для неизвестного ранее устройства установите паузу как минимум равную 1000 мс. После наблюдения реального обмена можно будет уменьшить до фактически необходимого. Этот же параметр можно использовать для “замедления” темпа опроса данных. Например, при малом количестве устройств на шине или при наблюдении медленно изменяющихся данных можно выставить время больше необходимого для ответа.
-
Задать параметр «Начальный адрес в массиве ТС/ТИ».
Этот параметр позволяет задать адрес в массиве ТС/ТИ контроллера, начиная с которого будут записываться принимаемые или считываться, записываемые в устройство нижнего уровня, ТС/ТИ .
Внимание: Заданные для запроса адреса в массиве ТС/ТИ не должны пресекаться с адресами ТС/ТИ полученных из других источников.
-
Поле «Доп.» предназначено для задания маски обработки ТС по протоколу ModBUS (когда нужно обработать только часть битов из пакета). Маска задается в поле "Доп." в шестнадцатеричном виде (в том порядке как идут биты в пакете). Максимально можно задать маску для четырех принятых байтов.
Например 03000000 (можно просто 03) означает что обработаны будут только первые два ТС.