Протокол 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