Железные призраки прошлого

Компьютерная история

СтатьиСтатьиСтатьи
Cтарое железо и софт

МузейМузейМузей
Старые компьютеры

ФорумФорумФорум
Полигон призраков

ОбщалкаКонкурсыКонкурсы
Статьи и фото



Искать на сайте:
Запуск модема 2400КН



Эта статья прислана на конкурс.

Technomancer (автор играет на конкурсе под псевдонимом)

В опросе о конкурсе статей я голосовал за, но о чем писать, у меня идей не было. Свой гибрид ДВК/Э-60 я запускаю дико медленно, и раз уж здесь на форуме проект и так обсуждается, вряд ли было бы интересно об этом читать. Но за неделю до конца конкурса я вдруг очнулся — вот, тема статьи у меня же буквально валяется под рабочим столом — модем 2400КН. Я же вечный студент — на последний момент отложив даже последний момент, работу сдать успею.


модем 2400КН


Изучение модема


Достались мне несколько штук модемов 2400КН — неиспользованных, еще в коробках. Хотелось бы запустить простую последовательную связь через модемы. Начну с того, что это за модем и что в нем внутри.

Как уже видно из названия модема, он предусмотрен для обмена данных со скоростью 2400b/s. Это стандартная скорость обмена данных последовательного интерфейса, поэтому я предполагаю, что связь с модемом происходит через последовательный интерфейс, который хоть частично совместим с RS-232. С модемом шел паспорт с совсем простым описанием модема:




Модем обеспечивает двухстороннюю связь через два канала — основной синхронный скоростью 1200 или 2400b/s и обратный, скоростью до 75b/s.

На панели модема находятся два разъёма — С1 и С2-100. С1 — разъём соединительной линии, С2 — разъём линии между модемом и ЭВМ, предположительно, Стык-С2. Есть четыре светодиода состояния модема и шесть кнопок управления модемом. Модем состоит из трёх плат и блока питания. На плате М-06 все детали аналоговые, и там же находится защита сигнальной линии. По-моему, эта плата как раз и есть модулятор - демодулятор основного канала. На плате три кнопки — 1ПУ, 2ПУ и 4ПУ. Функции кнопок не ясны. Плата М-07 содержит только цифровые микросхемы, это, видимо, плата управления. Плата М-08 содержит и аналоговые, и цифровые микросхемы, предположительно, аналоговая часть — обработка обратного канала. На платах М-06 и М-08 находятся гибридные микросхемы фильтров низкой и высокой частоты, которые используются, скорее всего, для демодуляции основного и обратного каналов.



Модем внутри
Модем внутри


Плата М-06
Плата М-06


Плата М-07
Плата М-07


Плата М-08
Плата М-08


С модемом поставлялся только паспорт с основными параметрами. В сети (здесь) нашлось упоминание, что модем 2400КН работают в соответствии с рекомендацией ITU-T v.26. Вот этой информации уже было достаточно, чтобы изучить работу модема. Рекомендации ITU-T официально свободно доступны в сети. Главное в рекомендации v.26 — скорость передачи 2400b/s, несущая частота 1800Hz, фазовая модуляция. Фаза несущей частоты модулируется по парам передаваемых бит. Каждая пара определяет угол фазы, по которой изменяется фаза передаваемого сигнала.


00 — +0°

01 — +90°

11 — +180°

10 — +270°




В v.26 упоминается и рекомендация v.23, в которой описаны параметры обратного (сервисного) канала. Главное в v.23 — частотная модуляция, логическим уровням соответствуют частоты 390 и 450Hz, скорость передаваемых данных по обратному каналу — до 75b/s. Упоминалась и рекомендация v.24, в которой подробно описаны физические сигналы между модемом и другой аппаратурой.


Так как много пришлось заниматься интерфейсом RS-232, я привык к таким названиям сигналов, как RTS, CTS, RI, TXD, TXD. Это сокращения их функций, и их проще запомнить. Но в рекомендациях ITU-T сигналы нумеруются (102 — 142) и обозначают те же функции. На панели модема есть три светодиода с нумерацией 106, 107, 109, 122. Значит, модем действительно совместим с рекомендациями ITU-T и данные светодиоды отображают выходные сигналы состояния модема:

106 — сигнал CTS — модем готов передавать данные в линию.

107 — сигнал DSR — модем включен и готов к работе.

109 — сигнал DCD — модем на линии связи "увидел" несущую частоту.

122 — сигнал backwards DCD — модем на линии связи "увидел" несущую частоту обратного канала.


Дальше надо определить, как расположены сигналы в разъёме С2-100. Разъём 23-контактный, не соответствующий DB-25, который упоминается в v.24 как стандартный разъём подключения модема. В v.24 упоминается некий стандарт распиновки ISO2110, но данный стандарт мне не удалось найти в свободном доступе. Я предполагаю, что распиновка v.24, которая находится в сети, соответствует данному стандарту.


Начинаю с самого простого, что я могу найти в разъёме - сколько сигналов используется, и какие из этих сигналов - земля. Таким образом, я нахожу, что:


1,7 — земля

9, 10, 11, 18, 21 — не подключены.


Странное совпадение — в распиновке v.24. тоже 1, 7 — экран и сигнальная земля, 9 - 11 не подключены, а 18 и 21 — выводы сигналов loopback (которые могут и не использоваться).


Ладно, пусть подождёт это "совпадение". Я же не в таком тупике, что нужно перерисовывать схему модема, чтобы понять функции сигналов. Пока сравнил параметры v.24 и стыка С2, я наткнулся на вот эту статью о модеме 1200КН. В данной статье упоминается, что телефонная линия подключается к контактам 1 и 2 разъёма С1. Ну, давай, попробую дать несущую 1800Hz в контакты 1 и 2. Через резистор 1К подал 50мВ сигнал с надеждой, что загорится светодиод 109 — DCD. Получилось это не сразу, но получилось! Оказалось, что нужно нажать кнопку КМ, чтобы сигнал появился. Подал одну из несущих обратного канала, и загорелся светодиод готовности обратного канала 122 - Backwards DCD. Так я выяснил, что в разъёме С2 совпадают не только сигналы земли, но и сигналы 109 и 122. На контактах 8 и 12 при подаче несущих (и светящихся светодиодов) появляется высокий уровень. В распиновке v.24 как раз 8 — сигнал DCD и 12 — сигнал DCD обратного канала. Значит, я уже довольно уверен в том, что разработчики 2400КН просто взяли распиновку DB-25 стандарта v.24 и сохраняя нумерацию, использовали другой разъём. Дальше выяснил, что сигнал 119 — Received backward channel data - меняет уровень при подаче на линию несущих частот обратного канала. На выводах 15 и 17 есть сигнал "меандр" частотой 2400Hz — это синхронизация передаваемых и принимаемых данных.


Ну ладно, я выяснил функциональность некоторых выходов, что уже прогресс. Дальше надо проверить управление модемом и каким-нибудь образом через модем передавать хоть самые простые данные. Для этого я сделал плату с преобразователями из логических уровней на уровни RS-232 (v.24) для связи модема и ПК через переходник USB-UART. На плате классика — MAX232. К плате подключается USB-UART переходник, который с ПК подаёт сигналы обмена данными и управления модема. Сигналы, которые должны быть статическими (DTR, TST, backwards RTS), устанавливаются DIP переключателем.




Односторонняя связь


Первое, что я подавал через плату — сигнал готовности "абонента" — DTR. При подаче данного сигнала загорается светодиод 107 - DSR. Значит, модем готов к работе, и понимает, что "абонент" тоже готов. Дальше подаю сигнал "RTS" — запрос посылки данных. Загорается светодиод 106, обозначая, что модем готов принимать данные и пересылать данные в линию. Осциллографом на контактах 1 и 2 разъёма С1 вижу несущую частоту. Круто! Модем управляется с внешнего устройства и готов пересылать данные.


Изображение передачи пары бит "11" (по рекомендации v.26 каждые 1,5 периода несущей частоты фаза изменяется на +180 градусов):




Изображение передачи пары бит "00" (по рекомендации v.26, фаза не изменяется):




Дальше небольшая задержка. Иногда (довольно часто) модем включается в каком-то странном режиме. На несущей явно видно, что идёт какой-то сигнал, но непонятно, какой. В конце концов оказалось, что контакт 23 разъёма С2 не устанавливает скорость обмена данными, а включает тестовый режим. В таком случае в линию постоянно передаётся последовательность "010101", так же, как при нажатом переключателе ТОЧ. Пришлось и этот сигнал подключить на мою плату, чтобы модем всегда запускался в стабильном режиме работы. Такая же история с сигналом "backwards RTS" — выяснилось, когда время от времени при включении модема на линию постоянно выводилась несущая частота обратного канала.


В данный момент я выяснил функции нескольких кнопок на панеле модема:

КМ — ручной режим???

ОК — "обратный канал", вручную включает несущую обратного канала при нажатой кнопке КМ.

ПК — "прямой канал", вручную включает несущую прямого канала при нажатой кнопке КМ. Постоянно передаёт логический уровень 1.

ТОЧ — расшифровка не ясна, передаёт последовательность "01010101...", скорее всего, для проверки канала или ответного модема.

0 — "ноль", постоянно передаёт логический уровень 0 при включенных кнопок КМ и ПК.

НС — функция не ясна, отключает передачу в любом режиме.

Плюс к этому — распиновка разъема С2-100.




Ну и конечно, в конце концов осталось лишь подключить линию передачи данных, чтобы на линию подался уже модулированный сигнал. Да, я понимаю, что данный интерфейс синхронный с тактовым сигналом от модема, но чисто для проверки достаточно включить DRT и RTS и подавать несинхронизированный сигнал в модем, чтобы понятные данные передавались в линию.


Соединял я оба модема двумя проводами между собой. Один передаёт данные, и второй при подаче сигнала DTR видит несущую и демодулирует данные. Выход данных через простой порт RS-232 подключается к ПК. На другом окне терминальной программы открываю порт RS-232 и то, что пишу в первом окне, пробегает через модемы и отображается на втором. Вот, у меня через пару модемов 2400КН есть простая односторонняя связь без огромных забот.
Я достиг своей цели - запустить самую простую связь. Но у меня еще есть время, и я хочу достичь большего. Было бы хорошо между двумя ПК запустить стабильную двухстороннюю связь через последовательный порт. Но тут дело усложняется. Модемы по одной паре проводов обеспечивают только полудуплексную связь. Значит, во время приема данных передача должна автоматически блокироваться. Это по идее обеспечивается сигналами RTS и CTS и называется "hardware handshaking" и в RS-232, и в v.24. При v.24 на сигнал RTS в модем подаётся запрос разрешения передачи и модем отвечает сигналом CTS, что данные можно передавать. Тогда ПК может передавать данные как положено. Но в RS-232 наших дней принцип "hardware handshaking" работает другим образом - пока компьютер готов принимать данные, сигнал RTS всё время стоит активным, и соответственно, оба модема всё время стояли бы в режиме передачи. Плюс оказалось, что у дешевых переходников USB-UART "hardware handshaking" вообще нормально не работает, и пришлось покупать другие переходники для полной фукциональности.


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


Двухсторонняя связь


Чтобы добиться двухсторонней полудуплексной связи, нужно:

  1. Управлять сигналами управления модема;
  2. Хоть немного буферизовать данные;
  3. При приеме данных сигналом CTS блокировать передачу данных компьютера;
  4. Обмен с модемом — синхронный, с ПК — асинхронный.

С такой задачей отлично справляется микроконтроллер. Я выбрал ATTiny1634, потому что он по количеству сигналов подходит для данной задачи. Пара таких как раз валялись как резерв одного проекта. Корпус поверхностного монтажа, но это же не проблема, плюс после монтажа контроллер выглядит как маленькая ВП1. В один вечер написал программу приёма данных. Всё получилось как положено - пока данные принимаются, для ПК передача данных запрещена. На второй вечер я написал и код передачи данных. После некоторых поправок заработала и передача. При передаче сначала выдаю сигнал RTS, дожидаюсь сигнала CTS и передаю данные в линию. Ну и вот, я достиг цели - у меня работает устойчивая двухсторонняя связь.


Но я решил на этом не останавливаться. Можно же на этом сделать что-нибудь более интересное, чем просто связь по последовательному порту? Ответ — протокол SLIP — "serial line internet protocol". Да, почему же через модемы не пропустить IP связь? Оказалось что дело намного проще, чем мне казалось. С тривиальным конфигом, найденным здесь, я запустил локальный SLIP сначала напрямую просто кабелем и тогда уже через модемы. В тот момент, когда через модемы 30-ти летней давности мне пошел ping (правда, с задержкой 800мс) и ssh, я почувствовал что вот теперь цель статьи уже достигнута.




Я хотел идти и дальше, роутил линию связи в интернет, но такая маленькая скорость ограничила доступ. Даже для самых простых задач скорости 2400b/s слишком мало. Форум на браузере не открылся в течение получаса, и идея прислать данную статью через модемы так и не удалась.


В конце концов у меня получилась такая вот схема:




Ещё я пробовал соединительную линию пропустить через АТС, но для этого нужно лучше изучить, как построен модем. Например, как к линии подключена розетка ТА, и что происходит при сигнале вызова.

У меня есть и план на будущее (продолжу уже в теме на форуме):

  1. Запустить связь через АТС, набирая номер на телефоне, который подключен к модему;
  2. Запустить обратный канал;
  3. "Интегрировать" модемы в свою экспозицию старой техники и через канал связи соединить старую ЭВМ с ПК;
  4. То, что в процессе изучил - документировать и выложить публично.


Использованные материалы:


ЗЫ. И извиняюсь за ошибки языка. Русский — не мой родной язык.


От редактора — мы постарались исправить ошибки в написании слов и фраз, по возможности не затрагивая при этом оригинальный стиль автора (Rana_, Serge).



Послесловие


Когда статья уже была опубликована и на форуме начиналась дискуссия, я вспомнил, что существуют текстовые браузеры. То есть, с консоли Linux можно просматривать упрощенные веб-страницы, без картинок. Так вот, на ПК установил броузер "Links" и через этот броузер мне удалось не только открыть форум, но и оставить ответ на форуме. Так что — да, в конце концов уже после окончания конкурса я достиг своей цели. Это значит, что через модемы 80-х годов можно заходить в интернет наших дней.


Скриншот форума, сделанный в текстовом браузере, май 2017
Скриншот форума, сделанный в текстовом браузере, май 2017


Обсудить статью в специально созданной ветке форума. Эта статья прислана на конкурс.

© Текст, фотографии - Technomancer (автор играет на конкурсе под псевдонимом)

© Железные призраки прошлого - 2017 г.

Опубликовано 30.04.2017 г.


Дополнения или поправки на phantom@sannata.ru
 


На главную страницу сайта

На страницу конкурсов



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