Для протокола ModBus реализовано выполнение следующих функций:
03, 04 (readregisters) – чтение одного или нескольких регистров;
06 (preset single register) – запись одного регистра;
16 (presetmultipleregisters) – запись нескольких регистров;
17 (reportslaveID) – чтение имени прибора и версии программы.
Если адрес прибора равен нулю, для протокола ModBus это широковещательный адрес, и прибор будет выполнять команды записи (6, 16), но не будет отправлять квитанции на принятые команды. На адреса более 247 прибор реагировать не будет.
Для функций 06 и 16 при попытке записать регистры, предназначенные только для чтения, или при обращении к несуществующим регистрам возвращается ошибка 1 (Illegalfunction).
Структура запроса и ответа для функции 0х11
Функция позволяет получить имя прибора и версию программного обеспечения.
Запрос на чтение имени и версии программного обеспечения прибора с адресом 12 имеет следующий вид:
Адрес | Функция | Контрольная сумма |
1...247 | 0х11 | – |
Ответ на функцию 17 следующий:
Адрес | Функция | Размер поля данных | Поле данных (коды ASCII) | Контрольная сумма |
1...247 | 0х11 | 10* | СВ01 vX.YY** | – |
Предупреждение * В случае, когда версия прошивки превышает 9.99, размер поля данных может быть другим. ** X – номер версии прошивки, YY – номер подверсии прошивки. Поля X и YY определяются предприятием-изготовителем. |
Команды протокола ModBus
Команда | Адрес регистра | Количество регистров | Тип данных | Допустимые значения | Функции ModBus | Примечание |
---|---|---|---|---|---|---|
Общие параметры | ||||||
Сброс счетчика времени и счетчика включений Cnt.R | 0x1B | 1 | unsigned short | 0 | 6, 16 | Только запись. Счетчик времени и счетчик включений сбрасываются в «0» |
Сетевые параметры | ||||||
Скорость обмена bPS | 0x0 | 1 | unsigned short | 0 – 2400 бит/с, 1 – 4800 бит/с, 2 – 9600 бит/с, 3 – 14400 бит/с, 4 – 19200 бит/с, 5 – 28800 бит/с, 6 – 38400 бит/с, 7 – 57600 бит/с, 8 – 115200 бит/с | 3, 6, 16 | По умолчанию – 2 |
Тип контроля четности PrtY | 0x1 | 1 | unsigned short | 0 – нет контроля, 1 – четность, 2 – нечетность | 3, 6, 16 | По умолчанию – 0 |
Количество стоп-бит в посылке Sbit | 0x2 | 1 | unsigned short | 0 – 1 бит, 1 – 2 бита | 3, 6, 16 | По умолчанию – 0 |
Длина слова данных Len | 0x3 | 1 | unsigned short | 0 – 7 бит, 1 – 8 бит | 3, 6, 16 | По умолчанию – 1 |
Длина сетевого адреса, бит A.Len | 0x4 | 1 | unsigned short | 0 – 8 бит, 1 – 11 бит | 3, 6, 16 | По умолчанию – 0. При Addr > 254 смена A.Lenс 1 в 0 невозможна |
Базовый адрес прибора Addr | 0x5 | 1 | unsigned short | 1...254 при A.Len = 0; 1...254, 256...2039 при A.Len = 1 | 3, 6, 16 | По умолчанию – 16 |
Код последней сетевой ошибки n.Err | 0x6 | 1 | unsigned short | – | 3 | Только чтение |
Задержка ответа от прибора, мс rS.dL | 0x7 | 1 | unsigned short | 0…255 | 3, 6, 16 | По умолчанию – 2 |
Применение настроек Aply | 0x8 | 1 | unsigned short. | 0 | 6, 16 | Только запись. По данной команде сетевые параметры заносятся в энергонезависимую память и применяются. Конфигурационные и технологические параметры остаются неизменными |
Конфигурационные параметры | ||||||
Режим работы Mode | 0x9 | 1 | unsigned short | 0 – старт по входу, 1 – старт по питанию | 3, 6, 16 | Чтение/запись. По умолчанию – 1 |
Блокировка кнопки Res.B | 0xA | 1 | unsigned short | 0 – блокировать, 1 – разрешить | 3, 6, 16 | Чтение/запись. По умолчанию – 1 |
Блокировка сброса счетчика времени по RS-485 RS.Lo | 0xB | 1 | unsigned short | 0 – блокировать, 1 – разрешить | 3, 6, 16 | Чтение/запись. По умолчанию – 1 |
Блокировка изменения уставки с передней панели LoB.U | 0xC | 1 | unsigned short | 0 – блокировать, 1 – разрешить | 3, 6, 16 | Чтение/запись. По умолчанию – 1 |
Блокировка изменения уставки по сети RS-485 LoR.U | 0xD | 1 | unsigned short | 0 – блокировать, 1 – разрешить | 3, 6, 16 | Чтение/запись. По умолчанию – 1 |
Изменение пароля PaSS | 0xE | 1 | BCD | 0...9999 | 6, 16 | Только запись |
Уставка. Часы U.Hou | 0x0F...10 | 2 | BCD | 0...99999 | 3, 16 | Чтение/запись. По умолчанию – 07 |
Уставка. Минуты U.Min | 0x12 | 1 | BCD | 0...59 | 3, 6, 16 | Чтение/запись. По умолчанию – 00 |
Уставка. Секунды U.SEc | 0x13 | 1 | BCD | 0...59 | 3, 6, 16 | Чтение/запись. По умолчанию – 00 |
Применить внесенные изменения Init | 0x14 | 1 | unsigned short | 0 | 6, 16 | Только запись. По данной команде конфигурационные параметры заносятся в энергонезависимую память и применяются. Сетевые параметры остаются неизменными |
Сброс конфигурационных параметров в значения «по умолчанию» S.Def | 0x15 | 1 | unsigned short | 0 | 6, 16 | Только запись. Тип данных: В энергонезависимую память прибора заносятся значения конфигурационных параметров, соответствующие значениям «по умолчанию». Сетевые параметры не изменяются |
Уровень защиты паролем PASLVL | 0x1C | 1 | unsigned short | 0 – запрос пароля в штатном режиме, 1 – запрос пароля отключен для кнопки , 2 – запрос пароля отключен для всех операций | 3, 6, 16 | Чтение/запись. По умолчанию – 0 |
Оперативные параметры* | ||||||
Текущее значение счетчика времени, с Time | 0x16...0x17 | 2 | unsigned long | – | 3 | 4 байта |
Число включений прибора Runs | 0x18...0x19 | 2 | unsigned long | – | 3 | 4 байта |
Чтение статуса Rd.St | 0x1A | 1 | unsigned short | – | 3 | – |
Предупреждение * Применяются только
для чтения данных из прибора. |