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

Для протокола 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
АдресФункцияКонтрольная сумма
1217ZZ

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

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

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

Регистры протокола Modbus
КомандаНомера регистровДанные записи/чтенияТип данныхПримечание
Имя прибора0–3MЭ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
Длина слова данных7Byte: 7 или 8Unsigned charЗапись/Чтение. По умолчанию – 8
Тип контроля четности слова данных8

Byte:

0 – контроля нет;

1 – четность;

2 – нечетность

Unsigned charЗапись/Чтение. По умолчанию – 0
Количество стоп-битов в посылке9

Byte:

0 – 1 стоп-бит;

1 – 2 стоп-бита

Unsigned charЗапись/Чтение. По умолчанию – 0
Задержка ответа по RS-48510Byte: от 0 до 255 мсUnsigned charЗапись/Чтение. По умолчанию – 45
Сетевой тайм-аут11Byte: от 0 до 600 сUnsigned shortЗапись/Чтение. По умолчанию – 600
Базовый адрес прибора12Word_16: от 1 до 255Unsigned 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
Положение десятичной точки в целом значении коэффициента трансформации напряжения по входу 118

0 –(- - - -);

1 – (- - -.-);

2 – (- -.- -);

3 – (-.- - -)

Unsigned charЗапись/Чтение. По умолчанию – 0
Целое значение коэффициента трансформации напряжения по входу 1 со смещением точки19–20от 1 до 9 999 999Unsigned longЗапись/Чтение. По умолчанию – 1
Положение десятичной точки в целом значение измеренного напряжения по входу 121

0 – (- - - -);

1 – (- - -.-);

2 – (- -.- -);

3 – (-.- - -)

Unsigned charЗапись/Чтение. По умолчанию – 0
Целое значение измеренного напряжения по входу 1 со смещением точки22–23от 0 до 999 999Signed longТолько чтение. По умолчанию – 1
Положение десятичной в целом значение измеренной частоты сети24

0 – (- - - -);

1 – (- - -.-);

2 – (- -.- -);

3 – (-.- - -)

Unsigned charЗапись/Чтение. По умолчанию – 0
Целое значение измеренной частоты сети со смещением десятичной точки25–26от 0 до 99 999Unsigned longТолько чтение
Коэффициент трансформации напряжения по входу 1 с плавающей точкой27–28от 0,001 до 9999,000FloatЗапись/Чтение. По умолчанию – 1,0
Измеренное значение напряжения по входу 1 с плавающей точкой29–30FloatТолько чтение
Значение измеренной частоты сети с плавающей точкой31–32FloatТолько чтение
Запись изменений в энергонезависимую память и переход на новые сетевые настройки Aply33Для применения и сохранения параметров нужно записать 0x81Unsigned char
Маска кодов ошибок для команды Aply
Номер битаОписание ошибки
3Не удалось сохранить в энергонезависимую память параметры для настройки измерений (регистры 14–16, 18, 20)
2Недопустимое значение в одном из параметров для настройки измерений (регистры 14–16, 18, 20)
1Не удалось сохранить в энергонезависимую память сетевые параметры (регистры 0–10)
0Недопустимое значение в сетевых параметрах (регистры 2–10)