Поиск

Подробное объяснение разницы между протоколами Modbus RTU и Modbus TCP

Протокол связи Modbus был изобретен компанией Modicon в 1979 году и является самым первым в мире шинным протоколом, используемым в промышленности. Благодаря свободному публичному выпуску, производителям, использующим этот протокол, не нужно платить никаких взносов, поэтому протокол Modbus широко используется во всем мире.

Протокол связи Modbus имеет несколько разновидностей, наиболее распространенными из которых являются протоколы Modbus RTU и Modbus TCP.

Эти два протокола очень похожи. В качестве примера, иллюстрирующего разницу между ними, рассмотрим чтение нескольких регистров удержания:

Формат отправки данных Modbus RTU: адрес ведомого 01 (указывает адрес ведомого) код функции 03 (чтение одиночных/множественных регистров) адрес начала данных 00 00 (указывает начало с 40001) номер данных 00 02 (указывает чтение двух слов) код проверки CRC xx xx (код проверки CRC здесь C4 0B), что вместе составляет 01 03 00 00 00 02 C4 0B. После отправки ведомая станция вернет данные. Формат данных следующий: 01 03 04 01 02 03 04 5B 3C, где 01 адрес ведомой станции, 03 код функции считывания, 04 количество байт данных, 01 02 03 04 содержание данных, 5B 3C - код проверки CRC.

Протокол Modbus TCP добавляет заголовок MBAP к протоколу Modbus RTU. Поскольку TCP - это сервис, основанный на надежных соединениях, проверочный код CRC в протоколе RTU больше не нужен, поэтому в протоколе Modbus TCP проверка CRC отсутствует. Проверка показывает, что длина заголовка MBAP составляет семь байт. За исключением пятого и шестого байтов, остальные практически не изменяются. Например, при использовании протокола Modbus TCP для выполнения описанной выше операции необходимо отправить 00 01 00 00 00 06 ff 03 00 00 00 02. Пятый и шестой байты - это 00 06, то есть после 00 06 идет 6 байт. Конкретные операции показаны на рисунке ниже.

Возвращаемое значение 00 01 00 00 00 07 ff 03 04 01 02 03 04. Первые 7 байт - это заголовок сообщения MBAP, 03 - чтение кода функции, 04 - байт данных, 01 02 03 04 - содержимое данных.

Таким образом, протокол Modbus TCP - это фактически протокол Modbus RTU с удаленным кодом проверки CRC, удаленным кодом предыдущего адреса ведомого устройства и добавленным спереди 7-байтовым заголовком MBAP.

Modbus TCP был разработан на основе Ethernet, и физический интерфейс определяет скорость передачи данных и метод проверки.

Выше описана основная разница между протоколами Modbus RTU и Modbus TCP. Он описан более четко, и я надеюсь, что это поможет разрешить сомнения каждого.