Критично: Соблюдай полярность! A ко всем A, B ко всем B. Перепутав полярность на одном устройстве, ты завалишь весь сегмент сети.
Критично: На концах линии (физически самых дальних устройствах) установи терминаторы сопротивлением 120 Ом между A и B. Без них будут ошибки CRC.
| Тип данных | Доступ | Размер | Функции (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) |
Правило перевода: Физический адрес = Логический адрес - 40001 (для Holding Register).
* 40001 → отправляй 0.
* 40010 → отправляй 9.
* 40099 → отправляй 98.
| Тип | Среда | Особенность | |
|---|---|---|---|
| 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). |
Если получил код ошибки: Ведомый вернет тот же код функции, но со старшим битом = 1 (например, 0x80 для 0x00). Код ошибки 0x01 = неверная функция, 0x02 = неверный адрес, 0x03 = неверные данные.
Совет: Начинай отладку с опроса всего одного ведомого напрямую (без длинных линий). При подключении реального оборудования используй сниффер провода (анализатор трафика USB-to-RS485), чтобы увидеть, уходит ли запрос из компа и приходит ли ответ.
Antistatus 13.05.2026 09:42