
- •Технические характеристики интерфейса rs-485
- •Общее описание протокола Modbus rtu
- •Адресация данных в протоколе Modbus rtu
- •Контроль ошибок в протоколе Modbus rtu
- •Rtu фрейм
- •Логические ошибки
- •Стандартные коды ошибок
- •Стандартные коды функций протокола Modbus
- •0X10 Preset Multiple Registers (Установка значений в несколько регистров)
- •0X03 Read Holding Registers (Чтение значений из нескольких регистров)
- •0X06 Preset Single Register (Установка значения в один регистр)
- •0X01 Read Coil Status (Чтение значений из нескольких регистров флагов)
- •0X0f Force Multiple Coils (Запись значений в несколько регистров флагов)
- •0X05 Force Single Coil (Запись значения в один флаг регистра флагов)
- •0X50 Set date and time (Установка даты и времени)
- •Ссылки на используемые в статье источники
- •Утилиты
- •Правильная разводка сетей rs-485
- •Что такое витая пара и почему она используется?
- •Волновое сопротивление витой пары
- •Число витых пар на каждый передатчик
- •Согласующие резисторы
- •Максимальное число передатчиков и приемников в сети
- •Примеры правильных сетей
- •Один передатчик, один приемник
- •Неправильное расположение терминатора
- •Составные кабели
- •Длинные ответвители
Стандартные коды функций протокола Modbus
В протокол Modbus можно выделить несколько подмножеств команд ( Таблица 3-1).
Подмножество команд |
Диапазон кодов команд |
Стандартные команды |
1-21 |
Резерв для расширенных функций |
22-64 |
Пользовательские |
65-119 |
Резерв для внутренних нужд |
120-255 |
Таблица 3-1 |
0X10 Preset Multiple Registers (Установка значений в несколько регистров)
Тип адресации 4x
Значения регистров передаются в линию начиная с указанного адреса, следующие значения регистров передаются после него (см. поле "Данные"). Ниже приведены примеры команды ведущего устройства (таблица 3-2) и ответа ведомого (таблица 3-3):
Направление передачи |
00 адрес подчиненного устройства |
01 номер функции |
02 Адрес ст. байт |
03 Адрес мл. байт |
04 Кол. регистров ст. байт |
05 Кол. регистров мл. байт |
06 Кол. байт |
07 Данные ст. байт |
08 Данные мл. байт |
09 CRC мл. байт |
10 CRC ст. байт |
Master→Slave |
0x01 |
0x10 |
0x00 |
0x01 |
0x00 |
0x01 |
0x02 |
0xFF |
0xFF |
0xA6 |
0x31 |
Таблица 3-2. Пример установки значения в один регистр |
Направление передачи |
00 адрес подчиненного устройства |
01 номер функции |
02 Адрес ст. байт |
03 Адрес мл. байт |
04 Кол. регистров ст. байт |
05 Кол. регистров мл. байт |
06 CRC мл. байт |
07 CRC ст. байт |
Slave→Master |
0x01 |
0x10 |
0x00 |
0x01 |
0x00 |
0x01 |
0x1C |
0x08 |
Таблица 3-3.Ответ на команду установки значения в один регистр |
0X03 Read Holding Registers (Чтение значений из нескольких регистров)
Тип адресации 4x
Ниже приведены примеры команда ведущего устройства (таблица 3-4) и ответ ведомого (таблица 3-5):
Направление передачи |
00 адрес подчиненного устройства |
01 номер функции |
02 Адрес ст. байт |
03 Адрес мл. байт |
04 Кол. регистров ст. байт |
05 Кол. регистров мл. байт |
06 CRC мл. байт |
07 CRC ст. байт |
Master→Slave |
0x01 |
0x03 |
0x00 |
0x01 |
0x00 |
0x01 |
0xD5 |
0xCA |
Таблица 3-4. Пример чтения значения из одного регистра |
Значения регистров передаются в линию начиная с указанного адреса, следующие значения регистров передаются после него (см. поле "Данные").
Направление передачи |
00 адрес подчиненного устройства |
01 номер функции |
02 Кол. Байт |
03 Данные ст. байт |
04 Данные мл. байт |
05 CRC мл. байт |
06 CRC ст. байт |
Slave→Master |
0x01 |
0x03 |
0x02 |
0xFF |
0xFF |
0xB9 |
0xF4 |
Таблица 3-5. Ответ на команду чтения значения из одного регистра |