Команды протокола Modbus

Для протокола Modbus реализовано выполнение следующих функций:

  • 03, 04 (read registers) – чтение одного или нескольких регистров;

  • 06 (preset single register) – запись одного регистра;

  • 16 (preset multiple registers) – запись нескольких регистров;

  • 17 (report slave ID) – чтение имени прибора и версии программы.

Если адрес прибора равен нулю, для протокола Modbus это широковещательный адрес, прибор будет выполнять команды записи (6, 16), но не будет отправлять квитанции на принятые команды. На адреса более 247 прибор реагировать не будет.

Для функций 06 и 16 при попытке записать регистры, предназначенные только для чтения, или при попытке обращения к несуществующим регистрам возвращается ошибка 1 (Illegal function).

Структура запроса и ответа для функции 17

Функция позволяет получить имя прибора и версию программного обеспечения.

В таблице ниже представлен запрос для чтения имени и версии программного обеспечения прибора с адресом 12:

Параметры запроса
АдресФункцияКонтрольная сумма
1217ZZ

Ответ на функцию 17 представлен в таблице ниже:

Ответ на функцию 17
АдресФункцияКоличество байт данныхДанные 14 байтКонтрольная сумма
121714MЭ110-1M VX.YYZZ
Примечание
Поля X и YY определяются предприятием-изготовителем.

Параметры протокола Modbus представлены в таблице ниже:

Регистры протокола Modbus
КомандаНомера регистровДанные записи/чтенияТип данныхПримечание
Имя прибора0–3MЭ110-1МChar[8]Только чтение
Версия прошивки4–5Х – номер версии;YY– номер подверсииChar[4]Только чтение. Устанавливается предприятием-изготовителем
Скорость обмена60 – 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
Длина слова данных77 или 8Unsigned charЗапись/Чтение. По умолчанию – 8
Тип контроля четности слова данных80 – контроля нет;1 – четность;2 – нечетностьUnsigned charЗапись/Чтение. По умолчанию – 0
Количество стоп-битов в посылке90 – 1 стоп-бит;1 – 2 стоп-битаUnsigned charЗапись/Чтение. По умолчанию – 0
Задержка ответа по RS-48510от 0 до 255 мсUnsigned charЗапись/Чтение. По умолчанию – 45
Сетевой тайм-аут11от 0 до 600 сUnsigned shortЗапись/Чтение. По умолчанию – 600
Базовый адрес прибора12от 1 до 247Unsigned shortЗапись/Чтение. По умолчанию – 1
Тип протокола130 – Modbus ASCII;1 – Modbus RTU;2 – ОВЕН;3 – DCONUnsigned charЗапись/Чтение. По умолчанию – 2
Длина сетевого адреса148 – 8 бит;11 – 11 битUnsigned charЗапись/Чтение. По умолчанию – 8
Код последней сетевой ошибки15Unsigned charТолько чтение
Байт статуса16

Чтение:

0 – ошибка EEPROM;

1 – ошибка связи с АЦП;

2 – ошибка применения параметров

Unsigned charТолько чтение
Режим работы17Unsigned shortЗапись/Чтение. По умолчанию – 0
Положение десятичной точки в целом значении коэффициента трансформации напряжения180 (- - - -);1 (- - -.-);2 (- -.- -);3 (-.- - -)Unsigned charЗапись/Чтение. По умолчанию – 0
Целое значение коэффициента трансформации напряжения со смещением точки19–20от 1 до 9 999 999Unsigned longЗапись/Чтение. По умолчанию – 1
Положение десятичной точки в целом значении коэффициента трансформации тока210 (- - - -);1 (- - -.-);2 (- -.- -);3 (-.- - -)Unsigned charЗапись/Чтение. По умолчанию – 0
Целое значение коэффициента трансформации тока со смещением точки22–23от 1 до 9 999 999Unsigned longЗапись/Чтение. По умолчанию – 1
Положение десятичной точки в целом значении измеренного напряжения240 (- - - -);1 (- - -.-);2 (- -.- -);3 (-.- - -)Unsigned charЗапись/Чтение. По умолчанию – 0
Целое значение напряжения со смещением точки25–26от 0 до 999 999Unsigned longТолько чтение
Положение десятичной точки в целом значение измеренного тока270 (- - - -);1 (- - -.-);2 (- -.- -);3 (-.- - -)Unsigned charЗапись/Чтение. По умолчанию – 0
Целое значение измеренного тока со смещением точки28–29от 0 до 999 999Unsigned longТолько чтение
Положение десятичной точки в целом значение измеренной полной мощности300 (- - - -);1 (- - -.-);2 (- -.- -);3 (-.- - -)Unsigned charЗапись/Чтение. По умолчанию – 0
Целое значение измеренной полной мощности со смещением точки31–32от 0 до 999 999Unsigned longТолько чтение
Положение десятичной точки в целом значении измеренной активной мощности330 (- - - -);1 (- - -.-);2 (- -.- -);3 (-.- - -)Unsigned charЗапись/Чтение. По умолчанию – 0
Целое значение измеренной активной мощности со смещением точки34–35от 0 до 999 999Unsigned longТолько чтение
Положение десятичной точки в целом значении измеренной реактивной мощности360 (- - - -);1 (- - -.-);2 (- -.- -);3 (-.- - -)Unsigned charЗапись/Чтение. По умолчанию – 0
Целое значение измеренной реактивной мощности со смещением точки37–38от 0 до 999 999Unsigned longТолько чтение
Положение десятичной точки в целом значении измеренного коэффициента мощности390 (- - - -);1 (- - -.-);2 (- -.- -);3 (-.- - -)Unsigned charЗапись/Чтение. По умолчанию – 0
Целое значение измеренного коэффициента мощности со смещением точки40–41от 0 до 999 999Unsigned longТолько чтение
Положение десятичной точки в целом значении измеренной частоты сети420 (- - - -);1 (- - -.-);2 (- -.- -);3 (-.- - -)Unsigned charЗапись/Чтение. По умолчанию – 0
Целое значение измеренной частоты сети со смещением десятичной точки43–44от 0 до 999 999Unsigned longТолько чтение
Значение коэффициента трансформации напряжения с плавающей точкой45–46от 0,001 до 9999,000FloatЗапись/Чтение. По умолчанию – 1,0
Значение коэффициента трансформации тока по входам с плавающей точкой47–48от 0,001 до 9999,000FloatЗапись/Чтение. По умолчанию – 1,0
Значение измеренного напряжения с плавающей точкой49–50FloatТолько чтение
Значение измеренного тока с плавающей точкой51–52FloatТолько чтение
Значение измеренной полной мощности с плавающей точкой53–54FloatТолько чтение
Значение измеренной активной мощности с плавающей точкой55–56FloatТолько чтение
Значение измеренной реактивной мощности с плавающей точкой57–58FloatТолько чтение
Значение измеренного коэффициента мощности с плавающей точкой59–60FloatТолько чтение
Значение измеренной частоты сети с плавающей точкой61–62FloatТолько чтение
Запись изменений в энергонезависимую память и переход на новые сетевые настройки Aply63Для применения и сохранения параметров нужно записать 0x81Unsigned char
Маска кодов ошибок для команды Aply
Номер битаОписание ошибки
3Не удалось сохранить в энергонезависимую память параметры для настройки измерений (регистры 14–16, 18, 20)
2Недопустимое значение в одном из параметров для настройки измерений (регистры 14–16, 18, 20)
1Не удалось сохранить в энергонезависимую память сетевые параметры (регистры 0–10)
0Недопустимое значение в сетевых параметрах (регистры 2–10)