Вы находитесь на странице: 1из 5

В ЗАПИСНУЮ КНИЖКУ ИНЖЕНЕРА

Виктор Денисенко

Протоколы и сети Modbus


и Modbus TCP
M ODBUS : ОБЩИЕ ПОЛОЖЕНИЯ менным протоколом DCON, который используется в мо
Протокол Modbus и одноимённая сеть [14] являются дулях фирм Advantech и ICP DAS и не соответствует стан
самыми распространёнными в мире среди протоколов и дарту Modbus.
сетей. Несмотря на свой возраст (Modbus стал стандартом Стандарт Modbus предусматривает применение физичес
дефакто ещё в 1979 году) он не только не устарел, но, на кого интерфейса RS485, RS422 или RS232. Наиболее
оборот, демонстрирует существенно возросшее количество часто применяемым для организации промышленной сети
ориентированных на него новых разработок и увеличиваю является 2проводной интерфейс RS485. Для соединений
щийся объём организационной поддержки протокола. точка–точка может быть использован интерфейс RS232
Миллионы Modbusустройств по всему миру продолжают или RS422.
успешно работать, обновляются версии описания протоко В стандарте Modbus имеются требования обязательные,
ла [2]. рекомендуемые и опционные (необязательные). Существует
Одним из главных преимуществ Modbus является отсут три степени соответствия стандарту: полностью соответ
ствие необходимости в специальных интерфейсных конт ствует (когда протокол соответствует всем обязательным и
роллерах (PROFIBUS и CAN требуют для своей реализа всем рекомендуемым требованиям), условно соответствует
ции заказных микросхем), также к преимуществам следует (когда протокол соответствует только обязательным требо
причислить простоту программной реализации и элегант ваниям и не соответствует рекомендуемым) и не соответ
ность принципов функционирования. Всё это снижает за ствует.
траты на освоение стандарта как системными интегратора Модель OSI протокола Modbus содержит три уровня: фи
ми, так и разработчиками контроллерного оборудования. зический, канальный и прикладной (табл. 1).
Высокая степень открытости протокола обеспечивается
полностью бесплатными текстами стандартов, которые Ф ИЗИЧЕСКИЙ УРОВЕНЬ
можно скачать с сайта www.modbus.org. В новых разработках на основе Modbus стандарт реко
В России Modbus по распространённости конкурирует мендует использовать интерфейс RS485 с двухпроводной
только с PROFIBUS. Популярность протокола в настоящее линией передачи, но допускается применение четырёхпро
время объясняется, прежде всего, совместимостью с боль водной линии и интерфейса RS232.
шим количеством оборудования, которое поддерживает Modbusшина должна состоять из одного магистрального
протокол Modbus. Кроме того, Modbus имеет высокую дос кабеля, от которого могут быть сделаны отводы. Магистраль
товерность передачи данных, связанную с применением ный кабель Modbus должен содержать 3 проводника в общем
надёжного метода контроля ошибок. Modbus позволяет экране, два из которых представляют собой витую пару, а тре
унифицировать команды обмена благодаря стандартиза тий соединяет общие («земляные») выводы всех интерфейсов
ции номеров (адресов) регистров и функций их чтения RS485 в сети. Общий провод и экран должны быть заземле
записи. ны в одной точке, желательно около ведущего устройства.
Основным недостатком Modbus является сетевой обмен Устройства могут подключаться к кабелю тремя способами:
по типу «ведущий–ведомый», что не позволяет ведомым ● непосредственно к магистральному кабелю;
устройствам передавать данные по мере их появления и по ● через пассивный разветвитель (тройник);
этому требует интенсивного опроса ведомых устройств ве ● через активный разветвитель, содержащий развязываю
дущим. щий повторитель интерфейса.
Разновидностями Modbus выступают Modbus Plus [4],
Таблица 1
представляющий собой многомастерный протокол с коль Модель OSI для Modbus
цевой передачей маркера, и протокол Modbus TCP [5], рас
считанный на использование в сетях Ethernet и Интернет. НОМЕР
НАЗВАНИЕ УРОВНЯ РЕАЛИЗАЦИЯ
УРОВНЯ
Протокол Modbus имеет два режима передачи: RTU
7 Прикладной Modbus application protocol
(remote terminal unit – удалённое терминальное устрой
ство) и ASCII. Стандарт предусматривает, что режим RTU 6 Уровень представления Нет
в протоколе Modbus должен присутствовать обязательно, а 5 Сеансовый Нет
режим ASCII является опционным. Пользователь может 4 Транспортный Нет
выбирать любой из них, но все модули, включённые в сеть
3 Сетевой Нет
Modbus, должны иметь один и тот же режим передачи.
Канальный (передачи Протокол «ведущий–ведомый».
Мы рассмотрим только протокол Modbus RTU, посколь 2
данных) Режимы RTU и ASCII
ку Modbus ASCII в России практически не используется. 1 Физический RS#485 или RS#232
90 Отметим, что Modbus ASCII нельзя путать с частнофир

www.cta.ru СТА 4/2010


© СТА-ПРЕСС
В ЗАПИСНУЮ КНИЖКУ ИНЖЕНЕРА

В документации на устройство и на разветвитель должны сеть. Обмен данными всегда инициируется ведущим. Ве
быть указаны наименования подключаемых цепей. домые устройства никогда не начинают передачу данных,
На каждом конце магистрального кабеля должны быть пока не получат запрос от ведущего. Также ведомые уст
установлены резисторы для согласования линии передачи, ройства не могут обмениваться данными друг с другом.
как это требуется для интерфейса RS485. В отличие от Поэтому в любой момент времени в сети Modbus может
RS485 наличие терминальных резисторов в соответствии происходить только один акт обмена.
со стандартом Modbus является обязательным независи Адреса с 1 по 247 являются адресами Modbusустройств в
мо от скорости обмена. Их номинал может быть равным сети, а с 248 по 255 зарезервированы. Ведущее устройство
150 Ом при мощности 0,5 Вт. Терминальные резисторы, не должно иметь адреса, и в сети не должно быть двух уст
а также резисторы, устраняющие неопределённость состо ройств с одинаковыми адресами.
яния линии при высокоомном состоянии передатчиков, Ведущее устройство может посылать запросы всем уст
устанавливаются так же, как и в других сетях на основе фи ройствам одновременно (широковещательный режим) или
зического интерфейса RS485. Стандарт требует, чтобы в только одному. Для широковещательного режима зарезер
руководствах по эксплуатации устройств Modbus было ска вирован адрес 0 (при использовании в команде этого адре
зано, имеются ли указанные резисторы внутри устройства са она принимается всеми устройствами сети).
или их необходимо устанавливать при монтаже сети. Если
требуются внешние резисторы, то они должны иметь но Описание кадра (фрейма) протокола Modbus
минал в интервале от 450 до 650 Ом и быть установлены В протоколе Modbus RTU сообщение начинает воспри
только в одном месте в пределах каждого сегмента сети ниматься как новое после паузы (тишины) на шине дли
(сегментами считаются части сети между повторителями тельностью не менее 3,5 шестнадцатеричных символов
интерфейса). (14 бит), то есть величина паузы в секундах зависит от ско
Modbusустройство обязательно должно поддерживать рости передачи.
скорости обмена 9600 и 19 200 бит/с, из них 19 200 бит/с ус Формат кадра показан на рис. 1. Поле адреса всегда (да
танавливается по умолчанию. Допускаются также скорости же в ответах на команду, посланную ведущим) содержит
1200, 2400, 4800, ... 38 400 бит/с, 65 и 115 кбит/с, ... только адрес ведомого устройства. Благодаря этому веду
Скорость передачи должна выдерживаться в передатчике щее устройство знает, от какого модуля пришёл ответ.
с погрешностью не хуже 1%, а приёмник должен прини
мать данные при отклонении скорости передачи до 2%. ADU
Сегмент сети, не содержащий повторителей интерфейса, Адрес Код функции Данные Контрольная сумма
должен допускать подключение до 32 устройств, однако их 1 байт 1 байт 0…255 байт 2 байт
количество может быть увеличено, если это допустимо ис
PDU
ходя из нагрузочной способности передатчиков и входного
сопротивления приёмников, которые должны быть приве Рис. 1. Формат кадра протокола Modbus RTU:
дены в документации на интерфейсы. Указание этих пара PDU (protocol data unit) – элемент данных протокола;
метров в документации является обязательным требовани ADU (application data unit) – элемент данных приложения
ем стандарта.
Максимальная длина магистрального кабеля при ско Поле «Код функции» говорит модулю о том, какое действие
рости передачи 9600 бит/с и сечении жил более 0,13 мм2 нужно выполнить.
(AWG 26) составляет 1 км. Отводы от магистрального кабе Поле «Данные» может иметь произвольное количество
ля не должны быть длиннее 20 м. При использовании мно байтов в диапазоне от 0 до 255. В нём может содержаться ин
гопортового пассивного разветвителя с N отводами длина формация о параметрах, используемых в запросах контрол
каждого отвода не должна превышать значения 40/N м. лера или ответах модуля.
Modbus не устанавливает конкретных типов разъёмов, но Поле «Контрольная сумма» содержит контрольную сум
если используются разъёмы RJ45, miniDIN или Dshell, му CRC длиной 2 байта.
они должны быть экранированными, а цоколёвки должны
соответствовать стандарту. Структура данных в режиме RTU
Для минимизации ошибок при монтаже рекомендуется В режиме RTU данные передаются младшими разрядами
использовать провода следующих цветов: жёлтый – для вперёд (рис. 2).
положительного вывода RS485 (на котором устанавлива По умолчанию в режиме RTU бит паритета устанавлива
ется логическая 1, когда через интерфейс выводится логи ют равным 1, если количество двоичных единиц в байте не
ческая 1), коричневый – для второго вывода интерфейса чётное, и равным 0, если оно чётное. Такой паритет назы
RS485, серый – для общего провода. вают чётным (even parity), а метод контроля называют
Типовым сечением кабеля является AWG 24 (0,2 мм2, контролем чётности.
диаметр провода 0,51 мм). При использовании кабеля ка При чётном количестве двоичных единиц в байте бит па
тегории 5 его длина не должна превышать 600 м. Волновое ритета может быть равен 1. В этом случае говорят, что па
сопротивление кабеля желательно выбирать более 100 Ом, ритет является нечётным (odd parity).
особенно для скорости обмена более 19 200 бит/с.
Стартовый 1 Бит
бит MЗР 2 3 4 5 6 7 8 паритета Стопбит
К АНАЛЬНЫЙ УРОВЕНЬ
Протокол Modbus предполагает, что только одно веду Рис. 2. Последовательность битов в режиме RTU
щее устройство (контроллер) и до 247 ведомых (модулей (МЗР – младший значащий разряд; при отсутствии бита паритета
вводавывода) могут быть объединены в промышленную на его место записывается второй стоп8бит) 91
СТА 4/2010 www.cta.ru
© СТА-ПРЕСС
В ЗАПИСНУЮ КНИЖКУ ИНЖЕНЕРА

Таблица 2
Пример кодов Modbus RTU для модуля RealLab! типа NL816DI
ОБОЗНАЧЕНИЕ HEX8АДРЕС ЧТО ЧИТАЕТСЯ КОД ФУНКЦИИ КОД ФУНКЦИИ
ПРИМЕЧАНИЕ
РЕГИСТРА РЕГИСТРА ИЛИ ЗАПИСЫВАЕТСЯ ЧТЕНИЯ РЕГИСТРА ЗАПИСИ В РЕГИСТР

00001 00h 00h Дискретный выход 0 01 05 1 или 0


00002 00h 01h Дискретный выход 1 01 05 1 или 0

10001 00h 00h Дискретный вход 0 02 – 1 или 0


10002 00h 01h Дискретный вход 1 02 – 1 или 0
10003 00h 02h Дискретный вход 2 02 – 1 или 0
10004 00h 03h Дискретный вход 3 02 – 1 или 0
10005 00h 04h Дискретный вход 4 02 – 1 или 0
10006 00h 05h Дискретный вход 5 02 – 1 или 0
10007 00h 06h Дискретный вход 6 02 – 1 или 0
10008 00h 07h Дискретный вход 7 02 – 1 или 0
10009 00h 08h Дискретный вход 8 02 – 1 или 0
10010 00h 09h Дискретный вход 9 02 – 1 или 0
10011 00h 0Ah Дискретный вход 10 02 – 1 или 0
10012 00h 0Bh Дискретный вход 11 02 – 1 или 0
10013 00h 0Ch Дискретный вход 12 02 – 1 или 0
10014 00h 0Dh Дискретный вход 13 02 – 1 или 0
10015 00h 0Eh Дискретный вход 14 02 – 1 или 0
10016 00h 0Fh Дискретный вход 15 02 – 1 или 0

40201 00h C8h Имя модуля 03 10 –

40213 00h D4h Версия программы 03 – –

0001h–00F7h
40513 02h 00h Адрес модуля 03 06 (допустимый диапазон значений)

0003h–000Ah
40514 02h 01h Скорость UART 03 06 (допустимый диапазон значений)

0000h – ASCII,
40518 02h 05h Протокол 03 06 0001h – RTU

Значение на выходе после включения 0000h–0003h


40769 03h 00h 03 06
питания модуля Power On Value0 (допустимый диапазон значений)

Контроль чётности может отсутствовать вообще. В этом Контроль ошибок


случае вместо бита паритета должен использоваться В режиме RTU имеются два уровня контроля ошибок в
второй стоповый бит. Для обеспечения максимальной сообщении:
совместимости с другими продуктами рекомендуется ис ● контроль паритета для каждого байта (опционно);
пользовать возможность замены бита паритета на второй ● контроль кадра в целом с помощью CRCметода.
стоповый бит. CRCметод используется независимо от проверки
Ведомые устройства могут воспринимать любой из вари паритета. Значение CRC устанавливается в ведущем уст
антов: чётный, нечётный паритет или его отсутствие. ройстве перед передачей. При приёме сообщения вычисля
ется код CRC для всего сообщения и сравнивается с его
Структура сообщения Modbus RTU значением, указанным в поле CRC кадра. Если оба значе
Сообщения Modbus RTU передаются в виде кадров, для ния совпадают, считается, что сообщение не содержит
каждого из которых известны начало и конец. Призна ошибки.
ком начала кадра является пауза (тишина) продолжи Стартовые, стоповые биты и бит паритета в вычислении
тельностью не менее 3,5 шестнадцатеричных символов CRC не участвуют.
(14 бит). Кадр должен передаваться непрерывно. Если при
передаче кадра обнаруживается пауза продолжительностью П РИКЛАДНОЙ УРОВЕНЬ
более 1,5 шестнадцатеричных символов (6 бит), то считает Прикладной уровень Modbus RTU версии 1.1а описан в
ся, что кадр содержит ошибку и должен быть отклонён [3]. Он обеспечивает коммуникацию между устройствами
принимающим модулем. Эти величины пауз должны стро типа «ведущий–ведомый». Прикладной уровень является
го соблюдаться при скоростях ниже 19 200 бит/с, однако независимым от физического и канального, в частности,
при более высоких скоростях рекомендуется использовать он может использовать протоколы Ethernet TCP/IP
фиксированные значения паузы – 1,75 мс и 750 мкс соот (Modbus TCP/IP), Modbus Plus (многомастерная сеть с пе
92 ветственно. редачей маркера), интерфейсы RS232, RS422, RS485,

www.cta.ru СТА 4/2010


© СТА-ПРЕСС
В ЗАПИСНУЮ КНИЖКУ ИНЖЕНЕРА

оптоволоконные линии, радиоканалы и другие физические формацию, которую ведомое устройство использует, чтобы
среды для передачи сигналов. выполнить функцию, указанную в поле «Код функции».
Прикладной уровень Modbus основан на запросах с по Поле данных может содержать значения состояний диск
мощью кодов функций. Код функции указывает ведомому ретных входов/выходов, адреса регистров, из которых надо
устройству, какую операцию оно должно выполнить. считывать (записывать) данные, количество байтов дан
При использовании протокола прикладного уровня с ных, ссылки на переменные, количество переменных, код
различными протоколами транспортного и канального подфункций и т.п.
уровня сохраняется неизменным основной блок Modbus Если ведомое устройство нормально выполнило приня
сообщения, включающий код функции и данные (этот тую от ведущего функцию, то в ответе поле «Код функции»
блок называется PDU – protocol data unit – элемент дан содержит ту же информацию, что и в запросе. В противном
ных протокола). К блоку PDU могут добавляться дополни случае ведомый выдаёт код ошибки. В случае ошибки код
тельные поля при использовании его в различных про функции в ответе равен коду функции в запросе, увеличен
мышленных сетях, и тогда он называется ADU – ному на 128.
application data unit – элемент данных приложения.
Содержание поля данных
Коды функций В сообщении ведущего устройства ведомому поле дан
Стандартом Modbus предусмотрены три категории кодов ных содержит дополнительную информацию, необходи
функций: установленные стандартом, задаваемые пользо мую для выполнения указанной функции. Например, если
вателем и зарезервированные. код функции указывает, что необходимо считать данные из
Коды функций являются числами в диапазоне от 1 до 127, группы регистров устройства ввода (код функции 03 hex),
причём коды в диапазоне от 65 до 72 и от 100 до 110 отно то поле данных содержит адрес начального регистра и ко
сятся к задаваемым пользователем функциям. Коды в диа личество регистров. Если ведущее устройство посылает
пазоне от 128 до 255 зарезервированы для пересылки кодов команду записи данных в группу регистров (код функции
ошибок в ответном сообщении. Код 0 не используется. 10 hex), то поле данных должно содержать адрес начально
Коды ошибок используются ведомым устройством, что го регистра, количество регистров, количество байтов дан
бы определить, какое действие предпринять для их обра ных и данные для записи в регистр.
ботки. Значения кодов и их смысл описаны в стандарте на Конкретное содержание поля данных устанавливается
Modbus RTU [3]. стандартом для каждой функции отдельно.
Поле данных (рис. 1) в сообщении, посланном от веду В некоторых сообщениях поле данных может иметь ну
щего устройства ведомому, содержит дополнительную ин левую длину.

93
СТА 4/2010 www.cta.ru
© СТА-ПРЕСС
В ЗАПИСНУЮ КНИЖКУ ИНЖЕНЕРА

ADU для Modbus TCP

Идентификатор обмена Идентификатор протокола Длина Идентификатор устройства Код функции Данные
2 байт 2 байт 2 байт 1 байт 1 байт (переменной длины)

MBAP DPU
Рис. 3. Часть фрейма Modbus TCP, встраиваемая в поле «Данные» фрейма Ethernet [1]

Список кодов Modbus рируется сервером и отправляется обратно в том же виде


В табл. 2 приведён пример кодов Modbus RTU для моду (как эхо).
ля дискретного ввода и вывода типа RealLab! NL16DI Изображённый на рис. 3 фрейм называется фреймом
(фирмы НИЛ АП). Для чтения логических состояний вхо ADU, встраивается в поле «Данные» фрейма Ethernet [1] и
дов модуля через интерфейс RS485 необходимо послать посылается через TCPпорт 502, специально зарезервиро
команду в формате, показанном на рис. 1, где в полях «Ад ванный для Modbus TCP (порты назначаются и контроли
рес» и «Код функции» указываются значения из соответ руются организацией IANA – Internet Assigned Numbers
ствующих граф табл. 2. Authority, www.iana.org). Клиенты и серверы Modbus посы
лают, получают и прослушивают сообщения через TCP
M ODBUS TCP порт 502.
Протокол Modbus TCP [5] (или Modbus TCP/IP) исполь Таким образом, структура кадра и смысл его полей «Код
зуется для того, чтобы подключить устройства с протоко функции» и «Данные» для Modbus и Modbus TCP совер
лом Modbus к Ethernet или сети Internet. Он использует шенно идентичны, поэтому для работы с Modbus TCP
кадры Modbus RTU на 7м (прикладном) уровне модели не требуется дополнительного обучения при знании
OSI, протоколы Ethernet на 1м и 2м уровнях модели OSI Modbus RTU. Те же самые коды функций и данные, что и в
и TCP/IP на 3м и 4м уровнях, то есть Ethernet TCP/IP ис Modbus RTU, передаются по очереди с прикладного (7го)
пользуется для транспортировки модифицированного кад уровня модели OSI (рис. 4) на транспортный уровень, ко
ра Modbus RTU. торый добавляет к блоку PDU кадра Modbus RTU (рис. 1)
Кадр Modbus RTU (рис. 1) в этом случае не имеет по заголовок с протоколом TCP. Далее новый полученный
ля контрольной суммы, поскольку используется стан кадр передаётся на сетевой уровень, где в него добавляет
дартная контрольная сумма Ethernet TCP/IP; нет также ся заголовок IP, затем он передаётся на канальный уро
поля адреса, поскольку в Ethernet используется иная сис вень Ethernet и на физический. Дойдя до физического
тем адресации. Таким образом, только два поля – «Код уровня, блок PDU оказывается «обросшим» заголовками
функции» и «Данные» (блок PDU) встраиваются в прото протоколов всех уровней, через которые он прошёл. Прой
кол Ethernet TCP/IP. Перед ними вставляется новое поле дя по линии связи, сообщение продвигается снизу вверх по
(рис. 3) – MBAP (Modbus application protocol – приклад стеку протоколов (уровням модели OSI) в устройстве полу
ной протокол Modbus). Поле «Идентификатор обмена» чателя, где на каждом уровне из него удаляется соответ
используется для идентификации сообщения в случае, ствующий заголовок, а на прикладном уровне выделяется
когда в пределах одного TCPсоединения клиент посы блок PDU (код функции и данные) кадра протокола
лает серверу несколько сообщений без ожидания ответа Modbus RTU.
после каждого сообщения. Поле «Идентификатор прото В сети c протоколом Modbus TCP устройства взаимодей
кола» содержит нули и зарезервировано для будущих ствуют по типу «клиент–сервер», где в качестве клиента
применений. Поле «Длина» указывает количество следую выступает ведущее устройство, в качестве сервера – ведо
щих за ним байтов. Поле «Идентификатор устройства» мое. Сервер не может инициировать связи в сети, но неко
идентифицирует удалённый сервер, расположенный вне торые устройства в сети могут выполнять роль как клиента,
сети Ethernet (например, в сети Modbus RTU, которая так и сервера.
соединена с Ethernet с помощью межсетевого моста). Modbus TCP не имеет широковещательного или много
Чаще всего это поле содержит нули или единицы, игно абонентского режима, он осуществляет соединение только
между двумя устройствами. ●
Отправитель Получатель
SCADA (Modbus RTU) Модуль вывода (Modbus RTU) Л ИТЕРАТУРА
1. Денисенко В.В. Компьютерное управление технологическим про
TCP TCP цессом, экспериментом, оборудованием. – М. : Горячая линия –
Телеком, 2008. – 608 с.
IP IP 2. Modbus over serial line specification and implementation guide, v1.02
[Электронный ресурс]. – Режим доступа : http://www.modbus.org. –
Dec. 20, 2006. – 44 p.
Ethernet канальный Ethernet канальный
3. Modbus application protocol specification v1.1a [Электронный ре
сурс]. – Режим доступа : http://www.modbusIDA.org. – June 4,
Ethernet физический Ethernet физический
2004. – 51 p.
4. Modicon Modbus Protocol Reference Guide. PIMBUS300 Rev. J. –
Витая пара, оптический кабель MODICON, Inc., Industrial Automation Systems. – June 1996. – 121 p.
5. Modbus messaging on TCP/IP implementation guide, v1.0a [Элект
Рис. 4. Процесс передачи кадра Modbus RTU по уровням модели OSI ронный ресурс]. – Режим доступа : http://www.modbusIDA.org. –
94 через стек протоколов Ethernet TCP/IP в сетях с протоколом Modbus TCP June 4, 2004 – 46 p.

www.cta.ru СТА 4/2010


© СТА-ПРЕСС

Вам также может понравиться