Как работает последовательный порт и как создать самый крутой нуль-модемный кабель.

Здесь собрана теоретическая часть. Я рассказываю не о конкретных моделях а о моём музее и том, как всё работает
Ответить
kasak
Администратор
Сообщения: 10
Зарегистрирован: 14 янв 2026, 18:28

Как работает последовательный порт и как создать самый крутой нуль-модемный кабель.

Сообщение kasak »

Поскольку все модемы в моей коллекции именно для последовательного порта (в народе именуемого COM) вижу необходимым рассказать так же и о его работе.
Давайте вместе разберёмся, как же работает последовательный порт, и соберём самый крутой нуль-модемный кабель.

В стандартом современном последовательном порте 9 пинов. Вот их список:
  1. Carrier Detect (Обнаружена несущая)
  2. Receive Data (Принятые данные)
  3. Transfer Data (Отправленные данные)
  4. Data Terminal Ready (Терминал готов)
  5. Ground (Общий ноль)
  6. Data Set Ready (Сигнал готовности модема)
  7. Request To Send (Запрос на отправку)
  8. Clear To Send (Готов отправлять)
  9. Ring Indicator (Поступил звонок)
Что это всё за страшные слова мы сейчас разберёмся, а пока давайте взглянем на то, как выглядит схема связи между модемами:
scheme.jpg
scheme.jpg (31 КБ) 22 просмотра
На этом изображении DTE это наши компьютеры а DCE наши модемы.
Я уже говорил ранее что модемы были изобретены до интернетов и использовались для терминального доступа.

Протокол общения между DTE и DCE называется в данном случае rs-232 и именно к нему относятся вышеуказанные сигналы.
Чтобы лучше понять куда какой сигнал поступает, давайте разделим их на сигналы которые посылает DTE и сигналы которые посылает DCE.
Untitled 2.png
Untitled 2.png (6.8 КБ) 22 просмотра
Вот смотрю я на эту табличку и думаю какой же я бездарный. Ужасная табличка.
Но ладно. По табличке мы можем понять кто куда и что посылает.
Теперь давайте разберёмся с каждым сигналом кто за что отвечает.
Чтобы не запутаться, давайте пойдём по списку начиная с первого пина.
  1. Carrier Detect - Модем сообщает компьютеру о том что установлено соединение. Когда модем установит соединение, он подаст этот сигнал.
  2. Receive Data - Модем по этой линии передаёт на компьютер принятые данные.
  3. Transfer Data - Компьютер передаёт модему данные.
  4. Data Terminal Ready - Компьютер сообщает модему о том что готов к работе.
  5. GROUND - Общий ноль. В rs-232 уровень напряжения +15 вольт соответствует нулю. А -15 воль соответствует единице. А от нуля и считается этот плюс или минус.
  6. Data Set Ready - Не смотря на название, на самом деле этот сигнал устанавливается модемом когда он готов передавать данные.
  7. Request To Send - Этот сигнал передаётся от компьютера к модему, и означает что компьютер хочет передать данные.
  8. Clear to Send - Модем сообщает компьютеру о готовности передавать данные.
  9. Ring Indicatior - Модем сообщает компьютеру что в линию поступает звонок.
Если с сигналами Receive и Transfer всё более-менее понятно, то что это за остальные сигналы о готовности?
А ответ на самом деле довольно прост, как я уже говорил ранее, модем с последовательным портом - устройство автономное, у него свой процессор, свой внутренний мир, и мы должны отсеивать передающиеся данные в ЛИНИЮ от команд, которые мы передаём МОДЕМУ. Вот именно для того, чтобы разделить какие данные куда уходят и придуманы эти сигналы.
Как это работает:
Когда компьютер посылает модему команды, а не данные, компьютер не даёт сигнал на линию RTS. В таком режиме модем интерпретирует данные как команды себе, и ничего не посылает в линию.
Когда компьютер хочет послать данные не модему а в линию, компьютер даёт сигнал RTS, на что модем должен ответить сигналом DSR. Тогда компьютер может начать передачу.

Надеюсь вы не очень запутались в этих сигналах, потому что сейчас нам предстоит создать самый крутой нуль-модемный кабель, со всем функционалом, включая управление потоком данных.
Попытайтесь представить что нам нужно убрать из схемы оба DCE и оставить только два DTE, но сигналы с них нам нужно запутать так, чтобы каждый из них ничего не заподозрил.
  1. Земли (5 пин) обоих разъёмов соединяем.
  2. Начнём с самого простого. Там где один передаёт, второй должен принимать. Поэтому пины 2 и 3 мы перекрещиваем.
    Пин 3 с первого разъёма должен приходить на пин 2 на втором разъёме и наоборот.
  3. Теперь задачка посложнее. Поскольку у нас больше нет DCE, нам больше не нужно посылать на него команды. Мы теперь посылаем данные только в линию. И кстати, линия теперь у нас всегда доступна. Поэтому на каждом терминале теперь должны быть активны пины 1 (обнаружена несущая) и 6 (модем готов к передаче). А устанавливать на них высокий уровень будет у нас 4 пин, который сообщает о готовности компьютера. Иными словами, мы с 4 пина первого разьёма, должны подать сигнал на пины 1 и 6 второго разъёма и наоборот.
  4. И наконец последнее - управление потоком данных. У нас остались два сигнала RTS и CTS. Один из них отправляется компьютером, второй принимается компьютером. RTS говорит что хочет передать данные, CTS подтверждает что готов передавать данные.
    То есть пин 7 первого разъёма, должен приходить на пин 8 второго разъёма, и наоборот.
Честно говоря я не очень искусный рисовальщик схем, но я набросал вот такую схемку нашего будущего кабеля. Может быть не очень наглядная, но зато с обозначением направления сигналов.
nullmodem.png
nullmodem.png (11.9 КБ) 22 просмотра
Ну и от слов к делу, давайте спаяем самый крутой нуль-модемный кабель.

Очевидно нам нужен кабель, желательно мягкий и не очень толстый, минимум с 7 жилами. И два разъёма типа "мама".
photo_2024-10-22_13-16-36.jpg
photo_2024-10-22_13-16-36.jpg (193.16 КБ) 22 просмотра
Между 1 и 6 пином я кинул перемычку, мой кабель оказался с экраном, поэтому экран я припаял на корпус разъёма предварительно надев термоусадку, чтобы в случае чего он мне ничего не замкнул.
photo_2024-10-22_13-16-34.jpg
photo_2024-10-22_13-16-34.jpg (94.93 КБ) 22 просмотра
photo_2024-10-22_13-16-32.jpg
photo_2024-10-22_13-16-32.jpg (106.67 КБ) 22 просмотра
photo_2024-10-22_13-16-29.jpg
photo_2024-10-22_13-16-29.jpg (106.23 КБ) 22 просмотра
photo_2024-10-22_13-16-27.jpg
photo_2024-10-22_13-16-27.jpg (135.73 КБ) 22 просмотра
После чего я надел на кабель две стяжечки, но не очень сильно их затянул.
photo_2024-10-22_13-16-25.jpg
photo_2024-10-22_13-16-25.jpg (95.82 КБ) 22 просмотра
Они будут служить нам ограничителем, когда я надел корпус на разъём, эти стяжечки сдвинулись куда нужно, и осталось только их зятянуть посильнее и мазнуть всё термоклеем.
photo_2024-10-22_13-16-23.jpg
photo_2024-10-22_13-16-23.jpg (85.96 КБ) 22 просмотра
И вуаля, у нас готов самый крутой в мире нуль модемный кабель. Теперь можно испытать его в играх дум и дюк нюкем.

DOOM:
doomser.webp
doomser.webp (5.45 МБ) 20 просмотров
Duke Nukem:
dnserial.webp
dnserial.webp (37.22 МБ) 20 просмотров
Ответить