Оглавление

1 Introduction

2 ModBus Data Link Layer

2.1 ModBus Master / Slaves protocol principle

2.2 ModBus Addressing rules.

2.3 ModBus frame description

2.4 Master / Slaves State Diagrams

2.4.1 Master State diagram

2.4.2 Slave State Diagram

2.5 The two serial Transmission Modes

2.5.1 RTU Transmission Mode. Структура бит в одном символе.

2.5.1.1 ModBus Message RTU Framing. Задержки между пакетами символов.

2.5.1.2 CRC Checking

2.6 Error Checking Methods

2.6.1 Parity Checking

2.6.2 Frame Checking

3 Physical Layer

3.1 Preamble

3.2 Data Signaling Rates

4 Installation and Documentation

4.1 Installation

4.2 User Guide

5 Implementation Classes

6 Appendix

6.1 Appendix A - Management of Serial Line Diagnostic Counters

6.1.1 General description

6.1.2 Counters Management Diagram

6.2 Appendix B - LRC/CRC Generation

6.2.1 LRC Generation

6.2.2 CRC Generation


Перевод интересных частей ModBus over serial line.V1.0. Оставил названия и нумерацию для совместимости с источником — смотреть медитировать на диаграммах, они там очень полезны.

1 Introduction

2 ModBus Data Link Layer

2.1 ModBus Master / Slaves protocol principle

ModBus это мастер/слейв протокол. Только один мастер может быть подсоединен к шине в одно и тоже время, и один или несколько слейвов (максимум 247) несколькими последовательными шинами. ModBus соединение всегда запускается мастером. Слейв никогда не передает данные без того чтобы предварительно принять запрос мастера. Слей никогда не общается с другим слейвом. Мастер запускает только ModBus обмен в одно и тоже время.

Мастер посылает запрос к слейву в двух режимах:

Одноадресный режим, в не мастер адресует одиночный слейв. После приема и обработки запроса, слейв возвращает сообщение «ответ» мастеру. В этом режиме, обмен содержит 2 сообщения: запрос от мастера и ответ от слейва. Каждый слейв обязан иметь уникальный адрес 1..247.

Широковещательный режим: мастер может посылать запрос всем слейвам. Ответ на такой запрос не возвращается. Широковещательные запросы это всегда запросы на запись. Все устройства обязаны поддерживать широковещательную функцию записи. Адрес ноль зарезервирован как идентификатор широковещательного запроса.

2.2 ModBus Addressing rules.

Адресное пространство модбаса состоит из 256 различных адресов

2.3 ModBus frame description

ModBus протокол определяется блоком данных протокола PDU Protocol Data Unit независимым от основных слоев связи.

[код функции][данные]

Эта пара несет в себе все необходимое чтобы правильно понять что заданные тут у нас есть, правильно их извлечь. Но кроме извлечения данных нужно их еще и успешно получить или принять. Для этого, т.е. для отображение протокола на конкретную шину или сеть, добавляют еще пару полей в этот набор и теперь мы уже имеем:

[адрес][код функции][данные][КС]

2.4 Master / Slaves State Diagrams

Канальный уровень данных ModBus состоит из двух отдельных подуровней:

В следующем разделе описана работа уровня мастер / слейв без зависимости от второго — передающего.

2.4.1 Master State diagram

Диаграмму смотреть в исходнике.

Следующий рисунок объясняет поведение мастера.

Некоторые пояснения к диаграмме.

2.4.2 Slave State Diagram

Пояснения к диаграмме.

2.5 The two serial Transmission Modes

Два режима передачи это RTU и ASCII. Эти режимы определяют как биты пакуются и конвертируются для передачи. RTU обязательный режим для всех modbus устройств. ASCII – опция.

2.5.1 RTU Transmission Mode. Структура бит в одном символе.

RTU Remote Terminal Unit.

Основным преимуществом этого режима является то, что его более высокая плотность символов обеспечивает лучшую пропускную способность, чем режим ASCII для той же скорости передачи данных. Каждое сообщение должно передаваться непрерывным потоком символов.

Для повышения совместимости с другими устройствами рекомендуется поддерживать четность — нет. Но по умолчанию считается четность — четный.

Формат 11-и битный для каждого байта в режиме RTU.

[один старт бит][1-й бит данных][8-й бит данных (младший бит посылается первым)][1-стоп бит]

Четная четность требует других режимов которые также могут быть использованы. Для максимальной совместимости со сторонними продуктами если это нужно, рекомендуется использовать настройку - «нет учета четности». По умолчанию четность должна быть «четная».

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

Каждый символ или байт посылается в таком порядке: младший бит данных (LSB)..старший бит данных(MSB).

[start][1][2][3][4][5][6][7][8][par][stop] – последовательность бит RTU режим

Устройство можно сконфигурировать в режиме чет, нечет, нет. Если реализовано «нет» добавляется один стоп бит заполняющий выбывший бит четности.

[start][1][2][3][4][5][6][7][8][stop][stop] – частный случай последовательности бит RTU режима, нет четности

А так выглядит кадр modbus rtu (частный случай фрейма)

[1 byte][1 byte][0 .. 252 byte][2 bytes]

2.5.1.1 ModBus Message RTU Framing. Задержки между пакетами символов.

Modbus сообщение помещается передающим устройством в кадр, точка начала и точка конца которого известны. Это позволяет устройству которое принимает новый кадр, знать когда сообщение начнется и закончится. Частичные (поврежденные, неполные) сообщения должны быть определены и должны быть помечены в результате как ошибочные.

В режиме RTU, кадры сообщений разделяются интервалами тишины с временем не менее 3.5 байта. В следующих разделах, это время называется «t3.5»

[t >= 3.5 char][frame1][t >= 3.5 char][frame2][t >= 3.5 char][frame3]

Входящее в кадр сообщение должно быть передано как непрерывный поток символов.

Если период тишины более чем 1.5 символов между двумя частями одного передаваемого байта, фрейм считается не завершенным и будет отброшен приемником.

[][][][][t <= 1.5 char][][][][][] - нормальный фрейм

[][][][][t > 1.5 char][][][][][] - фрейм испорчен

Реализация RTU драйвера приема может включать управление большинством прерываний по t3.5 и t1.5. С высокой скоростью передачи, приходит высокая загрузка процессора. Вследствие этого эти два времени должны соблюдаться, когда скорость передачи равна или ниже 19200 бод. Для скоростей выше 19200 бод, используется фиксированное значение: рекомендуется использовать значения:

Следующий рисунок описывает диаграмму состояния режима передачи RTU. Мастер и слейв точки представлены тут.

2.5.1.2 CRC Checking

RTU режим включает проверку ошибок фрейма основанную на CRC методу выполняемому по содержимому сообщения. CRC тест проверяет входящее сообщение. Не зависит от проверок четности (другой уровень протокола). CRC поле содержит 16 бит по два 8 битных байта. CRC поле дополняет сообщение как последнее поле в сообщении. Младший байт поля присоединяется первым, следуя за старшим. CRC старший байт является последним байтом который будет послан в сообщении.

CRC значение вычисляется посылающим устройством, которое добавляет CRC к сообщению. Принимающее устройство вычисляет CRC во время получения сообщения, и сравнивает вычисленное с реальным в принятом сообщении. Если два значения не равны, результат ошибочен.

…(не полный перевод)

2.6 Error Checking Methods

Стандарт безопасности modbus последовательной шины основан на двух проверках ошибок:

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

Мастер конфигурируется пользователем предопределяя таймаут перед сбросом передачи. Этот таймаут устанавливается таким, чтобы был достаточным для любого слейва принимающего нормально. Если слейв обнаруживает ошибку передачи, сообщение не будет принято в работу. Слейв не создаст ответ мастеру. Мастер выждет таймаут на получение ответа от слейва и программа мастера обработает ошибку. Заметим что сообщение адресующееся не существующему слейву, обработается так же.

2.6.1 Parity Checking

Пользователь может сконфигурировать устройство для «чет» или «нечет» проверок, или «нет» (рекомендуется). Это определит как будет выставлен бит четности в каждом символе в мастере.

Если чет или нечет заданы, в одном бите будет содержаться инфа о четности байта данных — а именно число выставленных бит в этом байте — четное или нечетное.

Например (как мастер выставляет бит четности):

1100 0101

Тут 4 бита установлены. Если настройка «чет» - бит четности должен быть равен 0, если «не чет». Если используется нечетная четность, бит четности будет равен 1, что составляет нечетную величину (пять). То есть мастер выставляет бит четности так, чтобы при подсчете всех битов в байте + бите четности в приемнике, в норме, получился всегда четный ответ. Другими словами бит четности выставляется так что бы ОБЩЕЕ число выставленных битов сообщения (считается и бит четности наравне со всеми) соответствовало «договору».

Если проверка четности выключена, вместо бита четности дополнительный стоп бит.

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

2.6.2 Frame Checking

В зависимости от режима передачи, RTU или ASCII, используются два вида проверки кадра.

Подробная информация о методах проверки ошибок содержится в предыдущих разделах.

3 Physical Layer

3.1 Preamble

Новое решение ModBus по последовательной линии должно реализовывать электрический интерфейс в соответствии со стандартом EIA / TIA-485 (также известным как стандарт RS485). Этот стандарт позволяет использовать двухточечные и многоточечные системы в «двухпроводной конфигурации». Кроме того, некоторые устройства могут реализовывать «четырехпроводный» интерфейс RS485.

Устройство также может реализовывать интерфейс RS232. В такой системе ModBus ведущее устройство и одно или несколько ведомых устройств обмениваются данными по пассивной последовательной линии.

В стандартной системе ModBus все устройства подключены (параллельно) к магистральному кабелю, состоящему из 3 проводников. Два из тех проводники (двухпроводная конфигурация) образуют сбалансированную витую пару, по которой передаются двунаправленные данные, как правило, со скоростью 9600 бит в секунду.

Каждое устройство может быть подключено (см. Рисунок 19):

3.2 Data Signaling Rates

Требуется соблюдать скорость передачи 9600 бит/с и 19,2 кбит/с, а по умолчанию — 19,2. Другие также могут быть реализованы при желании. Каждая реализация должна поддерживать не более 1% ошибок при передаче, и нормально работать при 2% ошибок при приеме.

4 Installation and Documentation

4.1 Installation

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

4.2 User Guide

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

5 Implementation Classes

Требования которым должно соответствовать modbus устройство. Оно должно быть:

6 Appendix

6.1 Appendix A - Management of Serial Line Diagnostic Counters

6.1.1 General description

Таблица кодов ошибок в ответ на диагностическую команду типа 0x08

6.1.2 Counters Management Diagram

Диаграммы в которых описано в каких случаях и как инкрементируются счетчики.

6.2 Appendix B - LRC/CRC Generation

6.2.1 LRC Generation

Проверка продольной избыточности… что это?

6.2.2 CRC Generation

Канонический алгоритм создания CRC.



v1.