Команды протокола 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 представлен в таблице ниже.

АдресФункцияКоличество байт данныхДанные 14 байтКонтрольная сумма
121714MЭ110-1Т 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 999Unsigned 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)