— 47 -
СОДЕРЖАНИЕ ТЕХНИЧЕСКОЙ ЧАСТИ
стр.
1. Введение 48
2. Последовательный асинхронныйадаптер 49
2.1. Аппаратная реализация 49
2.2. Программирование адаптера 53
3. Типы модемов 55
4. Программирование модемов 56
5. Протоколы обмена данными 62
5.1. Протоколы коррекции ошибок нижнегоуровня 62
5.2. Протоколы передачи файлов 64
6. Телекоммуникационные программы 66
7. Использование модемов 67
7.1. Электронная доска объявлений 67
7.2. Факс-модемные платы 69
7.3. Электронная почта 70
8. Программа поиска оптимальногомаршрута 71
8.1. Разработка программы 71
8.2. Краткий экономический анализ 72
внедрения программы
.
— 48 -
1. Введение
В последнее время модемы становятся неотъемлемойчастью
компьютера. Установив модем на свой компьютер, вы фактически
открываетедля себя новый мир. Ваш компьютерпревращается из
обособленногокомпьютера в звено глобальной сети.
Модем позволит вам, не выходя из дома, получить доступ к
базам данных,которые могут быть удалены от вас на многие тыся-
чикилометров, разместить сообщение на BBS (электронной доске
объявлений),доступной другим пользователям, скопировать с той
же BBSинтересующие вас файлы, интегрировать домашний компьютер
в сеть вашегоофиса, при этом (не считая низкой скорости обмена
данными)создается полное ощущение работы в сетиофиса. Кроме
того,воспользовавшись глобальными сетями (RelCom, FidoNet)
можнопринимать и посылать электронные письмане только внутри
города, нофактически в любой конец земного шара. Глобальные
сети дают возможность не только обмениваться почтой, но и
участвоватьво всевозможных конференциях, получать новости
практически полюбой интересующей вас тематике.
Существует три основных способа соединениякомпьютеров для
обменаинформацией:
— непосредственная связь, черезасинхронный порт;
— связь с использованием модема;
— связь через локальные сети.
В работе рассматривается первые два типасоединений - не-
посредственное исоединение через модем.
.
— 49 -
2. Последовательный асинхронныйадаптер
Практически каждый компьютер оборудован хотя бы одним
последовательнымасинхронным адаптером. Обычно онпредставляет
собой отдельнуюплату или же расположен прямо на материнской
плате компьютера.Его полное название — RS-232-C. Каждый асинх-
ронный адаптеробычно содержит несколько портов, черезкоторые
к компьютеруможно подключать внешние устройства. Каждому тако-
му портусоответствует несколько регистров, через которые прог-
раммаполучает к нему доступ, и определенная линия IRQ (линия
запросапрерывания) для сигнализации компьютеру об изменении
состоянияпорта. Каждому порту присваивается логическое имя
(COM1,COM2, ит.д.).
Интерфейс RS-232-C разработан ассоциациейэлектронной про-
мышленности ( EIA) как стандарт для соединения компьютеров и
различныхпоследовательных периферийных устройств.
Компьютер IBM PC поддерживает интерфейсRS-232-C не в пол-
ной мере; скорееразъем, обозначенный на корпусе компьютера как
портпоследовательной передачи данных, содержит некоторые из
сигналов,входящих в интерфейс RS-232-C и имеющих соответствую-
щие этомустандарту уровни напряжения.
В настоящее время порт последовательной передачиданных
используетсяочень широко. Вот далеко не полный список примене-
ний:
— подключение мыши;
— подключение графопостроителей, сканеров, принтеров, ди-
гитайзеров;
— связь двух компьютеров через порты последовательной пе-
редачи данных с использованием специального кабеля и
таких программ, как FastWire II илиNorton Commander;
— подключение модемов для передачи данных по телефонным
линиям;
— подключение к сети персональныхкомпьютеров;
Последовательная передача данных означает, что данные пе-
редаются поединственной линии. При этом биты байтаданных пе-
редаются поочереди с использованием одного провода. Для синх-
ронизациигруппе битов данных обычно предшествует специальный
стартовыйбит, после группы битов следуют битпроверки на чет-
ность и один илидва стоповых бита. Иногда бит проверки на чет-
ность можетотсутствовать.
Использование бита четности, стартовых и стоповых битов
определяют форматпередачи данных. Очевидно, что передатчик и
приемник должныиспользовать один и тот же формат данных, иначе
обмен невозможен.
Другая важная характеристика — скорость передачи данных.
Она также должнабыть одинаковой для передатчика и приемника.
Скорость передачи данных обычно измеряется в бодах ( по
фамилиифранцузского изобретателя телеграфного аппарата Emile
Baudot — Э.Бодо).Боды определяют количество передаваемых битов
в секунду. При этом учитываются и старт/стопныебиты, а также
бит четности.
2.1. Аппаратная реализация
Компьютер может быть оснащен одним или двумя портами
последовательнойпередачи данных. Эти порты расположены либо на
материнскойплате, либо на отдельной плате, вставляемой в слоты
— 50 -
расширенияматеринской платы.
Бывают также платы, содержащие четыре или восемьпортов
последовательнойпередачи данных. Их часто используют для подк-
лючениянескольких компьютеров или терминалов кодному, цент-
ральномукомпьютеру. Эти платы имеют название «мультипорт».
В основе последовательного порта передачи данных лежит
микросхемаINTEL 8250 или ее современные аналоги - INTEL
16450,16550,16550A.Эта микросхема является универсальным
асинхроннымприемопередатчиком ( UART — Universal Asynchronous
ReceiverTransmitter). Микросхема содержит несколько внутренних
регистров,доступных через команды ввода/вывода.
Микросхема 8250 содержит регистры передатчика и приемника
данных. Припередаче байта он записывается в буферный регистр
передатчика,откуда затем переписывается в сдвиговый регистр
передатчика. Байт«выдвигается» из сдвигового регистра по битам.
Программа имеет доступ только к буфернымрегистрам, копи-
рованиеинформации в сдвиговые регистры и процесс сдвига выпол-
няетсямикросхемой UART автоматически.
К внешним устройствам асинхронный последовательный порт
подключаетсячерез специальный разъем. Существует два стандарта
на разъемыинтерфейса RS-232-C, это DB-25 и DB-9.Первый имеет
25, а второй 9выводов.
Разводка разъема DB25
---------------------------------------------------------------
Номер | Назначениеконтакта | Вход или
контакта | (со стороны компьютера) | выход
---------------------------------------------------------------
1 Защитное заземление (Frame Ground,FG) -
2 Передаваемые данные (Transmitted Data,TD) Выход
3 Принимаемые данные (Received Data,RD) Вход
4 Запрос для передачи (Request to send,RTS) Выход
5 Сброс для передачи (Clear to Send,CTS) Вход
6 Готовность данных (Data Set Ready,DSR) Вход
7 Сигнальное заземление (Signal Ground,SG) -
8 Детектор принимаемого с линии сигнала
(Data Carrier Detect,DCD) Вход
9-19 Не используются
20 Готовность выходных данных
(Data Terminal Ready,DTR) Выход
21 Не используется
22 Индикатор вызова (Ring Indicator,RI) Вход
23-25 Не используются
Разводка разъема DB9
---------------------------------------------------------------
Номер | Назначениеконтакта | Вход или
контакта | (со стороны компьютера) | выход
---------------------------------------------------------------
1 Детектор принимаемого с линии сигнала
(Data Carrier Detect,DCD) Вход
2 Принимаемые данные (Received Data,RD) Вход
3 Передаваемые данные (Transmitted Data,TD) Выход
4 Готовность выходных данных
(Data Terminal Ready,DTR) Выход
5 Сигнальное заземление (Signal Ground,SG) -
6 Готовность данных (Data Set Ready,DSR) Вход
— 51 -
7 Запрос для передачи (Request to send,RTS) Выход
8 Сброс для передачи (Clear to Send,CTS) Вход
9 Индикатор вызова (Ring Indicator,RI) Вход
Интерфейс RS-232-C определяет обмен между устройствами
двух типов : DTE(Data Terminal Equipment — терминальное уст-
ройство) и DCE(Data Communication Equipment — устройство свя-
зи). В большинстве случаев, но не всегда, компьютер является
терминальнымустройством. Модемы, принтеры, графопостроители
всегда являютсяустройствами связи.
Сигналы интерфейса RS-232-C
Входы TD и RD используются устройствами DTE и DCE по-раз-
ному. УстройствоDTE использует вход TD для передачи данных, а
вход RD дляприема данных. И наоборот, устройство DCE использу-
ет вход TD дляприема, а вход RD для передачиданных. Поэтому
длясоединения терминального устройства и устройствасвязи вы-
воды их разъемовнеобходимо соединить напрямую.
Подтверждение связи
Рассмотрим процесс подтверждения связимежду компьютером и
модемом. В начале сеанса связи компьютер долженудостоверится,
что модем можетпроизвести вызов (находится в рабочем состоя-
нии). Затем, после вызова абонента, модем должен сообщить
компьютеру,что он произвел соединение с удаленной систе-
мой. Подробнееэто происходит следующим образом.
Компьютер подает сигнал по линии DTR,чтобы показать моде-
му, что он готовк проведению сеанса связи. В ответ модем пода-
ет сигнал полинии DSR. Когда модем произвелсоединение с дру-
гим,удаленным модемом, он подает сигнал по линии DCD, чтобы
сообщить об этом компьютеру.
Если напряжение на линии DTR падает, это сообщает модему,
что компьютер неможет далее продолжать сеанс связи, например
из-за того, чтовыключено питание компьютера. В этом случае мо-
дем прерветсвязь. Если напряжение на линии DCD падает, это
сообщаеткомпьютеру, что модем потерял связь и неможет больше
продолжатьсоединение. В этом случае эти сигналыдают ответ на
наличие связимежду модемом и компьютером.
Существует более высокий уровень, которыйиспользуется для
управленияскоростью обмена данными, но он также реализуется
аппаратно.Практически управление скоростью обмена данными (уп-
равление потоком)необходимо, если производится передачаболь-
ших объемовданных с высокой скоростью. Когда однасистема пы-
тается передатьданные с большей скоростью, чем онимогут быть
обработаныпринимающей системой, результатом может стать потеря
частипередаваемых данных. Чтобы предотвратить передачу больше-
го числа данных,чем то, которое может быть обработано, исполь-
зуют управлениесвязью, называемое «управление потоком».
Стандарт RS-232-C определяет возможностьуправления пото-
ком только дляполудуплексного соединения, при котором в каждый
момент времениданные могут передаваться только в одну сторону.
Фактически этот механизм используется и для дуплексных
соединений, когдаданные передаются по линии связи одновременно
в двухнаправлениях.
Управление потоком
— 52 -
В полудуплексных соединениях устройство DTE подает сигнал
RTS, когда оножелает передать данные. DCE отвечает сигналом по
линии CTS, когдаоно готово, и DTE начинает передачу данных. До
тех пор, пока оба сигнала RTS и CTS не примут активноесостоя-
ние, только DCEможет передавать данные.
При дуплексных соединениях сигналы RTS/CTSимеют значения
противоположныетем, которые они имели дляполудуплексных сое-
динений.
Когда DTE может принять данные, он подает сигнал по линии
RTS. Если при этомDCE готово для принятия данных, оновозвра-
щает сигнал CTS.Если напряжение на линиях RTS и CTS падает, то
это сообщаетпередающей системе, что получающаясистема не го-
това для приемаданных.
Однако на практике не все так просто. Соединить компьютер
и модем не составляет труда, т.к. интерфейс RS-232-C как раз
для этого ипредназначен. Но если вы захотите связать вместе
два компьютерапри помощи такого же кабеля, который выисполь-
зовали для связимодема и компьютера, то у вас возникнутпроб-
лемы. Для соединения двух терминальных устройств — двухкомпь-
ютеров — какминимум необходимо перекрестное соединение линий
TR и RD. Однако часто этого недостаточно, т.к. для устройств
DTE и DCEфункции, выполняемые линиями DSR, DTR,DCD, CTS, RTS
асимметричны.
Устройство DTE подает сигнал DTR и ожидаетполучения сиг-
налов DSR иDCD. В свою очередь, устройство DCEподает сигналы
DSR, DCD иожидает получения сигнала DTR. Такимобразом, если
соединить вместедва устройства DTE кабелем, который вы исполь-
зовали длясоединения устройств DTE и DCE, то они не смогут до-
говориться друг сдругом.
Теперь перейдем к сигналам RTS и CTS, управления потоком
данных. иногдадля соединения двух устройств DTE эти линии сое-
диняют вместе накаждом конце кабеля. В результате получаем то,
что другоеустройство всегда готово для получения данных. Поэ-
тому, если прибольшой скорости передачи принимающее устройство
не успевает принимать и обрабатывать данные, возможнапотеря
данных.
Чтобы решить все эти проблемы для соединения двух уст-
ройств типа DTEиспользуется специальный кабель, вобиходе на-
зываемыйнуль-модемом.
Технические параметры интерфейсаRS-232-C
При передаче данных на большие расстояния без использова-
ния специальнойаппаратуры из-за помех, наводимых электромаг-
нитными полями,возможно возникновение ошибок. Вследствие этого
накладываютсяограничения на длину соединительного кабеля между
устройствамиDTR-DTR и DTR-DCE.
Официальное ограничение по длине длясоединительного кабе-
ля по стандарту RS-232-C составляет 15,24 метра. Однако на
практике эторасстояние может быть значительно больше. Оно не-
посредственнозависит от скорости передачи данных.
110бод — 1524м / 914,4м
300бод — 1524м / 914,4м
1200бод — 914,4м / 914,4м
2400бод — 304,8м / 152,4м
4800бод — 304,8м / 76,2м
— 53 -
9600бод - 76,2м / 76,2м
Первое значение — скорость передачи в бодах, второе -
максимальнаядлина для экранированного кабеля, третье- макси-
мальная длина дляне экранированного кабеля.
Уровни напряжения на линиях разъема составляют для логи-
ческого нуля-15..-3 вольта, для логической единицы +3..+15
вольт.Промежуток от -3 до +3 вольтсоответствует неопределен-
ному значению.
2.2. Программирование адаптера
Порты асинхронного адаптера
На этапе инициализации системы, модуль POSTBIOS тестиру-
ет имеющиесяасинхронные порты RS-232-C и инициализирует их. В
зависимостиот версии BIOS инициализируются первыедва или че-
тыре порта. Их базовые адреса располагаются в области данных
BIOS начиная садреса 0000:0400h.
Первый адаптер COM1 имеет базовыйадрес 3F8h и занимает
диапазон адресовот 3F8h до 3FFh. Второй адаптер COM2 имеет ба-
зовый адрес 2F8hи занимает адреса 2F8h..2FFh.
Асинхронные адаптеры могут вырабатыватьпрерывания:
COM1,COM3 — IRQ4
COM2,COM4 — IRQ3
Имеется 7 основных регистров дляуправления портами:
а) Регистр данных
Регистр данных расположен непосредственно по базовому ад-
ресу портаRS-232-C и используется для обмена данными и для за-
дания скоростиобмена.
Для передачи данных в этот регистрнеобходимо записать пе-
редаваемыйбайт данных. После приема данных от внешнего уст-
ройства принятыйбайт можно прочитать из этого же регистра.
В зависимости от состояния старшего бита управляющего ре-
гистра (расположенного по адресу base_adr+3, где base_adr
соответствуетбазовому адресу порта RS-232-C)назначение этого
регистра можетизменяться. Если старший бит равен нулю, регистр
используетсядля записи передаваемых данных. Если же старший
бит равенединице, регистр используется для ввода значения
младшегобайта делителя частоты тактовогогенератора. Изменяя
содержимоеделителя, можно изменять скоростьпередачи данных.
Старший байт делителя записывается в регистр управленияпреры-
ваниями по адресуbase_adr+1.
Максимальная скорость обмена информацией, которую можно
достичь при использовании асинхронного адаптера, достигает
115200 бод, чтопримерно соответствует 14 Кбайт в секунду.
б) Регистр управления прерываниями
Этот регистр используется либо дляуправления прерываниями
от асинхронногоадаптера, либо (после вывода вуправляющий ре-
гистр байта с установленным в 1 старшим битом) для выводазна-
чения старшегобайта делителя частоты тактового генератора.
в) Регистр идентификации прерывания
Считывая его содержимое, программа можетопределить причи-
ну прерывания
— 54 -
г) Управляющий регистр
Управляющий регистр доступен по записи ичтению. Этот ре-
гистр управляетразличными характеристиками UART : скоростью
передачиданных, контролем четности, передачей сигнала BREAK,
длинойпередаваемых слов(символов).
д) Регистр управления модемом
Регистр управления модемом управляет состоянием выходных
линий DTR, RTS и линий, специфических для модемов - OUT1 и
OUT2, а такжезапуском диагностики при соединенных вместе входе
и выходеасинхронного адаптера.
е) Регистр состояния линии
Регистр состояния линии определяет причинуошибок, которые
могут возникнутьпри передаче данных между компьютером и мик-
росхемой UART.
ж) Регистр состояния модема
Регистр состояния модема определяетсостояние управляющих
сигналов,передаваемых модемом асинхронному порту компьютера.
Инициализация асинхронногоадаптера
Первое, что должна сделать программа, работающая с асинх-
ронным адаптером- установить формат и скорость передачи дан-
ных. После загрузки операционной системы для асинхронныхадап-
теровустанавливается скорость 2400 бод, не выполняется провер-
ка на четность,используются один стоповый и восьмибитовая дли-
на передаваемогосимвола. Можно изменить этот режим командой
MS-DOS MODE.
Выполнив ввод из управляющего регистра, программа может
получитьтекущий режим адаптера. Для установки нового режима
измените нужныевам поля и запишите новый байт режима обратно в
управляющийрегистр.
Если вам надо задать новое значениескорости обмена данны-
ми, перед записью байта режима установите старший бит этого
байта в 1, при этом регистр данных и управляющий регистр
используются длязадания скорости обмена. Затем последовательно
двумя командамиввода загрузите делитель частоты тактового ге-
нератора. Младшийбайт запишите в регистр данных, а старший — в
региструправления прерываниями.
Перед началом работы необходимо также проинициализировать
региструправления прерываниями, даже если в вашей программе не
используются прерывания от асинхронного адаптера. Для этого
сначала надоперевести регистр данных и регистр управления пре-
рываниями вобычный режим, записав ноль в старший бит управляю-
щегорегистра. Затем можно устанавливать регистр управления
прерываниями. Если прерывания вам не нужны, запишите в этот
порт нулевоезначение.
Современные микросхемы UART
Фактически микросхема UART 8250 в ееисходном виде исполь-
зовалась только встарых моделях компьютеров IBM PC. Современ-
ные микросхемы — UART 16450, 16550, 16550A изготовленные по но-
вой технологии,позволяют достичь более высокой скорости обмена
данными, а такжеобладают новыми аппаратными возможностями.
— 55 -
Основные возможности различных микросхемUART:
— 8250 (8250-B): Использовался на первыхмоделях IBM PC
— 16450 (8250-A) : Эта микросхема имеетбольшую производи-
тельность посравнению с 8250. Фактически это 8250, но изготов-
ленный сиспользованием новой технологии. Микросхема дополнена
регистромрасширения (scratch register). Устранены ошибки в ре-
гистреразрешения прерываний и добавлена возможность перевода
линии OUT2 ввысокоимпедансное состояние во время проведения
тестов, когдавыход данных замкнут на вход.
— 16550 : Фактически соответствует 16450. Добавлена воз-
можностьвнутренней буферизации передаваемых и принимаемых дан-
ных. Буферавыполнены по схеме FIFO (First In First OUT - пер-
вый вошел, первым вышел) или, другими словами в виде очере-
ди.Прииспользовании буферизации возможно заметно уменьшить
числопрерываний, вырабатываемых асинхронным портом. Однако
из-за ошибки вмикросхеме эту возможность лучше не использовать
- можно потерять отдельные символы. В общем случае микросхема
16550 болеебыстрая, чем 16450. Дополнительно 16550 дает воз-
можностьиспользовать несколько каналов прямого доступа ( DMA
channels).
— 16550A (16550AN) Соответствует16550, исправлены ошибки
реализацииFIFO. Эта микросхема дает возможностьиспользования
программистунескольких каналов прямого доступа. 16550А, как
правило,используется в компьютерах с процессорами 80386/486 и
вкомпьютерах с RISC-архитектурой. Если вы хотите работать на
скоростяхбольших, чем 9600 бод, желательно использовать именно
эту микросхему.
3. Типы модемов
В настоящее время выпускается огромное количество всевоз-
можныхмодемов, начиная от простейших,обеспечивающих скорость
передачи около300 бит/сек, до сложных факс-модемных плат, поз-
воляющих вампослать с вашего компьютера факс