Интернет магазин китайских планшетных компьютеров



Компьютеры - Modbus - Контроль ошибок в протоколе Modbus RTU

25 апреля 2011


Оглавление:
1. Modbus
2. Стандарт MODBUS
3. Введение
4. Категории кодов функций
5. Стандартные функции протокола Modbus
6. Контроль ошибок в протоколе Modbus RTU



Во время обмена данными могут возникать ошибки двух типов:

  • ошибки, связанные с искажениями при передаче данных;
  • логические ошибки.

Ошибки первого типа обнаруживаются при помощи фреймов символов, контроля чётности и циклической контрольной суммы CRC-16-IBM. При этом младший байт передается первым, в отличие от байтов адреса и значения регистра в PDU

RTU фрейм

В RTU режиме сообщение должно начинаться и заканчиваться интервалом тишины — временем передачи не менее 3,5 символов при данной скорости в сети. Первым полем затем передаётся адрес устройства.

Вслед за последним передаваемым символом также следует интервал тишины продолжительностью не менее 3,5 символов. Новое сообщение может начинаться после этого интервала.

Фрейм сообщения передаётся непрерывно. Если интервал тишины продолжительностью 1,5 возник во время передачи фрейма, принимающее устройство должно игнорировать этот фрейм как неполный.

Таким образом, новое сообщение должно начинаться не раньше 3,5 интервала, так как в этом случае устанавливается ошибка.

Немного об интервалах: при скорости 9600 и 11 битах в кадре: 3.5 * 11 / 9600 = 0,00401041, то есть более 4 мс; 1.5 * 11 / 9600 = 0,00171875, то есть более 1 мс. Для скоростей более 19200 бод допускается использовать интервалы 1,75 и 0,75 мс соответственно.

Логические ошибки

Для сообщений об ошибках второго типа протокол Modbus RTU предусматривает, что устройства могут отсылать ответы, свидетельствующие об ошибочной ситуации. Признаком того, что ответ содержит сообщение об ошибке, является установленный старший бит кода команды. Пример кадра при выявлении ошибки ведомым устройством, в ответ на запрос приведён в.

1. Если Slave принимает корректный запрос и может его нормально обработать, то возвращает нормальный ответ.

2. Если Slave не принимает какого-либо значения, никакого ответа не отправляется. Master диагностирует ошибку по тайм-ауту.

3. Если Slave принимает запрос, но обнаруживает ошибку, никакого ответа не отправляется. Master диагностирует ошибку по тайм-ауту.

4. Если Slave принимает запрос, но не может его обработать, отправляется ответ содержащий в себе данные об ошибке.

Таблица 2-1. Кадр ответа при возникновении ошибки modbus RTU
Направление передачи адрес подчинённого устройства номер функции данные CRC
Запрос
0x01
0x77
0xDD
0xC7 0xA9
Ответ
0x01
0xF7
0xEE
0xE6 0x7C

Стандартные коды ошибок

  • 01 — Принятый код функции не может быть обработан на подчиненном.
  • 02 — Адрес данных, указанный в запросе, не доступен данному подчиненному.
  • 03 — Величина, содержащаяся в поле данных запроса, является недопустимой величиной для подчиненного.
  • 04 — Невосстанавливаемая ошибка имела место, пока подчиненный пытался выполнить затребованное действие.
  • 05 — Подчиненный принял запрос и обрабатывает его, но это требует много времени. Этот ответ предохраняет главного от генерации ошибки тайм-аута.
  • 06 — Подчиненный занят обработкой команды. Главный должен повторить сообщение позже, когда подчиненный освободится.
  • 07 — Подчиненный не может выполнить программную функцию, принятую в запросе. Этот код возвращается для неудачного программного запроса, использующего функции с номерами 13 или 14. Главный должен запросить диагностическую информацию или информацию об ошибках с подчиненного.
  • 08 — Подчиненный пытается читать расширенную память, но обнаружил ошибку паритета. Главный может повторить запрос, но обычно в таких случаях требуется ремонт.


Просмотров: 11448


<<< Microsoft Media Server