Последовательные интерфейсы RS 485 и RS 422

 

 

Интерфейсы EIA-RS-422 (ITU-T V.ll, X.27) и EIA-RS-485 (ISO 8482) используют симметричную передачу сигнала и допускают как двухточечную, так и шинную топологию соединений. В них информативной является разность потенциалов между проводниками А и В. Если на входе приемника UA-UB>0,2 В (А положи-тельнее В) — состояние «выключено» (space), UA-UB<-0,2 В (А отрицатель­нее В) — состояние «включено» (mark). Диапазон |UA-UB|<0,2 В является зоной нечувствительности (гистерезис), защищающей от воздействия помех. На выхо­дах передатчика сигналы UA и UB обычно переключаются между уровнями 0 и +5 В (КМОП) или +1 и +4 В (ТТЛ), дифференциальное выходное напряжение долж­но лежать в диапазоне 1,5-5 В. Выходное сопротивление передатчиков 100 Ом. Интерфейсы электрически совместимы между собой, хотя и имеют некоторые различия в ограничениях. Принципиальное отличие передатчиков RS-485 — воз­можность переключения в третье состояние. Передатчики RS-422/485 совместимы с приемниками RS-423. Основные параметры интерфейсов приведены в табл. 2.3, топологию соединений иллюстрирует рис. 2.9.

Чтобы увеличить число узлов, можно повысить входное сопротивление приемни­ков, но при этом снижается допустимая скорость или максимально возможная дальность передачи. Максимальная скорость передачи на коротких расстояниях (до 10 м) ограничивается быстродействием передатчиков (достижима частота 25 МГц). На средних расстояниях ограничение определяется емкостью кабеля (1200 бит/с - 25 нФ, 9600 бит/с - 30 нФ, 115 кбит/с -250 пФ). Максимальная дальность (1200 м) ограничена сопротивлением петли постоянному току.

 

Таблица 2.3. Параметры интерфейсов RS-422 и RS-485
Параметр____________________________________ RS-422____________ RS-485_____________

0,2

0,2

-6,8...+6,8

-6,8...+11,8

-7...+7

-7...+12

4

12

10060

60

1 передатчик

32 (передатчиков,

+10 приемников

приемников или

 

их комбинаций)

1200 (100 кбит/с)

1200 (100 кбит/с)

12(10Мбит/с)

12(10Мбит/с)

На дальнем конце

На обоих концах

от передатчика

 

<150Ha шинуGND

<250 на шину

 

с потенциалом

 

-7...+12 Вили между

 

проводами А и В

Порог срабатывания, |UA-UB|,В Допустимое напряжение синфазной помехи, В1 Допустимое напряжение на входах, В1 Входное сопротивление приемника, кОм

Минимальное сопротивление нагрузки передатчика, Ом

Максимальное число узлов

Максимальная длина, м Терминаторы, R=100Ом Ток короткого замыкания, мА

 

 

 

 

 

1 Напряжение измеряется относительно «схемной земли» узла.

 

 

     А                                       б                                                     в

Рис. 2.9. Топология интерфейсов: а — RS-422, б — RS-485 четырехпроводный, в — RS-485 двухпроводный

Интерфейс RS-485 может быть в двух версиях: двухпроводной и четырехпровод-ной. Четырехпроводная версия (рис. 2.9, б) выделяет задающий узел (master), передатчик которого работает на приемники всех остальных. Передатчик зада­ющего узла всегда активен — переход в третье состояние ему не нужен. Передат­чики остальных ведомых (slave) узлов должны иметь тристабильные выходы, они объединяются на общей шине с приемником ведущего узла. В двухпроводной версии (рис. 2.9, в) все узлы равноправны.

В вырожденном случае — при двухточечном соединении — интерфейсы RS-485 и RS-422 эквивалентны, и третье состояние не используется.

Для определенности состояния покоя шины RS-485, когда нет активных пере­датчиков, на линию устанавливают активные терминаторы, «растягивающие» потенциалы проводов. В покое провод В должен иметь более положительный по­тенциал, чем А.

При многоточечном соединении необходимо организовать метод доступа к среде передачи. Чаще всего используют полинг (polling) — опрос готовности к переда­че, выполняемый ведущим устройством, или передачу права доступа в соответ­ствии с определенным (установленным) регламентом. Иногда используют и ме­тоды случайного доступа (аналогично Ethernet).

Дифференциальный вход интерфейсов защищает от действия помех, но при этом должно осуществляться соединение «схемных земель» устройств между со­бой и с шиной заземления. Для соединения устройств между собой используют третий провод интерфейса (можно и экран). Для того чтобы по третьему проводу не протекал большой ток, выравнивающий «земляные потенциалы», в его цепь включают резисторы (рис. 2.10).

Интерфейс RS-422 часто используется для подключения периферийных устройств (например, принтеров). Интерфейс RS-485 популярен в качестве шин устройств промышленной автоматики.

 

 

 

******************************************************************************************


Когда требуется большая помехоустойчивость (дальность и скорость переда­чи), применяют иные электрические варианты последовательных интерфейсов: RS-422A (V.11, Х.27), RS-423A (V.10, Х.26), RS-485. На рис. 2.8 приведены схемы соединения приемников и передатчиков, а также показаны ограничения на длину линии (L) и максимальную скорость передачи данных (V). Несимметричные линии интерфейсов RS-232C и RS-423A имеют самую низкую защищенность от синфаз­ной помехи, хотя дифференциальный вход приемника RS-423A позволяет в ка­кой-то мере исправить ситуацию. Лучшие параметры имеют интерфейсы RS-422A и RS-485, работающие на симметричных линиях связи. В них для передачи каж­дого сигнала используются дифференциальные приемопередатчики с отдельной (витой) парой проводов для каждой сигнальной цепи.

 

 

Рис. 2.8. Стандарты последовательных интерфейсов

Интерфейсы EIA-RS-422 (ITU-T V.ll, X.27) и EIA-RS-485 (ISO 8482) используют симметричную передачу сигнала и допускают как двухточечную, так и шинную топологию соединений. В них информативной является разность потенциалов между проводниками А и В. Если на входе приемника UA-UB>0,2 В (А положи-тельнее В) — состояние «выключено» (space), UA-UB<-0,2 В (А отрицатель­нее В) — состояние «включено» (mark). Диапазон |UA-UB|<0,2 В является зоной нечувствительности (гистерезис), защищающей от воздействия помех. На выхо­дах передатчика сигналы UA и UB обычно переключаются между уровнями 0 и +5 В (КМОП) или +1 и +4 В (ТТЛ), дифференциальное выходное напряжение долж­но лежать в диапазоне 1,5-5 В. Выходное сопротивление передатчиков 100 Ом. Интерфейсы электрически совместимы между собой, хотя и имеют некоторые различия в ограничениях. Принципиальное отличие передатчиков RS-485 — воз­можность переключения в третье состояние. Передатчики RS-422/485 совместимы с приемниками RS-423. Основные параметры интерфейсов приведены в табл. 2.3, топологию соединений иллюстрирует рис. 2.9.

Чтобы увеличить число узлов, можно повысить входное сопротивление приемни­ков, но при этом снижается допустимая скорость или максимально возможная дальность передачи. Максимальная скорость передачи на коротких расстояниях (до 10 м) ограничивается быстродействием передатчиков (достижима частота 25 МГц). На средних расстояниях ограничение определяется емкостью кабеля (1200 бит/с - 25 нФ, 9600 бит/с - 30 нФ, 115 кбит/с -250 пФ). Максимальная дальность (1200 м) ограничена сопротивлением петли постоянному току.

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 2.3. Параметры интерфейсов RS-422 и RS-485
Параметр____________________________________ RS-422____________ RS-485_____________

0,2

0,2

-6,8...+6,8

-6,8...+11,8

-7...+7

-7...+12

4

12

10060

60

1 передатчик

32 (передатчиков,

+10 приемников

приемников или

 

их комбинаций)

1200 (100 кбит/с)

1200 (100 кбит/с)

12(10Мбит/с)

12(10Мбит/с)

На дальнем конце

На обоих концах

от передатчика

 

<150Ha шинуGND

<250 на шину

 

с потенциалом

 

-7...+12 Вили между

 

проводами А и В

Порог срабатывания, |UA-UB|,В Допустимое напряжение синфазной помехи, В1 Допустимое напряжение на входах, В1 Входное сопротивление приемника, кОм

Минимальное сопротивление нагрузки передатчика, Ом

Максимальное число узлов

Максимальная длина, м Терминаторы, R=100Ом Ток короткого замыкания, мА

 

 

1 Напряжение измеряется относительно «схемной земли» узла.

 

 

 

 

 

     А                                                        б                                                     в

Рис. 2.9. Топология интерфейсов: а — RS-422, б — RS-485 четырехпроводный, в — RS-485 двухпроводный

Интерфейс RS-485 может быть в двух версиях: двухпроводной и четырехпровод-ной. Четырехпроводная версия (рис. 2.9, б) выделяет задающий узел (master), передатчик которого работает на приемники всех остальных. Передатчик зада­ющего узла всегда активен — переход в третье состояние ему не нужен. Передат­чики остальных ведомых (slave) узлов должны иметь тристабильные выходы, они объединяются на общей шине с приемником ведущего узла. В двухпроводной версии (рис. 2.9, в) все узлы равноправны.

В вырожденном случае — при двухточечном соединении — интерфейсы RS-485 и RS-422 эквивалентны, и третье состояние не используется.

Для определенности состояния покоя шины RS-485, когда нет активных пере­датчиков, на линию устанавливают активные терминаторы, «растягивающие» потенциалы проводов. В покое провод В должен иметь более положительный по­тенциал, чем А.

При многоточечном соединении необходимо организовать метод доступа к среде передачи. Чаще всего используют полинг (polling) — опрос готовности к переда­че, выполняемый ведущим устройством, или передачу права доступа в соответ­ствии с определенным (установленным) регламентом. Иногда используют и ме­тоды случайного доступа (аналогично Ethernet).

Дифференциальный вход интерфейсов защищает от действия помех, но при этом должно осуществляться соединение «схемных земель» устройств между со­бой и с шиной заземления. Для соединения устройств между собой используют третий провод интерфейса (можно и экран). Для того чтобы по третьему проводу не протекал большой ток, выравнивающий «земляные потенциалы», в его цепь включают резисторы (рис. 2.10).

Интерфейс RS-422 часто используется для подключения периферийных устройств (например, принтеров). Интерфейс RS-485 популярен в качестве шин устройств промышленной автоматики.

Интерфейс «токовая петля» для представления сигнала использует не напря­жение, а ток в двухпроводной линии, соединяющей приемник и передатчик.

 

Логической единице (состоянию «включено») соответствует протекание тока 20 мА, а логическому нулю — отсутствие тока. Такое представление сигналов для вышеописанного формата асинхронной посылки позволяет обнаружить обрыв линии — приемник заметит отсутствие стоп-бита (обрыв линии действует как постоянный логический нуль).

 

 Рис. 2.10. Соединение «схемных земель» для интерфейсов RS-422 и RS-485

Токовая петля обычно предполагает гальваническую развязку входных цепей при­емника от схемы устройства. При этом источником тока в петле является пере­датчик (этот вариант называют активным передатчиком). Возможно и питание от приемника (активный приемник), при этом выходной ключ передатчика может быть также гальванически развязан с остальной схемой передатчика. Существу­ют упрощенные варианты без гальванической развязки, но это уже вырожденный случай интерфейса. Заметим, что интерфейс MIDI (см. п. 8.5.3) с «классической» токовой петлей несовместим.

Токовая петля с гальванической развязкой позволяет передавать сигналы на расстояния до нескольких километров, но при невысоких скоростях (выше 19 200 бит/с не используют, а на километровых расстояниях допустима скорость до 9600 бит/с и ниже). Допустимое расстояние определяется сопротивлением пары проводов и уровнем помех. Поскольку интерфейс требует пары проводов для каждого сигнала, обычно используют только два сигнала последовательного ин­терфейса (4-проводная линия). В случае двунаправленного обмена применяются только сигналы передаваемых и принимаемых данных, а для управления потоком используется программный метод XON/XOFF. Если двунаправленный обмен не требуется, применяют одну линию данных, а для управления потоком обратная линия задействуется для сигнала CTS (аппаратный протокол) или встречной ли­нии данных (программный протокол). При надлежащем ПО одной токовой пет­лей можно обеспечить двунаправленную полудуплексную связь двух устройств. При этом каждый приемник «слышит» как сигналы передатчика на противопо­ложной стороне канала, так и сигналы своего передатчика. Они расцениваются коммуникационными пакетами просто как эхо-сигнал. Для безошибочного при­ема передатчики должны работать поочередно.

Токовая петля позволяет использовать выделенные физические линии без моде­мов, но на малых скоростях. Иногда по токовой петле подключают терминалы с интерфейсом RS-232C, если не хватает штатной длины интерфейса или требует­ся гальваническая развязка. Преобразовать сигналы RS-232C в токовую петлю несложно — на рис. 2.11 приведена простейшая схема преобразователя применительно к подключению терминала. Для получения двуполярного сигнала, требу­емого для входных сигналов СОМ-порта, применяется питание от интерфейса. Схема может быть усложнена для защиты оптронов от перегрузки и улучшения формы потенциальных сигналов. Допустимая скорость определяется и быстродей­ствием применяемых оптронов (скорость 9600 бит/с достигается практически на любых оптронах).

 

 

 

 

 

Рис. 2.11. Преобразование интерфейса RS-232C в «токовую петлю»

 

**************************************************************************************************************

 


Интерфейс RS-485

Интерфейс RS-485 (другое название - EIA/TIA-485) - один из наиболее распространенных стандартов физического уровня связи. Физический уровень - это канал связи и способ передачи сигнала (1 уровень модели взаимосвязи открытых систем OSI).

Сеть, построенная на интерфейсе RS-485, представляет собой приемопередатчики, соединенные при помощи витой пары - двух скрученных проводов. В основе интерфейса RS-485 лежит принцип дифференциальной (балансной) передачи данных. Суть его заключается в передаче одного сигнала по двум проводам. Причем по одному проводу (условно A) идет оригинальный сигнал, а по другому (условно B) - его инверсная копия. Другими словами, если на одном проводе "1", то на другом "0" и наоборот. Таким образом, между двумя проводами витой пары всегда есть разность потенциалов: при "1" она положительна, при "0" - отрицательна.

 

Именно этой разностью потенциалов и передается сигнал. Такой способ передачи обеспечивает высокую устойчивость к синфазной помехе. Синфазной называют помеху, действующую на оба провода линии одинаково. К примеру, электромагнитная волна, проходя через участок линии связи, наводит в обоих проводах потенциал. Если сигнал передается потенциалом в одном проводе относительно общего, как в RS-232, то наводка на этот провод может исказить сигнал относительно хорошо поглощающего наводки общего ("земли"). Кроме того, на сопротивлении длинного общего провода будет падать разность потенциалов земель - дополнительный источник искажений. А при дифференциальной передаче искажения не происходит. В самом деле, если два провода пролегают близко друг к другу, да еще перевиты, то наводка на оба провода одинакова. Потенциал в обоих одинаково нагруженных проводах изменяется одинаково, при этом информативная разность потенциалов остается без изменений.

Аппаратная реализация интерфейса - микросхемы приемопередатчиков с дифференциальными входами/выходами (к линии) и цифровыми портами (к портам UART контроллера). Существуют два варианта такого интерфейса: RS-422 и RS-485.

RS-422 - полнодуплексный интерфейс. Прием и передача идут по двум отдельным парам проводов. На каждой паре проводов может быть только по одному передатчику.

RS-485 - полудуплексный интерфейс. Прием и передача идут по одной паре проводов с разделением по времени. В сети может быть много передатчиков, так как они могут отключаются в режиме приема.

 

D (driver) - передатчик;
R (receiver) - приемник;
DI (driver input) - цифровой вход передатчика;
RO (receiver output) - цифровой выход приемника;
DE (driver enable) - разрешение работы передатчика;
RE (receiver enable) - разрешение работы приемника;
A - прямой дифференциальный вход/выход;
B - инверсный дифференциальный вход/выход;
Y - прямой дифференциальный выход (RS-422);
Z - инверсный дифференциальный выход (RS-422).

Остановлюсь поподробнее на приемопередатчике RS-485. Цифровой выход приемника (RO) подключается к порту приемника UART (RX). Цифровой вход передатчика (DI) к порту передатчика UART (TX). Поскольку на дифференциальной стороне приемник и передатчик соединены, то во время приема нужно отключать передатчик, а во время передачи - приемник. Для этого служат управляющие входы - разрешение приемника (RE) и разрешения передатчика (DE). Так как вход RE инверсный, то его можно соединить с DE и переключать приемник и передатчик одним сигналом с любого порта контроллера. При уровне "0" - работа на прием, при "1" - на передачу.

 

Приемник, получая на дифференциальных входах (AB) разность потенциалов (UAB) переводит их в цифровой сигнал на выходе RO. Чувствительность приемника может быть разной, но гарантированный пороговый диапазон распознавания сигнала производители микросхем приемопередатчиков пишут в документации. Обычно эти пороги составляют ± 200 мВ. То есть, когда UAB > +200 мВ - приемник определяет "1", когда UAB < -200 мВ - приемник определяет "0". Если разность потенциалов в линии настолько мала, что не выходит за пороговые значения - правильное распознавание сигнала не гарантируется. Кроме того, в линии могут быть и не синфазные помехи, которые исказят столь слабый сигнал.

Все устройства подключаются к одной витой паре одинаково: прямые выходы (A) к одному проводу, инверсные (B) - к другому.

Входное сопротивление приемника со стороны линии (RAB) обычно составляет 12 КОм. Так как мощность передатчика не беспредельна, это создает ограничение на количество приемников, подключенных к линии. Согласно спецификации RS-485 c учетом согласующих резисторов передатчик может вести до 32 приемников. Однако есть ряд микросхем с повышенным входным сопротивлением, что позволяет подключить к линии значительно больше 32 устройств.

Максимальная скорость связи по спецификации RS-485 может достигать 10 Мбод/сек. Максимальное расстояние - 1200 м. Если необходимо организовать связь на расстоянии большем 1200 м или подключить больше устройств, чем допускает нагрузочная способность передатчика - применяют специальные повторители (репитеры).

Стандартные параметры интерфейсов

RS-422

RS-485

Допустимое число передатчиков / приемников

1 / 10

32 / 32

Максимальная длина кабеля

1200 м

1200 м

Максимальная скорость связи

10 Мбит/с

10 Мбит/с

Диапазон напряжений "1" передатчика

+2...+10 В

+1.5...+6 В

Диапазон напряжений "0" передатчика

-2...-10 В

-1.5...-6 В

Диапазон синфазного напряжения передатчика

-3...+3 В

-1...+3 В

Допустимый диапазон напряжений приемника

-7...+7 В

-7...+12 В

Пороговый диапазон чувствительности приемника

±200 мВ

±200 мВ

Максимальный ток короткого замыкания драйвера

150 мА

250 мА

Допустимое сопротивление нагрузки передатчика

100 Ом

54 Ом

Входное сопротивление приемника

4 кОм

12 кОм

Максимальное время нарастания сигнала передатчика

10% бита

30% бита

 

 

 Топология сети RS-485

Сеть RS-485 строится по последовательной шиной(bus) схеме, т.е. приборы в сети соединяются последовательно симметричными кабелями. Концы линий связи при этом должны быть нагружены согласующими резисторами- "терминаторами"(terminator), величина которых должна быть равна волновому сопротивлению кабеля связи.

    Терминаторы выполняют следующие функции:
  • Уменьшают отражение сигнала от конца линии связи.
  • Обеспечивают достаточный ток через всю линию связи, что необходимо для подавления синфазной помехи с помощью кабеля типа "витая пара".

 

Если расстояние сегмента сети превышает 1200 м или количество драйверов в сегменте более 32 штук, нужно использовать повторитель (repeater), для создания следующего сегмента сети. При этом каждый сегмент сети должен быть подключен к терминаторам. Сегментом сети при этом считается кабель между крайним прибором и повторителем или между двумя повторителями.

Стандарт RS-485 не определяет, какой тип симметричного кабеля нужно использовать, но де-факто используют кабель типа "витая пара" с волновым сопротивлением 120 Ом.

 

Рекомендовано использовать промышленный кабель Belden3106A для прокладки сетей RS485. Данный кабель имеет волновое сопротивление 120 Ом и двойной экран витой пары. Кабель Belden3106A содержит 4 провода. Оранжевый и белый провод представляют собой симметричную экранированную витую пару. Синий провод кабеля используется для соединения нулевого потенциала источников питания приборов в сети и называется "общий"(Common). Провод без изоляции используется для заземления оплетки кабеля и называется "дренажный" (Drain). В сегменте сети дренажный провод заземляется через сопротивление на шасси прибора, с одного из концов сегмента, чтобы не допустить протекания блуждающих токов через оплетку кабеля, при разном потенциале земли в удалённых точках.

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

Например, на рис.7 показаны рекомендации фирмы Allen Bradley по подключению кабеля Belden3106A к приборам 1747-AIC (Link Coupler) использующихся для соединения контроллеров SLC в сеть DH-485.

 

На рис.7 показаны соединения кабеля с промежуточными приборами сегмента сети. Для первого прибора в сегменте сети DH-485 необходимо установить перемычку 5-6 (она подключает терминатор 120 Ом, который находится внутри прибора 1747-AIC) и перемычку 1-2 (подключает дренажный провод к шасси прибора через внутреннее сопротивление). Для последнего прибора в сегменте сети нужно установить только перемычку 5-6 (подключить терминатор)

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



Описание протокола MODBUS

Modbus — открытый коммуникационный протокол, основанный на архитектуре «клиент-сервер».

Широко применяется в промышленности для организации связи между электронными устройствами.

Может использоваться для передачи данных через последовательные линии связи RS-485, RS-422, RS-232,

а также сети TCP/IP (Modbus TCP).


Не следует путать MODBUS и MODBUS Plus. MODBUS Plus — проприетарный протокол принадлежащий Schneider Electric.

Физический уровень уникальный, похож на Ethernet 10BASE-T, полудуплекс по одной витой паре, скорость 1 Мбит/с.

Транспортный протокол — HDLC, поверх которого специфицировано расширение для передачи MODBUS PDU.

 


Modbus был разработан компанией Modicon (в настоящее время принадлежит Schneider Electric) для использования в её контроллерах с программируемой логикой. Впервые спецификация протокола была опубликована в 1979 году[1]. Это был открытый стандарт, описывающий формат сообщений и способы их передачи в сети, состоящей из различных электронных устройств.
Первоначально контроллеры MODICON использовали последовательный интерфейс RS-232[1]. Позднее стал применяться интерфейс RS-485, так как он обеспечивает более высокую надёжность, позволяет использовать более длинные линии связи и подключать к одной линии несколько устройств.
Многие производители электронного оборудования поддержали стандарт, на рынке появились сотни использующих его изделий.


Передача в сети MODBUS.

Стандартные MODBUS-порты в контроллерах MODICON используют RS-232C совместиимый последовательный интерфейс . Контроллеры могут быть соединены на прямую или через модем.

 


Основные достоинства стандарта — открытость и массовость. Промышленностью сейчас (2013 г.) выпускается очень много типов и моделей датчиков, исполнительных устройств, модулей обработки и нормализации сигналов и др. Практически все промышленные системы контроля и управления имеют программные драйвера для работы с MODBUS-сетями.

 

Контроллеры на шине Modbus взаимодействуют, используя клиент-серверную модель, основанную на транзакциях, состоящих из запроса и ответа.
Обычно в сети есть только один клиент, так называемое, «главное» (англ. master) устройство, и несколько серверов — «подчинённых» (англ. slaves) устройств. Главное устройство (мастер) инициирует транзакции (передаёт запросы). Мастер может адресовать запрос индивидуально любому подчиненному или инициировать передачу широковещательного сообщения для всех подчиненных устройств. Подчинённое устройство, опознав свой адрес, отвечает на запрос, адресованный именно ему. При получении широковещательного запроса ответ подчинёнными устройствами не формируется.
Спецификация Modbus описывает структуру запросов и ответов. Их основа — элементарный пакет протокола, так называемый PDU (Protocol Data Unit). Структура PDU не зависит от типа линии связи и включает в себя код функции и поле данных. Код функции кодируется однобайтовым полем и может принимать значения в диапазоне 1…127. Диапазон значений 128…255 зарезервирован для кодов ошибок. Поле данных может быть переменной длины. Размер пакета PDU ограничен 253 байтами.


Введение в MODBUS протокол.

 

Контроллеры соединяются используя технологию главный-подчиненный, при которой только одно устройство (главный) может инициировать передачу (сделать запрос). Другие устройства (подчиненные) передают запрашиваемые главным устройством данные, или производят запрашиваемые действия. Типичное главное устройство включает в себя ведущий (HOST) процессор и панели программирования. Типичное подчинненое устройство - программируемый контроллер.

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

Цикл запрос - ответ.

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

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

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

                8 - битные                                             8 - битные

                байты данных                                       байты данных

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

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

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

Два режима последовательной передачи.

В сетях MODBUS может быть использован один из двух способов передачи: ASCII или RTU. Пользователь выбирает необходимый режим вместе с другими параметрами (скорость передачи, режим паритета и т.д.) во время конфигурации каждого контроллера.

Режим ASCII.

При использовании ASCII - режима каждый байт сообщения передается как два ASCII символа. Главное преимущество этого способа время между предачей символов может быть до 1 сек. без возникновения ошибок при передаче.

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

Система кодировки: Шестнадцатиричная, ASCII-символы 0-9, A-F

Назначение битов:                                                1 старт бит

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

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

                                                                              1 стоп бит если есть паритет; 2 бита если

                                                                              нет паритета

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

                                                                              Режим RTU.

При использовании ASCII - режима каждый байт сообщения содержит два 4-х битных шестнадцатиричных числа.

Каждое сообщение передается непрерывным потоком.

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

Система кодировки: 8-ми битовая двоичная, шестнадцатиричная

                                 0-9, A-F

                                  Две шестнадцатиричные цифры содержатся в

                                  каждом 8-ми битовом байте сообщения.

Назначение битов:                1 старт бит

                                  8 бит данных, младшим значащим разрядом

                                  вперед

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

                                  1 стоп бит если есть паритет; 2 бита если

                                  нет паритета

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

Содержание сообщения MODBUS.

ASCII фрейм.

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

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

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

 ------T------T------T------T-----T-----¬

 ¦старт¦адрес ¦ ф-ия ¦данные¦ LRC ¦конец¦

 +-----+------+------+------+-----+-----+

 ¦1 сим¦2 сим ¦2 сим ¦n сим ¦2 сим¦2 сим¦

 ¦   : ¦      ¦      ¦      ¦     ¦CR LF¦

 L-----+------+------+------+-----+------

 Исключение: В контроллерах типа 584 и 984A/B/X ASCII-сообщение может нормально заканчиваться после контрольной суммы без CRLF последовательности. Интервалы меньше 1 сек допускаются.

RTU фрейм.

В RTU режиме сообщение начинается с интервала тишины равного времени передачи 3.5 символов при данной скорости передачи в сети. Первым полем затем передается адрес устройства.

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

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

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

 ------------T--------T--------T--------T--------T-----------¬

 ¦   старт   ¦  адрес ¦функция ¦ данные ¦   CRC  ¦   конец   ¦

 +-----------+--------+--------+--------+--------+-----------+

 ¦T1-T2-T3-T4¦  8 бит ¦  8 бит ¦n x бит ¦ 16 бит ¦T1-T2-T3-T4¦

 L-----------+--------+--------+--------+--------+------------

 

Содержание адресного поля.

Адресное поле фрейма содержит два символа (ASCII) или 8 бит (RTU). Допустимый адрес передачи находится в диапазоне 0 - 247. Каждому подчиненному устройству присваивается адрес в пределах от 1 до 247.

Адрес 0 используется для широковещательной передачи, его распознает каждое устройство. Когда MODBUS протокол используется на более высоком уровне сети, широковещательная передача может не поддерживаться или может быть реализована другими методами.

Содержание поля функции.

Поле функции фрейма содержит два символа (ASCII) или 8 бит (RTU). Диапазон числа 1 -255. Некоторые функции работают на всех контроллерах MODICON, некоторые - на определенных моделях, другие же коды зарезервированы для будущего использования. Имеющийся набор функций описан в приложении 2.

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

Например, сообщение от главного подсиненному прочитать группу регистров имеет следующий код функции:

0000 0011              ( 03 hex) Если подчиненный выполнил затребованное действие без ошибки, он возвращает такой же код. Если имеет место ошибка, то он возвращает:

1000 0011              ( 83 hex) В добавление к изменению кода функции, подчиненный размещает в поле данных уникальный код, который говорит главному какая именно ошибка произошла или причину ошибки.

Содержание поля данных.

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

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

Поле данных может не существовать (иметь нулевую длину) в определенных типах сообщений.

Содержание поля контрольной суммы.

В MODBUS - сетях используются два метода контроля ошибок передачи. Содержание поля контрольной суммы зависит от выбранного способа передачи. ASCII Когда используется ASCII-режим поле контрольной суммы содержит два ASCII-символа. Контрольная сумма является результатом вычисления Longitudinal Redundancy Check (LRC) сделанного над содержанием сообщения начиная с ":" и заканчивая CRLF. RTU Когда используется RTU-режим поле контрольной суммы содержит 16-ти битовую величину. Контрольная сумма является результатом вычисления Cyclical Redundancy Check сделанного над содержанием сообщения. CRC добавляется к сообщению последним полем младшим байтом вперед.

Формат передачи символов.

Передача символов идет младшим битом вперед.

ASCII фрейм

С контролем четности

 ------T-----T-----T-----T-----T-----T-----T-----T-----T-----¬

 ¦старт¦  1  ¦  2  ¦  3  ¦  4  ¦  5  ¦  6  ¦  7  ¦ Пар ¦Стоп ¦

 L-----+-----+-----+-----+-----+-----+-----+-----+-----+------

Без контроля четности

 ------T-----T-----T-----T-----T-----T-----T-----T-----T-----¬

 ¦старт¦  1  ¦  2  ¦  3  ¦  4  ¦  5  ¦  6  ¦  7  ¦Стоп ¦Стоп ¦

 L-----+-----+-----+-----+-----+-----+-----+-----+-----+------

RTU фрейм

С контролем четности

 ------T-----T-----T-----T-----T-----T-----T-----T-----T-----T-----¬

 ¦старт¦  1  ¦  2  ¦  3  ¦  4  ¦  5  ¦  6  ¦  7  ¦  8  ¦ Пар ¦Стоп ¦

 L-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+------

Без контроля четности

 ------T-----T-----T-----T-----T-----T-----T-----T-----T-----T-----¬

 ¦старт¦  1  ¦  2  ¦  3  ¦  4  ¦  5  ¦  6  ¦  7  ¦  8  ¦Стоп ¦Стоп ¦

 L-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+------

Методы контроля ошибок.

Стандартная MODBUS сеть использует два метода контроля ошибок. Контроль паритета (even/odd) и контрольная сумма. Обе эти проверки генерируются в головном устройстве. Подчиненное устройство проверяет каждый байт и все сообщение в процессе приема.

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

Контроль паритета.

                Пользователь может конфигурировать контроллеры на проверку четного или нечетного паритета (Even/Odd).

                Например, 8 бит RTU-режима содержат следующую информацию:

1100 0101 Общее количество единиц - 4. Если используется четный паритет, то бит паритета будет равен 0, и общее количество 1-иц будет по прежнему четным числом. Если используется нечетный паритет, то бит паритета будет равен 1, тогда общее количество 1-иц вместе с битом паритета будет равно 5, т.е. нечетному числу.

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

Метод LRC проверяет содержание сообщения исключая начальный символ ":" и пару CRLF.

LRC это 1 байт. LRC вычисляется передающим устройством и добавляется в конец сообщения. Принимающее устройство вычисляет LRC в процессе приема сообщения и сравнивает его с принятым от главного. Если есть несовпадение, то имеет место ошибка.

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

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

Счетчик контрольной суммы предварительно инициализируется числом FF hex. Только восемь бит данных используются для вычисления контрольной суммы CRC. Старт и стоп биты, бит паритета, если он используется, не учитываются в контрольной сумме.

Во время генерации CRC каждый байт сообщения складывается по исключающему ИЛИ с текущим содержимым регистра контрольной суммы. Результат сдвигается в направлении младшего бита, с заполнением нулем старшего бита. Если младший бит равен 1, то производится исключающее ИЛИ содержимого регистра контрольной суммы и определенного числа. Если младший бит равен 0, то исключающее ИЛИ не делается.

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

Функции контроля и обработки данных.

01 Чтение статуса выходов

                ОПИСАНИЕ

                Читает статуса ON/OFF дискретных выходов в подчиненном.

                ЗАПРОС

                Запрос содержит адрес начального выхода и количество выходов для чтения. Выхода адресуются начиная с нуля: выхода 1-16 адресуются как 0-15.

                Ниже приведен пример запроса на чтение выходов 20-56 с подчиненного устройства 17.

                Имя поля                                                                                             Пример

                                                                                                                             (Hex)

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

                Функция                                                                                              01

                Начальный адрес Hi                                                                            00

                Начальный адрес Lo                                                                            13

                Количество Hi                                                                                      00

                Количество Lo                                                                                     25

                Контрольная сумма (CRC или LRC)                                 --

 

                ОТВЕТ

                Статус выходов в ответном сообщении передается как один выход на бит.

                Если возвращаемое количество выходов не кратно восьми, то оставшиеся биты в последнем байте сообщения будут установлены в 0. Счетчик байт содержит количество байт передаваемых в поле данных.

                Имя поля                                                                                             Пример

                                                                                                                             (Hex)

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

                Функция                                                                                              01

                Счетчик байт 4                                                                                     005

                Данные(Выхода 27-20)                                                                       CD

                Данные(Выхода 35-28)                                                                       6B

                Данные(Выхода 43-36)                                                                       B2

                Данные(Выхода 51-44)                                                                       0E

                Данные(Выхода 56-52)                                                                       1B

                Контрольная сумма (CRC или LRC)                                 --

 

02 Read Input Status

                ОПИСАНИЕ

                Чтение ON/OFF состояния дискретных входов (ссылка 1Х) в пдчиненном.

                ЗАПРОС

                Запрос содержит номер начального входа и количество входов для чтения. Входа адресуются начиная с 0.

                Ниже приведен пример запроса на чтение входов 10197-10218 с подчиненного устройства 17.

                               Запрос

                Имя поля                                                                                             Пример

                                                                                                                             (Hex)

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

                Функция                                                                                              02

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

                Начальный адрес мл.                                                                           C4

                Кол-во входов ст.                                                                00

                Кол-во входов мл.                                                                               16

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

 

                ОТВЕТ

                Статус входов в ответном сообщении передается как один выход на бит.

                Если возвращаемое количество входов не кратно восьми, то оставшиеся биты в последнем байте сообщения будут установлены в 0. Счетчик байт содержит количество байт передаваемых в поле данных.

                Имя поля                                                                                             Пример

                                                                                                                             (Hex)

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

                Функция                                                                                              01

                Счетчик байт 4                                                                                     005

                Данные(Входы 10204-10197)                                                             AC

                Данные(Входы 10212-10205)                                                             DB

                Данные(Входы 10218-10213)                                                             35

                Контрольная сумма (CRC или LRC)                                 --

 

03 Read Holding Registers

                ОПИСАНИЕ

                Чтение двоичного содержания регистров (ссылка 4Х) в подчиненном.

                ЗАПРОС

                Сообщение запроса специфицирует начальный регистр и количество регистров для чтения. Регистры адресуются начина с 0: регистры 1-16 адресуются как 0-15.

                Ниже приведен пример чтения регистров 40108-40110 с подчиненного устройства 17.

                Запрос

                Имя поля                                                                                              Пример

                                                                                                                             (Hex)

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

                Функция                                                                                              03

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

                Начальный адрес мл.                                                                         6B

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

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

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

 

                ОТВЕТ

                Данные регистров в ответе передаются как два бйта на регистр. Для каждого регистра, первый байт содержит старшие биты второй байт содержит младшие биты.

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

                Это пример ответа на запрос представленный выше:

                Ответ

                Имя поля                                                                                             Пример

                                                                                                                             (Hex)

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

                Функция                                                                                              03

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

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

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

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

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

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

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

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

 

04 Read Input Registers

                СОДЕРЖАНИЕ

                Чтение двоичного содержания входных регистров (ссылка 3Х) в подчиненном.

                ЗАПРОС

                Запрос содержит номер начального регистра и количество регистров для чтения.

                Ниже приведен пример запроса для чтения регистра 30009 с подчиненного устройства 17.

                Запрос

                Имя поля                                                                                             Пример

                                                                                                                             (Hex)

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

                Функция                                                                                              03

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

                Начальный адрес мл.                                                                          6B

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

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

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

 

                ОТВЕТ

                Данные регистров в ответе передаются как два бйта на регистр. Для каждого регистра, первый байт содержит старшие биты второй байт содержит младшие биты.

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

                Это пример ответа на запрос представленный выше:

                Ответ

                Имя поля                                                                                              Пример

                                                                                                                             (Hex)

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

                Функция                                                                                              03

                Счетчик байт                                                                                        02

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

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

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

 

05 Force Single Coil

                ОПИСАНИЕ

                Установка единичного выхода (ссылка 1Х) в ON или OFF. При широковещательной передаче функция устанавливает все выходы с данным адресом во всех подчиненных контроллерах.

                ЗАМЕЧАНИЕ Функция может пересекаться с установкой защиты

                                               памяти и установкой недоступности выходов.

                ЗАПРОС

                Запрос содержит номер выхода для установки. Выходы адресуются начиная с 0. Выход 1 адресуется как 0.

                Состояние, в которое необходимо установить выход (ON/OFF) описывается в поле данных. Величина FF00 Hex - ON. Величина 0000 - OFF. Любое другое число неверно и не влияет на выход.

                В приведенном ниже примере устанавливается выход 173 в состояние ON в подчиненном устройстве 17.

                Запрос

                Имя поля                                                                                             Пример

                                                                                                                             (Hex)

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

                Функция                                                                                              05

                Адрес выхода мл.                                                                00

                Адрес выхода ст.                                                                                 AC

                Данные ст.                                                                                            FF

                Данные мл.                                                                                          00

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

 

                ОТВЕТ

                Нормальный ответ повторяет запрос.

                Ответ

                Имя поля                                                                                             Пример

                                                                                                                             (Hex)

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

                Функция                                                                                              05

                Адрес выхода мл.                                                                00

                Адрес выхода ст.                                                                                 AC

                Данные ст.                                                                                            FF

                Данные мл.                                                                                          00

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

 

06 Preset Single Register

                ОПИСАНИЕ

                Записывает величину в единичный регистр (ссылка 4Х). При щироковезательной передаче на всех подчиненных устройствах устанавливается один и тот же регистр.

                ЗАМЕЧАНИЕ

                Функция может пересекаться с установленной защитой памяти.

                ЗАПРОС

                Запрос содержит ссылку на регистр, который необходимо установить. Регистры адресуются с 0.

                Величина, в которую необходимо установить регистр передается в поле данных. Контроллеры M84 и 484 используют 10-ти битную величину, старшие шесть бит заполняются 0. Все другие контроллерыиспользуют 16 бит.

                В приведенном ниже примере в регистр 40002 записывается величина 0003 Hex в подчиненном устройстве 17.

                Запрос

                Имя поля                                                                                              Пример

                                                                                                                             (Hex)

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

                Функция                                                                                              06

                Адрес регистра мл.                                                                              00

                Адрес регистра ст.                                                                               01

                Данные ст.                                                                                            00

                Данные мл.                                                                                           03

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

 

                ОТВЕТ

                Нормальный ответ повторяет запрос.

                Ответ

                Имя поля                                                                                              Пример

                                                                                                                             (Hex)

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

                Функция                                                                                              06

                Адрес регистра мл.                                                                              00

                Адрес регистра ст.                                                                               01

                Данные ст.                                                                                            00

                Данные мл.                                                                                           03

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

 

07 Read Exception Status

                ОПИСАНИЕ

                Чтение статусных выходов в подчиненном контроллере. Назначение некоторых выходов в контроллерах заранее определено. Другие же могут программироваться пользователем для вывода информации о контроллере, например "машина ВКЛ/ВЫКЛ" и др.

                Функция обеспечивает простой метод доступа к данной информации, потому что адрес статусных выходов известен (нет необходимости указывать адрес выхода).

                Статусные выходы имеют следующие предопределения:

                Модель контроллера                           Выход                    Назначение

                M84,184/384,584,984 1-8                                    Определяемые пользователем

                               484                                         257                          Состояние батареи

                                                                               258-264  Определяемые пользователем

                               884                                         761                          Состояние батареи

                                                                              762                          Статус Защиты памяти

                                                                              763                          RIO Health Status

                                                                              764-768 Определяемые пользователем

                ЗАПРОС

                Имя поля                                                                                              Пример

                                                                                                                             (Hex)

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

                Функция                                                                                              07

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

 

                ОТВЕТ

                Нормальный ответ содержит состояние восьми выходов статуса.

                Пример ответа на запрос описанный выше:

                Ответ

                Имя поля                                                                                              Пример

                                                                                                                             (Hex)

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

                Функция                                                                                              06

                Данные выходов                                                                  6D

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

 

11 (0B Hex) Fetch Comm Event Ctr

                ОПИСАНИЕ

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

                Счетчик событий инкрементируется после каждого удачного приема сообщения. Он не инкрементируется после сообщений об ошибке, команд регистрации, или команд просмотра счетчика событий.

                Счетчик событий может быть переустановлен посредством Диагностической функции (код 08), подфункциями Restart Communication Option (код 00 01) или Clear Counters and Diagnostic Register (код 00 0A).

                ЗАПРОС

                Ниже приведен пример запроса на чтение коммуникационного счетчика событий в подчиненном устройстве 17:

                Имя поля                                                                                              Пример

                                                                                                                             (Hex)

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

                Функция                                                                                              0B

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

 

                ОТВЕТ

                Нормальный ответ содержит два байта слова состояния, и два байта счетчика событий. Слово состояния содержит все 1 если предыдущая команда еще выполняется. Иначе слово состояния содержит все нули.

                Ниже приведен пример ответа на описанный выше запрос:

                Ответ

                Имя поля                                                                                             Пример

                                                                                                                             (Hex)

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

                Функция                                                                                              0B

                Состояние ст.                                                                                       FF

                Состояние мл.                                                                                      FF

                Счетчик событий ст.                                                                           01

                Счетчик событий мл.                                                                          08

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

 

                В этом примере слово состояния содержит число FFFF Hex, что говорит о том, что в подчиненном все еще выполняется функция. Счетчик событий содержит число 264, что говорит о том, что на данный момент произошло 264 события.

12 (0C Hex) Fetch Comm Event Log

                ОПИСАНИЕ

                Возвращает слово состояния, счетчик событий, счетчик сообщений, и поле байтов событий.

                Слово состояния и счетчик событий идентичны возвращаемым функцией 11 (0B Hex).

                Счетчик сообщений обработанных подчиненным со времени последнего рестарта, операции очистки счетчиков или с момента включения питания. Этот счетчик идентичен возвращаемому функцией диагностики (код 08), подфункцией Return Bus Message Count (код 11).

                Поле байтов событий содержит 0-64 байта, каждый байт содержит статус одной посылки или приема сообщения подчиненным. События размещаются подчиненным в поле в хронологическом порядке. Байт 0 содержит последнее по времени событие.

                ЗАПРОС

                Ниже приведен пример запроса на посылку коммуникационного журнала сообщений главному с подчиненного устройства 17:

                Имя поля                                                                                              Пример

                                                                                                                             (Hex)

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

                Функция                                                                                              0C

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

 

                ОТВЕТ

                Нормальный ответ содержит два байта слова состояния, два байта счетчика событий, два байта счетчика сообщений, и поля содержащего 0-64 байта описания событий. Поле счетчика данных определяет общую длину данных в четырех полях.

                Это пример ответа на запрос представленный выше:

                Ответ

                Имя поля                                                                                             Пример

                                                                                                                             (Hex)

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

                Функция                                                                                              0C

                Счетчик байтов                                                                                   08

                Состояние ст.                                                                                       00

                Состояние мл.                                                                                     00

                Счетчик событий ст.                                                                           01

                Счетчик событий мл.                                                                          08

                Счетчик сообщений ст.                                                                       01

                Счетчик сообщений мл.                                                                      21

                Событие 0                                                                                            20

                Событие 1                                                                                            00

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

 

                Вданном примере, слово состояния содержит 00 00 Hex, это говорит о том, что подчиненный не занят выпонением программной функции. Счетчик событий содержит 264. Счетчик сообщений показывает, что 289 сообщений было обработано.

                Последнее коммуникационное событие показано в 0-ом байте событий. Его содержимое говорит о том, что подчиненный был введен в режим Listen Only Mode.

                Предыдущее событие показано в 1-ом байте событий. Его содержимое (00) говорит о том, что подчиненный принял Communications Restart.

                Содержимое байтов событий описано ниже.

ЧТО СОДЕРЖАТ БАЙТЫ СОБЫТИЙ

                Байты событий, возвращаемые функцией Fetch Communication Event Log, могут быть одним из четырех типов. Тип определяется старшим битом в каждом байте. Кроме того, он может определятся битом 6.

Slave Modbus Receive Event

                Этот тип байта события сохраняется подчиненным когда сообщение-запрос было принято. Он сохраняется перед тем как подчиненный обработает сообщение. Этот тип события определяется установкой бита 7 в "1". Остальные биты устанавливаются в "1" если произошли описанные ниже события:

                Бит                         Описание

                0                             Не используется

                1                             Коммуникационная ошибка

                2                             Не используется

                3                             Не используется

                4                             Character Overrun

                5                             Currently in Listen Only Mode

                6                             Широковещательный прием

                7                             1

Slave Modbus Send Event

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

                Бит                         Описание

                0                             Read Exeption Sent (Код ошибки 1-3)

                1                             Slave Abort Exeption Sent (Код ошибки 4)

                2                             Slave Busy Exeption Sent (Код ошибки 5-6)

                3                             Slave Program NAK Exeption Sent (Код ошибки 7)

                4                             Write Timeout Error Occured

                5                             Currently in Listen Mode

                6                             1

                7                             0

Slave Entered Listen Only Mode

                Этот тип байта события сохраняется подчиненным когда он вводится в режим Listen Only Mode.

                Описание битов:

                Бит                         Описание

                0                             0

                1                             0

                2                             1

                3                             0

                4                             0

                5                             0

                6                             0

                7                             0

Slave Initiated Communication Restart

                Этот тип байта события сохраняется подчиненным когда был сделан рестарт коммуникационного порта. Рестарт подчиненного может быть сделан посредством диагностической функции (код 08 Hex) подфункция Restart Communication Option (код 00 01).

                Эта функция также может переводить подчиненного в режим 'Continue on Error' или 'Stop on Error'. Если подчиненный находится в режиме 'Continue on Error Mode', байт события добавляется к существующему журналу событий. Если подчиненный находится в режиме 'Stop on Error' байт добавляется в журнал и остаток журнала сбрасывается в 0.

                Описание битов

                Бит                         Содержание

                0                             0

                1                             0

                2                             0

                3                             0

                4                              0

                5                             0

                6                             0

                7                             0

15 (0F Hex) Force Multiple Coils

                ОПИСАНИЕ

                Устанавливает каждый выход (ссылка 0Х) последовательности выходов в одно из состояний ON или OFF. При широковещательной передаче функция устанавливает подобные выходы на всех всех подчиненных.

                ЗАМЕЧАНИЕ Функция может пересекаться с установкой защиты памяти и установкой недоступности выходов.

                ЗАПРОС

                Запрос специфицирует выходы для установки. Выходы адресуются начиная с 0.

                Ниже показан пример запроса на установку последовательности выходов начиная с 20 (адресуется как 19) в подчиненном устройстве 17.

                Поле данных запроса содержит 2 байта: CD 01 Hex (1100 1101 0000 0001 двоичное). Соответствие битов и выходов представлено ниже:

                Бит: 1 1 0 0 1 1 0 1                                                               0 0 0 0 0 0 0 1

                Выход: 27 26 25 24 23 22 21 20                          - - - - - - 29 28

                Запрос

                Имя поля                                                                                              Пример

                                                                                                                             (Hex)

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

                Функция                                                                                              0F

                Адрес выхода ст.                                                                                 00

                Адрес выхода мл.                                                                13

                Кол-во выходов ст.                                                                             00

                Кол-во выходов мл.                                                                           0A

                Счетчик байт                                                                                        02

                Данные для установки (Выходы 27-20)                                            CD

                Данные для установки (Выходы 29-28)                                            01

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

 

                ОТВЕТ

                Нормальный ответ возвращает адрес подчиненного, код функции, начальный адрес, и количество установленных выходов.

                Это пример ответа на представленный выше запрос.

                Ответ

                Имя поля                                                                                              Пример

                                                                                                                             (Hex)

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

                Функция                                                                                              0F

                Адрес выхода ст.                                                                                00

                Адрес выхода мл.                                                                13

                Кол-во выходов ст.                                                                             00

                Кол-во выходов мл.                                                                            0A

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

 

16 (10 Hex) Preset Multiple Regs

                ОПИСАНИЕ

                Запись данных в последовательность регистров (ссылка 4Х). При широковещательной передаче, функция устанавливает подобные регистры во всех подчиненных устройствах.

                ЗАМЕЧАНИЕ

                Функция может пересекаться с установленной защитой памяти.

                ЗАПРОС

                Запрос специфицирует регистры для записи. Регистры адресуются начиная с 0.

                Данные для записи в регистры содержатся в поле данных запроса. Контроллеры M84 и 484 используют 10-битовую величину, со старшими шестью битами установленными в 0. Все остальные контроллеры используют 16 бит.

                Ниже приведен пример запроса на установку двух регистров начиная с 40002 в 00 0A и 01 02 Hex, в подчиненном устройстве 17:

                Запрос

                Имя поля                                                                                             Пример

                                                                                                                             (Hex)

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

                Функция                                                                                              10

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

                Начальный адрес                                                                  01

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

                Кол-во регистров мл.                                                                         02

                Счетчик байт                                                                                        02

                Данные ст.                                                                                            00

                Данные мл.                                                                                           0A

                Данные ст.                                                                                            01

                Данные мл.                                                                                           02

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

 

                ОТВЕТ

                Нормальный ответ содержит адрес подчиненного, код функции, начальный адрес, и количество регистров.

17 (11 Hex) Чтение идентификатора подчиненного

                ОПИСАНИЕ

                Возвращает описание типа контроллера представленного по данному адресу, текущее состояние индикатора пуска, и другую информацию о подчиненном устройстве.

                ЗАПРОС

                Имя поля                                                                                              Пример

                                                                                                                             (Hex)

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

                Функция                                                                                              11

                Контрольная сумма (CRC или LRC)                                 --

 

                ОТВЕТ

                Формат нормального ответа показан ниже. Содержание байтов данных специфично для каждого типа контроллера.

                Имя поля                                                                                             Пример

                                                                                                                             (Hex)

                Адрес подчиненного                                                                           Возврат адреса подчиненного

                Функция                                                                                              11

                Счетчик байт 4                                                                                     0Зависит от устройства

                Идентификатор у-ва                                                                           Зависит от устройства

                Индикатор пуска                                                                                 00=OFF, FF=ON

                Добавочная информация                                                                    Зависит от устройства

                                                                                                                              ...

                Контрольная сумма (CRC или LRC)                                 --

 

Список идентификаторов устройств

                               Идентификатор     Контроллер

                                               0                                             Micro 84

                                               1                                             484

                                               2                                             184/384

                                               3                                             584

                                               8                                             884

                                               9                                             984

                184/384

                184 или 384 контроллеры возвращают счетчик байт 4 или 74. Если J347 Modbus Slave Interface инициализирован правильно, и если внутренняя PIB-таблица нормальная, счетчик байт будет содержать 74. Иначе - 4.

                Эти четыре байта будут возвращены в любом случае:

                Байт        Содержимое

                               1              Идентификатор (2 для 184/384)

                               2              Индикатор пуска (0=OFF, FF=ON)

                3,4           Слово статуса:

                                               Бит 0 = 0

                                               Бит 1 = Защита памяти (0=OFF, 1=ON )

                                               Бит 2,3 = Тип контроллера :

                                                                              Бит 2=0 и Бит 3=0 - 184

                                                                              Бит 2=1 и Бит 3=0 - 384

                                               Биты 4-15 = не используются

                Дополнительные 70 байт:

                Байт                                       Содержание

                5,6                                          Начальный адрес PIB-таблицы

                7,8                                          Серийный номер контроллера

                9,10                                        Идентификатор исполнителя

                                                                              Байты 11-74 содержат PIB-таблицу.

                                                                              Эти данные верны если контроллер работает

                                                                              (см. байт 2).

                11,12                                      Максимальное количество выходов

                13,14                                      Таблица доступных выходов

                15,16                                      Адрес таблицы входов coil/run

                17,18                                      Количество входов

                19,20                                      Таблица доступных входов

                21,22                                      Первое ключевое число

                                                                              (должно быть кратно 16)

                23,24                                      Последнее ключевое число

                                                                              (должно быть кратно 16)

                25,26                                  



Технократ