Введение
В последнее время модемы становятся неотъемлемой частью компьютера. Установив модем на свой компьютер, вы фактически открываете для себя новый мир. Ваш компьютер превращается из обособленного компьютера в звено глобальной сети.
Модем позволит вам, не выходя из дома, получить доступ к базам данных, которые могут быть удалены от вас на многие тысячи километров, разместить сообщение на BBS (электронной доске объявлений), доступной другим пользователям, скопировать с той же BBS интересующие вас файлы, интегрировать домашний компьютер в сеть вашего офиса, при этом создается полное ощущение работы в сети офиса. Кроме того, воспользовавшись глобальными сетями (RelCom, FidoNet, Internet) можно принимать и посылать электронные письма не только внутри города, но фактически в любой конец земного шара. Глобальные сети дают возможность не только обмениваться почтой, но и участвовать во всевозможных конференциях, получать новости практически по любой интересующей вас тематике.
Существует три основных способа соединения компьютеров для обмена информацией:
непосредственная связь, через асинхронный порт;
связь с использованием модема;
связь через локальные сети.
1. Типы модемов
Боды и биты в секунду. Когда говорят о модемах, то очень часто путают боды и биты в секунду (бит/с). Скорость передачи выраженная в бодах, указывает, сколько раз в секунду изменяется состояние сигнала, передаваемого из одного устройства в другое. Если, например, частота или фаза сигнала меняется 300 раз в секунду, то говорят, - скорость передачи сигнала равна 300 бодам. Если при этом каждое состояние (изменение) передаваемого сигнала используется для передачи одного бита, то 300 бод в данном случае эквивалентны 300 бит/с. Если же в каждом состоянии сигнала передается два бита информации, то скорость передачи в битах в секунду будетв 2 раза больше, т.е. 600 бит/с. В большинстве модемов каждому состоянию соответствует несколько битов, поэтому фактическая скорость передачи в бодах меньше скорости в битах в секунду.
В настоящее время выпускается огромное количество всевозможных модемов, начиная от простейших, обеспечивающих скорость передачи около 300 бит/сек, до сложных факс-модемных плат, позволяющих вам послать с вашего компьютера факс или звуковое письмо в любую точку мира.
Аппаратно модемы выполнены либо как отдельная плата, вставляемая в слот на материнской плате компьютера, либо в виде отдельного корпуса с блоком питания, который подключается к последовательному асинхронному порту компьютера. Первый из низ называется внутренним модемом, а второй - внешним.
Типичный модем содержит следующие компоненты: специализированный микропроцессор, управляющий работой модема, оперативную память, хранящую значения регистров модема и буферизующие входную/выходную информацию, постоянную память, динамик, позволяющий выполнять звуковой контроль связи, а также другие вспомогательные элементы (трансформатор, резисторы, конденсаторы, разьемы). Если у вас достаточно современный модем, то он скорее всего дополнительно содержит электрически перепрограммируемую постоянную память (EEPROM), в которой может быть сохранена конфигурация модема даже при выключении питания.
Чтобы модемы могли обмениваться друг с другом информацией, надо, чтобы они использовали одинаковые способы передачи данных по телефонным линиям. Для разработки стандартов передачи данных был создан специальный международный консультативный комитет по телеграфии и телефонии (CCITT) и приняты следующие рекомендации:
Bell 103
Стандарт со скоростью передачи 300 бит/с принят в США и Канаде. Тип используемой модуляции - частотная, каждому состоянию сигнала соответствует один бит. В большинстве быстродействующих современных компьютеров этот стандарт предусмотрен, хотя он уже устарел.
Bell 212A
Стандарт со скоростью передачи 1200 бит/с принят в США и Канаде. В нем используется дифференциальная фазовая модуляция DPSK (Differential Phase-Shift Keying), скорость передачи—600 бод, каждому состоянию соответствует 2 бит данных.
V.21
Этот международный стандарт передачи данных со скоростью 300 бит/с подобен стандарту Bell 103, однако из-за различий в используемых диапазонах частот модемы V.21 не совместимы с модемами Bell 103. В основном V.21 используется за пределами США.
V.22
Данный международный стандарт передачи данных со скоростью 1200 бит/с подобен Bell 212A, однако не совместим с ним по некоторым характеристикам, в частности по способу ответа на вызов. Этот стандарт используется, в основном, за пределами США.
V.22bis
Это международный стандарт передачи данных со скоростью 2400 бит/с. Слово bis означает второй, т.е улучшенный вариант стандарта V.22. Применяется V.22bis как в США, так и в других странах. Используется амплитудно-фазовая модуляция (QAM), скорость передачи данных— 600 бод, в каждом состоянии сигнала кодируется 4 бит.
V.23
Данным стандартом предусматривается передача данных со скоростью 1200 бит/с в одном направлении и 75 бит/с— в обратном. Модем, соответствующий этому стандарту, оказывается псевдодуплексным, т.е. он может обмениваться данными в обоих направлениях, но с разными скоростями. V.23 был разработан для того, чтобы снизить стоимость модемов со скоростью передачи 1200 бит/с, которые были довольно дорогими в начале 80-х годов. Используется, в основном, в Европе.
V.29
Этот стандарт определяет полудуплексный (однонаправленный) способ передачи данных со скоростью 9600 бит/с. Обычно он используется для факсимильных аппаратов (факсов), и очень редко для модемов. Поскольку указанный стандарт является полудуплексным, соответствующие устройства оказываются намного проще тех, которые работают в высокоскоростных дуплексных режимах. V.29 в качестве стандарта для модемов не является функционально полным, так как он не определяет полного набора требований к стандартам. Именно поэтому устройства разных серий редко оказываются совместимыми. Эти недостатки стандарта не касаются факсимильных аппаратов, параметры которых определены в V.29 полностью.
V.32
Это стандарт дуплексной передачи данных со скоростью 9600 бит/с. В нем определены методы коррекции ошибок и способы связи. Используется амплитудно-фазовая модуляция с так называемым кодированием TCQAM, при котором каждому состоянию сигнала соответствует 4 бит. При таком кодировании вместе с каждой группой из 4 бит передается дополнительный контрольный бит. Это позволяет выполнять коррекцию ошибок в приемном устройстве, что, в свою очередь, повышает устойчивость модемов, работающих в стандарте V.32, к воздействию шумов в линии передачи. Поскольку даже при однонаправленной передаче данных со скоростью 9600 бит/с используется практически вся полоса пропускания телефонной линии, в модемах V.32 реализуется сложная процедура прослушивания ответного сигнала, которая заключается в периодическом отключении собственных передаваемых сигналов и приеме ответных сигналов. До последнего времени распространение модемов, работающих в стандарте V.32, сдерживалось их сложностью и высокой стоимостью. Однако появление на рынке дешевых комплектов микросхем, разработанных специально для этих целей, изменило ситуацию, и V.32 постепенно превратился в общепринятый стандарт передачи данных со скоростью 9600 бит/с.
V.32bis
Стандарт V.32bis — это расширение V.32 со скоростью передачи 14400 бит/с. В нем применяется та же модуляция, что и в V.32 (TCQAM), скорость передачи - 2400 бод, в каждом состоянии кодируется 6 бит. Благодаря такому кодированию связь получается весьма надежной. Протокол V.32bis обеспечивает дуплексную связь. Если качество телефонной линии невысокое, то модемы переключаются в обычный режим V.32. Этот стандарт, благодаря своей производительности и помехоустойчивости, стал общепринятым при работе в современных телефонных линиях.
V.32fast
Стандарт V.32fast, также называемый V.FC (Fast Class), — это новый предложенный ССIТТ стандарт который является расширением V.32 и V.32bis. В нем предусмотрена скорость передачи данают 28800 бит/с, однако впоследствии он заменился стандартом V.34.
V.34
Стандарт V.34 — стандарт передачи данных со скоростью 31,2 и 33,6 Кбит/с. Многие существующие модемы V.34, оснащены сложными цифровыми процессорами Digital Signal Processors (DSPs).
V.90
Стандарт V.90 – стандарт передачи данных, который позволяет модему передавать со скоростью 57600 бит/с, и принимать данные со скокостью 33600 бит/с.
Ещё к представленным выше стандартам я хочу добавить наглядную таблицу стандартизации скорости модемов в зависимости от их применения.
Скорость модема | С какой целью он может использоваться |
300 bps | Для работы с местной BBS.(хотя не все диалоговые сервисные службы сейчас позволяют пользоваться ими так как они очень долго занимают телефонную линию, и вообще это очень устаревшая скорость передачи информации) |
1200 bps | Для местной BBS. |
2400 bps | Это самая низкая скорость продаваемых сегодня модемов может удовлетворять, если не осуществляется передача больших объемов информации(особенно на дальние расстояния) |
9600 bps | Модемы с такой скоростью (и выше) выполняют коррекцию ошибок и сжатие данных. Некоторые диалоговые сервисные службы приближаются к такому значению скорости, за исключением Internet. Многие BBS работают именно с этими параметрами скорости. |
16 800 bps | Такая скорость достигается только при установлении связи с модемом такой же модели. |
19 200 bps | То же, что и 16.8Kbps-модемы |
28 800 bps | Популярный ранее стандарт. Используется протокол v.34 bis |
36 600 bps | |
56 000 bps | Скорость современного модема. Используются протоколы: V90 и K56Flex |
2. Программирование модемов
После выпуска американской фирмой Hayes модемов серии Smartmodem, система команд, использованная в ней, стала неким стандартом, которого придерживаются остальные фирмы - разработчики модемов. Система команд, применяемая в этих модемах, носит название hayes-команд, или AT-команд.
Со времени выпуска первых AT-совместимых модемов набор их команд несколько расширился, но все основные команды остались без изменения.
Все команды, передаваемые компьютером модему, надо начинать префиксом AT (ATtention - внимание) и заканчивать символом возврата каретки (<CR>). Только команда А/ и Escape-последовательность "+++" не требуют для себя префикса AT.
После префикса AT могут идти одна или сразу несколько команд. Для ясности эти команды могут быть отделены друг от друга символами пробела, тире, скобками. В большинстве случаев команды могут быть написаны как заглавными, так и строчными буквами.
При передаче модему команд они сначала заносятся во внутренний буфер, который, как правило, имеет размер 40 символов. Команды, записанные в буфер модема, исполняются после поступления символа возврата каретки. Вследствие ограниченности размера буфера не следует передавать модему слишком длинные команды (больше размера буфера). Длинные команды можно разбивать на части и передавать в несколько заходов. При этом каждая часть должна начинаться префиксом АТ и заканчиваться символом возврата каретки.
Если вы допустили ошибку при наборе команды, то ее можно исправить, используя клавишу BackSpace.
После выполнения каждой команды модем посылает обратно компьютеру ответ в виде числа или слова. Этот ответ означает, выполнена ли команда или произошла ошибка. Если у вас внешний модем, то на его лицевой панели находится восемь световых индикаторов. Хотя их расположение на различных моделях может меняться, их обозначения являются стандартными:
MR Modem Ready - Модем готов к обмену данными. Если этотиндикатор не горит, то надо проверить линию питания модема.
TR Terminal Ready - Компьютер готов к обмену данными с модемом. Этот индикатор горит, когда модем получил от компьютерасигнал DTR.
CD Carrier Detect - Индикатор зажигается, когда модем обнаружил несущую частоту на линии. Индикатор должен гореть на протяжении всего сеанса связи и гаснуть, когда один из модемов освободит линию.
SD Send Data - Индикатор мигает, когда модем получает данные от компьютера.
RD Receive Data - Индикатор мигает, когда модем передает данные к компьютеру
HS High Speed - Модем работает на максимально возможной для него скорости.
AA Auto Answer - Модем находится в режиме автоответа. То есть модем автоматически будет отвечать на приходящие звонки. Когда модем обнаружит звонок на телефонной линии, этот индикатор замигает.
OH Off-Hook - Этот индикатор горит, когда модем снял трубку (занимает линию).
Стандартный набор ответов модема
OK- Модем выполнил команду без ошибок
CONNECT- Модем установил связь со скоростью 300 bps
RING- Модем обнаружил сигнал звонка
NO CARRIER- Модем потерял несущую частоту
ERROR- Ошибка в командной строке
CONNECT X- Модем установил связь со скоростью X
NO DIALTONE- Отсутствие сигнала станции при снятии трубки
BUSY- Модем обнаружил сигнал "занято"
NO ANSWER- Нет ответа после ожидания сигнала
Основные принципы программирования модемов
Доступ к модему происходит через последовательный асинхронный порт. При этом для передачи модему команд их необходимо просто записать в регистр данных COM-порта, на котором находится модем. Ответ от модема также поступает через последовательный порт. Передавая модему команды, его можно проинициализировать, перевести в режим автоответа или заставить набрать номер.
Когда модем наберет номер удаленного абонента или когда модему в режиме автоответа придет вызов, он попытается установить связь с удаленным модемом. После установления связи модем передает компьютеру через COM-порт специальное сообщение и переключится из командного режима в режим передачи данных. После этого данные, передаваемые модему, перестают восприниматься им как команды и сразу передаются по телефонной линии на удаленный модем.
Итак, после установления связи с удаленным модемом, коммуникационная программа может начинать обмен данными. Обмен данными так же, как и передача команд, осуществляется через COM-порт. Затем при помощи специальной Escape-последовательности можно переключить модем из режима передачи данных обратно в командный режим и положить трубку, разорвав связь с удаленным модемом.
3. Последовательность действий для установления связи
Инициализация COM-порта.
Проводим инициализацию COM-порта, к которому подключен модем. Для этого программируем регистры микросхемы UART, задавая формат данных и скорость обмена. Заметим, что модем будет проводить соединение с удаленным модемом как раз на этой скорости. Чем скорость выше, тем быстрее будет происходить обмен данными с удаленным модемом. Однако при увеличении скорости на плохих телефонных линиях сильно возрастает количество ошибок.
Инициализация модема.
Передавая модему AT-команды через СОМ-порт, производим его инициализацию. При помощи АТ-команд можно установить различные режимы работы модема - выбрать протокол обмена, установить набор диагностических сообщений модема и т.д.
Соединение с удаленным модемом.
Передаем модему команду набора номера (ATD). В этом случае модем набирает номер и пытается установить связь с удаленным модемом. Или передаем модему команду AT S0=1 для перевода его в режим автоответа. После этого модем ожидает звонка от удаленного модема, а когда он приходит, пытается установить с ним связь.
Ожидаем ответ от модема.
В зависимости от режима, в котором находится модем, он может передавать компьютеру различные сообщения. Например, если модем производит вызов удаленного модема (АТ-команда ATD), то модем может выдать следующие сообщения:
CONNECT- Успешное соединение
BUSY- Номер занят
NO DIALTONE- На линии отсутствует сигнал коммутатора
NO ANSWER- Абонент не отвечает
NO CARRIER- Неудачная попытка установить связь
Когда приходит звонок, модем передает компьютеру сообщение RING, если регистр модема S0 равен нулю. В этом случае для ответа на звонок надо послать модему команду АТА. Если модем находится в режиме автоответа и регистр модема S0 не равен нулю, то модем автоматически пытается ответить на звонок и может выдать следующие сообщения:
CONNECT- Успешное соединение
NO DIALTONE- Нет несущей частоты удаленного модема
NO CARRIER- Неудачная попытка установить связь
Если модем передал компьютеру сообщение CONNECT ,значит, он успешно произвел соединение и теперь работает в режиме передачи данных. Теперь все данные, которые вы передадите модему через СОМ-порт, будут преобразованы модемом в форму, пригодную для передачи по телефонным линиям, и переданы удаленному модему. И наоборот, данные, принятые модемом по телефонной линии, переводятся в цифровую форму и могут быть прочитаны через СОМ-порт, к которому подключен модем.
Если модем передал компьютеру сообщения BUSY, NO DIALTONE, NO ANSWER, NO CARRIER значит, произвести соединение с удаленным модемом не удалось и надо попытаться повторить соединение.
Подключение модема в командный режим.
После окончания работы коммуникационная программа должна перевести модем в командный режим и передать ему команду положить трубку (ATH0). Для перевода модема в командный режим можно воспользоваться Escape-последовательностью "+++". После того как модем перешел в командный режим, можно опять передавать ему АТ-команды.
Сбрасываем сигналы налиниях DTR и RTS.
Низкий уровень сигналов DTR и RTS сообщает модему, что компьютер не готов к приему данных через COM-порт. При работе с асинхронным последовательным адаптером вы можете использовать механизм прерываний. Так как передача и прием данных модемом представляют собой длительный процесс, то применение прерываний от порта позволяет использовать процессорное время для других нужд.
Список литературы
Настраиваем модем //Hard & Soft, 1998г., №8
http://www.hardware.ru
Компьютер изнутри //Komputerra, 2000г., №3