Интерфейс RS-485, наверное, самый распространенный интерфейс для организации малых сетей промышленной автоматизации.
Этому способствуют его высокие технические характеристики при простоте реализации. Интерфейс RS-485 позволяет простыми аппаратными средствами создавать сети:
- шинной топологии ;
- с витой парой в качестве среды передачи данных;
- длина линии связи может достигать 1200 м;
- скорость передачи данных до 10 Мбит/сек.
Для управления распределенными системами на базе RS-485 могут быть использованы многие стандартные протоколы, в том числе и ModBus. Интерфейс позволяет создавать сети и со специализированными протоколами. Для аппаратной реализации RS-485 достаточно добавить к микроконтроллеру только одну микросхему малой степени интеграции.
RS-485 описан в стандарте ANSI TIA/EIA–485–A :1998. Стандарт задает только электрические и временные параметры. Он не оговаривает:
- протокол обмена;
- типы кабелей и разъемов;
- гальваническую развязку абонентов сети.
Основные параметры стандарта RS-485.
Параметр | Значение |
Топология сети | Шина |
Линия связи | Витая пара |
Гальваническая развязка | Стандартом не оговаривается |
Режим обмена данными | Полудуплекс |
Способ передачи данных | Дифференциальные сигналы |
Число абонентов сети | До 32, может быть увеличено за счет повторителей |
Максимальная длина линии связи | 1200 м |
Максимальная скорость передачи данных | 10 мБит/сек |
Способ передачи данных RS-485.
Стандарт интерфейса RS-485 определяет следующие сигналы:
- A – неинвертирующий;
- B – инвертирующий;
- C – общая линия (необязательный сигнал).
Иногда используют альтернативные обозначения сигналов:
В интерфейсе применяется дифференциальный способ передачи данных. Информация передается с помощью двух противофазных сигналов A и B, а состояние шины RS-485 определяется разностью потенциалов между линиями A и B относительно общей линии C. Напряжение каждой линии относительно земли может быть любым, но в пределах диапазона -7 … +12 В.
RS-485 требует применения дифференциальных приемников и передатчиков.
Передатчики формируют 2 противофазных сигнала с разностью напряжений не менее 1,5 В (согласно стандарту).
Для приема данных используются дифференциальные приемники, которые выделяют разность напряжений между линиями A и B. При разности более 200 мВ, но до +12 В состояние линии считается равным логической единицы. При разности напряжений менее – 200 мВ, но не ниже – 7 В линия находится в состоянии логического нуля.
- Va > Vb соответствует лог. 1;
- Va 0
Видео:интерфейс rs 485 и микроконтроллерыСкачать
Статьи и обзоры систем автоматизации и безопасности
RS-485 для чайников
Видео:Лекция 256. Интерфейс RS-485Скачать
Вступление
Как следует из названия, статья эта — попытка объяснить начинающим что к чему и помочь обойти грабли, на которые уже кто-то наступал. Если кто-нибудь, потратив 15 минут на прочтение, сэкономит пару дней на отладке системы, я буду считать свою задачу выполненной. Столкнувшись с необходимостью организовать связь между несколькими устройствами на базе микроконтроллеров, я стал собирать информацию по этой теме. Из конструктивных соображений определился с методом связи — последовательный канал и линия связи на основе интерфейса RS-485. Затем последовал отсев излишних теоретических рассуждений и отбор практических рекомендаций по наладке линии связи. Особое внимание я уделял описанию различных «подводных камней». На бумаге, как известно, всегда все работает, а вот на практике вскрываются неприятные особенности, притом нигде не описанные. Так и оказалось — сделали все по инструкции, а потом не одну неделю отлавливали глюки. В этой статье я попытался собрать начальную информацию об устройствах, полезные добытые сведения (с ссылками) и собственный опыт.
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
- 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мВ. Это смещение при отсутствии входных сигналов обеспечивает на выходе приемника логическую «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 : — 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. Дополнительные меры защиты от помех
Диагностика. Если есть возможность выбора маршрута прокладки кабеля с замером уровня помех — не стоит ей пренебрегать. Даже если программная коррекция ошибок успешно справляется со сбоями, нужно сделать все, чтобы физически снизить уровень помех в линии. Полезно предусмотреть в программе диагностический режим, в котором накапливалась бы статистика сбоев, отрабатываемых программной коррекцией (провал по контрольной сумме или тайм-ауту). Если сбоев слишком много, желательно поработать над поиском и устранением их причины. Снижение скорости связи (бодрейта) во многих случаях повышает помехоустойчивость. Не имеет смысла устанавливать скорость обмена больше, чем необходимо для нормальной работы системы, если только не требуется запас на модификацию.
Прокладка кабеля. По возможности не следует проводить витую пару вдоль силовых кабелей, тем более в общей оплетке, так как существует опасность наводок от силовых токов через взаимную индуктивность. Силовое оборудование, коммутирующее большие токи, также является источником помех. Сигнальные цепи питания оптоизолированной линии лучше не использовать для питания чего-либо еще, так как протекающие по сигнальной «земле» лишние токи могут вносить в линию дополнительный шум. Некачественная витая пара с асимметричными характеристиками проводников — еще один источник проблем. Чем меньше шаг витой пары (чаще перевиты провода) — тем лучше. Даже если не применяется опторазвязанная линия или дренаж, стоит сразу провести кабель с запасной витой парой — на случай, если произойдет обрыв первой или все же понадобится провести сигнальную землю.
Экранирование и заземление. В промышленных условиях, тяжелых в плане электромагнитного шума, рекомендуется применять экранированный кабель с витой парой. Экран, охватывающий проводники линии, защищает их от паразитных емкостных связей и внешних магнитных полей. Экран следует заземлять только в одной из крайних точек линии. Заземление в нескольких точках недопустимо: из-за разности потенциалов местных «земель» по экрану могут протекать существенные токи, которые будут создавать наводки на сигнальные проводники. Некоторые разработчики рекомендуют для защиты от радиопомех дополнительно включать в нескольких местах между экраном и заземлением специальные высокочастотные конденсаторы емкостью 1. 10 нФ.
Индуктивные фильтры. Если в линию все же попадают высокочастотные помехи, их можно отсеять индуктивными фильтрами. Существуют специальные индуктивные фильтры, предназначенные для подавления высокочастотных помех в линиях связи. Они последовательно включаются в линию непосредственно у приемников. Например, B82790-S**** фирмы Epcos, выполненный в виде четырехполюсника, через который витая пара подсоединяется к приемнику.
Видео:Что такое интерфейс RS485? Интерфейс RS485 и оборудование BolidСкачать
Заключение
Я не претендую на полноту сведений о физических и программных тонкостях связи по интерфейсу RS-485. Однако, полагаю, что еще одно изложение темы, немного по другому сформулированное, и к тому же дополненное личным опытом не будет лишним для разработчиков, только начинающих разбираться в этой области. Надеюсь, приведенная информация поможет Вам в организации беспроблемной и надежной связи.
🎬 Видео
05 Интерфейс RS 232 и RS 485Скачать
Создаем модуль RS485 интерфейса. Пара слов о допущенных ошибках и правильном выборе оптопары.Скачать
Интерфейсы RS-485Скачать
Проверка CRC8 при передаче данных по RS-485Скачать
7. Подключение Modbus-модулей к шине RS-485Скачать
Цифровые интерфейсы и протоколыСкачать
Лекция 18: RS485Скачать
Подключение частотника Кастон к ПР200 по интерфейсу RS-485Скачать
#387 САМОДЕЛКА Перехват протокола RS-232 а также RS-485, RS-422, USB, UsartСкачать
Modbus RS485 MAX485 шум в линии - лечимСкачать
RS485 описание сигнала и пример работы на PIC контроллереСкачать
RS-485. Обзор интерфейса передачи данныхСкачать
Лекция "Интерфейсы (часть I). RS-232/422/485. SPI"Скачать
USB Serial 485 Communication module Industrial Grade USB-232/485 Signal ConverterСкачать
Повторитель интерфейса RS-485 СОВА (РИ4851)Скачать
АТБ-2100 подключение модуля расширения с помощью шины RS-485Скачать
Конвертор RS-485 в оптику S200 | ТРЭИ | TREIСкачать