Выход 485. Углубленное описание стандарта EIA485 (RS485). Излучаемые электромагнитные помехи

Углубленное описание стандарта EIA485 (RS485)

1. Универсальный асинхронный приемопередатчик (UART)

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

UART можно разделить на приемник (Receiver) и передатчик (Transmitter). В состав UART входят: тактовый генератор связи (бодрейт-генератор), управляющие регистры, статусные регистры, буферы и сдвиговые регистры приемника и передатчика. Бодрейт-генератор задает тактовую частоту приемопередатчика для данной скорости связи. Управляющие регистры задают режим работы последовательного порта и его прерываний. В статусном регистре устанавливаются флаги по различным событиям. В буфер приемника попадает принятый символ, в буфер передатчика помещают передаваемый. Сдвиговый регистр передатчика - это обойма, из которой в последовательный порт выстреливаются биты передаваемого символа (кадра). Сдвиговый регистр приемника по биту накапливает принимаемые из порта биты. По различным событиям устанавливаются флаги и генерируются прерывания (завершение приема/отправки кадра, освобождение буфера, различные ошибки).

UART - полнодуплексный интерфейс, то есть приемник и передатчик могут работать одновременно, независимо друг от друга. За каждым из них закреплен порт - одна ножка контроллера. Порт приемника обозначают RX, передатчика - TX. Последовательной установкой уровней на этих портах относительно общего провода ("земли") и передается информация. По умолчанию передатчик устанавливает на линии единичный уровень. Передача начинается посылкой бита с нулевым уровнем (старт-бита), затем идут биты данных младшим битом вперед (низкий уровень - "0", высокий уровень - "1"), завершается посылка передачей одного или двух битов с единичным уровнем (стоп-битов).

Электрический сигнал кадра посылки выглядит так:

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

Скорость связи или бодрейт (baudrate) измеряется в бодах - число передаваемых бит в секунду (включая старт и стоп-биты). Задается эта скорость в бодрейт-генераторе делением системной частоты на задаваемый коэффициент. Типичный диапазон скоростей: 2400 … 115200 бод.

Формат кадра определяет число стоп-битов (1 или 2), число бит данных (8 или 9), а также назначение девятого бита данных. Все это зависит от типа контроллера.

Приемник и передатчик тактируются, как правило, с 16-кратной частотой относительно бодрейта. Это нужно для сэмплирования сигнала. Приемник, поймав падающий фронт старт-бита, отсчитывает несколько тактов и следующие три такта считывает (семплирует) порт RX. Это как раз середина старт-бита. Если большинство значений семплов - "0", старт-бит считается состоявшимся, иначе приемник принимает его за шум и ждет следующего падающего фронта. После удачного определения старт-бита, приемник точно также семплирует серединки битов данных и по большинству семплов считает бит "0" или "1", записывая их в сдвиговый регистр. Стоп-биты тоже семплируются, и если уровень стоп-бита не "1" - UART определяет ошибку кадра и устанавливает соответствующий флаг в управляющем регистре.


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

2. Интерфейс 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% бита
3. Согласование и конфигурация линии связи

При больших расстояниях между устройствами, связанными по витой паре и высоких скоростях передачи начинают проявляться так называемые эффекты длинных линий. Причина этому - конечность скорости распространения электромагнитных волн в проводниках. Скорость эта существенно меньше скорости света в вакууме и составляет немногим больше 200 мм/нс. Электрический сигнал имеет также свойство отражаться от открытых концов линии передачи и ее ответвлений. Грубая аналогия - желоб, наполненный водой. Волна, созданная в одном конце, идет по желобу и, отразившись от стенки в конце, идет обратно, отражается опять и так далее, пока не затухнет. Для коротких линий и малых скоростей передачи этот процесс происходит так быстро, что остается незамеченным. Однако, время реакции приемников - десятки/сотни нс. В таком масштабе времени несколько десятков метров электрический сигнал проходит отнюдь не мгновенно. И если расстояние достаточно большое, фронт сигнала, отразившийся в конце линии и вернувшийся обратно, может исказить текущий или следующий сигнал. В таких случаях нужно каким-то образом подавлять эффект отражения.

Наука Электротехника предлагает решение этой проблемы. У любой линии связи есть такой параметр, как волновое сопротивление Zв. Оно зависит от характеристик используемого кабеля, но не от длины. Для обычно применяемых в линиях связи витых пар Zв=120 Ом. Оказывается, что если на удаленном конце линии, между проводниками витой пары включить резистор с номиналом равным волновому сопротивлению линии, то электромагнитная волна дошедшая до "тупика" поглощается на таком резисторе. Отсюда его названия - согласующий резистор или "терминатор".

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

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

В оба наиболее удаленных конца кабеля (Zв=120 Ом) включают согласующие резисторы Rt по 120 Ом (0.25 Вт). Если в системе только один передатчик и он находится в конце линии, то достаточно одного согласующего резистора на противоположном конце линии. Более подробно о правильных и неправильных конфигурациях сети можно прочитать в статье "Правильная разводка сетей RS-485" .


4. Защитное смещение

Как уже упоминалось, приемники большинства микросхем RS-485 имеют пороговый диапазон распознавания сигнала на входах A-B - ±200мВ. Если |Uab| меньше порогового (около 0), то на выходе приемника RO могут быть произвольные логические уровни из-за несинфазной помехи. Такое может случиться либо при отсоединении приемника от линии, либо при отсутствии в линии активных передатчиков, когда никто не задает уровень. Чтобы в этих ситуациях избежать выдачи ошибочных сигналов на приемник UART, необходимо на входах A-B гарантировать разность потенциалов Uab > +200мВ. Это смещение при отсутствии входных сигналов обеспечивает на выходе приемника логическую "1", поддерживая, таким образом, уровень стопового бита.

Добиться этого просто - прямой вход (А) следует подтянуть к питанию, а инверсный (B) - к "земле". Получается делитель:


Rвх - входное сопротивление приемника (обычно 12 кОм);
Rc - согласующие резисторы (120 Ом);
Rзс - резисторы защитного смещения.

Величины сопротивлений для резисторов защитного смещения (Rзс) нетрудно рассчитать по делителю. Необходимо обеспечить Uab > 200мВ. Напряжение питания - 5В. Сопротивление среднего плеча - 120Ом//120Ом//12КОм на каждый приемник - примерно 57 Ом (для 10 приемников). Таким образом, выходит примерно по 650 Ом на каждый из двух Rзс. Для смещения с запасом - сопротивление Rзс должно быть меньше 650 Ом. Традиционно ставят 560 Ом.

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

Многие производители приемопередатчиков заявляют о функции безотказности (failsafe) своих изделий, заключающейся во встроенном смещении. Следует различать два вида такой защиты:

Безотказность в открытых цепях. (Open circuit failsafe.) В таких приемопередатчиках применяются встроенные подтягивающие резисторы. Эти резисторы, как правило, высокоомные, чтобы уменьшить потребление тока. Из-за этого необходимое смещение обеспечивается только для открытых (ненагруженных) дифференциальных входов. В самом деле, если приемник отключен от линии или она не нагружена, тогда в среднем плече делителя остается только большое входное сопротивление, на котором и падает необходимая разность потенциалов. Однако, если приемопередатчик нагрузить на линию с двумя согласующими резисторами по 120 Ом, то в среднем плече делителя оказывается меньше 60 Ом, на которых, по сравнению с высокоомными подтяжками, ничего существенного не падает. Поэтому, если в нагруженной линии нет активных передатчиков, то встроенные резисторы не обеспечивают достаточное смещение. В этом случае, остается необходимость устанавливать внешние резисторы защитного смещения, как это было описано выше.

Истинная безотказность. (True failsafe.) В этих устройствах смещены сами пороги распознавания сигнала. Например: -50 / -200 мВ вместо стандартных порогов ±200 мВ. То есть при Uab>-50мВ на выходе приемника RO будет логическая "1", а при Uab<-200 - на RO будет "0". Таким образом, и в разомкнутой и в пассивной линии при разности потенциалов Uab близкой к нулю, приемник выдаст "1". Для таких приемопередатчиков внешнее защитное смещение не требуется. Тем не менее, для лучшей помехозащищенности все-таки стоит дополнительно немного подтягивать линию.

Сразу виден минус внешнего защитного смещения - через делитель постоянно будет протекать ток, что может быть недопустимо в системах малого потребления. В таком случае можно сделать следующее:

а). Уменьшить потребление тока, увеличив сопротивления Rзс. Хотя производители приемопередатчиков и пишут о пороге распознавания в 200мВ, на практике вполне хватает 100мВ и даже меньше. Таким образом, можно сразу увеличить сопротивления Rзс раза в два-три. Помехозащищенность при этом несколько снижается, но во многих случаях это не критично.

б). Использовать true failsafe приемопередатчики со смещенными порогами распознавания. Например, у микросхем MAX3080 и MAX3471 пороги: -50мВ / -200мВ, что гарантирует единичный уровень на выходе приемника при отсутствии смещения (Uab=0). Тогда внешние резисторы защитного смещения можно убрать или значительно увеличить их сопротивление.

в). Не применять без необходимости согласование на резисторах. Если линия не будет нагружена на 2 по 120 Ом, то для обеспечения защитного смещения хватит подтяжек в несколько килоом в зависимости от числа приемников на линии.

Для опторазвязанной линии подтягивать следует к питанию и "земле" изолированной линии. Если не применяется опторазвязка, подтягивать можно к любому питанию, так как делитель создаст лишь небольшую разность потенциалов между линиями A и B. Нужно только помнить о возможной разности потенциалов между "землями" устройств, расположенных далеко друг от друга.

5. Исключение приема при передаче в полудуплексном режиме

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

Обычно во время работы приемопередатчика RS-485 на передачу, выход приемника RO переводится в третье состояние и ножка RX контроллера (приемник UART) "повисает в воздухе". В результате, во время передачи на приемнике UART вместо уровня стопового бита ("1") окажется неизвестно что, и любая помеха будет принята за входной сигнал. Поэтому нужно либо на время передачи отключать приемник UART (через управляющий регистр), либо подтягивать RX к единице. У некоторых микроконтроллеров это можно сделать программно - активировать встроенные подтяжки портов.


Примечание: у микроконтроллера AT90S8535 (AVR Atmel) есть глючок - при отключенном UART он все равно принимает, и после включения на прием первый принятый байт может быть испорчен. Так что активировать подтяжку RX ему нужно обязательно.

6. "Горячее" подключение к линии связи

Насколько я знаю, спецификацией RS-485 не предусмотрено "горячее" подключение - включение новых приемопередатчиков в линию связи во время работы системы. Тем не менее, подобную операцию система переносит практически безболезненно, если учесть один нюанс. Это важно, когда питание на устройство подается в момент подключения, например, когда плата в виде кассеты вставляется в разъем. Дело в том, что во время любого сброса: по включению питания, по сигналу на входе "Reset", по срабатыванию сторожевого таймера - контроллеру требуется время на инициализацию, которое может составлять до нескольких десятков миллисекунд. Пока контроллер находится в состоянии сброса, он принудительно настраивает все порты на вход. Получается ситуация, при которой питание на микросхему приемопередатчика RS-485 уже подано, но входы разрешения приемника /RE и передатчика DE "висят в воздухе". В результате, приемопередатчик может по помехе открыться на передачу и все время пока микроконтроллер в отключке пускать в работающую линию мусор. Избежать этого легко - достаточно через резистор в несколько килоом подтянуть вход разрешения приемника /RE к нулю. Этим приемопередатчик сразу по включении питания настраивается на прием и не лезет на линию.


7. Рекомендации по организации протокола связи

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

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

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

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

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

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

Протоколов существует множество и можно придумать еще больше, но лучше пользоваться наиболее употребительными из них. Одним из стандартных протоколов последовательной передачи является MODBUS , его поддержку обеспечивают многие производители промышленных контроллеров. Но если Вам нужно буквально "два байта переслать" или просто освоить методы связи и не хочется из-за этого изучать систему команд модбаса и писать для него драйвер, предлагаю варианты относительно простых протоколов. (И все-таки в дальнейшем стоит ориентироваться именно на MODBUS.)

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

1). Часто встречаются протоколы на основе ASCII-кода. Управляющие символы и данные передаются в виде обыкновенных ASCII символов. Посылка может выглядеть так:

В HEX виде: 3Ah 31h 32h 52h 53h 34h 38h 35h 0Dh В ASCII виде: ":" "1" "2" "R" "S" "4" "8" "5" /ПС/

В начале управляющий символ начала посылки ":", следующие две цифры - адрес получателя (12), затем символы данных (RS485) и в конце - управляющий символ конца посылки 0Dh (перевод строки). Все устройства на линии, приняв символ ":", начинают записывать в память посылку до символа конца строки 0Dh. Затем сравнивают адрес из посылки со своим адресом. Устройство с совпавшим адресом обрабатывает данные посылки, остальные - игнорируют посылку. Данные могут содержать любые символы, кроме управляющих (":", 0Dh).

Достоинство этого протокола в удобстве отладки системы и простоте синхронизации посылок. Можно через преобразователь RS485-RS232 подключить линию к COM-порту компьютера и в любой терминалке увидеть всю проходящую информацию "на человеческом языке". Недостатки - относительно большой размер посылки при передаче большого количества двоичной информации, ведь на передачу каждого байта нужно два ASCII символа (7Fh - "7", "F"). Кроме того, надо преобразовывать данные из двоичного вида в ASCII и обратно.

2). Можно организовать протокол с непосредственной передачей двоичных данных. При этом управляющие символы и байты данных различаются с помощью настройки дополнительного девятого бита в UART. Для управляющих символов этот бит устанавливается в "1". Первым в посылке передается управляющий символ с единичным девятым битом - остальные его "нормальные" биты могут содержать адрес устройства-получателя, признак начала/конца посылки и что-нибудь еще. Затем передаются байты данных с нулевым девятым битом. Все принимающие устройства узнают по девятому биту управляющий символ и по содержанию его остальных битов определяют, кому адресованы последующие данные. Адресуемое устройство принимает данные, а все остальные игнорируют их до следующего управляющего символа.

UART некоторых контроллеров, например C167 (Infineon) может в особом режиме (wakeup) автоматически распознавать в полученном байте девятый бит и генерировать прерывание при получении только управляющего символа. Адресуемое устройство при этом нужно переключить в режим обычного приема до следующего управляющего символа. Это позволяет остальным устройствам сэкономить время на обработке прерываний при получении байтов данных, адресованных не им.

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

3) Протокол может быть "чисто" двоичным, то есть без выделения специальных управляющих символов. Синхронизация посылок в этом случае может осуществляться за счет отслеживания паузы между принятыми байтами. Принимающее устройство отсчитывает время с момента последнего приема байта до следующего, и если эта пауза оказывается больше какой-то величины (например, 1.5 - 3.5 байта), делается вывод о потере предыдущей посылки и начале новой. Даже если предыдущая посылка была незакончена - приемный буфер сбрасывается. Можно также синхронизировать посылки по уникальной стартовой последовательности байтов (по аналогии со стартовым символом в ASCII протоколе). В таких протоколах надо принимать особые меры для защиты от приема ложной посылки, начатой из-за помехи.

8. Программные методы борьбы со сбоями

Для повышения надежности связи обязательно нужно предусмотреть программные методы борьбы со сбоями. Их можно условно разделить на две группы: защита от рассинхронизации и контроль достоверности.

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

Защита от рассинхронизации кадров. Обязательная мера! Все последующие меры синхронизации посылок имеют смысл только совместно с этой. Помеха ложным старт-битом может сбить правильный прием кадров последующей посылки. Чтобы вернуться к верной последовательности, нужно сделать паузу между включением приемопередатчика на передачу и посылкой данных. Все это время передатчик удерживает в линии высокий уровень, через который помехе трудно пробиться (активная пауза). Паузы длительностью в 1 кадр на данной скорости связи (10-11 бит) будет достаточно для того, чтобы любое устройство, принимавшее помехи приняло стоп-бит. Тогда следующий кадр будет приниматься с нормального старт-бита.


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

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

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

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

____ :) ____ : 1 2 R S 4 8 5 /ПС/ ____

Стартовая пауза. В двоичном протоколе, где не предусмотрен уникальный управляющий символ, и синхронизация посылок идет по заданной паузе между байтами, достаточно увеличить активную паузу, описанную в синхронизации кадров, до длительности паузы между байтами, по которой начинается прием новой посылки. То есть, между включением приемопередатчика на передачу и отправкой первых байтов посылки нужно сделать паузу длительностью в 1.5 - 3.5 кадра UART. При активном передатчике во время такой преамбулы помехе трудно будет прорваться к приемникам, они зафиксируют нужную паузу, сбросят буфер посылки и настроятся на прием новой посылки. Этот метод применяется, в частности, для протокола MODBUS RTU.

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

Вариант 1. Посылка начинает заново приниматься после приема "go!" (вместо символов могут быть любые 8-битные данные):

____ : - Ь ___ g o ! 1 2 R S 4 8 5 ____

Вариант 2. Посылка начинает заново приниматься после приема не менее трех "E" подряд и стартового байта ":" (вместо символов могут быть любые 8-битные данные):

____ > : - E ___ E E E: 1 2 R S 4 8 5 ____

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

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

Контрольная сумма - в общем случае 1-2 байта кода, полученного некоторым преобразованием из данных посылки. Самое простое - "исключающее или" всем байтам данных. Контрольная сумма рассчитывается и включается в посылку перед отправкой. Принимающее устройство производит ту же операцию над принятыми данными и сверяет рассчитанную контрольную сумму с полученной. Если посылка была повреждена, то, скорее всего, они не совпадут. В случае применения ASCII протокола - код контрольной суммы также передается ASCII-символами.

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

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

9. Защита устройств от перенапряжений в линии связи

Разность потенциалов между проводниками линии и между линией и "землей" приемопередатчика, как правило, не должна выходить за пределы -7...+12 В. Следовательно, может потребоваться защита от разности потенциалов между "землями" и от перенапряжений из-за замыкания на высоковольтные цепи.

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

Гальваническая развязка линии и устройств осуществляется либо опторазвязкой цифровых сигналов (RO, DI, RE, DE) с организацией изолированного питания микросхем приемопередатчиков, либо применением приемопередатчиков со встроенной гальванической развязкой сигналов и питания (например, MAX1480). Тогда вместе с дифференциальными проводниками прокладываются провод изолированной "земли" (сигнальной "земли") и, возможно, провод изолированного питания линии.

Дренажный провод - провод, прокладываемый вместе с витой парой и соединяющий "земли" удаленных устройств. Через этот провод уравниваются потенциалы "земель". При включении устройства в линию дренажный провод следует подсоединять первым, а при отключении - отсоединять последним. Для ограничения тока через дренажный провод его заземляют в каждом устройстве через резистор в 100 Ом (0.5 Вт).


Замыкание на высоковольтные цепи. Если существует опасность попадания на линию или одну из местных "земель" высокого напряжения, следует применять опторазвязку или шунтирующие ограничители напряжения. А лучше и то и другое.

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

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


Защита ограничителями напряжения действенна при кратковременных перенапряжениях. При длительных - токи короткого замыкания могут вывести ограничители из строя, и устройства на линии окажутся без защиты. Для защиты от коротких замыканий в линию можно последовательно включить плавкие предохранители. Подробнее о защите от перенапряжений можно прочитать в руководстве B&B Electronics "RS-422 and RS-485 Application Note" (англ.).

10. Дополнительные меры защиты от помех

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

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

Индуктивные фильтры. Если в линию все же попадают высокочастотные помехи, их можно отсеять индуктивными фильтрами. Существуют специальные индуктивные фильтры, предназначенные для подавления высокочастотных помех в линиях связи. Они последовательно включаются в линию непосредственно у приемников. Например, B82790-S**** фирмы Epcos, выполненный в виде четырехполюсника, через который витая пара подсоединяется к приемнику.


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

Интерфейс RS-485, наверное, самый распространенный интерфейс для организации малых сетей промышленной автоматизации.

Этому способствуют его высокие технические характеристики при простоте реализации. Интерфейс RS-485 позволяет простыми аппаратными средствами создавать сети:

  • шинной топологии;
  • с витой парой в качестве среды передачи данных;
  • длина линии связи может достигать 1200 м;
  • скорость передачи данных до 10 Мбит/сек.

Для управления распределенными системами на базе RS-485 могут быть использованы многие стандартные протоколы, в том числе и ModBus. Интерфейс позволяет создавать сети и со специализированными протоколами. Для аппаратной реализации RS-485 достаточно добавить к микроконтроллеру только одну микросхему малой степени интеграции.

RS-485 описан в стандарте ANSI TIA/EIA–485–A:1998. Стандарт задает только электрические и временные параметры. Он не оговаривает:

  • протокол обмена;
  • типы кабелей и разъемов;
  • гальваническую развязку абонентов сети.

Основные параметры стандарта RS-485.

Способ передачи данных RS-485.

Стандарт интерфейса RS-485 определяет следующие сигналы:

  • A – неинвертирующий;
  • B – инвертирующий;
  • C – общая линия (необязательный сигнал).

Иногда используют альтернативные обозначения сигналов:

  • Data+ / Data-;
  • D+ / D-;
  • + / -.

В интерфейсе применяется дифференциальный способ передачи данных. Информация передается с помощью двух противофазных сигналов A и B, а состояние шины RS-485 определяется разностью потенциалов между линиями A и B относительно общей линии C. Напряжение каждой линии относительно земли может быть любым, но в пределах диапазона -7 … +12 В.

RS-485 требует применения дифференциальных приемников и передатчиков.

Передатчики формируют 2 противофазных сигнала с разностью напряжений не менее 1,5 В (согласно стандарту).

Для приема данных используются дифференциальные приемники, которые выделяют разность напряжений между линиями A и B. При разности более 200 мВ, но до +12 В состояние линии считается равным логической единицы. При разности напряжений менее – 200 мВ, но не ниже – 7 В линия находится в состоянии логического нуля.

  • Va > Vb соответствует лог. 1;
  • Va < Vb соответствует лог. 0.

Нетрудно посчитать, что уровень помех и падение напряжения на активном сопротивлении линии могут достигать 1,3 В (выходное напряжение передатчика 1,5 В минус порог срабатывания приемников 0,2 В). Такой запас обеспечивает работу интерфейса на длинных линиях связи со значительным активным сопротивлением. Максимальная длина линии связи (1200 м) определяется именно этим параметром. Реальная разность напряжений на выходе передатчиков может достигать 5 В.

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

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

Стандарт RS-485 определяет следующие электрические параметры передатчиков и приемников.

Параметр Условия Значение Единица измерения
Мин. Макс.
Выходное напряжение передатчика без нагрузки Rнагр = ∞ 1,5
-1,5
6
-6
В
Выходное напряжение передатчика под нагрузкой Rнагр = 54 Ом 1,5
-1,5
5
-5
В
Выходное сопротивление передатчика 54 Ом
Ток короткого замыкания передатчика Замыкание выхода на источник питания +12 В или – 7В - ±250 мА
Синфазное напряжение на выходе передатчика Rнагр = 54 Ом -1 3 В
Чувствительность приемника Синфазное напряжение от -7 В до +12 В - ±200 мВ
Синфазное напряжение на входе приемника -7 +12 В
Входное сопротивление приемника 12 - кОм
Суммарное входное сопротивление 375 - Ом

Как правило, устройства с интерфейсами RS-485 объединяют в сеть с топологией ”Общая шина”. Абоненты подключаются параллельно одной двухпроводной линией связи с дополнительным общим проводом.

Каждый абонент подключается к сети через дифференциальные передатчик (D) и приемник (R). В один момент времени активным (включенным) может быть только один передатчик сети. Все остальные передатчики должны находиться в третьем (высокоомном) состоянии. Управление состоянием передатчика происходит отдельным сигналом (DE).

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

Естественно, возникают моменты, когда все передатчики отключены, “линия висит в воздухе”. Если не принять специальных мер, то состояние линии будет неопределенно. На выходах приемников может быть любой уровень.

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

Сопротивления резисторов должны быть такими, чтобы создать смещение между входами приемников не менее порога срабатывания (200 мВ). Эти резисторы должны быть учтены при расчете концевых резисторов – терминаторов.

Существуют другие варианты устранения неопределенности состояния сети в момент, когда все передатчики отключены. Но они все на уровне протоколов.

Можно в начале обмена передавать служебную последовательность кодов. Но это значительно усложняет обмен, требует передачи лишних данных.

Если в сети всегда есть активное устройство, то существует вариант – выключение передатчика в момент, когда второй передатчик уже включен, но оба находятся в состоянии лог. 1. Допустим, ведущее устройство передает данные. Затем оно переводит выход своего передатчика в состояние лог. 1. Ведомое устройство включает свой передатчик, также в состоянии лог. 1. Далее Ведущее устройство отключает передатчик, и ведомое начинает передавать данные. Линия никогда не остается отключенной. Такой алгоритм требует четкой синхронизации, отработки временных интервалов коммутации передатчиков.

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

Согласование линии связи.

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

Причина – распределенные емкостные и индуктивные свойства кабеля. На практике кабель имеет однородную конструкцию на протяжении все длины, следовательно, одинаковые распределенные параметры. Поэтому свойство кабеля можно характеризовать одним параметром – волновым сопротивлением. Так вот, искажение сигнала в кабеле можно значительно уменьшить, если на приемном конце подключить резистор сопротивлением, равным волновому сопротивлению кабеля. Такой резистор называется терминатором. В сетях RS-485 терминаторы ставятся на оба конца кабеля, т.к. обе стороны могут быть как приемными, так и передающими.

Волновое сопротивление витых пар, как правило, составляет 100 … 150 Ом. Для сетей RS-485 разработаны специальные кабели с волновым сопротивлением 120 Ом. Именно это сопротивление терминаторов считается стандартным. Часто терминаторы с сопротивлением 120 Ом уже установлены в устройствах с интерфейсом RS-485 и могут быть отключены переключателем.

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

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

Исключения это сети с низкими скоростями передачи данных и сети, использующие повторители. За счет повторителей также может быть увеличена общая длина линии связи RS-485.

Гальваническая развязка.

Стандарт RS-485 не предусматривает гальваническую развязку интерфейса от линии связи. Но если устройства сети расположены на большом расстоянии друг от друга, то потенциалы их земляных проводов могут разойтись на значительное напряжение. В этом случае не спасут дифференциальные сигналы, их потенциалы могут разойтись больше чем допустимые -7 … + 12 В. Это приведет к неработоспособности интерфейса и даже выходе его из строя.

Интерфейсы RS-485 и RS-422 описаны в стандартах ANSI EIA/TIA -485-А и EIA/TIA-422. Интерфейс RS-485 является наиболее распространенным в промышленной автоматизации. Его используют промышленные сети Modbus , Profibus DP, ARCNET, BitBus, WorldFip, LON, Interbus и множество нестандартных сетей. Связано это с тем, что по всем основным показателям данный интерфейс является наилучшим из всех возможных при современном уровне развития технологии. Основными его достоинствами являются:

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

2.3.1. Принципы построения

Дифференциальная передача сигнала

В основе построения интерфейса RS -485 лежит дифференциальный способ передачи сигнала, когда напряжение, соответствующее уровню логической единицы или нуля, отсчитывается не от "земли", а измеряется как разность потенциалов между двумя передающими линиями: Data + и Data - (рис. 2.1). При этом напряжение каждой линии относительно "земли" может быть произвольным, но не должно выходить за диапазон -7...+12 В [ - TIA ].

Приемники сигнала являются дифференциальными, т.е. воспринимают только разность между напряжениями на линии Data + и Data -. При разности напряжений более 200 мВ, до +12 В считается, что на линии установлено значение логической единицы, при напряжении менее -200 мВ, до -7 В - логического нуля. Дифференциальное напряжение на выходе передатчика в соответствии со стандартом должно быть не менее 1,5 В, поэтому при пороге срабатывания приемника 200 мВ помеха (в том числе падение напряжения на омическом сопротивлении линии) может иметь размах 1,3 В над уровнем 200 мВ. Такой большой запас необходим для работы на длинных линиях с большим омическим сопротивлением. Фактически, именно этот запас по напряжению и определяет максимальную длину линии связи (1200 м) при низких скоростях передачи (менее 100 кбит/с).

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

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

"Третье" состояние выходов

Рис. 2.1. Соединение трех устройств с интерфейсом RS -485 по двухпроводной схеме

Второй особенностью передатчика D (D - "Driver ") интерфейса RS -485 является возможность перевода выходных каскадов в "третье" (высокоомное) состояние сигналом (Driver Enable ) (рис. 2.1). Для этого запираются оба транзистора выходного каскада передатчика. Наличие третьего состояния позволяет осуществить полудуплексный обмен между любыми двумя устройствами, подключенными к линии, всего по двум проводам. Если на рис. 2.1 передачу выполняет устройство , а прием - устройство , то выходы передатчиков и переводятся в высокоомное состояние, т. е. фактически к линии оказываются подключены только приемники, при этом выходное сопротивление передатчиков и не шунтирует линию.

Перевод передатчика интерфейса в третье состояние осуществляется обычно сигналом RTS (Request To Send ) СОМ-порта.

Четырехпроводной интерфейс

Интерфейс RS -485 имеет две версии: двухпроводную и четырехпроводную . Двухпроводная используется для полудуплексной передачи (рис. 2.1), когда информация может передаваться в обоих направлениях, но в разное время. Для полнодуплексной (дуплексной ) передачи используют четыре линии связи: по двум информация передается в одном направлении, по двум другим - в обратном (рис. 2.2).

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

Режим приема эха

Рис. 2.2. Четырехпроводное соединение устройств с интерфейсом RS -485

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

Заземление, гальваническая изоляция и защита от молнии

Если порты RS -485, подключенные к линии передачи, расположены на большом расстоянии один от другого, то потенциалы их "земель" могут сильно различаться. В этом случае для исключения пробоя выходных каскадов микросхем трансиверов (приемопередатчиков) интерфейса следует использовать гальваническую изоляцию между портом RS -485 и землей. При небольшой разности потенциалов "земли" для выравнивания потенциалов, в принципе, можно использовать проводник, однако такой способ на практике не применяется, поскольку практически все коммерческие интерфейсы RS -485 имеют гальваническую изоляцию (см. например, преобразователь NL-232C или повторитель интерфейсов NL-485C фирмы RealLab!).

Защита интерфейса от молнии выполняется с помощью газоразрядных и полупроводниковых устройств защиты, см. раздел "Защита от помех" .

2.3.2. Стандартные параметры

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

2.3.5. Устранение состояния неопределенности линии

Когда передатчики всех устройств, подключенных к лини, находятся в третьем (высокоомном) состоянии, логическое состояние линии и входов всех приемников не определено. Чтобы устранить эту неопределенность, неинвертирующий вход приемника соединяют через резистор с шиной питания, а инвертирующий - с шиной "земли". Величины резисторов выбирают такими, чтобы напряжение между входами стало больше порога срабатывания приемника (+200 мВ).

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

Например, если резисторы, используемые для устранения неопределенности состояния линии, имеют сопротивление 450 Ом каждое, то резистор для согласования линии должен иметь номинал 130 Ом, тогда эквивалентное сопротивление цепи будет равно 114120 Ом. Для того, чтобы найти дифференциальное напряжение линии в третьем состоянии всех передатчиков (см. рис. 2.6), нужно учесть, что к противоположному концу линии в стандартной конфигурации подключен еще один резистор сопротивлением 120 Ом и до 32 приемников с входным дифференциальным сопротивлением 12 кОм. Тогда при напряжении питания (рис. 2.6) дифференциальное напряжение линии будет равно +272 мВ, что удовлетворяет требованию стандарта.

2.3.6. Сквозные токи

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

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

2.3.7. Выбор кабеля

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

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

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

Кабели могут быть экранированными или нет. Без эксперимента очень трудно решить, нужен ли экран. Однако, учитывая, что стоимость экранированного кабеля не намного выше, лучше всегда использовать кабель с экраном.

При низкой скорости передачи и на постоянном токе большую роль играет падение напряжения на омическом сопротивлении кабеля. Так, стандартный кабель для интерфейса RS -485 сечением 0,35 кв.мм имеет омическое сопротивление 48,5 * 2 = 97 Ом при длине 1 км. При терминальном резисторе 120 Ом кабель будет выполнять роль делителя напряжения с коэффициентом деления 0,55, т. е. напряжение на выходе кабеля будет примерно в 2 раза меньше, чем на его входе. Этим ограничивается допустимая длина кабеля при скорости передачи менее 100 кбит/с.

На более высоких частотах допустимая длина кабеля уменьшается с ростом частоты (рис. 2.7) и ограничивается потерями в кабеле и эффектом дрожания фронта импульсов. Потери складываются из падения напряжения на омическом сопротивлении проводников, которое на высоких частотах возрастает за счет вытеснения тока к поверхности (скин-эффект) и потерь в диэлектрике. К примеру, ослабление сигнала в кабеле Belden 9501PVC составляет 10 дБ (3,2 раза) на частоте 20 МГц и 0,4 дБ (на 4,7%) на частоте 100 кГц при длине кабеля 100 м.

2.3.8. Расширение предельных возможностей

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

В некоторых случаях требуется соединить устройства на расстоянии более 1200 м или подключить к одной сети более 32 устройств. Это можно сделать с помощью повторителей (репитеров , ретрансляторов) интерфейса. Повторитель устанавливается между двумя сегментами линии передачи, принимает сигнал одного сегмента, восстанавливает фронты импульсов и передает его с помощью стандартного передатчика во второй сегмент (рис. 2.5). Такие повторители обычно являются двунаправленными и имеют гальваническую изоляцию. Примером может служить повторитель NL-485C фирмы RealLab! . Каждый повторитель позволяет добавить к линии 31 стандартное устройство и увеличить длину линии на 1200 м.

Распространенным методом увеличения числа нагрузок линии является использование приемников с более высокоомным входом, чем предусмотрено стандартом EIA/TIA-485 (12 кОм). Например, при входном сопротивлении приемника 24 кОм к стандартному передатчику можно подключить 64 приемника. Уже выпускаются микросхемы трансиверов для интерфейса RS-485 с возможностью подключения 64, 128 и 256 приемников в одном сегменте сети (www.analog.com/RS485). Отметим, что увеличение количества нагрузок путем увеличения входного сопротивления приемников приводит к уменьшению мощности передаваемого по линии сигнала, и, как следствие, к снижению помехоустойчивости.

2.3.9. Интерфейсы RS-232 и RS-422

Интерфейс RS -422 используется гораздо реже, чем RS -485 и, как правило, не для создания сети, а для соединения двух устройств на большом расстоянии (до 1200 м), поскольку интерфейс RS Рис. 2.9. Соединение двух модулей преобразователей интерфейса RS-232/RS-422Дифференциальный

Дифференциальный

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

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

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

30 Мбит/с**

Синфазное напряжение на выходе

Напряжение в линии под нагрузкой

Импеданс нагрузки

Ток утечки в "третьем" состоянии

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

Чувствительность приемника

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

Примечание . **Скорость передачи 30 Мбит/с обеспечивается современной элементной базой, но не является стандартной.

* EIA - Electronic Industries Association - ассоциация электронной промышленности. TIA - Telecommunications Industry Association - ассоциация телекоммуникационной промышленности. Обе организации занимаются разработкой стандартов.

Стандарт RS-485 впервые был принят в Ассоциации электронной промышленности. Сегодня он рассматривает электрические характеристики различных приемников и передатчиков, которые используются в балансных цифровых системах.


Что собой представляет данный стандарт?

RS-485 является названием известного интерфейса, активно использующегося во всевозможных промышленных АСУТП с целью соединения определенных контроллеров и многих других устройств между собой. Основное отличие этого интерфейса от RS-232 состоит в том, что он предполагает объединение одновременно нескольких разновидностей оборудования. При использовании RS-485 гарантируется скоростной обмен данными между несколькими устройствами путем применения единственной двухпроводной линии связи в полудуплексном режиме. Он задействован в современной промышленности при создании АСУТП.

Дальность и скорость

С помощью представленного стандарта можно добиться транслирования информации на скорости до 10 Мбит/с. Стоит отметить, что при этом предельно возможная дальность непосредственно зависит от скорости транслирования данных. Стоит отметить, что для обеспечения предельной скорости информация способна передаваться не дальше 120 метров. В это же время при скорости 100 кбит/с данные транслируются более чем на 1200 метров.

Число объединяемых устройств

Количество устройств, которые способен объединять в себе интерфейс RS-485, непосредственно зависит от того, какие в них задействованы приемопередатчики. Каждый передатчик предусматривает определенное управление 32 стандартными приемниками. Правда, следует при этом знать, что существуют приемники с входным сопротивлением, которое на 50 %, 25 % или меньшей частью отличаются от стандартного. Если использовать данное оборудование, общее число устройств увеличивается соответственно.

Разъемы и протоколы

Шнур RS-485 не способен нормировать какой-либо определенный формат информационных кадров или протокол обмена. Как правило, для трансляции применяются аналогичные фреймы, используемые RS-232. Другими словами, биты данных, стоповый и стартовый биты, а также бит паритета, если это необходимо. Что касается работы протоколов обмена, в большинстве современных систем она выполняется по принципу «ведущий-ведомый». Это означает, что определенное устройство в сети выступает ведущим и инициатором обмена посылкой запросов между подчиненными устройствами, которые различаются между собой по логическим адресам. Самым известным протоколом в настоящее время является Modbus RTU. Необходимо заметить, что кабель RS-485 не обладает определенным типом соединителей или распайки. Другими словами, встречаются клеммные соединители, DB9 и прочие.

Подключение

Зачастую с использованием представленного интерфейса встречается локальная сеть, которая объединяет в себе одновременно несколько разновидностей приемопередатчиков. Выполняя подключение RS-485, необходимо грамотно объединять между собой сигнальные цепи. Как правило, они называются А и В. Таким образом, переполюсовка не представляет собой ничего страшного, просто подключенные устройства перестают работать.

При использовании интерфейса RS-485 необходимо учитывать определенные особенности его работы. Таким образом, рекомендации следующие:

1. Оптимальная среда для транслирования сигнала – кабель, созданный на основе витой пары.
2. Концы шнура в обязательно следует заглушить с помощью специализированных терминальных резисторов.
3. Сеть, где применяется стандартный или USB RS-485, должна пролагаться без ответвлений по топологии шины.
4. Устройства должны подключаться к кабелю кабелями минимально возможной длины.

Согласование

С помощью терминальных резисторов стандартный или USB RS-485 гарантирует полноценное согласование открытого конца шнура с последующей линией. При этом целиком исключается возможность отражения сигнала. Номинальное сопротивление резисторов, сопутствующее волновому сопротивлению кабеля и проводам, основанных на витой паре, как правило, составляет около 100-120 Ом. Например, известный в настоящее время кабель UTP-5, который зачастую используется в процессе прокладки Ethernet, обладает волновым сопротивлением 100 Ом.

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

Уровни сигналов

Порт RS-485 применяет балансную схему передачи данных. Другими словами, уровни напряжения на сигнальных цепях А и В изменяются в противофазе. С помощью датчика обеспечивается уровень сигнала, составляющий 1.5 В, с учетом предельной нагрузки. Кроме того, предусмотрено не более 6 В в том случае, когда устройство функционирует на холостом ходу. Уровень напряжения замеряется дифференциально. В месте пребывания приемника минимальный уровень получаемого сигнала должен быть не меньше 200 мВ.

Смещение

Когда наблюдается отсутствие сигнала на сигнальных цепях, осуществляется небольшое смещение. Ним обеспечивается защита приемника в случае ложного срабатывания. Специалисты советуют выполнять смещение слегка больше 200 мВ, потому что это значение считается соответствующим зоне недостоверности входного сигнала по стандарту. В такой ситуации цепь А приближается к положительному полюсу источника, а цепь В подтягивается к общему.

Пример

Соответствуя требуемому смещению и напряжению источника питания, выполняется расчет номиналов резисторов. Например, если следует получить смещение, находящееся на уровне 250 мВ при задействовании терминальных резисторов, RT = 120 Ом. Стоит при этом отметить, что источник обладает напряжением 12 В. С учетом того, что в этом случае два резистора подключены параллельно друг другу и совершенно не принимают во внимание нагрузку со стороны приемника, ток смещения достигает 0.0042. В это же время общее сопротивление цепи смещения равняется 2857 Ом. Rсм при этом будет составлять около 1400 Ом. Таким образом, потребуется выбрать ближайший номинал. Примером будет взят резистор 1.5 кОм. Он необходим для смещения. Кроме того, используется внешний резистор на 12 вольт.

Также необходимо отметить и то, что в системе существует развязанный выход блока питания контроллера, который представляет собой главное звено в собственном сегменте цепи. Правда, имеются и другие варианты выполнения смещения, где задействован преобразователь RS-485 и иные элементы, однако все равно следует учитывать то, что узел, обеспечивающий смещение, иногда будет отключаться или в конечном итоге полностью удалится из сети. Когда существует смещение, потенциал цепи А на полностью холостом ходу считается положительным по отношению к цепи В. Это выступает в качестве ориентира при подключении нового оборудования к кабелю без использования маркировки проводов.

Неправильная разводка и искажения

Осуществление рекомендаций, указанных выше, дает возможность достичь корректной трансляции электрических сигналов в разные точки сети, когда в виде основы задействован протокол RS-485. Если хотя бы одно из требований не будет выполнено, возникает искажение сигнала. Самые заметные искажения появляются тогда, когда скорость обмена информацией выше 1 Мбит/с. Правда, даже при меньших скоростях не рекомендуется пренебрегать данными советами. Это правило действует и при нормальном функционировании сети.

Как программировать?

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

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

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

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

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

Конфигурация формата «шина»

Представленный интерфейс имеет возможность объединять устройства по формату «шина», когда все оборудование соединяется при использовании одной пары проводов. Это предусматривает то, что линия связи обязательно должна согласовываться оконечными резисторами двух концов. Чтобы это обеспечить, необходимо установить резисторы, которые характеризуются сопротивлением 620 Ом. Они монтируются всегда на первом и последнем устройстве, подсоединенном к линии.

Как правило, современные устройства имеют встроенное согласующее сопротивление. Если возникнет необходимость, его можно подключить в линию при помощи установки специальной перемычки на плату прибора. Стоит отметить, что состояние поставки перемычки сначала установлены, поэтому требуется снять их со всех устройств, кроме первого и последнего. Необходимо также заметить, что в преобразователях-повторителях модели С2000-ПИ для отдельного выхода согласующее сопротивление активируется с применением переключателя. Что касается устройств С2000-КС и С2000-К, которые характеризуются встроенным согласующим сопротивлением, перемычки, требуемой для его подключения, не существует. Чтобы обеспечить длинную линию связи, желательно использовать специализированные повторители-ретрансляторы, которые предварительно оснащены полностью автоматическими переключениями направления передачи.

Конфигурация формата «звезда»

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

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

Что следует учитывать?

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

Таким образом, необходимо исключить возможность заземления цепи 0 В или же заземлять эту цепь в определенной точке. Кроме того, следует принимать во внимание возможность взаимосвязи между 0 В и цепью защитного заземления, которая присутствует оборудовании, используемом в системе ОПС. Стоит отметить, что на объектах, где характерна относительно тяжелая электромагнитная обстановка, существует возможность подключиться этой сети путем использования кабеля «экранированная витая пара». Остается подчеркнуть, что в данной ситуации может существовать меньшая предельная дальность, потому что емкость провода считается более высокой.

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

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

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

Следующий раздел предназначен в первую очередь для тех, кто не знаком с RS-485.

RS-485: история и описание

Стандарт RS-485 был совместно разработан двумя ассоциациями производителей: Ассоциацией электронной промышленности (EIA - Electronics Industries Association) и Ассоциацией промышленности средств связи (TIA - Telecommunications Industry Associastion). EIA некогда маркировала все свои стандарты префиксом "RS" (Рекомендованный стандарт). Многие инженеры продолжают использовать это обозначение, однако EIA/TIA официально заменил "RS" на "EIA/TIA" с целью облегчить идентификацию происхождения своих стандартов. На сегодняшний день, различные расширения стандарта RS-485 охватывают широкое разнообразие приложений.

Стандарты RS-485 и RS-422 имеют много общего, и поэтому их часто путают. Таблица 1 сравнивает их. RS-485, определяющий двунаправленную полудуплексную передачу данных, является единственным стандартом EIA/TIA, допускающим множественные приемники и драйверы в шинных конфигурациях. EIA/TIA-422, с другой стороны, определяет единственный однонаправленный драйвер с множественными приемниками. Элементы RS-485 обратно совместимы и взаимозаменяемы со своими двойниками из RS-422, однако драйверы RS-422 не должны использоваться в системах на основе RS-485, поскольку они не могут отказаться от управления шиной.

Таблица 1. Стандарты RS-485 и RS-422

RS-422 RS-485
Режим работы Дифференциальный Дифференциальный
Допустимое число Tx и Rx 1 Tx, 10 Rx 32 Tx, 32 Rx
Максимальная длина кабеля 1200 м 1200 м
Максимальная скорость передачи данных 10 Мбит/с 10 Мбит/с
Минимальный выходной диапазон драйвера ± 2 В ± 1.5 В
Максимальный выходной диапазон драйвера ± 5 В ± 5 В
Максимальный ток короткого замыкания драйвера 150 мА 250 мА
Сопротивление нагрузки Tx 100 Ом 54 Ом
Чувствительность по входу Rx ± 200 мВ ± 200 мВ
Максимальное входное сопротивление Rx 4 кОм 12 кОм
Диапазон напряжений входного сигнала Rx ± 7 В от -7 В до +12 В
Уровень логической единицы Rx > 200 мВ > 200 мВ
Уровень логического нуля Rx < 200 мВ < 200 мВ

Защита от электростатических разрядов

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

Заряженная емкость человеческого тела позволяет человеку уничтожать интегральную схему простым ее касанием. Такой контакт запросто может произойти при прокладке и подключении интерфейсного кабеля. Для защиты от таких разрушительных воздействий, интерфейсные микросхемы MAXIM включают "ESD структуры". Эти структуры защищают выходы передатчиков и входы приемников в приемопередатчиках RS-485 от уровней ESD до ±15кВ.

Чтобы гарантировать заявленную защиту от ESD, Maxim осуществляет многократное тестирование положительных и отрицательных выводов питания с шагом 200В, для проверки последовательности уровней до ±15кВ. Устройства этого класса (отвечающие спецификациям модели человеческого тела (Human Body Model) или IEC 1000-4-2) маркируются в обозначении изделия дополнительным суффиксом "E".

Допустимая нагрузка драйвера RS-485/RS-422 количественно определяется в терминах единичной нагрузки, которая, в свою очередь, определяется как входной импеданс одного стандартного приемника RS-485 (12кОм). Таким образом, стандартный драйвер RS-485 может управлять 32 единичными нагрузками (32 параллельных 12-килоомных нагрузки). Однако для некоторых приемников RS-485 входное сопротивление является более высоким - 48 кОм (1/4 единичной нагрузки) или даже 96 кОм (1/8 единичной нагрузки) - и, соответственно, к одной шине могут быть подключены сразу 128 или 256 таких приемников. Вы можете подключить любую комбинацию типов приемников, если их параллельный импеданс не превышает 32 единичных нагрузки (т.е. суммарное сопротивление не меньше 375 Ом).

Последствия высоких скоростей

Более быстрые передачи требуют более высоких скоростей нарастания напряжения на выходе драйвера, а они, в свою очередь, производят большие уровни электромагнитных помех (EMI). Некоторые приемопередатчики RS-485 сводят EMI к минимуму, ограничивая их скорости нарастания. Меньшие скорости нарастания также помогают контролировать отражения, вызванные быстрыми переходными процессами, высокими скоростями передачи данных или длинными линиями связи. Основой для минимизации отражений является использование согласующих резисторов с номиналами, соответствующими волновому сопротивлению кабеля. Для обычных кабелей RS-485 (витая пара проводов 24AWG) это означает размещение 120-омных резисторов на обоих концах линии связи.

Куда уходит вся мощность?

Очевидным источником потери мощности является ток покоя приемопередатчика (IQ), который в современных устройствах значительно снижен. В таблице 2 токи покоя малопотребляющих КМОП приемопередатчиков сравниваются с являющимся промышленным стандартом устройством 75176.

Таблица 2. Сравнение токов утечки для различных приемопередатчиков RS-485

Другая характеристика энергопотребления приемопередатчиков RS-485 проявляется при отсутствии нагрузки, разрешении выхода драйвера и присутствии периодического входного сигнала. Поскольку открытых линий в RS-485 нужно избегать всегда, драйверы "долбят" свои выходные структуры при каждом переключении выхода. Это короткое включение обоих выходных транзисторов немедленно вызывает бросок тока питания. Достаточно большой входной конденсатор сглаживает эти броски, производя действующий (RMS) ток, который растет вместе со скоростью передачи данных до своего максимального значения. Для приемопередатчиков MAX1483 этот максимум равен примерно 15 мА.

Подключение стандартного приемопередатчика RS-485 к минимальной нагрузке (еще один приемопередатчик, два согласующих и два защитных резистора) позволяет измерить зависимость тока питания от скорости передачи данных в более реальных условиях. На рисунке 2 представлена зависимость ICC от скорости передачи данных для MAX1483 при следующих условиях: стандартные резисторы на 560 Ом, 120 Ом и 560 Ом, VCC = 5В, DE = /RE\ = VCC, и кабель длиной 300 м.

Как вы можете видеть из рисунка 2, ток потребления возрастает приблизительно до 37мА даже при чрезвычайно низких скоростях передачи данных; это вызвано прежде всего добавлением согласующих резисторов и резисторов защитного смещения. Для малопотребляющих приложений, это должно продемонстрировать важность типа используемого согласования, равно как и способа достижения отказоустойчивости. Отказоустойчивость обсуждается в следующем разделе, а подробное описание согласования имеется в разделе "Злые шутки согласования".

Отказоустойчивость

При напряжениях на входах приемников RS-485 в диапазоне от -200мВ до +200мВ, выходное состояние остается неопределенным. Иными словами, если дифференциальное напряжение на стороне RS-485 в полудуплексной конфигурации равно 0В и ни один из приемопередатчиков не ведет линию (или соединение разорвано), тогда логическая единица и логический ноль на выходе равновероятны. Для обеспечения определенного состояния на выходе в таких условиях, большинство современных приемопередатчиков RS-485 требуют установки резисторов защитного смещения: резистор задания начального высокого уровня (pullup) на одну линию (A) и низкого уровня (pulldown) на другую (B), как это показано на рисунке 1. Исторически, резисторы защитного смещения в большинстве схем указывались с номиналом 560 Ом, однако для снижения энергопотерь (когда согласование производится только на одном конце линии связи) это значение можно увеличить приблизительно до 1,1 кОм. Некоторые разработчики устанавливают на обоих концах резисторы с номиналами от 1,1кОм до 2,2кОм. Здесь приходится искать компромисс между помехоустойчивостью и энергопотреблением.

Рисунок 1. Три внешних резистора формируют цепь согласования и защитного смещения для данного приемопередатчика RS-485.

Рисунок 2. Зависимость тока питания приемопередатчика MAX1483 от скорости передачи данных.

Производители приемопередатчиков RS-485 прежде исключали необходимость использования внешних смещающих резисторов, обеспечивая внутренние резисторы положительного смещения по входам приемника, однако такой подход был эффективен только для решения проблемы разомкнутых цепей. Резисторы положительного смещения, используемые в этих псевдоотказоустойчивых приемниках были слишком слабы для установления уровня на выходе приемника в согласованной шине. Другие попытки избежать использования внешних резисторов за счет изменения пороговых значений приемника на 0В и -0,5В нарушали спецификацию RS-485.

Семейство приемопередатчиков MAX3080 и MAX3471 компании Maxim решило обе эти проблемы, определив точный диапазон пороговой чувствительности от -50мВ до -200мВ, устранив, таким образом, потребность в резисторах защитного смещения, сохраняя при этом полное соответствие стандарту RS-485. Эти микросхемы гарантируют, что 0В на входе приемника вызовет высокий логический уровень на выходе. Более того, эта конструкция гарантирует известное состояние выхода приемника для условий замкнутой и разорванной линии.

Как было показано в таблице 2, приемопередатчики сильно различаются значениями их токов покоя. Таким образом первым шагом в деле сохранения энергии должен стать выбор малопотребляющего устройства, такого, как MAX3471 (2,8 мкА при отключенном драйвере, до 64 Кбит/с). Поскольку потребление энергии существенно возрастает при передаче данных, другой целью является минимизация времени работы драйверов за счет передачи коротких телеграмм (блоков данных, прим. пер.) с длительными периодами ожидания между ними. В таблице 3 представлена структура типовой телеграммы последовательной передачи.

Таблица 3. Телеграмма последовательной передачи

Система на основе RS-485, использующая приемники в одну единичную нагрузку (до 32 адресуемых устройств), может, например, иметь следующие биты: 5 битов адреса, 8 битов данных, стартовые биты (все кадры), стоповые биты (все кадры), биты четности (необязательные), и биты CRC (необязательные). Минимальная длина телеграммы для такой конфигурации - 20 битов. Для безопасных передач, вы должны послать дополнительную информацию, такую как размер данных, адрес отправителя и направление, которая увеличит длину телеграммы до 255 байтов (2040 битов).

Подобное изменение длины телеграммы со структурой, определяемой такими стандартами, как X.25, обеспечивает надежность данных за счет увеличения времени использования шины и потребляемой мощности. Например, передача 20 битов при 200 Кбит/с потребует 100 мкс. При использовании MAX1483 для ежесекундной отправки данных на скорости 200 Кбит/с, средний ток составит

(100 мкс * 53 мА + (1 с - 100 мкс) * 20 мкА) / 1 с = 25.3 мкА

Когда приемопередатчик находится в неактивном режиме (idle mode), его драйвер должен быть отключен для минимизации потребляемой мощности. В таблице 4 демонстрируется влияние длины телеграммы на потребляемую мощность одиночного драйвера MAX1483, который работает с определенными перерывами между передачами. Использование режима отключения (shutdown mode) может еще больше снизить потребляемую мощность в системе, использующей технологию опроса через фиксированные промежутки времени или более длинные, детерминированные перерывы между передачами.

Таблица 4. Соотношение между длиной телеграммы и потребляемым током при использовании драйвера MAX1483

В дополнение к этим программным соображениям, аппаратные средства предлагают множество мест для усовершенствования в части энергопотребления. На рисунке 3 сравниваются токи, потребляемые различными трансиверами при передаче сигнала прямоугольной формы по 300-метровому кабелю с активными драйверами и приемниками. 75ALS176 и MAX1483 используют стандартную согласующую цепь 560Ом/120Ом/560Ом на обоих концах линии связи, в то время, как "истино безотказные" ("true failsafe") устройства (MAX3088 и MAX3471) имеют лишь 120-омные согласующие резисторы на обоих концах шины. При 20 Кбит/с токи потребления ранжируются от 12,2мА (MAX3471 с напряжением питания VCC = 3.3V) до 70мА (75ALS176). Таким образом, значительное сокращение потребления возникает немедленно, как только вы выбираете малопотребляющее устройство со свойством "истиной безотказности", которая, кроме того, исключает необходимость установки резисторов защитного смещения (на землю и на линию питания VCC). Убедитесь, что приемник выбранного вами приемопередатчика RS-485, выдает на выход правильные логические уровни для условий как замкнутой, так и разомкнутой цепи.

Рисунок 3. Микросхемы приемопередатчиков сильно отличаются зависимостью тока потребления от скорости передачи данных.

Злые шутки согласования

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

Таблица 5. Использование согласующих резисторов и резисторов защитного смещения увеличивает потребляемый ток

MAX1483 MAX3088 MAX3471 SN75ALS176
I VCC (no RT) 60 мкА 517 мкА 74 мкА 22 мкА
I VCC (RT =120) 24 мкА 22.5 мкА 19.5 мкА 48 мкА
I VCC (RT = 560-120-560) 42 мкА N/A N/A 70 мкА

Исключение согласования

Первый способ уменьшения потребляемой мощности состоит в том, чтобы вообще устранить согласующие резисторы. Этот вариант возможен только для коротких линий связи и низких скоростей передачи данных, которые позволяют отражениям успокоиться еще до того, как данные будут обработаны приемником. Как показывает практика, согласование не нужно, если время нарастания сигнала по крайней мере в четыре раза превосходит время задержки одностороннего прохождения сигнала через кабель. Следующие шаги используют это правило для вычисления максимальной допустимой длины несогласованного кабеля:

  • Шаг 1. Для рассматриваемого кабеля найдите скорость одностороннего прохождения сигнала, обычно предоставляемую производителем кабеля как процентное отношение к скорости света в свободном пространстве (c = 3x10 8 м/с). Типовое значение для стандартного кабеля в поливинилхлоридной изоляции (состоящего их витой пары #24 AWG) составляет 203мм/нс.
  • Шаг 2 . Из спецификации приемопередатчика RS-485 найдите его минимальное время нарастания (t r min). Например, для MAX3471 оно равно 750нс.
  • Шаг 3 . Разделите это минимальное время нарастания на 4. Для MAX3471 получим t r min /4 = 750нс/4 = 187.5нс.
  • Шаг 4 . Вычислите максимальную протяженность кабеля, для которой не требуется согласование: 187.5нс (230мм/нс) = 38м.

Таким образом, MAX3471 может обеспечить приличное качество сигнала при передаче и приеме на скорости 64Кбит/с по 38-метровому кабелю без согласующих резисторов. Рисунок 4 демонстрирует достигнутое драматическое снижение потребления MAX3471, когда 30 метров кабеля без согласующего резистора используются вместо 300 метров кабеля и 120 согласующих резисторов.

Рисунок 4. Согласующие резисторы - основной потребитель мощности.

RC-согласование

На первый взгляд, способность RC согласования блокировать постоянный ток является весьма многообещающей. Вы найдете, однако, что эта техника налагает определенные условия. Согласование состоит из последовательной RC цепочки, включенной параллельно дифференциальным входам приемника (A и B), как показано на рисунке 5. Несмотря на то, что R всегда равно волновому сопротивлению кабеля (Z 0), выбор C требует некоторых рассуждений. Большая величина C обеспечивает хорошее согласование, позволяя любому сигналу видеть R, которое соответствует Z0, однако большие значения также увеличивают пиковое значение выходного тока драйвера. К сожалению, более длинные кабели требуют больших значений емкости C. Целые статьи были посвящены определению номинала C для достижения этого компромисса. Вы можете найти детальные уравнения на эту тему в руководствах, ссылки на которые приведены в конце настоящей статьи.

Рисунок 5. RC согласование снижает потребление, однако требует тщательного выбора номинала C.

Среднее напряжение сигнала - другой важный фактор, который часто игнорируется. Если только среднее напряжение сигнала не сбалансировано по постоянному току, эффект зубчатого контура (stair-stepping effect) по постоянному току вызывает значительные дрожания из-за эффекта, известного как "межсимвольная интерференция." Если коротко, то RC согласование эффективно для снижения потребления, однако оно склонно к разрушению качества сигнала. Поскольку RC согласование налагает так много ограничений на свое использование, лучшая альтернатива во многих случаях - отсутствие согласования вообще.

Согласование на диодах Шотки

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

Цепь согласования на диодах Шотки впустую рассеивает незначительную энергию, поскольку они проводят только при наличии положительных и отрицательных выбросов. С другой стороны, стандартное резистивное согласование (как с резисторами защитного смещения, так и без оных), постоянно рассеивает мощность. Рисунок 6 иллюстрирует использование диодов Шотки для борьбы с отражениями. Диоды Шотки не обеспечивают отказоустойчивую работу, однако уровни порогового напряжения, выбранные в приемопередатчиках MAX308X и MAX3471, дают возможность реализовать отказоустойчивую работу с этим типом согласования.

Рисунок 6. Несмотря на дороговизну, цепь согласования на диодах Шотки имеет много достоинств.

Диод Шотки, наилучшее доступное приближение к идеальному диоду (нулевое прямое напряжение Vf, нулевое время включения tON и нулевое время обратного восстановления trr), представляет большой интерес в качестве замены энергоемких согласующих резисторов. Недостаток такого согласования в системах на основе RS-485/RS-422 заключается в том, что диоды Шотки не могут подавлять все отражения. Как только отраженный сигнал угаснет ниже прямого напряжения диода Шотки, его энергия останется незатронутой согласующими диодами и сохранится до тех пор, пока не будет рассеяна кабелем. Существенно или нет это затяжное возмущение, зависит от величины сигнала на входах приемника.

Главный недостаток Шотки-терминатора - его стоимость. Одна точка согласования требует двух диодов. Поскольку шина RS-485/RS-422 является дифференциальной, это число снова умножается на два (Рисунок 6). Использование на шине многжественных Шотки-терминаторов не является необычным.

Терминаторы на диодах Шотки дают много преимуществ для систем на основе RS-485/RS-422, и экономия энергии - главное из них (Рисунок 7). Не нужно ничего вычислять, поскольку специфицированные ограничения для длины кабеля и скорости передачи данных будут достигнуты раньше, чем какие либо ограничения Шотки-терминатора. Другое преимущество заключается в том, что множественные Шотки-терминаторы в различных ответвлениях и на входах приемников улучшают качество сигнала без загрузки коммуникационной шины.

Рисунок 7. Потребляемый ток в системах RS-485 сильно зависит от скорости передачи данных и типа согласования.

Подведение итогов

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

Для более низких скоростей и более коротких кабелей разница в энергопотреблении огромна: Передача данных со скоростью 60 Кбит/с по 30-метровому кабелю при использовании стандартного приемопередатчика SN75ALS176 со 120-омными согласующими резисторами потребует от системы электропитания ток 70мА. С другой стороны, использование MAX3471 при тех же самых условиях потребует только 2,5мА от источника питания.

Вверх