Стандарт RS-232 появился в эпоху, когда «совместимость» означала договор между инженерами двух компаний, и с тех пор пережил три волны смены интерфейсов: параллельный порт, USB и сетевые консоли. Сегодня он не является быстрым или удобным — но остаётся там, где важна простота: в промышленных контроллерах, медицинских приборах, весах, источниках бесперебойного питания и консольных портах сетевого оборудования. Эта статья — переписанный обзор 2007 года: техническая суть сохранена, а всё, что за девятнадцать лет стало неверным или непроверяемым, убрано или помечено. Практическая часть адресована тому, кто в 2026 году подключает прибор с портом DB9 к машине без COM-порта и хочет понять, где именно ломается связь.

Обзор стандарта RS-232 — обложка обзора
RS-232 в 2026 году: уровни, распиновка, кадр и настройка порта

TL;DR: что это и как проверить за десять минут

  1. Задача. Соединить два устройства последовательным каналом так, чтобы байты доходили без искажений на кабеле до 15 метров.
  2. Как решается. Три провода (TXD, RXD, GND) плюс, при необходимости, аппаратное управление потоком RTS/CTS; кадр 8N1 и одинаковая скорость с обеих сторон.
  3. Что проверить. Уровни (±3…±15 В), распиновку (2 — приём, 3 — передача, 5 — земля), скорость и «нуль-модемность» кабеля.
  4. Проверка командой. На Linux порт открывается stty и читается picocom; на Windows — PuTTY или Tera Term.
  5. Главное ограничение. RS-232 не умеет адресацию и многоточие: это строго соединение двух устройств, без узлов и арбитража.
# 1. виден ли порт
ls -l /dev/ttyUSB0 /dev/ttyS0 2>/dev/null
# 2. настройки канала: 115200 бит/с, 8 бит, без чётности, 1 стоповый
stty -F /dev/ttyUSB0 115200 cs8 -parenb -cstopb -crtscts raw -echo
# 3. прочитать поток и выйти по Ctrl-A Ctrl-X
picocom -b 115200 /dev/ttyUSB0

Проблема, которую это решает

Любой последовательный канал решает одну задачу: передать биты из точки А в точку Б так, чтобы принимающая сторона поняла, где начинается байт. RS-232 решает её без тактового провода — приёмник синхронизируется по стартовому биту, а дальше отсчитывает биты от собственного генератора. Отсюда два практических следствия, с которыми сталкиваются постоянно: скорость должна быть согласована заранее, а расхождение генераторов не должно превышать нескольких процентов на кадр.

Второе, что решает стандарт, — электрическая совместимость. До него производители использовали разные кодировки и разные уровни: одни кодировали символы пятью битами, другие восемью, одни работали с TTL-уровнями, другие с токовой петлёй. RS-232 зафиксировал и уровни, и разъёмы, и назначение линий — и именно поэтому прибор 1985 года и переходник 2026 года ещё разговаривают друг с другом.

Третье — и это главная причина, по которой порт жив: он не требует ни драйверной модели, ни стека. На промышленном объекте RS-232 выигрывает не скоростью, а тем, что его можно проверить осциллографом и понять за минуту.

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

Что такое RS-232

RS-232 — рекомендательный стандарт Ассоциации электронной промышленности (EIA), описывающий последовательный интерфейс между терминальным оборудованием (DTE) и оборудованием передачи данных (DCE). В нём три слоя: электрический (уровни и нагрузка), механический (разъёмы и распиновка) и функциональный (назначение линий и последовательность управления).

flowchart LR
  DTE["DTE: компьютер, терминал"] -->|"TXD (2)"| DCE["DCE: модем, прибор"]
  DCE -->|"RXD (3)"| DTE
  DTE -->|"RTS (7)"| DCE
  DCE -->|"CTS (8)"| DTE
  DTE -->|"DTR (4)"| DCE
  DCE -->|"DSR (6)"| DTE
  DTE ---|"GND (5), общий провод"| DCE
  DCE -->|"DCD (1), RI (9)"| DTE
Часть Что определяет
Электрика биполярные уровни, импеданс приёмника, допуски передатчика
Механика разъёмы DB25 и DB9, назначение контактов
Функциональность линии данных, управления, синхронизации и земли
Кадрирование стартовый бит, данные, чётность, стоповые биты

Версии: первая редакция появилась в 1960-х, наиболее известна RS-232C (1969), где был закреплён 25-контактный DB25; последняя редакция, на которую ссылаются, — TIA-232-F (1997). Международные аналоги — рекомендации ITU-T V.24/V.28 и ISO 2110; в СССР интерфейс назывался «Стык С2».

Отдельно стоит сказать, что именно изменилось при переписывании. В исходной статье 2007 года разработка стандарта приписана группе инженеров IBM с именами, которых в источниках по истории EIA нет; это утверждение снято, а не переписано «как было». Даты редакций (RS-232C — 1969, TIA-232-F — 1997) оставлены как общепринятые, но помечены: при ссылке на конкретный документ их нужно сверять с публикацией TIA, а не с этой статьёй.

Возможности: чего ждать от порта и чего нет

Электрика и помехоустойчивость

Главное отличие от TTL — биполярные уровни и большой размах. Логическая единица (Mark) — от −3 до −15 В, логический ноль (Space) — от +3 до +15 В, а зона между −3 и +3 В считается неопределённой. В IBM PC-совместимых машинах обычно использовались ±12 В.

Параметр Значение по стандарту
Уровни сигнала от −15 до +15 В, логика в диапазоне ±3…±15 В
Неопределённая зона от −3 до +3 В
Выход передатчика без нагрузки не более ±15 В
Ток короткого замыкания передатчика до 0,5 А, без ограничения по времени
Входное сопротивление приёмника 3 000–7 000 Ом
Входная ёмкость приёмника не более 2 500 пФ
Реальный порт PC ограничение буфером TTL, около 20 мА на землю

Размах и даёт помехоустойчивость: чтобы приёмник ошибся, помехе нужно «перебросить» линию через всю неопределённую зону — примерно 15 В против 2,5 В у TTL.

Линии и управление потоком

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

Контакт DB9 Линия Назначение
2 RXD приём данных
3 TXD передача данных
5 GND общий провод, обязателен
7 RTS запрос передачи (готовность принимать)
8 CTS разрешение передачи
4 DTR готовность терминала
6 DSR готовность оборудования
1 DCD обнаружение несущей
9 RI индикатор вызова

Управление потоком бывает трёх видов: никакого, аппаратное (RTS/CTS) и программное (XON/XOFF символами 0x11 и 0x13). Ошибка новичка — включить аппаратное управление там, где в кабеле всего три жилы: порт «открывается», но данные не идут, потому что передатчик ждёт CTS.

Скорости и расстояния

Стандарт рассчитан на скромные скорости и 15 метров кабеля. На практике 15 метров — не догма: при снижении скорости и экранированном кабеле канал работает и на десятки метров, а на 115200 бит/с длинный кабель без экрана начинает сбоить.

Скорость, бит/с Типичное применение
9 600 консоли сетевого оборудования, приборы по умолчанию
19 200 промышленные контроллеры, весы
57 600 приборы со средней скоростью обмена
115 200 максимум для большинства USB-переходников и старых портов

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

Разница не в разъёме, а в способе передачи. RS-232 — несимметричная линия: один провод на сигнал плюс общая земля. RS-422 и RS-485 — дифференциальные: сигнал передаётся парой проводов, а приёмник смотрит на разность потенциалов. Отсюда всё остальное.

Свойство RS-232 RS-422 RS-485
Передача несимметричная дифференциальная дифференциальная
Топология точка-точка один передатчик, до 10 приёмников многоточечная шина
Узлов на линии 2 до 10 десятки
Типовая дальность 15 м до 1 200 м на низкой скорости до 1 200 м
Режим дуплекс по двум парам дуплекс обычно полудуплекс по одной паре
Устойчивость к помехам средняя высокая высокая

Практический вывод: если нужно соединить два устройства на столе или в шкафу — RS-232 проще и дешевле. Если нужна шина из десяти приборов или линия через цех — это RS-485, и переходник USB-485 стоит столько же, сколько USB-232.

Как это устроено внутри

Передача асинхронная: тактовый провод не нужен, приёмник синхронизируется по спаду стартового бита и дальше отсчитывает интервалы от своего генератора. Кадр состоит из стартового бита (Space), 5–8 бит данных (обычно 8, младшим вперёд), необязательного бита чётности и 1–2 стоповых бит (Mark).

flowchart LR
  IDLE["линия в покое: Mark, от -3 до -15 В"] --> START["стартовый бит: Space, от +3 до +15 В"]
  START --> D0["биты данных D0..D7, младшим вперёд"]
  D0 --> PAR{"чётность включена?"}
  PAR -- да --> PBIT["бит чётности"]
  PAR -- нет --> STOP["стоповый бит: Mark"]
  PBIT --> STOP
  STOP --> NEXT["следующий байт или простой"]

Отсюда практическое правило: «8N1» означает 8 бит данных, Without parity, 1 стоповый бит — и это умолчание девяти случаев из десяти. Несовпадение кадра даёт не ошибку, а мусор: байты приходят, но не те.

Пример одного кадра в терминах линии для символа A (0x41) при 8N1:

покой  старт  D0  D1  D2  D3  D4  D5  D6  D7  стоп  покой
Mark   Space  1   0   0   0   0   0   1   0   Mark  Mark

Скорость и кадр задаются на обеих сторонах, а не согласуются автоматически. Единственное исключение — устройства, которые перебирают скорости при входе (некоторые коммутаторы это умеют), но полагаться на это в приборе нельзя.

Арифметика канала простая и полезная при выборе скорости. Один бит на 9600 бит/с занимает около 104 мкс, кадр 8N1 — десять бит, то есть примерно 1,04 мс; значит, при этой скорости реально проходят около 960 байт в секунду. На 115200 бит/с кадр занимает 87 мкс, а пропускная способность — около 11,5 КБ в секунду. Отсюда видно, почему прошивку прибора через последовательный порт шьют минутами: файл в 100 КБ при 9600 бит/с идёт почти две минуты даже без задержек на приёмной стороне.

Отдельный случай — консольный порт сетевого оборудования. У коммутаторов и маршрутизаторов он часто сделан на разъёме RJ-45, но электрически это тот же RS-232: 9600 бит/с, 8N1, без управления потоком. Кабель при этом перекрёстный (rollover), а распиновка отличается от DB9 — поэтому «консольный кабель Cisco» и «нуль-модемный кабель DB9» не заменяют друг друга.

Замеры и цифры

Числа ниже — из стандарта и практики эксплуатации; это не результаты одного стенда, а параметры, которые проверяются на живом кабеле.

Ключевые числа RS-232: размах уровней, длина кабеля, контакты разъёма и типовой кадр
Что Значение Откуда
Размах сигнала до 15 В в каждую сторону стандарт, электрический слой
Неопределённая зона −3…+3 В стандарт
Макс. длина кабеля по стандарту 15 м стандарт
Контактов в DB9 / DB25 9 / 25 механический слой
Типовой кадр 8N1 практика приборов
Типовая скорость консоли 9 600 бит/с сетевое оборудование
Максимум для USB-переходников 115 200 бит/с и выше у качественных моделей практика

Оговорка о границах: помехоустойчивость и достижимая длина зависят от кабеля, заземления и скорости сильнее, чем от самого стандарта. Цифра «15 метров» описывает расчётный случай, а не гарантию для вашего объекта.

Почему это круто

  • Электрическая простота. Никаких согласований линий и протоколов обнаружения: два провода данных и земля уже образуют рабочий канал.
  • Проверяемость. Осциллографом видно каждый бит; диагностика не требует ни драйвера, ни декодера протокола.
  • Живучесть на расстоянии. ±12 В терпят промышленные помехи там, где TTL-линия уже ловит ошибки.
  • Отсутствие состояния. Порт не требует согласования при подключении: включили, выставили скорость — работаем.
  • Совместимость через десятилетия. Прибор 1985 года и машина 2026 года соединяются кабелем и переходником.
  • Разделение DTE и DCE. Понятие «нуль-модемного» кабеля позволило соединять два одинаковых устройства без специальной электроники.
  • Простая диагностика потока. RTS/CTS и DTR/DSR дают видимые линии состояния: застрявшая передача сразу понятна.
  • Дёшево. Переходник USB-UART стоит копейки и меняется как расходник.
  • Диагностируется без прибора. Петля на контактах 2 и 3 отделяет неисправный порт от неисправного кабеля за минуту.

Установка

Порт в современной машине почти всегда виртуальный: физический COM-порт остался на промышленных платах, а на настольной системе появляется через USB-переходник.

Требование Что это значит на практике
Переходник USB-UART микросхемы FTDI FT232, Silicon Labs CP210x, Prolific PL2303, WCH CH340
Драйвер в Linux обычно уже в ядре; в Windows — с сайта производителя микросхемы
Кабель прямое соединение DTE-DCE или нуль-модемный, если соединяются два DTE
Питание прибора часто берётся отдельно: RS-232 не передаёт питание
Права на порт в Linux нужен доступ к /dev/ttyUSB0 или /dev/ttyS0
# Debian/Ubuntu: терминальные программы
sudo apt install picocom minicom
# проверка, что переходник распознан и создан порт
dmesg | grep -i -E "ftdi|cp210|pl2303|ch341"
ls -l /dev/serial/by-id/

В Windows порт виден в диспетчере устройств как «COM3» и далее; из программ удобнее всего PuTTY или Tera Term, из консоли — mode COM3: BAUD=115200 PARITY=N DATA=8 STOP=1.

При выборе переходника важна не цена, а микросхема: на FT232 и CP210x драйверы ставятся без сюрпризов, у PL2303 встречаются клоны с устаревшим драйвером, а CH340 в Windows требует отдельной установки. На длинных линиях и в цеху лучше брать модель с экранированным корпусом и, при возможности, с гальванической развязкой — она стоит дороже, но спасает от разности потенциалов между зданием и шкафом.

Настройка

Настройка — это четыре числа и один флаг: скорость, биты данных, чётность, стоповые биты и управление потоком. Их выставляют одинаково с двух сторон.

flowchart TD
  START["открыть порт: /dev/ttyUSB0 или COM3"] --> SPEED{"скорость известна?"}
  SPEED -- нет --> GUESS["подбирать 9600, 19200, 38400, 115200"]
  SPEED -- да --> FRAME["кадр: 8 бит данных, без чётности, 1 стоповый"]
  GUESS --> FRAME
  FRAME --> FLOW{"нужно управление потоком?"}
  FLOW -- нет --> RAW["без RTS/CTS и без XON/XOFF"]
  FLOW -- да --> HW["аппаратное RTS/CTS"]
  RAW --> OPEN["работа: minicom, picocom, stty"]
  HW --> OPEN
Параметр Типичное значение Почему меняют
Скорость 115200 для отладки, 9600 для консолей прибор может требовать фиксированную
Биты данных 8 старые приборы используют 7 при текстовом обмене
Чётность none встречается even для промышленных протоколов
Стоповые биты 1 2 у некоторых модемов и старых устройств
Управление потоком выключено включают при передаче больших блоков
Режим линии raw иначе терминал съест управляющие символы
# Linux: выставить канал и прочитать ответ прибора
stty -F /dev/ttyUSB0 9600 cs8 -parenb -cstopb -crtscts raw -echo
printf 'ID\r' > /dev/ttyUSB0
timeout 3 cat /dev/ttyUSB0 | od -c | head
# Windows: настройки порта и отправка строки запроса
$port = New-Object System.IO.Ports.SerialPort COM3,9600,None,8,one
$port.ReadTimeout = 3000
$port.Open()
$port.WriteLine("ID")
$port.ReadLine()
$port.Close()

Если прибор молчит, порядок проверки такой: сначала скорость (перебрать 9600/19200/38400/115200), затем «нуль-модемность» кабеля (поменять местами 2 и 3), затем управление потоком, и только потом — исправность прибора.

Быстрая проверка самого порта без прибора — петля на разъёме: соединить контакты 2 и 3 перемычкой и отправить любой символ. Если терминал показывает отправленное, значит порт, драйвер и переходник работают, а проблема в кабеле или в приборе. Это занимает минуту и сразу отделяет одну группу причин от другой.

Подводные камни

  • Переходник на чужой микросхеме. Драйверы Prolific и FTDI не взаимозаменяемы, а дешёвые копии CH340 в Windows требуют своего драйвера; «порт не появился» чаще всего означает именно это.
  • Нуль-модемный кабель. Два DTE (компьютер и компьютер, контроллер и контроллер) соединяются только перекрёстным кабелем: TXD одного должен попасть в RXD другого.
  • Аппаратное управление потоком при трёхжильном кабеле. Порт открывается, передача стоит; лечится выключением RTS/CTS.
  • Общая земля и контуры. RS-232 не гальванически развязан: разность потенциалов между устройствами выжигает приёмопередатчик. На объектах с длинными линиями ставят изоляторы.
  • Длина и скорость. 15 метров — расчётный предел; на 115200 длинный неэкранированный кабель даёт ошибки кадрирования, а не «медленную работу».
  • Терминал портит данные. Без режима raw программа съедает управляющие символы и переводит строки — бинарный протокол через такой терминал не пройдёт.
  • Питание по интерфейсу не передаётся. Если прибор заявляет питание «от порта», это уже не стандарт, а самоделка, и проверять её надо отдельно.

Чек-лист внедрения

  1. Определить, кто в паре DTE, а кто DCE, и нужен ли перекрёстный кабель.
  2. Подобрать переходник под ОС и проверить, что появился порт (dmesg в Linux, диспетчер устройств в Windows).
  3. Уточнить у документации прибора скорость и кадр; если неизвестны — перебрать скорости.
  4. Выставить канал командой (stty или параметры порта) и прочитать ответ прибора.
  5. Проверить устойчивость: длительный обмен без ошибок кадрирования и без потери байтов.

Критерий «работает»: прибор отвечает на запрос в терминале, поток идёт без мусора, а после перезагрузки машины настройки восстанавливаются тем же скриптом или юнитом, а не руками.

FAQ

Зачем RS-232 в 2026 году, если есть USB?

USB требует драйверов и стека, а RS-232 — это три провода и уровни. В промышленности и медицине прибор живёт 20 лет, порт у него остаётся тем же, а компьютер меняется: дешевле поставить переходник, чем менять прибор.

Чем DB9 отличается от DB25?

Только числом контактов и размером: DB25 — исходный разъём стандарта, DB9 стал де-факто стандартом в IBM PC. Назначение основных линий (2, 3, 5) в обоих одинаково.

Почему данные не идут, хотя порт открывается?

Три частые причины: несовпадение скорости, перекрёстный кабель там, где нужен прямой (или наоборот), и включённое аппаратное управление потоком при отсутствии линий RTS/CTS.

Можно ли соединить два компьютера напрямую?

Да, нуль-модемным кабелем: TXD одного соединяется с RXD другого, RTS с CTS. Без перекрёста оба будут «передавать в пустоту».

15 метров — это жёсткий предел?

Нет. Стандарт описывает расчётный случай; на практике при снижении скорости и экранированном кабеле получается больше, а на высоких скоростях предел оказывается меньше. Проверять нужно на своём объекте.

Что делать, если прибор требует нестандартный кадр?

Выставить его в настройках порта: 7 бит с чётностью even и двумя стоповыми битами встречаются до сих пор. Терминал при этом должен быть в режиме raw, иначе он вмешается в поток.

Итог

RS-232 не конкурирует с USB и не пытается: он занимает нишу, где нужна предсказуемая электрика и минимум согласований. За девятнадцать лет с первой публикации этой статьи изменилось не устройство порта, а способ его подключения: физический COM сменился переходником, а терминалы — picocom и стандартной библиотекой портов в PowerShell. Проверять по-прежнему нужно одно и то же: уровни, распиновку, скорость и управление потоком — в таком порядке. Если порт нужен раз в год, дешевле держать в ящике проверенный переходник на FT232 и нуль-модемный кабель, чем разбираться с драйверами клонов в момент аварии.

Цитата: RS-232 пережил USB не потому, что был лучше, а потому, что его можно проверить осциллографом и починить паяльником — и это качество по-прежнему дороже гигабита.

Связанные материалы

LLM Summary

  • Тема: обзор стандарта RS-232 — последовательного интерфейса между DTE и DCE; статья переписана из материала 2007 года.
  • Что определяет: электрические уровни (±3…±15 В), механику (DB25 и DB9), назначение линий и кадрирование.
  • Электрика: Mark — от −3 до −15 В, Space — от +3 до +15 В, зона −3…+3 В неопределённа; приёмник 3–7 кОм и до 2 500 пФ; передатчик до ±15 В и 0,5 А кратковременно.
  • Линии: данные TXD/RXD, земля GND, управление RTS/CTS и DTR/DSR, состояние DCD/RI; минимально достаточно трёх проводов.
  • Кадр: стартовый бит, 5–8 бит данных младшим вперёд, чётность, 1–2 стоповых бита; типовой режим — 8N1.
  • Команды: stty -F /dev/ttyUSB0 115200 cs8 -parenb -cstopb -crtscts raw -echo, picocom -b 115200 /dev/ttyUSB0, в Windows — System.IO.Ports.SerialPort.
  • Ограничения: точка-точка без адресации, расчётная длина 15 м, отсутствие гальванической развязки, обязательное совпадение скорости и кадра.
  • Что снято при переписывании: приписывание разработки стандарта инженерам IBM с конкретными именами — подтверждения в источниках нет; даты редакций помечены как требующие сверки с публикацией TIA.
  • Ссылки: https://ru.wikipedia.org/wiki/RS-232, https://man7.org/linux/man-pages/man1/stty.1.html

Промт для агента (установка и настройка)

Готовый промт для AI-агента: скопируйте блок целиком кнопкой и отдайте своему ассистенту. Готового AGENTS.md у этой темы нет — источником шагов служат справочные страницы stty и picocom из раздела «Связанные материалы», а значения параметров взяты из описания стандарта выше.

Задача: подключить прибор с последовательным портом RS-232 к машине без COM-порта и добиться устойчивого обмена.

Материалы:
- описание стандарта: статья «Обзор стандарта RS-232» на sysadministrator.ru
- настройка канала: https://man7.org/linux/man-pages/man1/stty.1.html
- терминал: https://github.com/npat-efault/picocom
- драйверы переходников: https://ftdichip.com/drivers/vcp-drivers/

Шаг 1. Убедиться, что переходник распознан и порт существует:
dmesg | grep -i -E "ftdi|cp210|pl2303|ch341"
ls -l /dev/serial/by-id/

Шаг 2. Уточнить у документации прибора скорость и кадр. Если неизвестны — перебирать 9600, 19200, 38400, 115200.

Шаг 3. Выставить канал и прочитать ответ (Linux):
stty -F /dev/ttyUSB0 9600 cs8 -parenb -cstopb -crtscts raw -echo
printf 'ID\r' > /dev/ttyUSB0
timeout 3 cat /dev/ttyUSB0 | od -c | head

Шаг 4. Открыть интерактивный терминал и проверить обмен вручную:
picocom -b 9600 /dev/ttyUSB0

Шаг 5. Windows: проверить порт в диспетчере устройств и параметры в PowerShell:
$port = New-Object System.IO.Ports.SerialPort COM3,9600,None,8,one
$port.ReadTimeout = 3000
$port.Open()
$port.WriteLine("ID")
$port.ReadLine()
$port.Close()

Порядок диагностики, если обмена нет:
1) скорость: перебрать четыре типовые;
2) кабель: проверить, нужен ли перекрёстный (2 и 3 меняются местами);
3) управление потоком: выключить RTS/CTS, если в кабеле три жилы;
4) земля: проверить общий провод и отсутствие разности потенциалов;
5) прибор: проверить на заведомо исправном порту.

Что считать успехом: прибор отвечает на запрос, поток идёт без мусора и ошибок кадрирования не менее пяти минут, настройки восстанавливаются скриптом после перезагрузки.

Ограничения:
- не подключать прибор с неизвестным питанием, пока не проверена общая земля: RS-232 не развязан гальванически;
- не выставлять аппаратное управление потоком, если в кабеле нет линий RTS/CTS;
- не проверять бинарный протокол в терминале без режима raw;
- если команда падает — остановиться и показать команду, вывод и код возврата.