Учебное пособие по интерфейсам систем промышленной автоматизации (1015600), страница 24
Текст из файла (страница 24)
В режиме ASCII допустима задержка до 1 секунды между двумя соседними символами.Формат кадра для режимов ASCII и RTU представлен в табл. 4.10.10.Таблица 4.10.Формат кадра для режимов ASCII и RTU1 символ«:»2 символа2 символаКонтр.сумма2N символов 2 символапаузаболее3,5 байт1 байт1 байтN байтСтартASCIIRTUАдресФункцияДанные2 байтаКонец2 символаCR LFпаузаболее3,5 байтВ режиме ASCII начало кадра обозначается символом двоеточия «:». Конецкадра обозначается символами возврата каретки (CR) и перевода строки (LF),указывающими на конец кадра. Символ перевода строки (LF) также служит каксинхронизирующий символ, который указывает на то, что передающая станцияготова к приёму ответного сообщения.В режиме RTU приёмное устройство отслеживает время между приёмомсимволов. Если прошло время, равное периоду следования 3,5 символов, а кадр небыл завершён или не поступило нового символа, устройство очищает кадр ипредполагает, что следующий принимаемый байт – это адрес устройства в новомсообщении.Поле адреса следует сразу за началом кадра и состоит их одного восьмиразрядного символа в режиме RTU или 2-х символов в режиме ASCII.
Эти биты указывают пользователю адрес ведомого устройства, которое должно принять сообщение, посланное ведущим устройством.Каждое ведомое устройство имеет уникальный адрес и только адресуемоеустройство может ответить на запрос, который содержит его адрес. Когда ведомоеустройство посылает ответ, адрес, указываемый в кадре ответа, информирует ведущее устройство, о том, какое ведомое устройство на связи. В широковещательном режиме используется адрес 0. Все ведомые устройства интерпретируют такоесообщение как выполнение определённого действия, но без посылки подтверждения.Поле кода функции указывает адресуемому ведомому устройству какоедействие выполнить.
Коды функций Modbus специально разработаны для связиперсональных компьютеров и индустриальных коммуникационных систем Modbus. Старший бит этого поля устанавливается ведомым устройством в единицу в121случае, если ведомое устройство сообщает ведущему устройству, что ответноесообщение ненормальное.Поле данных содержит информацию, необходимую ведомому устройствудля выполнения указанной функции, или содержит данные собранные ведомымустройством для ответа на запрос.Поле контрольной суммы позволяет Modbus-устройствам проверять сообщение на наличие ошибок. Существует два типа ошибок, которые могут возникать в системах связи: ошибки передачи и программные или оперативные ошибки. Протокол Modbus позволяет определять оба типа ошибок.Ошибки связи обычно заключаются в изменении бита или бит сообщения.Например, байт 0001 0100 может измениться на 0001 0110.
Ошибки связи выявляются при помощи символов начала и конца кадра, контроля по чётности и избыточным кодированием.Когда обнаруживается ошибка кадрирования, чётности и контрольной суммы, обработка сообщения прекращается. Ведомое устройство не должно генерировать ответное сообщение, поскольку при возникновении ошибки связи, ведомоеустройство не может быть уверенно, что сообщение было адресовано именно ему.Ведущее устройство должно программироваться так, чтобы в случае отсутствия ответного сообщения в течение определённого времени, была зафиксированаошибка связи. Продолжительность этого времени зависит от скорости обмена, типа сообщения, и времени опроса ведомого устройства.
По истечении этого периода ведущее устройство повторяет запрос.Для обеспечения качества передачи данных протокол Modbus обеспечиваетнесколько уровней обнаружения ошибок. Для обнаружения множественного изменения битов сообщения протокол использует избыточный контроль: CRC иLRC для режимов RTU и ASCII соответственно.Вычисление контрольной суммы отличается для ASCII и RTU режимов. Контрольная сумма в режиме ASCII – LRC – это восьмиразрядное число, передаваемое как два ASCII-символа. Контрольная сумма рассчитывается следующим образом [45, 46]. Все байты сообщения, исключая символы начала и конца кадра складываются без учёта переноса, а затем вычисляется дополнительный код полученного числа. В приёмнике все полученные байты сообщения также складываютсяи, если передача прошла без ошибок, то суммирование полученной суммы с принятым значением контрольной суммы без учёта переноса даст нуль (см.табл.
4.11).12211.Таблица 4.11.Пример расчёта LRC для сообщения «Запрос на чтениепервых восьми булевых ячеек из устройства с адресом 02»Значения байтовASCII-символысообщенияПримечаниясообщенияв двоичномформатеСообщение, сформированное передатчикомАдрес020000 0010Функция010000 0001Адрес первой ячейки (HIGH)000000 0000Адрес первой ячейки(LOW)000000 0000Число ячеек(HIGH)000000 0000Число ячеек(LOW)080000 1000Расчёт LRC0000 10111111 01001111 0101Контрольная суммаF51111 0101Сообщение, полученное приёмникомПриёмное устройство020000 0010складывает все байты010000 0001данных, включая LRC.000000 0000Сумма может превышать000000 00008 бит, в расчёт принимаются000000 0000только младшие 8 бит.080000 1000F51111 0101СуммаИнверсияДоп. кодСумма всех принятыхбайт равна нулю(0000 0000), значитсообщение принятобез ошибок.Расчёт CRC-кода несколько сложнее, алгоритм его расчёта может быть найден в [45, 46].Команды протокола ModbusКаждое Modbus-устройство рассматривается протоколом как некоторый контроллер с дискретными и аналоговыми входами и выходами, к которым подключены соответственно датчики и исполнительные механизмы.
Состояния входов ивыходов такого Modbus-устройства представляются в виде четырёх таблиц данных. В каждой таблице располагаются данные определённого типа, см. табл. 4.0.В таблицах дискретных входов и входных регистров хранятся данные, которые получены от дискретных и аналоговых датчиков. Поскольку эти данные описывают состояния датчиков, то и измениться они могут только при изменении состояний датчиков. Поэтому для таблиц входов определён режим доступа «толькочтение».12312.Таблица 4.0.Типы данных ModbusРазмер поляОбозначениеТип данныхРежим доступаДискретные входы1 бит%IXтолько чтение(Discrete Inputs)Дискретные выходы1 бит%QXчтение/запись(Coils – катушки реле)1Входные регистры16-разрядное слово%IWтолько чтение(Input Registers)Регистры временногохранения информации16-разрядное слово%QWчтение/запись(Holding Registers)1Поскольку для включения дискретных исполнительных механизмов чаще всего используются электромагнитные реле, то и дискретные выходы были названы «coils», чтобы подчеркнуть этот факт.Таблицы, описывающие состояния дискретных выходов и регистров могутиспользоваться для хранения информации о состояниях дискретных и аналоговыхисполнительных механизмов, подключенных к Modbus-устройству.
Для управления исполнительными механизмами состояния выходов могут изменяться какпрограммой самого узла Modbus, так и командами, переданными по сети. Крометого, таблицы дискретных выходов и регистров временного хранения информации могут использоваться для размещения переменных соответствующего типа.Каждая таблица располагается в соответствующей области памяти Modbusустройства и может содержать до 65536 значений параметров. Номер параметра,его позиция в таблице определяется числом в диапазоне от 1 до 65536.
Адреса параметров при передаче по протоколу Modbus задаются беззнаковым целым числом (unsigned integer) которое принимает значения от 0 до 65535. Таким образом,при формировании запроса необходимо отнимать единицу от адреса запрашиваемого параметра.Набор команд протокола Modbus описывает функции:• чтение/запись битов и битовых последовательностей;• чтение/запись регистров и группы регистров;• функции диагностики;• программные функции;• функции управления списком опроса;• функция сброса (RESET).Полный список кодов функций и форматов запросов можно найти в [45, 46].Основные функции доступа к данным и диагностики, чаще всего реализуемыеModbus-устройствами представлены в табл.
4.13 [47].12413.Таблица 4.13.Коды функций ModbusТип доступаОбласть доступаНазвание функцииДискретные входыЧтение группы дискретных входовПобитовыйДискретные выходы или Чтение группы дискретных выходовдоступвнутренние логическиеЗапись одного дискретного выходапеременныеЗапись группы дискретных выходовВходные регистрыЧтение входного регистраВыходные регистры или Чтение нескольких регистров16-разрядныйвнутренниехранения информациидоступцелочисленныеЗапись одного регистра храненияпеременныеЗапись группы регистров храненияДиагностикаКод020105150403061608Функция диагностики реализует серию проверок системы коммуникациимежду ведущим и ведомым устройствами или проверку на различные внутренниеошибки в ведомом устройстве. Широкое вещание не поддерживается.
Функцияиспользует два байта кода подфункции в запросе для определения типа теста, который необходимо провести (например, перезапуск, чтение значения диагностического регистра, переход в режим «только приём»). Ведомое устройство возвращает оба кода функции и подфункции в нормальном ответе. Большинство диагностических запросов используют два байта поля данных для посылки диагностических данных или контрольной информации ведомому устройству. Некоторые результаты диагностики могут возвращаться подчинённым в поле данных нормального ответа.Пример.
Ниже приведена транзакция между ведущим устройством и ведомым с адресом 1710. В результате транзакции происходит чтение значений группырегистров хранения информации (код функции 03) с адресами%QW109 – %QW112.Использование функции с кодом 03 требует указания в поле данных запросаадреса первого регистра группы (2 байта, старший байт передаётся первым) и количества считываемых регистров (2 байта, старший байт передаётся первым).В ответе ведомого устройства возвращается адрес устройства, код функции.В первом байте поля данных указывается количество байтов информационныхбайтов в поле.