0

Режимы передачи данных по протоколу ModBUS

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

Режим ASCII.

При использовании ASCII — режима каждый байт сообщения передается как два ASCII символа. Главное преимущество этого способа время между предачей символов может быть до 1 сек. без возникновения ошибок при передаче.

Формат каждого байта в ASCII-режиме:

Система кодировки: Шестнадцатиричная, ASCII-символы 0-9, A-F

Назначение битов: 1 старт бит 7 бит данных, младшим битом вперед 1 бит паритета; нет бита паритета 1 стоп бит если есть паритет; 2 бита если нет паритета

Контрольная сумма: Longitudinal Redundancy Chek (LRC)

Режим RTU.

При использовании ASCII — режима каждый байт сообщения содержит два 4-х битных шестнадцатиричных числа. Каждое сообщение передается непрерывным потоком.

Формат каждого байта в RTU-режиме: Система кодировки: 8-ми битовая двоичная, шестнадцатиричная 0-9, A-F Две шестнадцатиричные цифры содержатся в каждом 8-ми битовом байте сообщения.

Назначение битов: 1 старт бит 8 бит данных, младшим значащим разрядом вперед 1 бит паритета; нет бита паритета 1 стоп бит если есть паритет; 2 бита если нет паритета

Контрольная сумма: Cyclical Redundancy Check (CRC) Содержание сообщения MODBUS. ASCII фрейм. В ASCII-режиме, сообщение начинается с «двоеточия» (:, ASCII 3A hex), и заканчивается последовательностью «возврат каретки-перевод строки» (CRLF, ASCII 0D и 0A hex). Допустимые символы для передачи — это шестнадцатиричные цифры 0-9, A-F. Монитор сетевого устройства в сети непрерывно отслеживает символ «двоеточие». Когда он принят, каждое устройство декодирует следующие поле сообщения (поле адреса) и т.д. Интервалы между символами сообщения могут быть до 1 сек. Если интервал больше, то принимающее устройство распознает это как ошибку. Типичный фрейм сообщения показан ниже.

——T——T——T——T——T——¬ ¦

старт¦адрес ¦ ф-ия ¦данные¦ LRC ¦конец¦

+——+——+——+——+——+——+

¦1 сим¦2 сим ¦2 сим ¦n сим ¦2 сим¦2 сим¦

¦ : ¦ ¦ ¦ ¦ ¦CR LF¦

L——+——+——+——+——+——

Исключение: В контроллерах типа 584 и 984A/B/X ASCII-сообщение может нормально заканчиваться после контрольной суммы без CRLF последовательности. Интервалы меньше 1 сек допускаются.

RTU фрейм. В RTU режиме сообщение начинается с интервала тишины равного времени передачи 3.5 символов при данной скорости передачи в сети. Первым полем затем передается адрес устройства. Вслед за последним передаваемым символом также следует интервал тишины продолжительностью не менее 3.5 символов. Новое сообщение может начинаться после этого интервала. Фрейм сообщения передается непрерывно. Если интервал тишины продолжительностью 1.5 возник во время передачи фрейма, принимающее устройство заканчивает прием сообщения и следующий байт будет воспринят как начало следующего сообщения. Таким образом, если новое сообщение начнется раньше 3.5 интервала, принимающее устройство воспримет его как продолжение предыдущего сообщения. В этом случае устанавливается ошибка, так как будет несовпадение контрольных сумм. Типичный фрейм сообщения показан ниже.

————T———T———T———T———T————¬

¦ старт ¦ адрес ¦функция ¦ данные ¦ CRC ¦ конец ¦

+————+———+———+———+———+————+

¦T1-T2-T3-T4¦ 8 бит ¦ 8 бит ¦n x бит ¦ 16 бит ¦T1-T2-T3-T4¦

L————+———+———+———+———+————

Содержание адресного поля.

Адресное поле фрейма содержит два символа (ASCII) или 8 бит (RTU). Допустимый адрес передачи находится в диапазоне 0 — 247. Каждому подчиненному устройству присваивается адрес в пределах от 1 до 247. Адрес 0 используется для широковещательной передачи, его распознает каждое устройство. Когда MODBUS протокол используется на более высоком уровне сети, широковещательная передача может не поддерживаться или может быть реализована другими методами. Содержание поля функции. Поле функции фрейма содержит два символа (ASCII) или 8 бит (RTU). Диапазон числа 1 -255. Некоторые функции работают на всех контроллерах, некоторые — на определенных моделях, другие же коды зарезервированы для будущего использования.  Когда подчиненный отвечает главному, он использует поле кода функции для фиксации ошибки. В случае нормального ответа подчиненный повторяет оригинальный код функции. Если имеет место ошибка, возвращается код функции с установленным в 1 старшим битом. Например, сообщение от главного подсиненному прочитать группу регистров имеет следующий код функции: 0000 0011 ( 03 hex) Если подчиненный выполнил затребованное действие без ошибки, он возвращает такой же код. Если имеет место ошибка, то он возвращает: 1000 0011 ( 83 hex) В добавление к изменению кода функции, подчиненный размещает в поле данных уникальный код, который говорит главному какая именно ошибка произошла или причину ошибки. Содержание поля данных. Поле данных в сообщении от главного к подчиненному содержит дополнительную информацию, которая необходима подчиненному для выполнения указанной функции. Оно может содержать адреса регистров или выходов, их количество, счетчик передаваемых байтов данных. Например, если главный запрашивает у подчиненного прочитать группу регистров (код функции 03), поле данных содержит адрес начального регистра и количество регистров. Если главный хочет записать группу регистров (код функции 10 hex), поле данных содержит адрес начального регистра, количество регистров, счетчик количества байтов данных и данные для записи в регистры. Поле данных может не существовать (иметь нулевую длину) в определенных типах сообщений. Содержание поля контрольной суммы. В MODBUS — сетях используются два метода контроля ошибок передачи. Содержание поля контрольной суммы зависит от выбранного способа передачи. ASCII Когда используется ASCII-режим поле контрольной суммы содержит два ASCII-символа. Контрольная сумма является результатом вычисления Longitudinal Redundancy Check (LRC) сделанного над содержанием сообщения начиная с «:» и заканчивая CRLF. RTU Когда используется RTU-режим поле контрольной суммы содержит 16-ти битовую величину. Контрольная сумма является результатом вычисления Cyclical Redundancy Check сделанного над содержанием сообщения. CRC добавляется к сообщению последним полем младшим байтом вперед. Формат передачи символов. Передача символов идет младшим битом вперед. ASCII фрейм С контролем четности

——T——T——T——T——T——T——T——T——T——¬

¦старт¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦ 5 ¦ 6 ¦ 7 ¦ Пар ¦Стоп ¦ L——

+——+——+——+——+——+——+——+——+——

Без контроля четности

——T——T——T——T——T——T——T——T——T——¬

¦старт¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦ 5 ¦ 6 ¦ 7 ¦Стоп ¦Стоп ¦ L——

+——+——+——+——+——+——+——+——+——

RTU фрейм С контролем четности

——T——T——T——T——T——T——T——T——T——T——¬

¦старт¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦ 5 ¦ 6 ¦ 7 ¦ 8 ¦ Пар ¦Стоп ¦ L——

+——+——+——+——+——+——+——+——+——+——

Без контроля четности

——T——T——T——T——T——T——T——T——T——T——¬

¦старт¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦ 5 ¦ 6 ¦ 7 ¦ 8 ¦Стоп ¦Стоп ¦ L——

+——+——+——+——+——+——+——+——+——+——

Методы контроля ошибок.

Стандартная MODBUS сеть использует два метода контроля ошибок. Контроль паритета (even/odd) и контрольная сумма. Обе эти проверки генерируются в головном устройстве. Подчиненное устройство проверяет каждый байт и все сообщение в процессе приема. Пользователь может устанавливать продолжительность интервала таймаута в течении которого головное устройство будет ожидать ответа от подчиненного. Если подчиненный обнаружил ошибку передачи, то он не формирует ответ главному. Контроль паритета. Пользователь может конфигурировать контроллеры на проверку четного или нечетного паритета (Even/Odd). Например, 8 бит RTU-режима содержат следующую информацию: 1100 0101 Общее количество единиц — 4. Если используется четный паритет, то бит паритета будет равен 0, и общее количество 1-иц будет по прежнему четным числом. Если используется нечетный паритет, то бит паритета будет равен 1, тогда общее количество 1-иц вместе с битом паритета будет равно 5, т.е. нечетному числу. Контрольная сумма LRC. Метод LRC проверяет содержание сообщения исключая начальный символ «:» и пару CRLF. LRC это 1 байт. LRC вычисляется передающим устройством и добавляется в конец сообщения. Принимающее устройство вычисляет LRC в процессе приема сообщения и сравнивает его с принятым от главного. Если есть несовпадение, то имеет место ошибка. Контрольная сумма CRC. Контрольная сумма CRC состоит из двух байт. Контрольная сумма вычисляется передающим устройством и добавляется в конец сообщения. Принимающее устройство вычисляет контрольную сумму в процессе приема и сравнивает ее с полем CRC принятого сообщения. Счетчик контрольной суммы предварительно инициализируется числом FF hex. Только восемь бит данных используются для вычисления контрольной суммы CRC. Старт и стоп биты, бит паритета, если он используется, не учитываются в контрольной сумме. Во время генерации CRC каждый байт сообщения складывается по исключающему ИЛИ с текущим содержимым регистра контрольной суммы. Результат сдвигается в направлении младшего бита, с заполнением нулем старшего бита. Если младший бит равен 1, то производится исключающее ИЛИ содержимого регистра контрольной суммы и определенного числа. Если младший бит равен 0, то исключающее ИЛИ не делается. Процесс сдвига повторяется восемь раз. После последнего (восьмого) сдвига, следующий байт складывается с текущей величиной регистра контрольной суммы, и процесс сдвига повторяется восемь раз как описано выше. Конечное содержание регистра и есть контрольная сумма CRC.

 

Раздел: ПЛК. Ликбез Метки: , ,

Оставить комментарий

Отправить сообщение

CoDeSys GSM/GPRS модем Lectus OPC MasterSCADA Modbus MX110 Omron OPC-сервер owen owen logic PLC Configuration PROFIBUS s-200 SCADA scada системы siemens siemens plc SIMATIC Simplight SMS step7 TRACE MODE Динамизация ИП-320 МЭК 1131–3 ОВЕН ОВЕН ПЛК ОВЕН ПЧВ ПЛК ПЛК ОВЕН ПР 110 Панель оператора Программируемое реле Частотный преобразователь библиотека в CoDeSys визуализация диспетчеризация конфигурация панели программирование ПЛК серия NS сименс плк частотник частотное управление язык CFC язык ST
.