Для протокола Modbus реализовано выполнение следующих функций:
- 03, 04 (read registers) – чтение одного или нескольких регистров;
- 06 (preset single register) – запись одного регистра;
- 16 (preset multiple registers) – запись нескольких регистров;
- 17 (report slave ID) – чтение имени прибора и версии программы.
Если адрес прибора равен нулю, для протокола Modbus это широковещательный адрес, и прибор будет выполнять команды записи, но не будет отправлять квитанции на принятые команды.
На адреса более 247 прибор реагировать не будет.
Для функций 03, 04 и 16 допускается запись или чтение регистров, относящихся только к одной команде.
Возврат ошибки для функций
Функции | Ошибка | Причина |
---|---|---|
06 и 16 | 1 («Illegal function») |
|
03 и 04 | 2 («Illegal data address») | |
03, 04 и 16* | 4 («Failure in associated device») | Попытка записать или прочитать регистры нескольких команд |
Примечание * Исключение составляют регистры оперативных параметров, которые могут быть все считаны одной командой. Начальный адрес регистра может быть любым в пределах адресов оперативных параметров |
Назначение регистров, используемых для функций 03, 04, 06 и 16 приведены в таблице
Команды протокола Modbus
Команда | Адрес регистра | Данные записи | Данные чтения | Примечание |
---|---|---|---|---|
Общие параметры | ||||
Код выхода exit | 0x88 | Нет | Word_16: 0 – программный сброс; 6 – аппарат. сброс; 7 – вкл. питания; 8 – сторожевой таймер | Только чтение |
Код последней сетевой ошибки n.Err | 0x90 | Нет | Byte: от 0 до 255 | Только чтение После включения прибора – 0 |
Конфигурационные параметры сети RS-485 | ||||
Скорость обмена bPS | 0x30 | Word_16: 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 кбит/с | Запись/Чтение. По умолчанию: 2 | |
Тип контроля четности слова данных PrtY | 0x38 | Word_16: 0 – контроля нет; 1 – четность; 2 – нечетность | Запись/Чтение. По умолчанию: 0 | |
Количество стоп-бит в посылке Sbit | 0x40 | Word_16: 0 – один; 1 – два | Запись/Чтение. По умолчанию: 0 | |
Задержка ответа по RS-485 Rs.dL | 0x48 | Word_16: от 0 до 45 мс | Запись/Чтение. По умолчанию: 45 | |
Базовый адрес прибора Addr | 0x50 | Word_16: от 1 до 247 | Запись/Чтение. По умолчанию: 16 | |
Запись изменений в энергонезависимую память и перестройка сетевых параметров Aply | 0x78 | Word_16: 0 | Только запись | |
Конфигурационные параметры | ||||
Тип входного фильтра, общего для всех каналов ComF | 0x28 | Word_16: 0 – откл.; 1 – 50 Гц, первого порядка; 2 – 50 Гц, второго порядка; 3 – 50 Гц, четвертого порядка; 4 – 200 Гц, первого порядка | Запись/Чтение. По умолчанию: 0 | |
Тип подключаемого датчика In-t | 0x00 – 1 канал; 0x01 – 2 канал | Word_16: 0 – канал откл.; 1 – от 4 до 20 мА; 2 – от 0 до 20 мА; 3 – от 0 до 5 мА; 4 – от 0 до 10 В | Запись/Чтение. По умолчанию: 0 | |
Нижняя граница диапазона измерения активного датчика Ain.L | 0x58,0x59 – 1 канал; 0x5a,0x5b – 2 канал | Float_32 (IEEE 754). Значение хранится в двух последовательных регистрах. Старшие разряды хранятся в регистре, имеющем меньший адрес | Запись/Чтение. По умолчанию: 20000,0 | |
Верхняя граница диапазона измерения активного датчика Ain.Н | 0x68,0x69 – 1 канал; 0x6a,0x6b – 2 канал | Float_32 (IEEE 754). Значение хранится в двух последовательных регистрах. Старшие разряды хранятся в регистре, имеющем меньший адрес | Запись/Чтение. По умолчанию: 0,0 | |
Смещение десятичной точки dP | 0x20 – 1 канал; 0x21 – 2 канал | Word_16: от 0 до 4 | Запись/Чтение. По умолчанию: 0 | |
Ограничение скорости изменения измеряемого сигнала (пиковый фильтр) Peak | 0x08 – 1 канал; 0x09 – 2 канал | Word_16: от 1 до 200 диапазона/с (в разах) | Запись/Чтение. По умолчанию: 200 | |
Тип выходного фильтра OutF | 0x10 – 1 канал 0x11 – 2 канал | Word_16: 0 – Откл; 1 – Exp от 2 до 16 – ск. среднего, L = 2 – 16 | Запись/Чтение. По умолчанию: 0 | |
Постоянная времени для экспоненциального фильтра in.Fd | 0x18 – 1 канал; 0x19 – 2 канал | Word_16_16: от 10 до 10000 мс | Запись/Чтение. По умолчанию: 10 | |
Запись изменений в энергонезависимую память и применение новых параметров INIT | 0x80 | Word_16 – 0 | Нет | Только запись. Команда аналогична команде Aply, но перестройка сетевых параметров не выполняется |
Оперативные параметры | ||||
Измеренное значение iRD | 0x100 – 1 канал; 0x101 – 2 канал | Нет | Int_16 – рез. изм × 10dP | Только чтение |
Измеренное значение iRDt | 0x102, 0x103 – 1 канал; 0x104, 0x105 – 2 канал | Нет | Int_16 – рез. изм × 10dP+ +Word_16 (метка относительного времени, дискретность 10 мс) | Только чтение |
Чтение статуса результатов измерения SRD | 0x106, 0x107 | Нет | Int_16: Кодирование статуса в таблице | Только чтение |
Измеренное значение Read | 0x108…0x10A – 1 канал; 0x10B…0x10D – 2 канал | Нет | Float_32 (IEEE 754) – рез. изм + Word_16 (метка относительного времени, дискретность 10 мс) | Только чтение |
Примечание На некорректные данные типа Int_16 возвращается
значение –32768. На некорректные данные типа Float_32 возвращается значение NaN. Причину некорректности измеренных
данных выясняют чтением статуса (SRD). Кодирование статуса
приведено в таблице. |
Кодирование статуса
Статус измерения | Кодирование статуса SRD |
---|---|
Измерение успешно | 0x0000 |
Значение заведомо неверно | 0xF000 |
Данные не готовы | 0xF006 |
Датчик отключен | 0xF007 |
Измеренное значение слишком велико | 0xF00A |
Измеренное значение слишком мало | 0xF00B |
Обрыв датчика | 0xF00D |
Некорректный калибровочный коэффициент | 0xF00F |
Структура запроса и ответа для функции 17
Функция позволяет получить имя прибора и версию программного обеспечения.
Запрос на чтение имени и версии программного обеспечения прибора с адресом 12
Адрес | Функция | Контрольная сумма |
---|---|---|
12 | 17 | ZZ |
Ответ на функцию 17
Адрес | Функция | Количество байт данных | Данные 15 байт | Контрольная сумма |
---|---|---|---|---|
12 | 17 | 15 | MB110-2AC VX.YY | ZZ |