Для протокола Modbus реализовано выполнение следующих функций:
03, 04 (read registers) – чтение одного или нескольких регистров;
06 (preset single register) – запись одного регистра;
16 (preset multiple registers) – запись нескольких регистров;
17 (report slave ID) – чтение имени прибора и версии программы.
Если адрес прибора равен нулю, для протокола Modbus это широковещательный адрес, прибор будет выполнять команды записи (06, 16), но не будет отправлять квитанции на принятые команды. На адреса более 247 прибор реагировать не будет.
Для функций 06 и 16 при попытке записать регистры, предназначенные только для чтения, или при попытке обращения к несуществующим регистрам возвращается ошибка 1 (Illegal function).
Структура запроса и ответа для функции 17
Функция позволяет получить имя прибора и версию программного обеспечения.
В таблице ниже представлен запрос на чтение имени и версии программного обеспечения прибора с адресом 12.
Запрос для функции 17
Адрес | Функция | Контрольная сумма |
12 | 17 | ZZ |
Ответ на функцию 17 представлен в таблице ниже:
Ответ на функцию 17
Адрес | Функция | Количество байт данных | Данные 14 байт | Контрольная сумма |
12 | 17 | 14 | MЭ110-1H VX.YY | ZZ |

Параметры протокола Modbus представлены в таблице ниже:
Регистры протокола Modbus
Команда | Номера регистров | Данные записи/чтения | Тип данных | Примечание |
Имя прибора | 0–3 | MЭ110-1Н | Char | Только чтение |
Версия прошивки | 4–5 | Х – номер версии; YY– номер подверсии | Char | Только чтение. Устанавливается предприятием-изготовителем |
Скорость обмена | 6 | Byte: 0 – 2,4 кбит/с; 1 – 4,8 кбит/с; 2 – 9,6 кбит/с; 3 – 14,4 кбит/с; 4 – 19,2 кбит/с; 5 – 28,8 кбит/с; 6 – 38,4 кбит/с; 7 – 57,6 кбит/с; 8 – 115,2 кбит/с | Unsigned char | Запись/Чтение. По умолчанию – 2 |
Длина слова данных | 7 | Byte: 7 или 8 | Unsigned char | Запись/Чтение. По умолчанию – 8 |
Тип контроля четности слова данных | 8 | Byte: 0 – контроля нет; 1 – четность; 2 – нечетность | Unsigned char | Запись/Чтение. По умолчанию – 0 |
Количество стоп-битов в посылке | 9 | Byte: 0 – 1 стоп-бит; 1 – 2 стоп-бита | Unsigned char | Запись/Чтение. По умолчанию – 0 |
Задержка ответа по RS-485 | 10 | Byte: от 0 до 255 мс | Unsigned char | Запись/Чтение. По умолчанию – 45 |
Сетевой тайм-аут | 11 | Byte: от 0 до 600 с | Unsigned short | Запись/Чтение. По умолчанию – 600 |
Базовый адрес прибора | 12 | Word_16: от 1 до 255 | Unsigned short | Запись/Чтение. По умолчанию – 1 |
Тип протокола | 13 | 0 – Modbus ASCII; 1 – Modbus RTU; 2 – ОВЕН; 3 – DCON | Unsigned char | Запись/Чтение. По умолчанию – 2 |
Длина сетевого адреса | 14 | Byte: 8 – 8 бит; 11 – 11 бит | Unsigned char | Запись/Чтение. По умолчанию – 8 |
Код последней сетевой ошибки | 15 | Чтение: Byte: от 0 до 255 После включения прибора – 0 | Unsigned char | Только чтение |
Байт статуса | 16 | Чтение: 0 – ошибка EEPROM; 1 – ошибка связи с АЦП; 2 – ошибка применения параметров | Unsigned char | Только чтение |
Режим работы | 17 | 7 – прибор работает с целыми числами, если бит уст. в 1; 5–6 – не используется; 4 – режим калибровки; 3 – флаг завершения калибровки масштаба; 2 – флаг завершения калибровки смещения нуля; 1 – флаг завершения калибровки верхней точки; 0 – результаты калибровки | Unsigned char | Запись/Чтение. По умолчанию – 0 |
Положение десятичной точки в целом значении коэффициента трансформации напряжения по входу 1 | 18 | 0 –(- - - -); 1 – (- - -.-); 2 – (- -.- -); 3 – (-.- - -) | Unsigned char | Запись/Чтение. По умолчанию – 0 |
Целое значение коэффициента трансформации напряжения по входу 1 со смещением точки | 19–20 | от 1 до 9 999 999 | Unsigned long | Запись/Чтение. По умолчанию – 1 |
Положение десятичной точки в целом значение измеренного напряжения по входу 1 | 21 | 0 – (- - - -); 1 – (- - -.-); 2 – (- -.- -); 3 – (-.- - -) | Unsigned char | Запись/Чтение. По умолчанию – 0 |
Целое значение измеренного напряжения по входу 1 со смещением точки | 22–23 | от 0 до 999 999 | Signed long | Только чтение. По умолчанию – 1 |
Положение десятичной в целом значение измеренной частоты сети | 24 | 0 – (- - - -); 1 – (- - -.-); 2 – (- -.- -); 3 – (-.- - -) | Unsigned char | Запись/Чтение. По умолчанию – 0 |
Целое значение измеренной частоты сети со смещением десятичной точки | 25–26 | от 0 до 99 999 | Unsigned long | Только чтение |
Коэффициент трансформации напряжения по входу 1 с плавающей точкой | 27–28 | от 0,001 до 9999,000 | Float | Запись/Чтение. По умолчанию – 1,0 |
Измеренное значение напряжения по входу 1 с плавающей точкой | 29–30 | Float | Только чтение | |
Значение измеренной частоты сети с плавающей точкой | 31–32 | Float | Только чтение | |
Запись изменений в энергонезависимую память и переход на новые сетевые настройки Aply | 33 | Для применения и сохранения параметров нужно записать 0x81 | Unsigned char |
Маска кодов ошибок для команды Aply
Номер бита | Описание ошибки |
3 | Не удалось сохранить в энергонезависимую память параметры для настройки измерений (регистры 14–16, 18, 20) |
2 | Недопустимое значение в одном из параметров для настройки измерений (регистры 14–16, 18, 20) |
1 | Не удалось сохранить в энергонезависимую память сетевые параметры (регистры 0–10) |
0 | Недопустимое значение в сетевых параметрах (регистры 2–10) |