Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





RS-485
Имеется родственный RS-232 стандарт RS-422, который во всем похож на RS-232, но использует две витые пары (раздельно для передачи и приема), в которых работает положительная двуполярная логика: +2...+ 10 В (логическая единица) и -2...-10 В (логический ноль). Но этот стандарт применяется относительно редко — гораздо чаще встречается RS-485. Стандарты RS-485 и RS-422 могут работать на скоростях до 10 Мбит/с и применяются в промышленных высоконадежных системах с большими объемами передаваемой информации.

В основе интерфейса RS-485 лежит принцип дифференциальной передачи данных по двум проводам одной витой пары (обычно с волновым сопротивлением 120 Ом), условно называемыми А и В. По одному из них (А) идет оригинальный сигнал, а по другому (В) его инвертированная копия, т. е. когда на одном проводе высокий уровень сигнала (1,5-5 В), то на другом низкий (<1,5 В) и наоборот. Таким образом между этими двумя проводами всегда есть разность потенциалов, равная полному размаху напряжения (номинально 5 В, максимально допускается обычно от 7 до 12 В). Логическая единица обозначается тем, что эта разность положительна, при логическом нуле она становится отрицательной. В RS-485 может быть обеспечен только полудуплексный режим, когда передача и прием разделены по времени. Зато интерфейс RS-485 истинно двухпроводный (третий проводник обычно присутствует, но лишь как экран, соединяющий "земли" во избежание синфазных перенапряжений).

Для преобразования уровней UART/RS-485 применяют специальные приемопередатчики (МАХ3485, МАХ487 и др.). К одной линии формально можно подсоединить сколько угодно устройств, но передатчиком в каждый момент времени может быть только одно. Каждый порт RS-485 (в т. ч. преобразователи UART/RS-485) имеет управляющие входы— разрешение приемника

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

. Подробности
Управление линией RS-485, как полудуплексной, от обычного UART имеет свою специфику. И компьютерный СОМ-порт, и даже специальные микросхемы (16550 и аналогичные) предполагают работу в полнодуплексном режиме, поэтому у них нет специального сигнала, позволяющего обнаружить, что аппарат-но передача уже закончена. UART в составе AVR, к счастью, имеет такой сигнал: "передача завершена" (прерывание ТХ complete). Но в других случаях обычный сигнал "регистр данных пуст" возникает, как только содержимое буферного регистра перепишется в освободившийся сдвиговый регистр, и дальше программист уже не владеет ситуацией. Поэтому установка уровня на линиях DE/RE приемного устройства по этому сигналу (для СОМ-порта ПК это обычно делается установкой линии DTR, см. приложение 4) может переключить его на передачу ранее, чем будет принят последний байт. Чтобы избежать такой ситуации, при управлении интерфейсом RS-485 в ПК следует искусственно устанавливать паузу перед переключением приемника на передачу, соответствующую скорости обмена. Она равна (в секундах) единице поделенной на скорость обмена и умноженной на число битов в посылке (для режима 8п1 это число равно/10). Иногда следует учитывать наличие аппаратного буфера FIFO (когда с точ/ки зрения программы байты передаются мгновенно, но на самом деле накапливаются в буфере), но рассмотрение этого вопроса выходит за рамки данной/книги.

На практике, естественно, число устройств ограничено — подробности см. в [17]. Там же имеются рекомендации по согласованию линии с помощью резисторов (120 Ом, включаются между проводниками витой пары). При соблюдении всех правил RS-485 может .передавать данные со скоростью 62,5 кбит/с на расстояние 1200 м или 10 Мбит/с на расстояние 10 м.

Необходимо иметь в виду, что при небольших расстояниях (несколько десятков метров) и низких скоростях обмена (меньше 38 400 бод) согласование можно не делать. Однако не следует забывать, что при всех подключенных устройствах, настроенных на прием (когда их входное сопротивление велико), в линии могут "гулять" помехи, превышающие уровень пороговой чувствительности приемника (составляющий, согласно стандарту, 200 мВ), а это может вызвать ложные срабатывания. При наличии такой опасности необходимо по крайней мере на одном из устройств устанавливать "подтягивающие" резисторы (последовательно с согласующим резистором), так, чтобы разность между линиями А и В всегда была более 0,2 В. Причем линию А нужно подтягивать к питанию, а В — к "земле" (что равносильно состоянию логической единицы, т. е. стоповому биту). Если согласующий резистор в каждом устройстве 120 Ом, то при не более чем 10 подключенных устройствах величина "подтягивающих" резисторов должна быть около 560 Ом.



     
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru