Протокол Modbus

advertisement
Протокол
Modbus
Определение
• Modbus — коммуникационный протокол,
основанный на клиент-серверной архитектуре.
Разработан фирмой Modicon для использования в
контроллерах с программируемой логикой (PLC).
Стал стандартом де-факто в промышленности и
широко применяется для организации связи
промышленного электронного оборудования.
Использует
для
передачи
данных
последовательные линии связи RS-485, RS-422, RS232, а также сети TCP/IP. В настоящее время
поддерживается некоммерческой организацией
Modbus-IDA.
Физический уровень
Modbus-шина должна состоять из
одного магистрального кабеля, от
которого могут быть сделаны
отводы. Магистральный кабель
Modbus должен содержать 3
проводника в общем экране, два из
которых представляют собой витую
пару, а третий соединяет общие
("земляные")
выводы
всех
интерфейсов RS-485 в сети. Общий
провод и экран должны быть
заземлены
в
одной
точке,
желательно
около
ведущего
устройства.
Устройства могут подключаться к кабелю
тремя способами:
• непосредственно к магистральному кабелю;
• через пассивный разветвитель (тройник);
На каждом конце магистрального кабеля должны быть установлены
резисторы для согласования линии передачи. Стандарт требует, чтобы в
руководствах по эксплуатации устройств Modbus было сказано, имеются ли
указанные резисторы внутри устройства, или их необходимо устанавливать
при монтаже сети. Если требуются внешние резисторы, то они должны иметь
номинал в интервале от 450 до 650 Ом и быть установлены только в одном
месте в пределах каждого сегмента сети (сегментами считаются части сети
между повторителями интерфейса).
Modbus-устройство обязательно должно поддерживать скорости обмена
9600 бит/с и 19200 бит/с, из них 19200 бит/с устанавливается "по
умолчанию". Допускаются также скорости 1200, 2400, 4800,...,38400 бит/с, 65
кбит/с, 115 кбит/с,... .
Сегмент сети, не содержащий повторителей интерфейса, должен допускать
подключение до 32 устройств, однако их количество может быть увеличено.
Максимальная длина магистрального кабеля при скорости передачи 9600
бит/с и сечении жил более 0,13 кв. мм (AWG26) составляет 1 км. Отводы от
магистрального кабеля не должны быть длиннее 20 м. При использовании
многопортового пассивного разветвителя с N отводами длина каждого отвода
не должна превышать значения 40 м/N.
•
•
•
Обмен данными всегда инициируется
ведущим. Ведомые устройства никогда не
начинают передачу данных, пока не получат
запрос от ведущего. Ведомые устройства
также не могут обмениваться данными друг с
другом. Поэтому в любой момент времени в
сети Modbus может происходить только один
акт обмена.
Адреса с 1 по 247 являются адресами Modbus
устройств в сети, а с 248 по 255
зарезервированы. Ведущее устройство не
должно иметь адреса и в сети не должно
быть двух устройств с одинаковыми
адресами.
Ведущее устройство может посылать запросы
всем
устройствам
одновременно
("широковещательный режим") или только
одному. Для широковещательного режима
зарезервирован
адрес
"0"
(при
использовании в команде этого адреса она
принимается всеми устройствами сети).
Запрос (RTU/ASCII)
Ответ
...
Запрос
Код функции в запросе говорит
подчиненному устройству какое
действие
необходимо провести.
Байты данных
содержат информацию
необходимую для выполнения
запрошенной функции.
Ответ
Если подчиненный дает нормальный ответ,
код функции в ответе повторяет код
функции в запросе. В байтах данных
содержится затребованная информация.
Если имеет место ошибка, то код функции
модифицируется, и в байтах данных
передается причина ошибки.
Режим ASCII
При использовании ASCII - режима каждый
байт сообщения передается как два
ASCII
символа. Главное преимущество
этого способа время между передачей
символов
может быть до 1 сек. без
возникновения
ошибок при передаче.
65
101
41
01000001
A
Начало
кадра
Адрес
:
2
2
N*4
символа символа символа
16-бит
16 бит
N * 16 бит
Функция Данные
Контрольн EOF
ая сумма
2 символа
16 бит
CR
Готовность
приема
ответного
сообщения
LF
В ASCII-режиме, сообщение начинается с "двоеточия" (:, ASCII 3A hex), и
заканчивается последовательностью "возврат каретки-перевод строки" (CRLF,
ASCII 0D и 0A hex).
Допустимые символы для передачи - это шестнадцатиричные цифры 0-9, A-F.
Монитор сетевого устройства в сети непрерывно отслеживает символ
"двоеточие". Когда он принят, каждое устройство декодирует следующие поле
сообщения (поле адреса) и т.д.
Интервалы между символами сообщения могут быть до 1 сек. Если интервал
больше, то принимающее устройство распознает это как ошибку. Типичный
фрейм сообщения показан ниже.
Режим RTU
При использовании RTU-режима каждый
байт сообщения содержит два 4-х
битных
шестнадцатеричных числа. Каждое
сообщение передается
непрерывным потоком.
•
В RTU режиме сообщение начинается с интервала тишины равного времени
передачи 3.5 символов при данной скорости передачи в сети. Первым полем
затем передается адрес устройства.
•
Вслед за последним передаваемым символом также следует интервал тишины
продолжительностью не менее 3.5 символов. Новое сообщение может начинаться
после этого интервала.
•
Если новое сообщение начнется раньше 3.5 интервала, принимающее устройство
воспримет его как продолжение предыдущего сообщения. В этом случае
устанавливается ошибка, так как будет несовпадение контрольных сумм.
Типичный фрейм сообщения показан ниже
Структура сообщения
адрес
подчинённого номер функции
устройства
данные
CRC
8 бит
n x бит
16
8 бит
бит
Адрес подчинённого устройства
— первое однобайтное поле кадра. Оно
содержит адрес подчинённого устройства, к
которому адресован запрос. Подчинённые
устройства отвечают только на запросы,
поступившие только в их адрес. Ответ
также начинается с адреса отвечающего
устройства. Адрес 0 используется для
широковещательной передачи.
Номер функции
— это следующее однобайтное поле кадра.
Оно говорит подчинённому устройству,
какие данные или выполнение какого
действия требует от него ведущее
устройство;
Данные
—
поле
содержит
информацию,
необходимую подчиненному устройству
для выполнения заданной мастером
функции
или
содержит
данные,
передаваемые подчинённым устройством в
ответ на запрос ведущего. Длина и формат
поля зависит от номера функции;
CRC
— (контрольная сумма) заключительное
двухбайтное поле кадра. Контрольная
сумма завершает кадры запроса и ответа.
Одно из типичных применений протокола —
чтение и запись данных в регистры
контроллеров. Спецификация протокола
определяет четыре таблицы данных:
Таблица
Тип элемента
Тип доступа
Дискретные входы
(Discrete Inputs)
один бит
только чтение
Регистры флагов (Coils)
один бит
чтение и запись
Регистры ввода (Input
Registers)
16-битное слово
только чтение
Регистры хранения
(Holding Registers)
16-битное слово
чтение и запись
Пример кодов Modbus RTU
Обозначение
регистра
HEX адрес
регистра
Что читается
или
записывается
Код функции
чтения
регистра
Код функции
записи в
регистр
Примечание
00001
00h 00 h
Дискр. выход 0
01
05
1 или 0
00002
00h 01 h
Дискр. выход 1
01
05
1 или 0
10001
00h 00 h
Дискр. вход 0
02
-
1 или 0
10002
00h 01 h
Дискр. вход 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
MODBUS TCP
• Modbus TCP — это сетевой протокол
обмена данных, который представляет
собой симбиоз RTU спецификации
протокола и Ethernet-TCP/IP
Download