Материал: MODBUS description

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

1.2. Режимы передачи

Режим передачи определяет структуру отдельных блоков информации в сообщении и системы счисления, используемую для передачи данных. В системе Modbus существуют два режима передачи. Оба режима обеспечивают одинаковую совместимость при связи с SL. Режим выбирается в зависимости от оборудования, используемого как Master Modbus. Для каждой системы Modbus должен использоваться только один режим. Смешивание режимов не дозволительно. Режимы делятся на ASCII и RTU (Remote Terminal Unit).

Таблица1

Характеристики режимов ASCII и RTU

Характеристика

ASCII (7-бит)

RTU(8-бит)

Система кодирования

Используются ASCII символы 0-9,A-F

8-битовая двоичная система

Число бит на символ

Стартовые биты

1

1

Биты данных (LSB вперед)

7

8

Четность

Вкл./Выкл.

Вкл./Выкл.

Стоповые биты

1 или 2

1 или 2

Контрольная сумма

LRC (Longitudinal Redundancy Check). LRC

CRC (Cyclical Redundancy Check). CRC_16

Символы ASCII удобнее использовать при отладке, поэтому этот режим удобен для компьютеров, программируемых на языке высокого уровня, например, FORTRAN. Режим RTU подходит для компьютеров, программируемых на машинных языках.

В режиме RTU данные передаются в виде 8-ми разрядных двоичных символов. В режиме ASCII каждый RTU символ сначала делится на две 4-х разрядных части (старший и младший), переводится в свой шестнадцатеричный эквивалент и затем используется в создании сообщения. ASCII режим использует в два раза больше символов, чем RTU режим, но декодирование и управление данными - легче. К тому же, в режиме RTU символы сообщения должны передаваться непрерывным потоком. В режиме ASCII допустима задержка до 1 секунды между двумя соседними символами.

1.3.Обнаружение ошибок

Существует два типа ошибок, которые могут возникать в системах связи: ошибки передачи и программные или оперативные ошибки. Система Modbus имеет способы определения каждого типа ошибок.

Ошибки связи обычно заключаются в изменении бита или бит сообщения. Например, байт 0001 0100 может измениться на 0001 0110. Ошибки связи выявляются при помощи символа кадра, контроля по четности и избыточным кодированием.

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

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

Протокол modbus

1.Описание Протокола

Данный документ является сокращенным переводом описания стандартного протокола MODBUS фирмы MODICON GOULD. Исходный текст на английском языке можно получить по URL: http://www.modicon.com/techpubs/toc7.html.

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

1.1.Общие сведения

Протокол необходимая часть работы системы. Он определяет как Master (MS) и Slave (SL) устанавливают и прерывают контакт, как идентифицируются отправитель и получатель, каким образом происходит обмен сообщениями, как обнаруживаются ошибки. Протокол управляет циклом запроса и ответа, который происходит между устройствами MS и SL, как показано на рисунке.

Протокол подразумевает на общей шине один MS и до 247 SL. Хотя протокол и поддерживает до 247 SL, некоторые приборы ограничивают число SL, подключаемых к общей шине. Например, драйвер шины расходомера-счетчика УРСВ-10М позволяет подключить к одному сегменту двухпроводной линии RS485 максимум 32 прибора. Каждому SL присвоен уникальный адрес устройства в диапазоне от 1 до 247.

Только MS может инициировать транзакцию. Транзакции бывают либо типа запрос/ответ (адресуется только один SL), либо широковещательные/без ответа (адресуются все SL). Транзакция содержит один кадр запроса и один кадр ответа, либо один кадр широковещательного запроса.

Некоторые характеристики протокола Modbus фиксированы. К относятся формат кадра, последовательность кадров, обработка ошибок коммуникации и исключительных ситуаций, и выполнение функций.

Другие характеристики выбираются пользователем. К ним относятся тип средства связи, скорость обмена, проверка на четность, число стоповых бит, и режим передачи (ASCII или RTU). Параметры, выбираемые пользователем, устанавливаются (аппаратно или программно) на каждой станции. Эти параметры не могут быть изменены во время работы системы.

При передаче по линиям данных, сообщения помещаются в «конверт». «Конверт» покидает устройство через «порт» и «пересылается» по линиям адресуемому устройству. Протокол Modbus описывает «конверт» в форме кадров сообщений. Информация в сообщении представляет адрес требуемого получателя, что получатель должен сделать, данные, необходимые для выполнения этого, и механизм контроля достоверности.

Когда сообщение достигает интерфейса SL, оно попадает в адресуемое устройство через похожий «порт». Адресуемое устройство вскрывает конверт, читает сообщение, и, если не возникло ошибок, выполняет требуемую задачу. Затем оно помещает в конверт ответное сообщение и посылает его «отправителю». Информация в ответном сообщении представляет собой адрес адресуемого устройства, выполненную задачу, данные, полученные в результате выполнения задачи, и механизм контроля достоверности. Если сообщение было широковещательным (сообщение для всех SL), на что указывает адрес 0, то ответное сообщение не передается.

В большинстве случаях, MS посылает следующее сообщение другому SL либо после приема корректного ответного сообщения, либо после прохождения определенного пользователем интервала времени, если ответное сообщение не был получено. Все сообщения могут рассматриваться как запросы, генерирующие ответные сообщения от SL. Широковещательные сообщения могут рассматриваться как запросы, не требующие ответных сообщений от SL.

Оба режима передачи, RTU и ASCII, могут включать в формат символа дополнительный бит четности. В режиме RTU это девятый бит в поле данных (8 бит данных и бит четности). В режиме ASCII это восьмой бит данных (7 бит данных и бит четности). Если контроль четности не используется, бит четности не передается. Все устройства в системе должны быть сконфигурированы одинаково.

Контроль четности может определить только изменение одного бита в символе. Изменение двух битов в символе контроль четности определить не в состоянии.

Для обеспечения качества передачи данных система Modbus обеспечивает несколько уровней обнаружения ошибок. Для обнаружения множественного изменения битов сообщения система использует избыточный контроль: CRC и LRC. Какой контроль использовать зависит от режима передачи. RTU использует CRC, а ASCII использует LRC. Расчет CRC и LRC описан ниже. Обнаружение ошибок с помощью CRC и LRC выполняется автоматически.

1.3.1.CRC-16 (Cyclic Redundancy Check)

Сообщение (только биты данных, без учета старт/стоповых бит и бит четности) рассматриваются как одно последовательное двоичное число, у которого старший значащий бит(MSB) передается первым. Сообщение умножается на Х16 (сдвигается влево на 16 бит), а затем делится на Х16+Х15+Х2+1, выражаемое как двоичное число (11000000000000101). Целая часть результата игнорируется, а 16-ти битный остаток (предварительно инициализированный единицами для предотвращения случая, когда все сообщение состоит из нулей) добавляется к сообщению (старшим битом вперед) как два байта контрольной суммы. Полученное сообщение, включающее CRC, затем в приемнике делится на тот же полином (Х16+Х15+Х2+1). Если ошибок не было, остаток от деления должен получится нулевым.(Приемное устройство может рассчитать CRC и сравнить ее с переданной). Вся арифметика выполняется по модулю 2 (без переноса).

Устройство, используемое для подготовки данных для передачи, посылает условно самый правый (LSB) бит каждого символа первым. При расчете CRC, первый передаваемый бит, определен как MSB делимого. Так как арифметика не использует перенос, для удобства расчета CRC можно предположить, что MSB расположен справа. Поэтому порядок бит при расчете полинома должен быть реверсивным. MSB полинома опускается, так как он влияет только на делитель, а не на остаток. В результате получается 1010 0000 0000 0001 (А001Н). Заметьте, что эта реверсивность порядка бит, в любом случае, не влияет на интерпретацию или порядок бит байт данных при вычислении CRC.

Пошаговая процедура расчета CRC-16 представлена ниже:

  1. Загрузить 16-ти разрядный регистр числом FFFFH.

  2. Выполнить операцию XOR над первым байтом данных и старшим байтом регистра. Поместить результат в регистр.

  3. Сдвинуть регистр на один разряд вправо.

  4. Если выдвинутый вправо бит единица, выполнить операцию XOR между регистром и полиномом 1010 0000 0000 0001 (А001Н).

  5. Если выдвинутый бит ноль, вернуться в шагу 3.

  6. Повторять шаги 3 и 4 до тех пор, пока не будут выполнены 8 сдвигов регистра.

  7. Выполнить операцию XOR над следующим байтом данных и регистром.

  8. Повторять шаги 3-7 до тех пор, пока не будут выполнена операция XOR над всеми байтами данных и регистром.

  9. Содержимое регистра представляет собой два байта CRC и добавляется к исходному сообщению старшим битом вперед.

Таблица 2

Пример расчета CRC для сообщения - чтение статуса SL с номером 02

16-ти разрядный регистр

MSB

Флаг

Исключающее ИЛИ

1111

1111

1111

1111

02

0000

0010

1111

1111

1111

1101

Сдвиг 1

0111

1111

1111

1110

1

Полином

1010

0000

0000

0001

1101

1111

1111

1111

Сдвиг 2

0110

1111

1111

1111

1

Полином

1010

0000

0000

0001

1100

1111

1111

1110

Сдвиг 3

0110

0111

1111

1111

Сдвиг 4

0011

0011

1111

1111

1

Полином

1010

0000

0000

0001

1001

0011

1111

1110

Сдвиг 5

0100

1001

1111

1111

Сдвиг 6

0010

0100

1111

1111

1

Полином

1010

0000

0000

0001

1000

0100

1111

1110

Сдвиг 7

0100

0010

0111

1111

Сдвиг 8

0010

0001

0011

1111

1

Полином

1010

0000

0000

0001

1000

0001

0011

1110

07

0000

0111

1000

0001

0011

1001

Сдвиг 1

0100

0000

1001

1100

1

Полином

1010

0000

0000

0001

1110

0000

1001

1101

Сдвиг 2

0111

0000

0100

1110

1

Полином

1010

0000

0000

0001

1101

0000

0100

1111

Сдвиг 3

0110

1000

0010

0111

1

Полином

1010

0000

0000

0001

1100

1000

0010

0110

Сдвиг 4

0110

0100

0001

0011

Сдвиг 5

0011

0010

0000

1001

1

Полином

1010

0000

0000

0001

1001

0010

0000

1000

Сдвиг 6

0100

1001

0000

0100

Сдвиг 7

0010

0100

1000

0010

Сдвиг 8

0001

0010

0100

0001

HEX 12

HEX 41

Передаваемое сообщение с контрольной суммой CRC-16

(При передаче сообщение выдвигается вправо)

12

41

07

02

0001 0010

0100 0001

0000 0111

0000 0010

Последний бит

Порядок передачи

Первый бит

1.3.2. LRC(Longitudinal Redundancy Check)

Контрольная сумма в режиме ASCII это LRC. Контрольная сумма - это 8-ми разрядное число, передаваемое как два ASCII символа (hex). Контрольная сумма образуется путем конвертирования всех hex символов в двоичные числа, сложением этих чисел без учета переноса, и вычислением дополнительного кода полученного числа. В приемнике LRC заново рассчитывается и сравнивается с полученным LRC. При вычислении LRC двоеточие, CR, LF и любой другой не-ASCII символ отбрасывается.

Таблица 3

Пример расчета LRC для сообщения - чтение первых 8-ми булевых ячеек SL с номером 02

Адрес

0

2

0000

0010

Функция

0

1

0000

0001

Адрес первой ячейки (HIGH)

0

0

0000

0000

Адрес первой ячейки(LOW)

0

0

0000

0000

Число ячеек(HIGH)

0

0

0000

0000

Число ячеек(LOW)

0

8

+

0000

1000

0000

1011

Инверсия

1111

0100

+1

1

1111

0101

Контрольная сумма

F

5

F

5

Приемное устройство складывает все байты данных, включая LRC. Сумма может превышать 8 бит, в расчет принимаются только младшие 8 бит.

ОК

К.сумма

Сумма

0000

0000

0000

0000

0000

0000

1111

0000

0010

0001

0000

0000

0000

1000

0101

0000

Как было отмечено в введении, протокол описывает правила связи между MS и SL. Протокол Modbus разбит по типу коммуникаций, используемых в промышленных сетях. В общем, интерпретация полей в сообщении идентична для режимов передачи ASCII и RTU.(См. рис. 1-4 и 1-5). Главное отличие заключается в типе проверки контрольной суммы, выполняемой над сообщением, и которое в два раза больше в режиме ASCII. Вместо передачи 80ми разрядного двоичного символа, посылается эквивалент в виде пары 7-ми разрядных ASCII (0-9,A-F) символов.

Источник: https://studfile.net/preview/16521224/