Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Протокол высокого уровня MODBUS



Стандартные MODBUS-порты в контроллерах обычно используют RS-232 или RS-485 совместимый последовательный интерфейс. Контроллеры могут быть соединены напрямую или через модем. Контроллеры соединяются, используя технологию главный – подчиненный, при которой только одно устройство (главный) может инициировать передачу (сделать запрос). Другие устройства (подчиненные) передают запрашиваемые главным устройством данные или производят запрашиваемые действия. Типичное главное устройство включает в себя ведущий (HOST) процессор. Типичное подчиненное устройство – программируемый контроллер. Главный может адресоваться к индивидуальному подчиненному или может инициировать широкую передачу сообщения на все подчиненные устройства. Подчиненное устройство возвращает сообщение в ответ на запрос, адресуемый именно ему. Ответы не возвращаются при широковещательном запросе от главного.

Цикл запрос-ответ имеет вид:

     Запрос от главного           Ответ подчиненного

     Адрес устройства              Адрес устройства

     Код функции                     Код функции

     Байты данных                   Байты данных

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

Запрос: код функции в запросе говорит подчиненному устройству, какое действие необходимо провести. Байты данных содержат информацию, необходимую для выполнения запрошенной функции. Например, код функции 3 подразумевает запрос на чтение содержимого регистров подчиненного.

Ответ: если подчиненный дает нормальный ответ, код функции в ответе повторяет код функции в запросе. В байтах данных содержится затребованная информация. Если имеет место ошибка, то код функции модифицируется, и в байтах данных передается причина ошибки.

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

В сетях MODBUS может быть использован один из двух способов передачи: ASCII или RTU.

Режим ASCII.

При использовании ASCII-режима каждый байт сообщения передается как два ASCII символа. Главное преимущество этого способа – время между передачей символов может быть до 1 сек. без возникновения ошибок при передаче. Система кодировки: шестнадцатиричная, ASCII-символы 0-9, A-F.

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

                     1 старт бит;

                     7 бит данных, младшим битом вперед;

                     1 бит паритета; нет бита паритета;

                     1 стоп-бит, если есть паритет; 2 бита, если нет паритета.

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

В ASCII-режиме, сообщение начинается с “двоеточия” (ASCII-код 3A hex), и заканчивается последовательностью “возврат каретки – перевод строки” (CRLF, ASCII-0D и 0A hex).

Допустимые символы для передачи – это шестнадцатиричные цифры 0-9, A-F. Монитор сетевого устройства в сети непрерывно отслеживает символ “двоеточие”. Когда он принят, каждое устройство декодирует следующие поле сообщения (поле адреса) и т.д.

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

Старт(1 симв.)–Адрес(2 симв.)–Функция(2 симв.)–Данные(n симв.)–LRC(2 симв.)–Конец(2 симв.)

Адресное поле фрейма содержит два символа. Допустимый адрес от 0 до 247. Каждое подчиненное устройство имеет адрес от 1 до 247. Адрес 0 – широкополосное сообщение для всех устройств.

Поле функции фрейма содержит два символа. Допустимый диапазон от 1 до 255. Когда подчиненный отвечает главному, он использует поле кода функции для фиксации ошибки. В случае нормального ответа подчиненный повторяет оригинальный код функции. Если имеет место ошибка, возвращается код функции с установленным в 1 старшим битом.

Поле данных в сообщении от главного к подчиненному содержит дополнительную информацию, которая необходима подчиненному для выполнения указанной функции. Оно может содержать адреса регистров или выходов, их количество, счетчик передаваемых байтов данных. Например, если главный запрашивает у подчиненного прочитать группу регистров (код функции 03), поле данных содержит адрес начального регистра и количество регистров. Если главный хочет записать группу регистров (код функции 10 hex), поле данных содержит адрес начального регистра, количество регистров, счетчик количества байтов данных и данные для записи в регистры. Поле данных может не существовать (иметь нулевую длину) в определенных типах сообщений.

Поле контрольной суммы содержит два ASCII-символа. Контрольная сумма является результатом вычисления Longitudinal Redundancy Check (LRC) сделанного над содержанием сообщения, начиная с “:”, и заканчивая CRLF.

Режим RTU.

В RTU режиме данные передаются в виде 8-разрядных двоичных символов. Каждое сообщение начинается с интервала тишины, равного времени передачи 3,5 символов (байтов) при данной скорости передачи в сети, после чего передается байт адреса ведомого устройства (Slave) в диапазоне 1 – 247. Нулевой адрес обращения зарезервирован для одновременной передачи всем подчиненным (широковещательная передача). Вслед за последним передаваемым символом также следует интервал тишины продолжительностью не менее 3,5 символов.

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

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

                     1 старт бит;

                     8 бит данных, младшим битом вперед;

                     1 бит паритета; нет бита паритета;

                     1 стоп-бит, если есть паритет; 2 бита, если нет паритета.

Контрольная сумма: Cyclical Redundancy Check (CRC).

Типичный фрейм сообщения:

Старт(4 такта тишины)–Адрес(8 бит)–Функция(8 бит)–Данные(nx8 бит)–CRC(16 бит)–Конец(4 такта тишины)

Для обнаружения возможной ошибки связи в конце сообщения вставляется 16 бит поля контрольной суммы CRC, которая является результатом вычисления “Cyclical Redundancy Check” над содержанием сообщения. При передаче CRC в сообщении сначала передается младший байт CRC, затем старший.

Содержание остальных полей аналогично режиму ASCII.

Посмотрим работу этого протокола на примере одной функции:

Read Holding Registers

Описание: чтение двоичного содержания регистров в подчиненном.

Запрос специфицирует начальный регистр и количество регистров для чтения. Регистры адресуются, начиная с 0.

Ниже приведен пример чтения регистров 108-110 с подчиненного устройства 17. Все числа в примере представлены в шестнадцатиричном формате.

Запрос:

Адрес подчиненного 11.

Функция 03.

Начальный адрес ст. байт 00.

Начальный адрес мл. байт 6С.

Кол-во регистров ст. байт 00.

Кол-во регистров мл. байт 03.

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

Данные регистров в ответе передаются как два байта на регистр. Для каждого регистра первый байт содержит старшие биты, второй байт содержит младшие биты. За одно обращение может считываться 125 регистров для контроллеров 984-Х8Х (984-685 и т.д.), и 32 регистра для других контроллеров. Ответ дается, когда все данные укомплектованы.

Ответ:

Адрес подчиненного 11.

Функция 03.

Счетчик байт 06.

Данные (регистр 108) ст. 02.

Данные (регистр 108) мл. 2B.

Данные (регистр 109) ст. 00.

Данные (регистр 109) мл. 00.

Данные (регистр 110) ст. 00.

Данные (регистр 110) мл. 64.

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


Поделиться:



Последнее изменение этой страницы: 2019-04-19; Просмотров: 318; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.019 с.)
Главная | Случайная страница | Обратная связь