Разработка передающего полукомплекта ТУ

курсовая работа

Протокол MODBUS

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

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

В данном курсовом проекте рассмотрим протокол Modbus RTU, который применяется в системе АСТМУ-А. Этот режим поддерживает требования стандарта ШС 870-5 (уровень 2, канальный). Для передачи данных интерфейс не определен, обычно используются RS-232C, RS-422, RS-485 или токовая петля 20 мА. В АСТМУ-А токовая петля не используется.

Данный протокол определяет требования к канальному (второму) и прикладному (седьмому) уровню модели OSI. Протокол предполагает в линии одно активное (ведущее, запрашивающее, главное) устройство Master, которое может обращаться к нескольким пассивным (подчиненным) устройствам Slave по их адресу. Синтаксис команд протокола позволяет адресовать 247 устройств. Инициатива проведения обмена всегда исходит от ведущего устройства. Ведомые устройства прослушивают линию связи. Master подает запрос на линию и переходит в состояние прослушивания линии связи. Ведомое устройство отвечает на запрос, пришедший в его адрес.

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

Диалоговые процедуры и форматы кадров

Рис.7. Диалоговая процедура обмена сообщениями в Modbus

Сообщения при обмене формируются в кадр из отдельных байт (символов, посылок). Возможные структуры байта в Modbus RTU приведены на рис.8.

Рис.8. Структура байта Modbus:

а - при наличии бита контроля на чёткость/не чёткость (бит паритета);

б - при отсутствии бита паритета

При установке на четность подсчитывается количество бит в области данных, и если оно нечетное, то бит паритета устанавливают в 1, а если четное, то бит паритета устанавливают в 0, таким образом, общее количество бит будет четным.

Кадры запроса и ответа по протоколу Modbus имеют фиксированный формат. Каждый запрос со стороны ведущего узла включает код команды (чтение, запись и т.д.), адрес абонента, размер поля данных, собственно данные и контрольный CRC-код. Функция обслуживания тайм-аута реализована для фиксирования коллизий при приеме/передаче данных. Размер полей в байтах приведен на рис.9.

Старт кадра - очередной кадр начинается с интервала тишины (логического сигнала 1) длительностью не менее 3,5 символа (байта) на данной скорости передачи. Стартовое поле необходимо, поскольку используется асинхронная передача, и необходимо в канале связи иметь признак начала передачи.

Рис.9. Формат кадра протокола локальной сети подстанции:

A - адрес подчинённого устройства; С - номер функчии; D - данные; GКС - контрольная сумма

Адрес подчиненного устройства - первое однобайтное поле кадра. Оно содержит адрес подчиненного устройства, к которому адресован запрос. Подчиненные устройства отвечают только на запросы, поступившие только в их адрес. Ответ также начинается с адреса отвечающего устройства, который может изменяться от 1 до 247. Адрес 0 используется для широковещательной передачи, его распознает каждое устройство, но ответы не возвращаются.

Номер функции (код команды) сообщает устройству, каких данных или выполнения какого действия требует от него ведущее устройство; принимает значения от 1 до 247.

Данные - поле содержит информацию, необходимую подчиненному устройству, или содержит его ответ на запрос ведущего. Длина и формат поля зависят от номера функции, при этом длина может быть от О до 254 байт.

Контрольная сумма - заключительное двухбайтное поле кадра, содержащее циклическую контрольную сумму CRC-16 всех предыдущих полей кадра.

Стоп кадра - интервал тишины длительностью не менее 3,5 символа.

Обработка ошибок.

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

В протоколе Modbus используется следующая диалоговая процедура.

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

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

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

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

Делись добром ;)