Modbus TCP: включение протокола и ограничение на число соединений
Modbus TCP — тот же прикладной протокол поверх TCP-соединения. У приборов СКБ он по умолчанию выключен и включается заданием ненулевого номера сокета, а число одновременных соединений ограничено — у IP-RS.М3 и ETH-HART-MUX64.М3 их два.
Чем Modbus TCP отличается от RTU
Прикладной уровень — тот же самый: те же коды функций, та же модель данных, те же области регистров. Меняется транспорт. Вместо кадра с CRC на последовательной линии сообщение упаковывается в заголовок MBAP и передаётся по TCP-соединению (стандартный порт — 502). CRC не нужен: целостность обеспечивает сам TCP.
Отсюда два практических следствия:
- ограничения последовательной линии (один ведущий, уникальные адреса) на уровне сети исчезают — несколько клиентов могут обращаться к прибору независимо;
- зато появляется ограничение, которого в RTU не было: число одновременно открытых TCP-соединений, которое прибор способен обслужить.
Протокол нужно сначала включить
У приборов СКБ Modbus/TCP по умолчанию запрещён. Чтобы включить поддержку, на вкладке Интерфейсы задаётся ненулевой номер сокета; обычно используют номера из диапазона 500–505. Если после изменения связь не появилась, прибор рекомендуется перезапустить отключением питания (FAQ СКБ).
Это самая частая причина обращения «не получается установить связь по Modbus/TCP»: сеть в порядке, прибор пингуется, но протокол просто не разрешён.
Ограничение на число соединений
Симптом узнаваемый: два опрашивающих узла работают, а третий «не видит» прибор — при том что сеть исправна и первые два продолжают работать. Причина не в сети и не в настройках третьего клиента, а в исчерпании лимита соединений на приборе.
Важно, что соединение занимает слот, пока не закрыто. Клиент, который открыл сессию и завис или был аварийно завершён, может продолжать удерживать слот до истечения тайм-аута. «Свободных клиентов вроде нет, а связи всё равно нет» — обычно именно этот случай.
Как правильно опрашивать больше двух потребителей
- Опрашивать прибор одним клиентом (SCADA, OPC-сервер, шлюз), а остальным потребителям отдавать данные уже из него. Это же снимает лишнюю нагрузку с прибора.
- Не открывать новое соединение на каждый запрос — переиспользовать установленное.
- Задавать разумные тайм-ауты, чтобы «мёртвые» сессии освобождались.
Порядок проверки, когда связи нет
- Прибор доступен по сети (адрес, маска, шлюз, ping).
- На вкладке «Интерфейсы» задан ненулевой номер сокета.
- Прибор перезапущен после изменения номера сокета.
- Число уже открытых соединений не достигло предела.
- Клиент обращается по тому номеру сокета/порта, который задан в приборе.
- Только после этого — проверять адреса регистров и коды функций.
Нормативный источник
Точные требования — в руководстве по эксплуатации. Справочник объясняет принцип, РЭ определяет, что допустимо для конкретного прибора.
Приборы СКБ «Промавтоматика»
Связанные вопросы
- Не получается установить связь с прибором через протокол Modbus/TCP. Что мы делаем не так?
- Пытаемся опросить через КР-HART-MUX64.M3 несколько устройств (больше 2) по Modbus TCP одновременно. Связь есть только с двумя. Почему?
- Пытаемся опросить через IP-RS.M3 несколько устройств (больше 2) по Modbus TCP одновременно. Связь есть только с двумя, почему?
Смежные статьи
Источники
- Modbus Organization, Modbus Messaging on TCP/IP Implementation Guide, MBAP, порт 502, управление соединениями KSRC-MODBUS-TCP
- Modbus Organization, Modbus Application Protocol Specification V1.1b3, прикладной уровень KSRC-MODBUS-APP
- FAQ СКБ «Промавтоматика», вопросы о включении Modbus/TCP и числе соединений KSRC-SKB-FAQ

