Управления
Протокол высокого уровня MODBUS
Download 1.56 Mb. Pdf ko'rish
|
ftd
3.2.7. Протокол высокого уровня MODBUS
Стандартные MODBUS-порты в контроллерах обычно используют RS-232 или RS-485 совместимый последовательный интерфейс. Контроллеры могут быть соединены напрямую или через модем. Контроллеры соединяются, ис- пользуя технологию главный – подчиненный, при которой только одно устрой- ство (главный) может инициировать передачу (сделать запрос). Другие устрой- ства (подчиненные) передают запрашиваемые главным устройством данные или производят запрашиваемые действия. Типичное главное устройство вклю- чает в себя ведущий (HOST) процессор. Типичное подчиненное устройство – программируемый контроллер. Главный может адресоваться к индивидуально- му подчиненному или может инициировать широкую передачу сообщения на все подчиненные устройства. Подчиненное устройство возвращает сообщение в ответ на запрос, адресуемый именно ему. Ответы не возвращаются при широ- ковещательном запросе от главного. Цикл запрос-ответ имеет вид: Запрос от главного Ответ подчиненного Адрес устройства Адрес устройства Код функции Код функции Байты данных Байты данных Контрольная сумма Контрольная сумма Запрос: код функции в запросе говорит подчиненному устройству, какое действие необходимо провести. Байты данных содержат информацию, необхо- 30 димую для выполнения запрошенной функции. Например, код функции 3 под- разумевает запрос на чтение содержимого регистров подчиненного. Ответ: если подчиненный дает нормальный ответ, код функции в ответе по- вторяет код функции в запросе. В байтах данных содержится затребованная информация. Если имеет место ошибка, то код функции модифицируется, и в байтах данных передается причина ошибки. Пользователь может устанавливать продолжительность интервала таймаута, в течение которого головное устройство будет ожидать ответа от подчиненно- го. Если подчиненный обнаружил ошибку передачи, то он не формирует ответ главному. В сетях MODBUS может быть использован один из двух способов передачи: ASCII или RTU. Р е ж и м A S C I I . При использовании 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 старшим битом. 31 Поле данных в сообщении от главного к подчиненному содержит дополни- тельную информацию, которая необходима подчиненному для выполнения ука- занной функции. Оно может содержать адреса регистров или выходов, их коли- чество, счетчик передаваемых байтов данных. Например, если главный запра- шивает у подчиненного прочитать группу регистров (код функции 03), поле данных содержит адрес начального регистра и количество регистров. Если главный хочет записать группу регистров (код функции 10 hex), поле данных содержит адрес начального регистра, количество регистров, счетчик количества байтов данных и данные для записи в регистры. Поле данных может не сущест- вовать (иметь нулевую длину) в определенных типах сообщений. Поле контрольной суммы содержит два ASCII-символа. Контрольная сумма является результатом вычисления Longitudinal Redundancy Check (LRC) сде- ланного над содержанием сообщения, начиная с «:», и заканчивая CRLF. Р е ж и м R T U . В 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. Посмотрим работу этого протокола на примере одной функции: 0 3 R e a d H o l d i n g R e g i s t e r s Описание: чтение двоичного содержания регистров в подчиненном. 32 Запрос специфицирует начальный регистр и количество регистров для чте- ния. Регистры адресуются, начиная с 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. Контрольная сумма --. Download 1.56 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling