Шпаргалка: Modbus



1. Физический уровень (RS-485)

Критично: Соблюдай полярность! A ко всем A, B ко всем B. Перепутав полярность на одном устройстве, ты завалишь весь сегмент сети.
Критично: На концах линии (физически самых дальних устройствах) установи терминаторы сопротивлением 120 Ом между A и B. Без них будут ошибки CRC.

2. Модель данных (4 типа регистров)


Тип данных Доступ Размер Функции (Hex) Логический адрес
Coil (Флаг/Катушка) Чтение/Запись 1 бит 0x01, 0x05, 0x0F 0xxxx (00001)
Discrete Input (Дискр. вход) Только чтение 1 бит 0x02 1xxxx (10001)
Input Register (Регистр ввода) Только чтение 16 бит 0x04 3xxxx (30001)
Holding Register (Регистр хранения) Чтение/Запись 16 бит 0x03, 0x06, 0x10 4xxxx (40001)

3. Адресация (Важнейший нюанс!)


Правило перевода: Физический адрес = Логический адрес - 40001 (для Holding Register).
* 40001 → отправляй 0.
* 40010 → отправляй 9.
* 40099 → отправляй 98.

4. Форматы передачи


Тип Среда Особенность
Modbus RTU RS-485 / RS-232 Самый популярный. Компактные двоичные данные. Контрольная сумма CRC-16.
Modbus ASCII RS-485 / RS-232 Данные в текстовом виде. Контрольная сумма LRC. Медленнее RTU.
Modbus TCP/IP Ethernet (порт 502) Обертка RTU в TCP-пакет. Без CRC (проверка на уровне TCP).

5. Код функции = Команда


Если получил код ошибки: Ведомый вернет тот же код функции, но со старшим битом = 1 (например, 0x80 для 0x00). Код ошибки 0x01 = неверная функция, 0x02 = неверный адрес, 0x03 = неверные данные.

6. Чек-лист «Нет связи»



Совет: Начинай отладку с опроса всего одного ведомого напрямую (без длинных линий). При подключении реального оборудования используй сниффер провода (анализатор трафика USB-to-RS485), чтобы увидеть, уходит ли запрос из компа и приходит ли ответ.

Antistatus 13.05.2026 09:42