Описание кадра (фрейма) протокола Modbus

Modbus

Протокол Modbus и сеть Modbus являются самыми распространенными в мире.

Несмотря на свой возраст (стандартом де-факто Modbus стал еще в 1979 году), Modbus не только не устарел, но, наоборот, существенно возросло количество новых разработок и объем организационной поддержки этого протокола. Миллионы Modbus-устройств по всему миру продолжают успешно работать, а последняя версия описания протокола появилась в декабре 2006 г.

Одним из преимуществ Modbus является отсутствие необходимости в специальных интерфейсных контроллерах (Profibus и CAN требуют для своей реализации заказные микросхемы), простота программной реализации и элегантность принципов функционирования.

Все это снижает затраты на освоение стандарта как системными интеграторами, так и разработчиками контроллерного оборудования. Высокая степень открытости протокола обеспечивается также полностью бесплатными текстами стандартов, которые можно скачать с сайта www.modbus.org.

В России Modbus по распространенности конкурирует только с Profibus. Популярность протокола в настоящее время объясняется, прежде всего, совместимостью с большим количеством оборудования, которое имеет протокол Modbus. Кроме того, Modbus имеет высокую достоверность передачи данных, связанную с применением надежного метода контроля ошибок. Modbus позволяет унифицировать команды обмена благодаря стандартизации номеров (адресов) регистров и функций их чтения-записи.

Основным недостатком Modbus является сетевой обмен по типу "ведущий/ведомый", что не позволяет ведомым устройствам передавать данные по мере их появления и поэтому требует интенсивного опроса ведомых устройств ведущим.

Разновидностями Modbus являются протоколы Modbus Plus - многомастерный протокол с кольцевой передачей маркера и Modbus TCP, рассчитанный на использование в сетях Ethernet и интернет.

Протокол Modbus имеет два режима передачи: RTU (Remote Terminal Unit – «удаленное терминальное устройство») и ASCII. Стандарт предусматривает, что режим RTU в протоколе Modbus должен присутствовать обязательно, а режим ASCII является опционным. Пользователь может выбирать любой из них, но все модули, включенные в сеть Modbus, должны иметь один и тот же режим передачи.

Мы рассмотрим только протокол Modbus RTU, поскольку Modbus ASCII в России практически не используется. Отметим, что Modbus ASCII нельзя путать с частно-фирменным протоколом DCON, который используется в модулях фирм Advantech и ICP DAS и не соответствует стандарту Modbus.

Стандарт Modbus предусматривает применение физического интерфейса RS-485, RS-422 или RS-232. Наиболее распространенным для организации промышленной сети является 2-проводной интерфейс RS-485. Для соединений точка-точка может быть использован интерфейс RS-232 или RS-422.

В стандарте Modbus имеются обязательные требования, рекомендуемые и опционные (необязательные). Существует три степени соответствия стандарту: «полностью соответствует» - когда протокол соответствует всем обязательным и всем рекомендуемым требованиям, «условно соответствует» - когда протокол соответствует только обязательным требованиям и не соответствует рекомендуемым, и «не соответствует».

Модель OSI протокола Modbus содержит три уровня: физический, канальный и прикладной.

Табл. 2.12. Модель OSI для Modbus
Номер уровня Название уровня Реализация
Прикладной MODBUS Application Protocol
Уровень представления Нет
Сеансовый Нет
Транспортный Нет
Сетевой Нет
Канальный (передачи данных) Протокол "ведущий/ведомый" Режимы RTU и ASCII
Физический RS-485 или RS-232

Физический уровень

В новых разработках на основе Modbus стандарт рекомендует использовать интерфейс RS-485 с двухпроводной линией передачи, но допускается применение четырехпроводной линии и интерфейса RS-232.

Modbus-шина должна состоять из одного магистрального кабеля, от которого могут быть сделаны отводы. Магистральный кабель Modbus должен содержать 3 проводника в общем экране, два из которых представляют собой витую пару, а третий соединяет общие ("земляные") выводы всех интерфейсов RS-485 в сети. Общий провод и экран должны быть заземлены в одной точке, желательно около ведущего устройства.

Устройства могут подключаться к кабелю тремя способами:

o непосредственно к магистральному кабелю;

o через пассивный разветвитель (тройник);

o через активный разветвитель (содержащий развязывающий повторитель интерфейса).

o

В документации на устройство и на тройник должны быть указаны наименования подключаемых цепей.

На каждом конце магистрального кабеля должны быть установлены резисторы для согласования линии передачи, как это требуется для интерфейса RS-485 (см. выше). В отличие от физического интерфейса RS-485, в котором терминальные резисторы на низких скоростях обмена можно не использовать, стандарт на протокол Modbus формально требует применения терминальных резисторов для всех скоростей обмена. Их номинал может быть равным 150 Ом и мощность 0,5 Вт. Терминальные резисторы, а также резисторы, устраняющие неопределенность состояния линии при высокоомном состоянии передатчиков, устанавливаются так же, как описано в разделе "Интерфейсы RS-485, RS-422 и RS-232". Стандарт требует, чтобы в руководствах по эксплуатации устройств Modbus было сказано, имеются ли указанные резисторы внутри устройства, или их необходимо устанавливать при монтаже сети. Если требуются внешние резисторы, то они должны иметь номинал в интервале от 450 до 650 Ом и быть установлены только в одном месте в пределах каждого сегмента сети (сегментами считаются части сети между повторителями интерфейса).

Modbus-устройство обязательно должно поддерживать скорости обмена 9600 бит/с и 19200 бит/с, из них 19200 бит/с устанавливается "по умолчанию". Допускаются также скорости 1200, 2400, 4800,...,38400 бит/с, 65 кбит/с, 115 кбит/с,... .

Скорость передачи должна выдерживаться в передатчике с погрешностью не хуже 1%, а приемник должен принимать данные при отклонении скорости передачи до 2%.

Сегмент сети, не содержащий повторителей интерфейса, должен допускать подключение до 32 устройств, однако их количество может быть увеличено, если это допустимо исходя из нагрузочной способности передатчиков и входного сопротивления приемников, которые должны быть приведены в документации на интерфейсы. Указание этих параметров в документации является обязательным требованием стандарта.

Максимальная длина магистрального кабеля при скорости передачи 9600 бит/с и сечении жил более 0,13 кв. мм (AWG26) составляет 1 км. Отводы от магистрального кабеля не должны быть длиннее 20 м. При использовании многопортового пассивного разветвителя с N отводами длина каждого отвода не должна превышать значения 40 м/N.

Modbus не устанавливает конкретных типов разъемов, но если используются разъемы RJ45, mini-DIN или D-Shell, они должны быть экранированными, а цоколевки должны соответствовать стандарту.

Для минимизации ошибок при монтаже рекомендуется использовать провода следующих цветов: желтый - для положительного вывода RS-485 (на котором устанавливается логическая "1", когда через интерфейс выводится логическая "1"); коричневый - для второго вывода интерфейса RS-485; серый - для общего провода.

Типовым сечением кабеля является AWG 24 (0,2 кв. мм, диаметр провода 0,51 мм). При использовании кабеля категории 5 его длина не должна превышать 600 м. Волновое сопротивление кабеля желательно выбирать более 100 Ом, особенно для скорости обмена более 19200 бит/с.

Канальный уровень

Протокол Modbus предполагает, что только одно ведущее устройство (контроллер) и до 247 ведомых (модулей ввода-вывода) могут быть объединены в промышленную сеть. Обмен данными всегда инициируется ведущим. Ведомые устройства никогда не начинают передачу данных, пока не получат запрос от ведущего. Ведомые устройства также не могут обмениваться данными друг с другом. Поэтому в любой момент времени в сети Modbus может происходить только один акт обмена.

Адреса с 1 по 247 являются адресами Modbus устройств в сети, а с 248 по 255 зарезервированы. Ведущее устройство не должно иметь адреса и в сети не должно быть двух устройств с одинаковыми адресами.

Ведущее устройство может посылать запросы всем устройствам одновременно ("широковещательный режим") или только одному. Для широковещательного режима зарезервирован адрес "0" (при использовании в команде этого адреса она принимается всеми устройствами сети).

Описание кадра (фрейма) протокола Modbus

В протоколе Modbus RTU сообщение начинает восприниматься как новое после паузы (тишины) на шине длительностью не менее 3,5 символов (14 бит), т. е. величина паузы в секундах зависит от скорости передачи.

Описание кадра (фрейма) протокола Modbus - student2.ru
Рис. 2.25. Формат кадра протокола Modbus RTU; PDU - "Protocol Data Unit" - "элемент данных протокола"; ADU - "Application Data Unit" - "элемент данных приложения"

Формат кадра показан на рис.2.25. Поле адреса всегда содержит только адрес ведомого устройства, даже в ответах на команду, посланную ведущим. Благодаря этому ведущее устройство знает, от какого модуля пришел ответ.

Поле «Код функции» говорит модулю о том, какое действие нужно выполнить.

Поле «Данные» может содержать произвольное количество байт. В нем может содержаться информация о параметрах, используемых в запросах контроллера или ответах модуля.

Поле «Контрольная сумма» содержит контрольную сумму CRC длиной 2 байта.

Наши рекомендации