Перейти к содержанию

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

RS-485 — дифференциальная многоточечная шина: до 32 стандартных узлов на одной витой паре, около 1200 м на скоростях до 100 кбит/с и до 10 Мбит/с на коротких линиях. Ниже — параметры стандарта, правила разводки, расчёт смещения и подключение к микроконтроллеру.

Обновлено Редакция GAW

RS-485 — стандарт физического уровня для передачи цифровых данных по симметричной линии, к которой подключено несколько передатчиков и приёмников. Официальное название — TIA/EIA-485-A, международный аналог — ISO 8482. Информацию несёт не напряжение провода относительно земли, как в RS-232, а разность напряжений между проводами A и B: передатчик выдаёт не меньше 1,5 В, приёмник уверенно различает уже ±200 мВ. Поэтому одна витая пара связывает десятки устройств на расстоянии больше километра — в автоматике цехов, системах учёта, вентиляции, освещения и сценической техники.

Стандарт описывает только электрику: уровни, нагрузки, синфазный диапазон. Формат кадра, адресация и контроль ошибок задаёт протокол поверх него — Modbus RTU, PROFIBUS DP, DMX512, BACnet MS/TP или фирменный. Надпись «RS-485» на двух приборах ещё не значит, что они поймут друг друга.

Коротко

  • Уровни: передатчик — не меньше 1,5 В на нагрузке 54 Ом, приёмник — порог ±200 мВ.
  • Синфазный диапазон: −7…+12 В на каждой линии относительно земли приёмника.
  • Нагрузка: до 32 единичных нагрузок (UL) — 32 обычных трансивера или до 256 трансиверов на 1/8 UL.
  • Длина и скорость: около 1200 м на скоростях до ~100 кбит/с или 10 Мбит/с на ~12 м — но не одновременно.
  • Кабель: витая пара 120 Ом, терминаторы 120 Ом только на двух концах, плюс общий провод.
  • Режимы: полудуплекс по одной паре (2-wire) или дуплекс по двум (4-wire).

Как работает RS-485

Узел шины — трансивер. Его передатчик (driver) превращает логический сигнал DI в разность напряжений на линиях A и B, приёмник (receiver) сравнивает A и B и выдаёт логический уровень RO. Помеха от соседнего силового кабеля наводится на оба провода витой пары почти одинаково — это синфазное напряжение, и дифференциальный приёмник его вычитает. По той же причине симметричная линия слабо излучает: поля двух проводов с противофазными токами почти компенсируют друг друга.

Передатчик RS-485 умеет отключаться — переходить в высокоимпедансное состояние по сигналу DE. Это и делает шину многоточечной: говорит один узел, остальные слушают. Если включатся два передатчика сразу, уровни на линии не определены: ограничение тока и тепловая защита в трансиверах спасают микросхемы, но не данные. Поэтому очерёдность обеспечивает протокол — обычно по схеме «ведущий — ведомые».

Двухпроводная и четырёхпроводная схемы

  • 2-wire, полудуплекс. Одна пара; у полудуплексного трансивера выходы передатчика внутри соединены со входами приёмника. Узел либо передаёт, либо принимает. Самый распространённый вариант, в том числе для Modbus.
  • 4-wire, дуплекс. Две пары: по одной ведущий передаёт всем ведомым, по другой ведомые отвечают ведущему. Ведущий может передавать и принимать одновременно, а ведомые по-прежнему включают передатчики по очереди. Каждую пару терминируют на обоих концах.

В обоих случаях нужен ещё один проводник — общий провод (signal common, GND). Почему он обязателен, разобрано ниже.

Электрические параметры RS-485

ПараметрЗначениеПримечание
Дифференциальное напряжение передатчикане меньше 1,5 В на 54 Омбез нагрузки — не больше 6 В
Синфазное напряжение на выходе передатчикане больше 3 В
Ток короткого замыкания передатчикане больше 250 мАпри напряжении на линии −7…+12 В
Порог приёмника±200 мВмежду −200 и +200 мВ выход не определён
Синфазный диапазон приёмника−7…+12 Внапряжение каждой линии относительно его земли
Единичная нагрузка, 1 UL≈ 12 кОмток входа не больше 1 мА при +12 В и 0,8 мА при −7 В
Нагрузка шиныдо 32 UL1/2, 1/4, 1/8 UL — до 64, 128, 256 трансиверов
Волновое сопротивление кабеля120 Омрекомендация стандарта
Терминаторы2 × 120 Омтолько на концах магистрали

Испытательная нагрузка 54 Ом примерно соответствует двум терминаторам по 120 Ом (вместе 60 Ом), шунтированным входами приёмников. В даташитах её собирают из двух резисторов по 27 Ом; для режима RS-422 — из двух по 50 Ом, и там требование другое: не меньше 2 В на 100 Ом.

Единичная нагрузка — условная мера тока, который вход приёмника (вместе с выключенным передатчиком) отбирает от линии. У первых трансиверов вход был около 12 кОм, отсюда «32 устройства на шине». Современные микросхемы делают входы в 2, 4 и 8 раз высокоомнее — это 1/2, 1/4 и 1/8 UL, и при той же нагрузке на передатчик на шине помещаются 64, 128 или 256 узлов. Трансиверы разных типов можно смешивать, лишь бы в сумме было не больше 32 UL.

Длина линии и скорость передачи

Длина и скорость RS-485 связаны обратной зависимостью. На низких скоростях линию ограничивает сопротивление проводов: когда оно сравнивается с сопротивлением терминаторов, сигнал на дальнем конце падает вдвое (−6 дБ). Для кабеля 22 AWG это происходит примерно на 1200 м — отсюда «4000 футов» во всех справочниках. На высоких скоростях вступают потери кабеля на высоких частотах и время нарастания фронтов: TI указывает 10 Мбит/с для 12 м (40 футов), MaxLinear — около 15 м для скоростей выше 10 Мбит/с.

Для промежуточных скоростей удобна оценка «длина в метрах × скорость в бит/с ≈ 10⁸»: обе крайние точки TI — 100 кбит/с на 1200 м и 10 Мбит/с на 12 м — дают как раз 1,2·10⁸. Это приближение к графику, а не норма. TI в том же руководстве SLLA272 приводит правило ещё строже — L⋅R≤107L \cdot R \le 10^7 — и сама оговаривает, что современный кабель работает заметно лучше. Ещё один ориентир от MaxLinear: время нарастания сигнала не должно превышать трети длительности бита.

СкоростьОриентир длины: L⋅R≈108L \cdot R \approx 10^8, но не больше 1200 м
9600–57 600 бит/с1200 м
115 200 бит/с≈ 870 м
500 кбит/с≈ 200 м
1 Мбит/с≈ 100 м
10 Мбит/с≈ 10–15 м

Если нужно дальше, ставят повторители (repeater): каждый сегмент за повторителем — отдельная шина со своими 32 UL и своими терминаторами.

Кабель и топология шины

Нужна витая пара с волновым сопротивлением около 120 Ом. В пример TI приводит промышленный кабель 22 AWG с волновым сопротивлением 120 Ом и скоростью распространения 78 % от скорости света — около 4,3 нс на метр. Спецификация Modbus требует экранированный кабель, отдельный проводник для общего провода и сечение, достаточное для 1000 м (AWG 24 подходит всегда); кабель категории 5 допускает до 600 м. Экран соединяют с защитным заземлением на одном конце кабеля. На плате и в разъёмах проводники A и B ведут рядом и одинаковой длины, иначе симметрия линии теряется.

Только шина: узлы подключаются цепочкой

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

Шина RS-485: терминаторы на концах, смещение в одной точке, короткие отводыВитая пара A и B и общий провод GND проходят от ведущего узла к последнему. На обоих физических концах пары стоят терминаторы RT1 и RT2 по 120 Ом. У ведущего узла резистор R1 подтягивает линию A к +5 В, резистор R2 — линию B к общему проводу. Узлы подключены к шине короткими отводами.ABGNDRT1120 ОмRT2120 Ом+5 ВR1560 ОмR2560 Омсмещение —в одной точкевитая параZ₀ ≈ 120 Омобщий проводВедущийМК + трансиверУзел 2ведомыйУзел 3ведомыйУзел Nведомый…
Шина RS-485: витая пара A/B и общий провод идут от узла к узлу; терминаторы RT1 и RT2 — только на концах, резисторы смещения R1 и R2 — в одной точке шины.

Отвод (stub) — кусок линии без терминатора, от его конца сигнал отражается. TI предлагает держать электрическую длину отвода меньше 1/10 времени нарастания фронта передатчика:

Lотв≤tr⋅v⋅c10,L_\text{отв} \le \frac{t_r \cdot v \cdot c}{10},

где trt_r — время нарастания выходного сигнала передатчика (по уровням 10–90 %), vv — скорость распространения в кабеле в долях от cc, c=3⋅108c = 3 \cdot 10^8 м/с. Для кабеля с v=0,78v = 0{,}78 это примерно 2,3 см на каждую наносекунду фронта:

Время нарастания trt_rНаибольшая длина отвода
3…40 нс (MAX485)7…94 см
100 нс2,3 м
250 нс (MAX483, MAX487)5,9 м
500 нс11,7 м

Вывод: быстрый трансивер вроде MAX485 (2,5 Мбит/с) на медленной шине — плохая экономия. Если хватает 9600–115 200 бит/с, берите трансивер с ограниченной скоростью нарастания (slew-rate limited): такие прощают отводы и меньше излучают. Протоколы задают и свои пределы: Modbus разрешает отводы не длиннее 20 м, а для многопортового ответвителя на n отводов — по 40/n м на каждый.

Почему звезда не работает

Топология RS-485: шина с короткими отводами и звездаСлева правильная топология: одна линия, к которой узлы 1–4 подключены короткими отводами, терминаторы RT только на двух концах. Справа звезда: четыре ветви расходятся из одной точки, у каждой ветви свой конец и свои отражения, а с терминаторами на всех ветвях передатчик перегружен.Шина — правильноRTRT1234отводы короткие,RT только на двух концахЗвезда — неправильно1234каждая ветвь — длинный отвод с отражениямиRT на всех ветвях — перегрузка передатчика
Шина с короткими отводами и звезда. В звезде у каждой ветви свой неподключённый конец, а терминаторы на всех ветвях перегружают передатчик.

В звезде нет «двух концов». Каждая ветвь — длинный отвод: сигнал отражается от её конца и возвращается в точку разветвления, где встречается с отражениями от других ветвей. Поставить терминатор на каждую ветвь тоже нельзя: передатчик рассчитан на одну пару с двумя терминаторами, а не на три-четыре параллельные, — уровни на линии перестают гарантироваться (Maxim, AN763). Вдобавок в самой точке разветвления волновое сопротивление скачком падает. Если узлы физически разбросаны звездой, кабель всё равно ведут цепочкой — к узлу и обратно — или ставят активный концентратор RS-485, у которого каждый порт — отдельный сегмент со своими терминаторами.

Терминатор 120 Ом: где ставить и когда можно без него

Сигнал бежит по кабелю волной. Если на конце линии сопротивление нагрузки RTR_T не равно волновому Z0Z_0, часть волны отражается с коэффициентом

Γ=RT−Z0RT+Z0.\Gamma = \frac{R_T - Z_0}{R_T + Z_0}.

Разомкнутый конец (RT→∞R_T \to \infty) отражает всё, согласованный (RT=Z0R_T = Z_0) — ничего. Отсюда три правила:

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

Проверить терминацию просто: при выключенном питании всех узлов омметр между A и B должен показать около 60 Ом — два резистора по 120 Ом параллельно, чуть меньше из-за входов приёмников и цепей смещения. 120 Ом — стоит только один терминатор, 40 Ом — три.

Когда терминаторы не нужны

Линия ведёт себя как длинная, когда задержка распространения сравнима с фронтом сигнала. В app note National Semiconductor AN-1031 линию считают длинной, если задержка в одну сторону больше 1/8 времени фронта (от 0 до 100 %). Для быстрого трансивера с фронтами в десятки наносекунд «длинной» оказывается линия уже около метра, для трансивера с фронтом от 250 нс — от 6–7 м.

Но отражения не обязательно ломают связь. UART считывает бит в его середине, а отражения затухают за несколько проходов волны туда и обратно. Пример из руководства B+B: 610 м кабеля со скоростью распространения 0,66 c — проход туда и обратно занимает 6,2 мкс, три прохода — около 18,6 мкс. При 9600 бит/с бит длится 104 мкс, и к его середине (52 мкс) звон давно стих: линия работает без терминаторов. При 115 200 бит/с бит длится 8,7 мкс — тут без терминаторов уже никак. Практическое правило того же руководства: на скоростях ниже 38,4 кбит/с терминаторы обычно не нужны.

У терминаторов есть цена: они нагружают передатчики и требуют более сильного смещения (о нём — в следующем разделе). Но если протокол требует их установки — ставьте: спецификация Modbus, например, предписывает терминатор у каждого из двух концов шины.

RC-терминатор и расщеплённый терминатор

  • RC-терминатор (AC) — резистор последовательно с конденсатором. На фронтах конденсатор почти закорочен, и линия согласована, а в покое ток через терминатор не течёт: он не нагружает передатчик и не «съедает» смещение. Спецификация Modbus прямо называет вариант 120 Ом + 1 нФ (на напряжение не ниже 10 В) лучшим выбором, когда на шине есть резисторы смещения. Минус — ёмкость приходится подбирать под конкретную линию и скорость.
  • Расщеплённый терминатор — два резистора по 60 Ом последовательно, их средняя точка через конденсатор соединена с землёй. Он дополнительно фильтрует синфазную помеху. Резисторы берут с допуском 1 %: при разбросе синфазная помеха превращается в дифференциальную (TI, SLLA272).

Смещение шины (failsafe): расчёт резисторов

Почему шина в простое «висит»

Между кадрами все передатчики выключены. Терминаторы стягивают A и B друг к другу, разность падает почти до нуля — ровно в зону −200…+200 мВ, где выход приёмника не определён. Обычный приёмник в этой зоне выдаёт что придётся и может принять шум за старт-бит: UART получает мусорные байты и ошибки кадра. TI перечисляет три ситуации потери сигнала: обрыв (узел отключён или провод оборван), замыкание линий между собой и простой шины.

Многие трансиверы защищены только от обрыва: у MAX485 выход RO гарантированно в «1», если вход разомкнут, но на терминированной шине в простое это не помогает. У SN75176B при обрыве выход и вовсе не определён.

Резисторы смещения

Решение — сместить шину: подтянуть неинвертирующую линию (A у MAX485 и большинства трансиверов) резистором к питанию, а инвертирующую (B) — к общему проводу. Ток смещения создаёт на терминаторах напряжение UABU_{AB}, и в простое приёмник видит уверенную «1» — то же состояние, что и стоп-бит UART. По сути это делитель напряжения из двух резисторов смещения и нагрузки шины.

Эквивалентная схема смещения шины RS-485 в простоеРезистор Rсм подтягивает линию A к напряжению питания, второй резистор Rсм тянет линию B к общему проводу. Между A и B включены терминаторы RT1, RT2 и входы приёмников Rвх; ток смещения создаёт на них напряжение UAB.+UпитRсмRсмIсмABRT1120 ОмRT2120 ОмRвх24 кОм / NULUABRэкв = RT1 ∥ RT2 ∥ Rвх
Эквивалентная схема для расчёта смещения: ток через два резистора Rсм создаёт напряжение UAB на терминаторах и входах приёмников.

Из схемы:

UAB=Uпит⋅Rэкв2Rсм+Rэкв,Rэкв=(nTRT+NUL24 кОм)−1,U_{AB} = U_\text{пит} \cdot \frac{R_\text{экв}}{2R_\text{см} + R_\text{экв}}, \qquad R_\text{экв} = \left( \frac{n_T}{R_T} + \frac{N_\text{UL}}{24\ \text{кОм}} \right)^{-1},

где nTn_T — число терминаторов, NULN_\text{UL} — суммарная нагрузка приёмников в единичных нагрузках: 1 UL — около 12 кОм от каждой линии к земле приёмника, то есть около 24 кОм между A и B. Отсюда наибольшее сопротивление каждого резистора смещения:

Rсм≤Rэкв2(UпитUAB−1).R_\text{см} \le \frac{R_\text{экв}}{2} \left( \frac{U_\text{пит}}{U_{AB}} - 1 \right).

UABU_{AB} берут с запасом над порогом 200 мВ — на дифференциальную помеху; TI в своём примере закладывает 250 мВ. UпитU_\text{пит} подставляют минимальное с учётом допуска источника.

Пример расчёта

Шина на 5 В, два терминатора по 120 Ом, 16 трансиверов на 1/8 UL, нужно не меньше 250 мВ в простое.

  1. Нагрузка приёмников: 16⋅1/8=216 \cdot 1/8 = 2 UL, то есть 12 кОм между A и B. Нагрузка шины: Rэкв=120∥120∥12 000≈59,7R_\text{экв} = 120 \parallel 120 \parallel 12\,000 \approx 59{,}7 Ом.
  2. Rсм≤59,72(50,25−1)≈567R_\text{см} \le \dfrac{59{,}7}{2} \left( \dfrac{5}{0{,}25} - 1 \right) \approx 567 Ом. Ближайший меньший номинал ряда E24 — 560 Ом.
  3. Проверка: UAB=5⋅59,72⋅560+59,7≈253U_{AB} = 5 \cdot \dfrac{59{,}7}{2 \cdot 560 + 59{,}7} \approx 253 мВ. При питании 4,75 В (5 В − 5 %) — 240 мВ, всё ещё выше порога.
  4. Ток смещения 5/1180≈4,25 / 1180 \approx 4{,}2 мА, мощность на каждом резисторе около 10 мВт — подойдёт резистор любого типоразмера (см. закон Ома).

Если пренебречь приёмниками (Rэкв=60R_\text{экв} = 60 Ом), получится 570 Ом — тот же номинал 560 Ом. Если же заложить только порог 200 мВ, формула даст около 716 Ом: с номиналом 680 Ом на шине будет 210 мВ — работать будет, но запаса на помеху почти нет.

TI в SLLA272 считает по упрощённой формуле RB=Uпит.мин/(UAB(1/375+4/Z0))R_B = U_\text{пит.мин} / \left( U_{AB} (1/375 + 4/Z_0) \right). Это та же модель с 32 UL (375 Ом в формуле — это 12 кОм / 32), только без «−1» в скобках. Для 4,75 В, 250 мВ и Z0=120Z_0 = 120 Ом она даёт 528 Ом, и TI ставит 523 Ом; точная формула даёт 500 Ом. С 523 Ом на шине будет около 240 мВ вместо заложенных 250 мВ — меньше расчётного, но всё ещё выше порога.

Калькулятор резисторов смещения

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

Исходные данные

В

для 5 В ± 5 % введите худший случай — 4,75

мВ

порог приёмника 200 мВ плюс запас на помехи

Терминаторов на шине
Ом

равно волновому сопротивлению кабеля

шт.

все узлы, включая тот, где стоит смещение

указана в даташите как unit load или входное сопротивление

Результат

Наибольшее сопротивление каждого резистора
567 Ом
Rсм ≤ ½ · Rэкв · (Uпит / UAB − 1)
Номинал из ряда E24
560 Омближайший меньший — запас по напряжению
U(A − B) в простое с этим номиналом
253 мВпорог приёмника 200 мВ
Ток через смещение
4,24 мА
Мощность на каждом резисторе
10 мВт
Нагрузка шины в простое Rэкв
59,7 Ом2 × 120 Ом ∥ входы 2 UL

Смещение — тоже нагрузка

Резисторы смещения ставят в одной точке шины, обычно у ведущего узла — так требует и Modbus. Если каждый узел «на всякий случай» включит свои подтяжки, они сложатся параллельно и перегрузят передатчики. Даже одна пара резисторов на 500–600 Ом заметно нагружает шину: по оценке TI, смещение забирает до 20 UL из 32, и с трансиверами на 1/8 UL на шине остаётся место примерно для 96 узлов. Спецификация Modbus для резисторов 450–650 Ом оценивает потерю мягче — минус 4 устройства из 32. Оценки исходят из разных допущений, поэтому при большом числе узлов проверьте амплитуду сигнала осциллографом на дальнем конце.

Удобно сочетать смещение с RC-терминаторами: в покое они не потребляют ток, и для тех же 250 мВ хватает подтяжек в несколько килоом. Например, по нормам Modbus: 650 Ом, 32 UL и два терминатора 120 Ом + 1 нФ дают в простое около 1,8 В.

Трансиверы со встроенным failsafe

В трансиверах с «настоящим» failsafe (true failsafe) порог приёмника сдвинут в отрицательную область, но остаётся в пределах стандартных ±200 мВ. У MAX3080–MAX3089 «1» гарантирована при UAB≥−50U_{AB} \ge -50 мВ, «0» — при UAB≤−200U_{AB} \le -200 мВ, поэтому при 0 В — обрыв, замыкание, простой терминированной шины — выход остаётся в «1» без внешних резисторов. У ADM2483 и ADM2582E/ADM2587E порог похожий: −30…−200 мВ. Цена — маленький запас по помехе в простое: у MAX3080 — 50 мВ, а TI для подобных схем называет худший случай всего 10 мВ. В шумной обстановке внешнее смещение ставят и с такими трансиверами.

A и B: почему их путают

Это главный источник «шина не работает» при первом подключении. Причина — в разных соглашениях.

Стандарт. По тексту TIA/EIA-485-A для двоичной «1» (MARK, OFF) вывод A передатчика отрицателен относительно B, для «0» (SPACE, ON) — положителен. UART в покое выдаёт «1», значит, по стандарту в паузе выше линия B.

Производители микросхем. В даташитах MAX485 (Maxim, ныне Analog Devices), SN75176B (TI), SP3485 (MaxLinear) и в обучающих материалах Renesas вывод A — неинвертирующий: при DI = 1 напряжение A выше B, а приёмник выдаёт RO = 1 при UA−UB≥+200U_A - U_B \ge +200 мВ. То есть «A» микросхемы ведёт себя как «B» стандарта. Пока соединяются одинаковые микросхемы — A с A, B с B — всё работает.

Протоколы и оборудование.

ГдеПоложительная в покое линияОтрицательная в покое линия
MAX485, SN75176B, SP3485 и большинство трансиверовAB
Текст TIA/EIA-485-ABA
Modbus over Serial LineD1 (по стандарту — B)D0 (по стандарту — A)
PROFIBUS DPB (RxD/TxD-P)A (RxD/TxD-N)
Оборудование B+B и многие преобразователиB(+), «+»A(−), «−»

Правило: соединяйте линии с одинаковым смыслом — те, что положительнее в покое. Если документации нет, измерьте напряжение между выводами работающего устройства с включённым смещением или просто поменяйте провода местами: перепутанные A и B ничего не повреждают, связи лишь не будет (B+B). Некоторые трансиверы позволяют исправить полярность без перекладки проводов: у MAX3089 фазу передатчика и приёмника инвертируют отдельные выводы TXP и RXP.

Трансиверы RS-485

МикросхемаПитаниеСкоростьНагрузкаОсобенности
SN75176B (TI)5 Вдо 10 Мбит/с1 UL, 32 узлаисторический стандарт разводки «75176»; при обрыве выход не определён; потребляет десятки миллиампер
MAX4855 В2,5 Мбит/с1 UL, 32 узлаfailsafe только при обрыве; MAX483 и MAX487 — 250 кбит/с с ограничением фронтов, MAX487 и MAX1487 — 1/4 UL, 128 узлов
MAX34853,0–3,6 В10 Мбит/с1 UL, 32 узлавходы совместимы с 5-вольтовой логикой; failsafe при обрыве
SP3485 (MaxLinear)3,3 В10 Мбит/с1 UL, 32 узларазводка 75176; входы совместимы с 5-вольтовой логикой
MAX3082 / MAX3085 / MAX30885 В115 кбит/с / 500 кбит/с / 10 Мбит/с1/8 UL, 256 узловtrue failsafe, порог −50…−200 мВ
MAX13487E5 В500 кбит/с (MAX13488E — 16 Мбит/с)1/4 UL, 128 узловAutoDirection: нет вывода DE, нужны резисторы смещения; ESD ±15 кВ (HBM)
ADM24833 или 5 В — логика, 5 В — сторона шины500 кбит/с1/8 UL, 256 узловгальваническая развязка 2500 В ср. кв. (1 мин); изолированное питание нужно отдельно; true failsafe
ADM2587E3,3 или 5 В500 кбит/с (ADM2582E — 16 Мбит/с)1/8 UL, 256 узловразвязка со встроенным изолированным DC/DC isoPower; ESD ±15 кВ; failsafe при обрыве, замыкании и простое
THVD1500 (TI)5 В500 кбит/с1/8 UL, 256 узловзащита ±8 кВ по IEC 61000-4-2; failsafe при обрыве, замыкании и простое
THVD1550 (TI)5 Вдо 50 Мбит/с196 узловзащита ±18 кВ по IEC 61000-4-2; синфазный диапазон ±15 В; failsafe при обрыве, замыкании и простое

Почти все 8-выводные трансиверы из таблицы совместимы по выводам с 75176: 1 — RO, 2 — /RE, 3 — DE, 4 — DI, 5 — GND, 6 — A, 7 — B, 8 — VCC. Исключение — MAX13487E: у него на месте DE вывод SHDN, а направлением управляет сам сигнал DI.

Подключение RS-485 к микроконтроллеру

У полудуплексного трансивера четыре логических вывода:

  • DI — вход передатчика, к выходу TXD UART.
  • RO — выход приёмника, ко входу RXD. Пока /RE = 1, выход RO в высокоимпедансном состоянии и вход RXD «висит», поэтому его подтягивают к питанию МК резистором около 10 кОм или внутренней подтяжкой.
  • DE — разрешение передатчика, активная «1».
  • /RE — разрешение приёмника, активный «0».

DE и /RE обычно соединяют и управляют одним выводом МК: «1» — передача, «0» — приём; так это и задумано в 75176. Другой вариант — держать /RE на земле всегда: тогда МК слышит собственную передачу. Это эхо пригодится для обнаружения коллизий, но его нужно отбрасывать программно.

Подключение трансивера MAX485 к микроконтроллеруВыход TXD микроконтроллера идёт на вход DI трансивера, выход RO — на вход RXD с подтягивающим резистором R1 10 кОм. Выводы DE и RE с чертой соединены и управляются одним выводом GPIO. Линии A и B идут на разъём шины; терминатор RT 120 Ом ставится только на крайних узлах, защитный TVS SM712 включён между линиями и общим проводом.МКUART + GPIO+VмкRXDGPIOTXDMAX485SO-8 / DIP-81 RO2 RE3 DE4 DIVCC 8B 7A 6GND 5+VмкR110 кОм+5 ВBAGNDRT120 ОмSM712к шине: пара A/B и общий провод
Подключение MAX485 к микроконтроллеру: TXD → DI, RO → RXD с подтяжкой, DE и /RE на одном выводе. Терминатор RT — только на крайних узлах шины; у вывода VCC — конденсатор 100 нФ (на схеме не показан).

MAX485 и SN75176B работают только от 5 В. Входы DI, DE и /RE у MAX485 понимают 3,3-вольтовую логику (порог «1» — 2 В), а выход RO поднимается почти до 5 В (не ниже 3,5 В при токе 4 мА) — для МК без допуска 5 В на входах это опасно. Для 3,3-вольтовых схем берите MAX3485, SP3485 или аналоги — или ставьте делитель на линии RO.

Когда включать и выключать передатчик

Передача байта по RS-485: сигнал DE, линии A и B и разность A − BБайт 0x4D в формате 8N1 передаётся младшим битом вперёд: старт-бит, биты 1, 0, 1, 1, 0, 0, 1, 0 и стоп-бит. DE поднимается до старт-бита и снимается после стоп-бита. Когда передатчик выключен, линии не управляются, и разность A − B около +0,25 В задают резисторы смещения; при включённом передатчике она не меньше ±1,5 В. Масштаб условный.Ст0D01D10D21D31D40D50D61D70Стоп1DEDE = 1 до старт-битаDE = 0 после стоп-битаABUAB≥ +1,5 В≈ +0,25 В±0,2 В≤ −1,5 В
Байт 0x4D в формате 8N1 на шине. Пунктир — передатчик выключен, уровень задают резисторы смещения; серая полоса — зона неопределённости приёмника ±200 мВ. Масштаб условный.
  1. DE поднимают до старт-бита — с запасом на время включения передатчика: у MAX485 это до 70 нс, у медленных MAX483 и MAX487 — до 2 мкс. На практике хватает того, что DE включается до записи первого байта в UART.
  2. DE снимают только после стоп-бита последнего байта. Флаг «буфер передатчика пуст» (UDRE у AVR, TXE у STM32) для этого не годится: он поднимается, когда последний байт только начал выдвигаться из сдвигового регистра. Нужен флаг окончания передачи — TXC у AVR, TC у STM32. Если снять DE раньше, у последнего байта оборвётся хвост — в Modbus это байт CRC, и весь кадр будет отброшен.
  3. DE нельзя держать слишком долго. Ведомый может начать ответ сразу после запроса, и два передатчика столкнутся. В Modbus RTU запас есть — между кадрами всегда пауза не меньше 3,5 символа, — но другие протоколы бывают строже.

Пример для AVR (ATmega328P, DE и /RE на выводе PD2):

#include <avr/io.h>
#include <util/atomic.h>

#define RS485_DIR_DDR  DDRD
#define RS485_DIR_PORT PORTD
#define RS485_DIR_BIT  PD2  /* DE and /RE tied together */

void rs485_init(uint16_t ubrr)
{
    RS485_DIR_DDR  |= _BV(RS485_DIR_BIT);
    RS485_DIR_PORT &= ~_BV(RS485_DIR_BIT);     /* receive by default */
    UBRR0  = ubrr;
    UCSR0C = _BV(UCSZ01) | _BV(UCSZ00);        /* 8N1 */
    UCSR0B = _BV(RXEN0) | _BV(TXEN0);
}

void rs485_send(const uint8_t *data, uint8_t len)
{
    RS485_DIR_PORT |= _BV(RS485_DIR_BIT);      /* driver on before the start bit */
    for (uint8_t i = 0; i < len; i++) {
        while (!(UCSR0A & _BV(UDRE0))) {}      /* room in the transmit buffer */
        ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {    /* no ISR between the two writes */
            UDR0 = data[i];
            /* clear TXC0 by writing 1; FE0, DOR0, UPE0 and UDRE0 are written as 0 */
            UCSR0A = (UCSR0A & (_BV(U2X0) | _BV(MPCM0))) | _BV(TXC0);
        }
    }
    while (!(UCSR0A & _BV(TXC0))) {}           /* last stop bit has left the shift register */
    RS485_DIR_PORT &= ~_BV(RS485_DIR_BIT);     /* release the bus */
}

Запись в UDR0 и сброс TXC0 сделаны атомарно: если между ними вклинится долгое прерывание, байт успеет уйти, флаг сбросится уже после этого, и последний цикл ожидания не закончится. Остальные флаги UCSR0A записываются нулями, как требует даташит ATmega328P.

В программе на прерываниях DE снимают в обработчике «передача завершена» (USART_TX_vect у AVR). В Arduino для AVR то же делает Serial.flush(): функция возвращается, когда передан последний бит, после неё можно переключать вывод направления. Подробнее о контроллерах AVR — в разделе AVR.

Многие современные МК умеют управлять DE сами. В USART серий STM32 F0, G0, G4, L4, H7 и других есть режим Driver Enable: биты DEM и DEP в регистре USART_CR3 и время включения и выключения DE (DEAT, DEDT в USART_CR1) в долях бита; в HAL это функция HAL_RS485Ex_Init(). У AVR серий megaAVR 0 и AVR Dx для этого есть вывод XDIR в режиме RS-485.

Трансиверы с автоматическим переключением направления (AutoDirection у MAX13487E) обходятся без вывода DE: «0» передатчик выдаёт активно, а «1» — коротким импульсом, после которого линию в «1» держат обязательные внешние резисторы смещения. В простое на DI должна быть «1».

Общий провод, заземление и гальваническая развязка

Приёмник измеряет разность A − B, но каждая линия относительно его собственной земли должна оставаться в пределах −7…+12 В. Узлы на разных концах цеха питаются от разных фаз и щитов, и потенциалы их земель расходятся. Без общего провода синфазное напряжение ничем не ограничено: на столе всё работает, на объекте — сбоит или выгорает. Поэтому вместе с парой прокладывают общий провод и соединяют им сигнальные земли узлов.

Прямое соединение земель удалённых узлов создаёт контур: по общему проводу потечёт уравнивающий ток, и его помеха наведётся на линию. TI в SLLA272 описывает компромисс из стандарта — подключать землю узла к общему проводу через резистор (в примере — 100 Ом), чтобы ограничить ток контура. Modbus требует соединять общий провод с защитным заземлением в одной точке, обычно у ведущего узла.

Надёжное решение для длинных линий и разнородного питания — гальваническая развязка: сторона шины у трансивера питается от изолированного источника и не связана с землёй узла. TI предлагает делать неизолированным только один узел — он и задаёт опорную землю всей шины. Готовые решения — ADM2483 (2500 В ср. кв., изолированное питание 5 В для стороны шины нужно отдельно) и ADM2587E, где изолированный преобразователь встроен; у ADM2587E Analog Devices отдельно требует аккуратной разводки платы, чтобы преобразователь не превысил нормы по излучению.

Защита линии: TVS, ESD и импульсы

Кабель длиной в сотни метров собирает разряды статики, коммутационные помехи и наводки от молний. Испытания проводят по трём стандартам: IEC 61000-4-2 (электростатический разряд), IEC 61000-4-4 (пачки быстрых импульсов) и IEC 61000-4-5 (микросекундные импульсы большой энергии).

  • TVS-диоды на линиях. Для RS-485 выпускают несимметричные сборки: SM712 имеет рабочее напряжение −7 В и +12 В — ровно синфазный диапазон RS-485 — и выдерживает импульс 19 А (8/20 мкс по IEC 61000-4-5) и разряд ±30 кВ по IEC 61000-4-2. Сборку ставят у разъёма между A, B и общим проводом. Симметричный TVS на ±7 В для RS-485 не подходит: он начнёт срезать допустимое синфазное напряжение от +7 до +12 В.
  • Трансиверы с усиленной защитой. MAX13487E выдерживает ±15 кВ по модели человеческого тела (HBM), ADM2587E — ±15 кВ на выводах шины, THVD1500 — ±8 кВ контактного разряда по IEC 61000-4-2.
  • Уличные и межкорпусные линии. Здесь защиту делают многоступенчатой: разрядник на входе, последовательное сопротивление и TVS у трансивера, плюс гальваническая развязка, экранированный кабель и заземление экрана.

RS-485 и RS-422

RS-422 (TIA/EIA-422-B) — старший родственник RS-485 с той же дифференциальной идеей, но для одного передатчика.

RS-422RS-485
Передатчиков на линии1несколько, по очереди
Приёмниковдо 10 (по 4 кОм)до 32 UL (по 12 кОм)
Выход передатчикане меньше 2 В на 100 Омне меньше 1,5 В на 54 Ом
Синфазный диапазон приёмника±7 В−7…+12 В
Порог приёмника±200 мВ±200 мВ
Длина и скоростьдо ~1200 м, до 10 Мбит/с (не одновременно)то же

Трансиверы RS-485 обычно удовлетворяют и требованиям RS-422: у MAX485 и SN75176B выход нормирован для обеих нагрузок. Поэтому для дуплексной линии точка — точка RS-422 берут те же микросхемы (например, полнодуплексные MAX488–MAX491). Обратное неверно: передатчик RS-422 не обязан отключаться и не рассчитан на шину с несколькими передатчиками.

Modbus RTU поверх RS-485

Modbus RTU — самый частый протокол на RS-485 в промышленной автоматике. Спецификация MODBUS over Serial Line V1.02 добавляет к электрике свои требования:

  • двухпроводная шина обязательна, четырёхпроводная — опция; линии называются D1, D0 и Common, их порядок — в разделе A и B;
  • без повторителя — до 32 устройств, длина магистрали до 1000 м при скорости до 9600 бит/с, отводы — не длиннее 20 м;
  • по терминатору на каждом конце шины — 150 Ом (0,5 Вт) или 120 Ом + 1 нФ;
  • если смещение нужно, оно одно на шину, обычно у ведущего: подтяжка D1 к 5 В и D0 к общему проводу резисторами 450–650 Ом;
  • скорости 9600 и 19 200 бит/с обязательны, 19 200 — по умолчанию.

Каждый байт RTU — это 11 бит: старт-бит, 8 бит данных младшим битом вперёд, бит чётности (по умолчанию even) и стоп-бит; без чётности ставят 2 стоп-бита. Кадр — не больше 256 байт. Границы кадра определяются паузами: между кадрами — тишина не меньше 3,5 символа (t3,5t_{3,5}), а пауза больше 1,5 символа (t1,5t_{1,5}) внутри кадра делает его недействительным. На скоростях выше 19 200 бит/с спецификация рекомендует фиксированные значения.

СкоростьСимвол, 11 битt1,5t_{1,5}t3,5t_{3,5}
9600 бит/с1,146 мс1,72 мс4,01 мс
19 200 бит/с0,573 мс0,859 мс2,005 мс
выше 19 200 бит/с—0,75 мс1,75 мс

Отсюда же требование к программе: передавать кадр сплошным потоком, без пауз между байтами, — и снимать DE не раньше окончания стоп-бита последнего байта.

Типичные ошибки

  • Перепутаны A и B. Связи нет совсем или приходит мусор с ошибками кадра. Сверьте соглашения по таблице выше.
  • Нет общего провода. На столе работает, на объекте — сбои и выгоревшие трансиверы.
  • Терминаторы не там или их слишком много. Перемычка терминатора включена на каждом узле, терминатор стоит в середине шины или на отводе.
  • Нет смещения при трансиверах без true failsafe. В паузах сыплются ошибки кадра и мусорные байты, иногда теряется первый байт ответа.
  • Смещение на нескольких узлах сразу. Подтяжки складываются параллельно и перегружают передатчики.
  • DE снимается по флагу «буфер пуст». У последнего байта обрезан хвост, в Modbus — ошибки CRC.
  • DE снимается слишком поздно. Начало ответа ведомого теряется в коллизии.
  • Звезда и длинные отводы. Звон на фронтах, ошибки, зависящие от того, кто передаёт.
  • 5-вольтовый трансивер на 3,3-вольтовом МК. Выход RO выдаёт до 5 В на вход, который на это не рассчитан.

Как проверить и отладить линию RS-485

  1. Омметр, питание выключено. Между A и B около 60 Ом — два терминатора на месте. 120 Ом — одного не хватает, 40 Ом — стоит лишний, близко к нулю — замыкание.
  2. Мультиметр, шина в простое. Напряжение A − B (в обозначениях микросхем) должно быть не меньше +200 мВ, если стоит смещение, — в примере выше около 250 мВ. Около нуля — смещения нет; это нормально только с трансиверами true failsafe. Отрицательное — перепутаны линии или резисторы смещения. Напряжение каждой линии относительно общего провода должно укладываться в −7…+12 В.
  3. Осциллограф во время обмена. Два канала на A и B относительно общего провода и математика A − B, либо дифференциальный пробник. У передатчика размах не меньше 1,5 В, на дальнем конце — не меньше 200 мВ. Звон на фронтах — признак отводов или неверной терминации. Третьим каналом смотрите DE: он должен подниматься раньше старт-бита и опускаться после стоп-бита.
  4. Логический анализатор — на RO и DI, а не на линию. Там чистые логические уровни, и декодер UART сразу покажет байты.

Для связи с другими устройствами полезны и соседние материалы раздела интерфейсы: RS-232 — когда нужно связать два устройства на коротком расстоянии, I²C — для связи микросхем внутри одной платы.

Частые вопросы

Какая максимальная длина линии RS-485?

Около 1200 м по витой паре 22–24 AWG на скоростях до ~100 кбит/с. С ростом скорости допустимая длина падает примерно обратно пропорционально: при 10 Мбит/с — около 12–15 м. Удобный ориентир — произведение длины в метрах на скорость в бит/с не больше ~10⁸. Линию длиннее делят повторителями.

Нужен ли терминатор 120 Ом на RS-485?

На длинной или быстрой линии — да: по одному резистору 120 Ом на двух физических концах кабеля, не на отводах и не в середине шины. На короткой медленной линии отражения успевают затухнуть до середины бита, и без терминаторов можно обойтись, если их не требует протокол (Modbus требует).

Сколько устройств можно подключить к шине RS-485?

Стандартный передатчик рассчитан на 32 единичные нагрузки (UL): это 32 трансивера на 1 UL, 64 — на 1/2 UL, 128 — на 1/4 UL или 256 — на 1/8 UL. Резисторы смещения тоже нагружают шину и уменьшают это число.

Как соединять A и B, если у устройств разные обозначения?

У трансиверов вроде MAX485 вывод A неинвертирующий и в покое положительнее B, а в тексте стандарта и в PROFIBUS буквы переставлены. Соединяйте между собой линии, которые в покое положительнее: A у MAX485, D1 в Modbus, B в PROFIBUS, «+» у многих преобразователей. Перепутанные A и B ничего не повреждают — связь просто не работает.

Нужен ли общий провод GND для RS-485?

Да. Приёмник измеряет разность A − B, но напряжение каждой линии относительно его земли должно оставаться в пределах −7…+12 В, а без общего провода это не гарантировано. Общий провод прокладывают в кабеле вместе с парой; при большой разности потенциалов земель ставят трансиверы с гальванической развязкой.

Чем RS-485 отличается от RS-422?

RS-422 — один передатчик и до 10 приёмников, синфазный диапазон ±7 В. RS-485 — до 32 единичных нагрузок, несколько передатчиков работают по очереди, синфазный диапазон −7…+12 В. Трансиверы RS-485 обычно подходят и для линий RS-422.

Источники

  1. TIA/EIA-485-A. Electrical Characteristics of Generators and Receivers for Use in Balanced Digital Multipoint Systems — стандарт TIA, 1998; первая редакция EIA RS-485 — 1983
  2. Texas Instruments. The RS-485 Design Guide (SLLA272C), T. Kugelstadt — application report, 2008, ред. 2016
  3. Modbus Organization. MODBUS over Serial Line Specification and Implementation Guide V1.02 — спецификация, 2006
  4. Maxim Integrated. Application Note 763: Guidelines for Proper Wiring of an RS-485 (TIA/EIA-485-A) Network — 2001
  5. Advantech B+B SmartWorx. RS-422 & RS-485 Applications eBook — ред. 2.0, 2018
  6. MaxLinear. AN-292: RS-485 Cable Lengths against Data Signaling Rate — 2022
  7. National Semiconductor. AN-1031: TIA/EIA-422-B Overview, M. R. Wilson — 2000
  8. Renesas (Intersil). TB511: RS-485 Unit Load Concept — 2017
  9. Renesas. RS-485 Crash Course Part 1: Basics (R15TB0002EU0100) — учебное пособие, 2023
  10. Maxim Integrated. MAX481/MAX483/MAX485/MAX487–MAX491/MAX1487 datasheet — 19-0122, Rev 7
  11. Maxim Integrated. MAX3080–MAX3089 Fail-Safe, High-Speed (10Mbps), Slew-Rate-Limited RS-485/RS-422 Transceivers — 19-1138, Rev 3
  12. Maxim Integrated. MAX13487E/MAX13488E Half-Duplex RS-485/RS-422-Compatible Transceiver with AutoDirection Control — 19-0740, Rev 0
  13. MaxLinear. SP3485: 3.3V Low Power Half-Duplex RS-485 Transceiver with 10Mbps Data Rate — даташит, ред. 2.0.2, 2021
  14. Texas Instruments. SN65176B, SN75176B Differential Bus Transceivers (SLLS101H) — даташит, 2021
  15. Texas Instruments. THVD1500 500 kbps RS-485 Transceivers With ±8-kV IEC ESD Protection (SLLSEY4A) — даташит, 2018
  16. Texas Instruments. THVD15xx 5-V RS-485 Transceivers With ±18-kV IEC ESD Protection (SLLSEV1C) — даташит, 2018
  17. Analog Devices. ADM2483: Half-Duplex, iCoupler Isolated RS-485 Transceiver — даташит; сверено по Rev. F
  18. Analog Devices. ADM2582E/ADM2587E: Signal and Power Isolated RS-485 Transceiver with ±15 kV ESD Protection — даташит, Rev. G
  19. Littelfuse. SM712 Series 600W Asymmetrical TVS Diode Array — даташит; сверено по ред. 12/2016