Модемы

Основные принципы программирования модемов

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

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

Итак, после установления связи с удаленным модемом, комму­никационная программа может начинать обмен данными. Обмен дан­ными так же, как и передача команд, осуществляется через COM-порт. Затем при помощи специальной Escape-последователь­ности можно переключить модем из режима передачи данных обратно в командный режим и положить трубку, разорвав связь с удаленным модемом.

Последовательность действий для установления связи

а) Инициализация 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-порт.

При работе с асинхронным последовательным адаптером вы мо­жете использовать механизм прерываний. Так как передача и прием данных модемом представляют собой длительный процесс, то приме­нение прерываний от порта позволяет использовать процессорное время для других нужд.

4. Протоколы обмена данными

4.1.Протоколы коррекции ошибок нижнего уровня

При передаче данных по зашумленным телефонным линиям всегда существует вероятность, что данные, передаваемые одним моде­мом, будут приняты другим модемом в искаженном виде. Например, некоторые передаваемые байты могут изменить свое значение или даже просто исчезнуть.

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

Общая форма передачи данных по протоколам с коррекцией ошибок следующая: данные передаются отдельными блоками (пакета­ми) по 16-20000 байт, в зависимости от качества связи. Каждый блок снабжается заголовком, в котором указана проверочная ин­формация, например контрольная сумма блока. Принимающий компь­ютер самостоятельно подсчитывает контрольную сумму каждого бло­ка и сравнивает ее с контрольной суммой из заголовка блока. Если эти две контрольный суммы совпали, принимающая программа считает, что блок передан без ошибок. В противном случае прини­мающий компьютер передает передающему запрос на повторную пере­дачу этого блока.

Протоколы коррекции ошибок могут быть реализованы как на аппаратном уровне, так и на программном. Аппаратный уровень реа­лизации более эффективен. Быстродействие аппаратной реализации протокола MNP примерно на 30% выше, чем программной.

MNP-протоколы

MNP (Microcom Network Protocols) - серия наиболее расп­ространенных аппаратных протоколов, впервые реализованная на модемах фирмы Microcom. Эти протоколы обеспечивают автомати­ческую коррекцию ошибок и компрессию передаваемых данных.

Сейчас известны 10 протоколов:

MNP1. Протокол коррекции ошибок, использующий асинхронный полудуплексный метод передачи данных. Это самый простой из про­токолов MNP.

MNP2. Протокол коррекции ошибок, использующий асинхронный дуплексный метод передачи данных.

MNP3. Протокол коррекции ошибок, использующий синхронный дуплексный метод передачи данных между модемами (интерфейс мо­дем - компьютер остается асинхронным).

Так как при асинхронной передаче используется десять бит на байт - восемь бит данных, стартовый бит и стоповый бит, а при синхронной только восемь, то в этом кроется возможность ускорить обмен данными на 20%.


Страница: