COMандирский порт
Если эти синхроимпульсы передаются от одного устройства другому, то такая передача называется синхронной. Асинхронной же считается такая передача, когда с фиксированной скоростью пересылается только информация, а приемник и передатчик синхронизируют процесс обмена данными самостоятельно. Наш СОМ-порт является асинхронным. Хочется также заметить, что разница между импульсами, по которым синхронизируется передача, и импульсами, синхронизирующими прием, не должна превышать 5% от их частоты. Так что едва ли не основной проблемой для асинхронных интерфейсов является одновременность запуска синхронизирующих генераторов. Для СОМ-порта стандартными являются следующие скорости: 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 бит/с. Максимальная длина кабеля-соединителя — 15 метров. Есть специальные кабели, которые позволяют увеличить длину соединения до 150 метров. А если использовать устройства, называемые «репитерами» , то расстояние можно еще дополнительно увеличить. Вы спросите, зачем модему кабель в 150 метров? Вполне закономерный вопрос, однако такие расстояния используются в тех случаях, когда к ПК необходимо подключить какое-то специализированное технологическое устройство. Как, например, счетчик электрической энергии находится где-то в распределительном щите, а компьютер — в бухгалтерии.
Компьютерный СОМ-порт работает по стандарту RS-232C , который определяет электрические уровни сигналов и протокол обмена. Порт содержит две линии для обмена информацией (прием и передача), и 9 линий для управления обменом. Если для управления обменом задействовать эти линии, то обмен будет называться «аппаратным» (протокол RTS/CTS ). Однако обмен информацией можно организовать, используя только линии приема и передачи, тогда он будет называться «программным» (протокол XON/XOFF ). В таком режиме посылается символ, сигнализирующий о начале передачи, называется он XON, окончание передачи сигнализируется символом XOFF.
Теперь разберемся, как из цепочки передаваемых бит выделяются байты. Начало байта сигнализирует старт-бит , который имеет всегда определенное значение — 0, окончание — стоп-бит .
Аппаратной основой СОМ-порта является микросхема UART ( Universal Asynchronous Receiver/Transmitter — универсальный асинхронный приемопередатчик), которая с момента своего появления прошла длительный процесс эволюции ( таблица 1 ).
Если вы загляните в окно настройки последовательного порта, то заметите, что список скоростей явно не ограничивается 115.2 Кбит/с. Это связано с тем, что кроме стандартных, можно использовать еще и так называемые высокоскоростные СОМ-порты — Enhanced Serial Ports ( ESP ) и Super High Speed Serial Ports . Это варианты, базирующиеся на микросхемах 16550AF , 16650 , 16750 . Они обеспечивают обмен на скорости до 921.6 Кбит/с. В принципе, все высокоскоростные модемы xDSL содержат в своем составе такую микросхему, которая обеспечивает связь на 230–460 Кбит/с.
Теперь от теоретической части перейду к практической, и опираясь на вышеизложенные теоритические предпосылки, я расскажу о настройках СОМ-порта. Открыв окно свойств порта и выбрав вкладку Настройка , увидим множество опций ( рис. 3 ).
Ну, со скоростью , думаю, все понятно — в этом пункте выбираем скорость обмена между устройством и ПК. В принципе можно выбрать ту скорость, которая вам больше нравится, хотя я полагаю, если у вас модем на 56К, скорость работы порта устанавливать в 19200 бит/с вы не будете :-).
Биты данных — сколько бит передавать за один раз (между старт-битом и стоп-битом).
Четность — выбор способа контроля четности. Кто не знает, контроль четности — способ проверки принятого числа на ошибочность. При передаче к числу добавляется еще один бит, дополняющий количество единиц в числе до четного или нечетного (это уже как выбрано в режиме передачи). Этот бит становится младшим разрядом передаваемого числа и принимает значение 1, если у нас нечетное число единиц, и 0, если четное. При проверке на четность, в случае если мы приняли нечетное число единиц (при проверке на нечетность — наоборот), порт передает устройству информацию об ошибке и просит повторить передачу.
Стоповые биты — количество стоп-бит, необходимых для правильного распознавания конца байта.
Управление потоком — выбор режима управления потоком (аппаратного или программного). В режиме программного управления, при определении ошибки, требуется некоторое время, чтобы отправить сигнал XOFF и приостановить прием, но за это время может произойти передача нескольких байт, которые будут утеряны (в случает отсутствия буфера принимаемых данных).
И наконец, в пункте Дополнительно можно выбрать объем буферов FIFO либо отключить их вообще (что не рекомендуется).
Рассказав про эти настройки, дам вам один совет. Если у вас все нормально работает, не меняйте настройки, стоящие по умолчанию! Менять их необходимо тогда, когда этого требует устройство (о чем, наверняка, будет подробно сказано в инструкции к нему).
Теперь о «железном» конфигурировании СОМ-портов. Данные сведения могут очень пригодиться тем, кто купил внутренний WIN-модем. Как известно, при конфигурировании устройства необходимо указать ресурсы, которые ему необходимы (адрес ввода-вывода, номер прерывания, канал DMA). Система Plug&Play должна самостоятельно выделить эти ресурсы, когда вы установили устройство в систему. Но ничто не идеально, так что если вы установили одно устройство, а оно не работает, к тому же, перестало работать и другое, знайте — ошиблась технология Plug&Play. И вам необходимо указывать ресурсы самостоятельно.
Итак, для коммуникационных портов стандартны перечисленные ниже ресурсы. Диапазон ввода-вывода — 3F8-3FFh для COM1, 2F8-2FFh — для COM2, 3E8-3Efh — для COM3, 2E8-2Efh — для COM4. С прерываниями немного сложнее — для СОМ1 (3) используется IRQ4, для СОМ2 (4) — IRQ3. Теперь, приведя эти цифры, расскажу о подводных камнях, подстерегающих покупателей WIN-модемов. Последние работают через СОМ3 или СОМ4, и при установке часто могут нахомутать с ресурсами, ведь Plug&Play видит их как PCI карту, а не порт. Так что если что-то не работает, разберитесь с использованием ресурсов.
Многие, наверное, знают, что два ПК можно соединить не с помощью сетевой карты, а воспользовавшись нуль-модемным кабелем. Причем, за нуль-модемным кабелем не обязательно идти в магазин. Его на скорую руку можно сварганить, имея три куска провода и соединив линии: прием-передача и землю (в этом случае используется программный протокол управления потоком данных) ( рис. 4а ). Ну а для полноты картины приведу и распайку полного нуль-модемного кабеля (для аппаратного протокола управления потоком данных) ( рис. 4б ).
Народные умельцы, например, додумались, как с помощью лазерной указки и фотодатчика соорудить «оптический» нуль-модемный кабель. По принципу работы это упрощенный вариант из трех проводов, только с большим количеством начинки. Кто заинтересовался, пишите мне.
Если вы — ярый программист-железячник и захотели самостоятельно написать программу для работы с СОМ-портом, то для получения необходимой справочной информации о программировании этого чуда техники я советую зайти на http://www.codenet.ru/progr/other/comport.php. Там есть все, связанное с конфигурированием порта на уровне регистров.
Теперь немного расскажу вам о тестировании порта. Для его проверки используют специальные разъемы-заглушки, с которыми умеет работать диагностическое программное обеспечение. Принцип проверки состоит в том, что сигналы с выходных линий подаются на линии, предназначенные для приема. По большому счету, такой разъем можно изготовить самостоятельно. Приведу распайку для тестирования с помощью программы Norton Diagnostics :
для 9-контактного разъема:
для 25-контактного разъема:
Думаю, многим читателям будет интересно узнать и о USB и FireWire, самых перспективных на сегодняшний день интерфейсах, им я посвящу отдельные статьи.
Как узнать скорость передачи COM-порта?
Как рассчитать скорость передачи данных? Скорость передачи означает количество изменений сигнала или символа, происходящих в секунду. Обозначается буквой r, рассчитывается с использованием baud_rate = скорость передачи / количество бит. Для расчета скорости передачи вам потребуется скорость передачи (R) и количество бит (n).
Какая скорость передачи данных по умолчанию для последовательных портов?
Стандартные скорости передачи включают 110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 38400, 57600, 115200, 128000 и 256000 бит в секунду. Чтобы отобразить поддерживаемые скорости передачи для последовательных портов на вашей платформе, обратитесь к разделу «Поиск информации о последовательном порте для вашей платформы». Значение по умолчанию это 9600 .
Как мне найти данные COM-порта?
В Serial Port Reader перейдите в «Главное меню», выберите «Сессия -> Новая сессия». Вы также можете щелкнуть значок «Создать» на главной панели инструментов или нажать «Ctrl + N». Это вызывает экран «Новый сеанс мониторинга». Вид терминала — все полученные данные отображаются в виде символов ASCII на текстовой консоли.
Каковы стандартные скорости передачи данных?
Скорость передачи может быть практически любой в разумных пределах. Единственное требование — чтобы оба устройства работали с одинаковой скоростью. Одна из наиболее распространенных скоростей передачи, особенно для простых вещей, где скорость не критична, — это 9600 бит / с. Другие «стандартные» скорости — 1200, 2400, 4800, 19200, 38400, 57600 и 115200.
В чем разница между последовательным портом и параллельным портом?
Сериал порт может передавать один поток данных за раз. Параллельный порт может передавать несколько потоков данных одновременно. Последовательный порт отправляет данные побитно, посылая побитно. Параллельный порт отправляет данные, отправляя несколько бит параллельно.
Какая скорость передачи данных с примером?
Бод или скорость передачи используется для описывают максимальную частоту колебаний электронного сигнала. Например, если сигнал изменяется (или может измениться) 1200 раз за одну секунду, он будет измеряться на скорости 1200 бод. Это означает, что они отправляют семь бит за один переход сигнала, поскольку 7 x 8000 = 56000. .
Последовательные порты все еще используются?
Они есть до сих пор широко используется для взаимодействия с промышленным оборудованием. Базовый последовательный порт встречается на микроконтроллерах гораздо чаще, чем USB.
Что произойдет, если скорость передачи неверна?
Если скорость передачи данных приемника полностью совпадает со скоростью передачи данных передатчика и первый бит дискретизируется точно в середине периода передачи битов, последний бит данных также будет дискретизирован точно в середине битового периода. . Другими словами, последний бит данных — это тот, на который больше всего влияет несоответствие скорости передачи.
Как установить скорость передачи данных для последовательной связи?
Последовательный порт изменить. Если номер порта не указан, скорость передачи установлен на текущий порт. Также можно указать -1 для обозначения текущего порта. Скорость передачи может быть одной из следующих поддерживаемых: 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200.
Где на моем компьютере находится COM-порт 1?
Откройте Диспетчер устройств на вашем главном компьютере / ПК. Подключите UPort к главному компьютеру (хосту). В диспетчере устройств разверните дерево контроллеров универсальной последовательной шины.. Вы увидите, что ваш собственный COM-порт указан как порт связи (COM1).
Скорость передачи данных через UART
UART — это приемопередатчик на котором базируется RS-232 и другие подобные интерфейсы.
Скорость работы UART не означает скорость передачи данных, так как вместе с полезными данными UART передает служебные:
- стартовый бит,
- стоповый бит,
- бит четности.
Скорость работы UART измеряется в бодах, а скорость передачи полезных данных — в битах и байтах в секунду.
Скорость передачи данных в битах в секунду:
- VUART — скорость UART (например: 9600, 115200), бод;
- d — количество бит данных;
- s — количество стоповых бит;
- p — количество бит четности, p = 1 если бит четности присутствует, или p = 0 если бит четности отсутствует;
- единица в знаменателе отражает наличие стартового бита.
Та же формула для расчетов:
С учетом, что один байт содержит 8 бит, из предыдущей формулы можно получить скорость передачи полезных данных в байтах в секунду:
Для работы UART чаще всего используется режим 8-N-1 при котором d = 8, p = 0, s = 1. Для этого режима скорость передачи полезных данных равна:
Отсюда следует, что КПД для такого режима составляет 80 %.
В таблице ниже приводится КПД для разных режимов работы UART:
d , бит | p , бит | s , бит | КПД, % |
5 | 1 | 71 | |
5 | 1,5 | 67 | |
5 | 2 | 62 | |
5 | 1 | 1 | 62 |
5 | 1 | 1,5 | 59 |
5 | 1 | 2 | 56 |
6 | 1 | 75 | |
6 | 1,5 | 71 | |
6 | 2 | 67 | |
6 | 1 | 1 | 67 |
6 | 1 | 1,5 | 63 |
6 | 1 | 2 | 60 |
7 | 1 | 78 | |
7 | 1,5 | 74 | |
7 | 2 | 70 | |
7 | 1 | 1 | 70 |
7 | 1 | 1,5 | 67 |
7 | 1 | 2 | 64 |
8 | 1 | 80 | |
8 | 1,5 | 76 | |
8 | 2 | 73 | |
8 | 1 | 1 | 73 |
8 | 1 | 1,5 | 70 |
8 | 1 | 2 | 67 |
9 | 1 | 82 | |
9 | 1,5 | 78 | |
9 | 2 | 75 | |
9 | 1 | 1 | 75 |
9 | 1 | 1,5 | 72 |
9 | 1 | 2 | 69 |
Не часто поддерживаемый режим 9-N-1 дает наилучший результат (82 %), но отличающийся от 8-N-1 лишь на 2 %.
Существует ряд стандартных скоростей: 300, 600, 1 200, 2 400, 4 800, 9 600, 19 200, 38 400, 57 600, 115 200, 230 400, 460 800 и 921 600 бод.
Максимальная скорость классического последовательного порта (COM-порта) компьютера равна 115 200 бодам.
Между порциями полезных данных может быть ненулевая задержка, что уменьшает скорость передачи данных. Если не учитывать эту задержку, то количество секунд требуемых для передачи D байт рассчитывается по следующей формуле:
Например, время передачи 1 МБ (1 048 576 байт) со скоростью 9 600 бод в режиме 8-N-1 составляет 18 минут и 12 секунд, а при скорости 115 200 бод — 1 минуту 31 секунду.
Сравнительная таблица скоростей передачи данных для стандартных скоростей UART:
Скорость UART, бод | Скорость передачи данных, байт/с | Время передачи 1 МБ, час:мин:сек | ||
300 | 30 | 27,3 | 09:42:33 | 10:40:48 |
600 | 60 | 54,5 | 04:51:16 | 05:20:24 |
1 200 | 120 | 109,1 | 02:25:38 | 02:40:12 |
2 400 | 240 | 218,2 | 01:12:49 | 01:20:06 |
4 800 | 480 | 436,4 | 00:36:25 | 00:40:03 |
9 600 | 960 | 872,7 | 00:18:12 | 00:20:01 |
19 200 | 1 920 | 1 745,5 | 00:09:06 | 00:10:01 |
38 400 | 3 840 | 3 490,9 | 00:04:33 | 00:05:00 |
57 600 | 5 760 | 5 236,4 | 00:03:02 | 00:03:20 |
115 200 | 11 520 | 10 472,7 | 00:01:31 | 00:01:40 |
В настоящий момент COM-порт компьютера вытеснен USB. Тем не менее UART широко используется в различных приборах. Для связи их с компьютером существуют преобразователи USB-UART. И любой микроконтроллер имеет один или более UARTов. В таблице ниже приводится информация о максимальных скоростях работы различных микросхем.
Микросхема | Назначение микросхемы | Максимальная скорость UART, Мбод | Максимальная скорость передачи данных в режиме 8-N-1, Байт/с |
CP2101 | Преобразователь USB-UART | 0,9216 | 92 160 |
CP2102/3/9/10 | Преобразователь USB-UART | 1 | 100 000 |
CP2104/5/8 | Преобразователь USB-UART | 2 | 200 000 |
FT232R | Преобразователь USB-UART | 3 | 300 000 |
FT232H | Преобразователь USB-UART | 12 | 1 200 000 |
STM32F7 | Микроконтроллер | 27 | 2 700 000 |
STM32F4 | Микроконтроллер | 11,25 | 1 250 000 |
Небольшие скорости обусловлены тем, что UART тактируется с частотой во много раз превышающей скорость его работы. Чем больше тактов на один бит данных, тем надежнее связь. Чаще всего на 1 бит приходится 16 тактов. Кроме этого встречаются микросхемы поддерживающие 4, 8 и 10 тактов на бит.
Автором был разработан переходник USB — UART с 16 портами UART, которые могут работать на скорости 12 Мбод.
Последовательный асинхронный адаптер (COM порт). Основные понятия и термины
Практически каждый компьютер оборудован хотя бы одним последовательным асинхронным адаптером. Обычно он представляет собой отдельную плату или же расположен прямо на материнской плате компьютера. Его называют еще асинхронным адаптером RS-232-C, или портом RS-232-C. Каждый асинхронный адаптер обычно содержит несколько портов RS-232-C, через которые к компьютеру можно подключать внешние устройства. Каждому такому порту соответствует несколько регистров, через которые программа получает к нему доступ, и определенная линия IRQ для сигнализирования компьютеру об изменении состояния порта. При выполнении BIOS процедуры начальной загрузки каждому порту RS-232-C присваивается логическое имя COM1 — COM4 (COM-порт номер 1 — 4).
Интерфейс RS-232-C разработан ассоциацией электронной промышленности (Electronic Industries Association — EIA) как стандарт для соединения компьютеров и различных последовательных периферийных устройств. Компьютер IBM PC поддерживает интерфейс RS-232-C не в полной мере скорее разъем, обозначенный на корпусе компьютера как порт последовательной передачи данных, содержит некоторые из сигналов, входящих в интерфейс RS-232-C и имеющих соответствующие этому стандарту уровни напряжения. В настоящее время порт последовательной передачи данных используется очень широко. Вот далеко не полный список применений:
Основные понятия и термины
Последовательная передача данных означает, что данные передаются по единственной линии. При этом биты байта данных передаются по очереди с использованием одного провода. Для синхронизации группе битов данных обычно предшествует специальный стартовый бит, после группы битов следуют бит проверки на четность и один или два стоповых бита. Иногда бит проверки на четность может отсутствовать. Сказанное иллюстрируется следующим рисунком:
Из рисунка видно, что исходное состояние линии последовательной передачи данных — уровень логической 1. Это состояние линии называют отмеченным — MARK. Когда начинается передача данных, уровень линии переходит в 0. Это состояние линии называют пустым — SPACE. Если линия находится в таком состоянии больше определенного времени, считается, что линия перешла в состояние разрыва связи — BREAK. Стартовый бит START сигнализирует о начале передачи данных. Далее передаются биты данных, вначале младшие, затем старшие.
Если используется бит четности P, то передается и он. Бит четности имеет такое значение, чтобы в пакете битов общее количество единиц (или нулей) было четно или нечетно, в зависимости от установки регистров порта. Этот бит служит для обнаружения ошибок, которые могут возникнуть при передаче данных из-за помех на линии. Приемное устройство заново вычисляет четность данных и сравнивает результат с принятым битом четности. Если четность не совпала, то считается, что данные переданы с ошибкой. Конечно, такой алгоритм не дает стопроцентной гарантии обнаружения ошибок. Так, если при передаче данных изменилось четное число битов, то четность сохраняется и ошибка не будет обнаружена. Поэтому на практике применяют более сложные методы обнаружения ошибок.
В самом конце передаются один или два стоповых бита STOP, завершающих передачу байта. Затем до прихода следующего стартового бита линия снова переходит в состояние MARK. Использование бита четности, стартовых и стоповых битов определяют формат передачи данных. Очевидно, что передатчик и приемник должны использовать один и тот же формат данных, иначе обмен будет невозможен. Другая важная характеристика — скорость передачи данных. Она также должна быть одинаковой для передатчика и приемника.
Скорость передачи данных обычно измеряется в бодах (по фамилии французского изобретателя телеграфного аппарата Emile Baudot — Э. Бодо). Боды определяют количество передаваемых битов в секунду. При этом учитываются и старт/стопные биты, а также бит четности. Иногда используется другой термин — биты в секунду (bps). Здесь имеется в виду эффективная скорость передачи данных, без учета служебных битов.
Аппаратная реализация
Компьютер может быть оснащен одним или двумя портами последовательной передачи данных. Эти порты расположены либо на материнской плате, либо на отдельной плате, вставляемой в слоты расширения материнской платы. Бывают также платы, содержащие четыре или восемь портов последовательной передачи данных. Их часто используют для подключения нескольких компьютеров или терминалов к одному, центральному компьютеру. Эти платы имеют название «мультипорт».
В основе последовательного порта передачи данных лежит микросхема Intel 8250 или ее современные аналоги — Intel 16450, 16550, 16550A. Эта микросхема является универсальным асинхронным приемопередатчиком (UART — Universal Asynchronous Receiver Transmitter). Микросхема содержит несколько внутренних регистров, доступных через команды ввода/вывода. Микросхема 8250 содержит регистры передатчика и приемника данных. При передаче байта он записывается в буферный регистр передатчика, откуда затем переписывается в сдвиговый регистр передатчика. Байт «выдвигается» из сдвигового регистра по битам. Аналогично имеются сдвиговый и буферный регистры приемника.
Программа имеет доступ только к буферным регистрам, копирование информации в сдвиговые регистры и процесс сдвига выполняется микросхемой UART автоматически. Регистры, управляющие асинхронным последовательным портом, будут описаны в следующей главе. К внешним устройствам асинхронный последовательный порт подключается через специальный разъем. Существует два стандарта на разъемы интерфейса RS-232-C, это DB25 и DB9. Первый разъем имеет 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 | Не используются | — |
Наряду с 25-контактным разъемом часто используется 9-контактный разъем:
Номер контакта | Назначение контакта | Вход или выход |
---|---|---|
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) | Вход |
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 более подробно.
Сигналы интерфейса RS-232-C
Здесь мы рассмотрим порядок взаимодействия компьютера и модема, а также двух компьютеров непосредственно соединенных друг с другом. Сначала посмотрим, как происходит соединение компьютера с модемом. Входы TD и RD используются устройствами DTE и DCE по-разному. Устройство DTE использует вход TD для передачи данных, а вход RD для приема данных. И наоборот, устройство DCE использует вход TD для приема, а вход RD для передачи данных. Поэтому для соединения терминального устройства и устройства связи выводы их разъемов необходимо соединить напрямую:
Остальные линии при соединении компьютера и модема также должны быть соединены следующим образом:
Рассмотрим процесс подтверждения связи между компьютером и модемом. В начале сеанса связи компьютер должен удостовериться, что модем может произвести вызов (находится в рабочем состоянии). Затем, после вызова абонента, модем должен сообщить компьютеру, что он произвел соединение с удаленной системой. Подробнее это происходит следующим образом. Компьютер подает сигнал по линии DTR, чтобы показать модему, что он готов к проведению сеанса связи. В ответ модем подает сигнал по линии DSR. Когда модем произвел соединение с другим, удаленным модемом, он подает сигнал по линии DCD, чтобы сообщить об этом компьютеру. Если напряжение на линии DTR падает, это сообщает модему, что компьютер не может далее продолжать сеанс связи, например из-за того что выключено питание компьютера. В этом случае модем прервет связь. Если напряжение на линии DCD падает, это сообщает компьютеру, что модем потерял связь и не может больше продолжать соединение. В обоих случаях эти сигналы дают ответ на наличие связи между модемом и компьютером.
Сейчас мы рассмотрели самый низкий уровень управлением связи — подтверждение связи. Существует более высокий уровень, который используется для управления скоростью обмена данными, но он также реализуется аппаратно. Практически управление скоростью обмена данными (управление потоком) необходимо, если производится передача больших объемов данных с высокой скоростью. Когда одна система пытается передать данные с большей скоростью, чем они могут быть обработаны принимающей сиситемой, результатом может стать потеря части передаваемых данных. Чтобы предотвратить передачу большего числа данных, чем то, которое может быть обработано, используют управление связью, называемое «управление потоком» (flow-controll handshake). Стандарт RS-232-C определяет возможность управления потоком только для полудуплексного соединения. Полудуплексным называется соединение, при котором в каждый момент времени данные могут передаваться только в одну сторону. Однако фактически этот механизм используется и для дуплексных соединений, когда данные передаются по линии связи одновременно в двух направлениях.
Управление потоком
В полудуплексных соединениях устройство 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. Из-за наличия двух типов разъемов — DB25 и DB9 — часто бывают нужны переходники с одного типа разъемов на другой. Например, вы можете использовать такой переходник для соединения COM-порта компьютера и кабеля нуль-модема, если на компьютере установлен разъем DB25, а кабель оканчивается разъемами DB9. Схему такого переходника мы приводим на следующем рисунке:
Заметим, что многие устройства (такие, как терминалы и модемы) позволяют управлять состоянием отдельных линий RS-232-C посредством внутренних переключателей (DIP-switches). Эти переключатели могут менять свое значение на разных моделях модемов. Поэтому для их использования следует изучить документацию модема. Например, для hayes-совместимых модемов, если переключатель 1 находится в положении «выключен» (down), это означает, что модем не будет проверять наличие сигнала DTR. В результате модем может отвечать на приходящие звонки, даже если компьютер и не запрашивает у модема установление связи.
Технические параметры интерфейса RS-232-C
При передаче данных на большие расстояния без использования специальной аппаратуры из-за помех, наводимых электромагнитными полями, возможно возникновение ошибок. Вследствие этого накладываются ограничения на длину соединительного кабеля между устройствами DTR-DTR и DTR-DCE. Официальное ограничение по длине для соединительного кабеля по стандарту RS-232-C составляет 15,24 метра. Однако на практике это расстояние может быть значительно больше. Оно непосредственно зависит от скорости передачи данных. Согласно McNamara (Technical Aspects of Data Communications, Digital Press, 1982) определены следующие значения: