Последовательный порт, разъемы, контроль данных, часть2. Последовательный порт (serial port), серийный порт или COM-порт — двунаправленный последовательный интерфейс, предназначенный для обмена битовой информацией

 На СОМ-портах компьютера используются два типа разъемов — DB-25P и более компактный вариант DB-9P. На аппаратуре используются разъемы DB-25S или DB-9S. Соответствие сигналов 9- и 20-штырьковых разъемов и их описания приводятся на рисунке.

 

Сигнальная "земля" (AB/SG)
Эта линия является общим проводом для всех электрических цепей, образуемых линиями физического интерфейса. Стандарт рекомендует присоединять этот общий провод к защитной "земле" путем внутреннего соединения в DCE. Смысл такого соединения заключается в том, что корпуса устройств оказываются заземленными через штепсельную розетку.

 Защитная "земля" (АА)
Эта линия присутствует только в интерфейсе с разъемом DB-25 и предполагает соединение с корпусом устройства.

Передаваемые данные (BA/TxD/TD)
Сигналы, которые присутствуют на этой линии, вырабатываются местным (локальным) DTE для передачи местному DCE. Посылаемые сигналы могут быть кодами команд, управляющих работой местного ПСЕ (АТ-команды или другие) или данными, которые местное DCE должно передать удален¬ному DCE-устройству. Если DTE не передает данные, то оно удерживает эту линию в состоянии логической единицы (MARK). Согласно стандарту, DTE не будет передавать данные до тех пор, пока управляющие линии "Запрос передатчика", "Сброс передатчика", "Готовность DCE" и "Готовность DTE" пе будут находиться одновременно в активном (ON) состоянии. Независимо от того, относится ли данное устройство к DTE или DCE, рассматриваемая линия всегда называется одинаково: "Передаваемые данные". Это выходная линия для DTE и входная для DCE.

Принимаемые данные (BB/RxD/RD)
Сигналы, которые присутствуют на этой линии, вырабатываются местным (локальным) DCE для передачи местному DTE. Передаваемые сигналы могут быть ответами на команды или данными, получаемыми от удаленного DCE.Если не выполняется операция подтверждения приема команды, стандартное DCE удерживает эту линию в состоянии логической единицы (MARK) при условии, что линия "Указатель несушей" находится в неактивном состоянии (OFF).При полудуплексной работе эта линия удерживается в состоянии MARK, когда линия "Запрос передачи" находится в активном состоянии, а также в течение короткого промежутка времени после ее перехода из активного состояния в неактивное. Независимо от того, относится ли данное устройство к DTE или DCE, рассматриваемая линия всегда называется одинаково: "Принимаемые данные". Это выходная линия для DCE и входная для DTE.

Запрос передачи (CA/RTS)
Сигналы на этой линии вырабатывает DTE. В симплексных или дуплексных системах активное состояние этой линии обеспечивает удержание DCE в режиме передачи. Переключение в неактивное состояние приостанавливает передачу. В обоих случаях состояние этой линии никак не влияет на работу DCE-устройства как приемника. В полудуплексных системах переключение этой линии в активное состояние переводит DCE в режим передачи и приостанавливает его работу на прием. Когда DTE переключает эту линию в неактивное состояние, соответствующее DCE-устройство начинает работать в режиме приема. Если DTE переключило линию "Запрос передачи" в неактивное состояние, оно не должно снова активизировать эту линию до тех пор, пока DCE- устройство не подтвердит прием этого сигнала путем переключения в такое же неактивное состояние линии "Готовность к передаче". Переключение линии "Запрос передачи" из неактивного в активное состояние является сигналом на переход DCE в режим передачи. DCE может затем выполнять любые действия, необходимые для подготовки к передаче, и после их завершения устанавливает линию "Готовность к передаче" в активное состояние, сообщая тем самым, что DCE может передавать данные. Переключение линии "Запрос передачи" из активного в неактивное состояние является сигналом для DCE на завершение обработки любых данных, которые уже получены от DTE-устройства. Затем DCE прекращает передачу или переходит в режим приема. О завершении этого процесса оно сообщает путем переключения линии "Готовность к передаче" в неактивное состояние.

Готовность к передаче (CB/CTS)
Сигналы на этой линии вырабатывает DCE. Эти сигналы сообщают о готовности DCE к приему данных от связанного с ним DTE-устройства. Если линия "Готовность к передаче" находится в неактивном состоянии, DTE не должно передавать данные. Когда DCE переключает эту линию в активное состояние, оно готово принимать данные. Эти данные могут быть команда¬ми для DCE или данными, передаваемыми по каналу связи. Обычно сигнал "Готовность к передаче" является ответом на сигнал "Запрос передачи". Однако DCE может независимо переключить линию "Готовность к передаче" в неактивное состояние, чтобы сообщить DTE о необходимости приостановки передачи данных на некоторый конечный промежуток времени. Любые данные, переданные после переключения линии "Готовность к передаче" в неактивное состояние, могут быть проигнорированы DCE-устройством. DCE может снова активизировать эту линию в любой момент при условии, что линия "Запрос передачи" также находится в активном состоянии. Такая процедура называется "аппаратное управление потоком данных". Если линия "Запрос передачи" не используется, DCE будет работать так, будто эта линия все время находится в активном состоянии.

Готовность DCE (CC/DSR)
DCE использует эту линию для информирования DTE о своей готовности к работе. Для соответствующего сигнала часто используется название: "Готовность устройства сопряжения" или "Готовность модема". Активное состоя¬ние линии означает, что DCE готово обмениваться информацией с DTE и начать передачу данных. В некоторых реализациях данная линия, в комбинации с линией "Индикатор тестирования", используется для управления обменом сигналами при тестировании и обслуживании DCE. В других случаях эта линия используется вместе с линией "Готовность к передаче" для управления и программирования DCE, поддерживающего последовательную систему автоматического вызова.

Готовность DTE (CD/DTR)
Сигналы на этой линии вырабатывает DTE. Переключение этой линии в активное состояние информирует DCE-устройство о том, что ему нужно приготовиться к соединению с каналом связи. Если DCE может автоматически отвечать на последующие вызовы, оно будет делать это только в том случае, если линия "Готовность DTE" находится в активном состоянии. Состояние данной линии не влияет на сигналы, присутствующие на линии "Индикатор вызова". Если текущее соединение с каналом связи установлено, то активное состояние линии "Готовность DTE" указывает, что DCE должно поддерживать это состояние. Если эта линия впоследствии переключается в неактивное состояние, DCE отключится от канала связи после завершения текущей передачи данных. После перехода в неактивное состояние линия "Готовность DTE" не должна активизироваться снова до тех пор, пока от DCE не будет получено подтверждение этого перехода путем переключения линии "Готовность DCE" в неактивное состояние.

Индикатор вызова (CE/RI)
DCE использует эту линию для сообщения о том, что по каналу связи принимается сигнал вызова. Сигнал на линии "Индикатор вызова" соответствует состоянию сигнала вызова ON при наличии сигнала вызова, и состоянию OFF — при его отсутствии. Эта линия всегда активна. Однако DTE может игнорировать этот сигнал по своему усмотрению.

Обнаружение несущей (CF/DCD)
DCE активизирует эту линию при получении сигнала, служащего указателем возможности установления соединения с подходящим качеством связи
Если линия находится в неактивном состоянии, то это означает либо полное отсутствие сигнала, либо наличие сигнала неудовлетворительного качества. Какой сигнал считать подходящим по качеству, DCE определяет само.
Если во время передачи данных возникнут обстоятельства, требующие переключения линии "Обнаружение несущей" в неактивное состояние (означающего потерю несущей), DCE также установит сигнал MARK на линии "Принимаемые данные". В полудуплексных системах данная линия переключается в неактивное состояние всякий раз, когда активизируется линия "Запрос передачи", а также в течение короткого промежутка времени после переключения линии "Запрос передачи" из активного в неактивное состояние.

Детектор качества сигнала (CG/SQ)

Использование этой линии в настоящее время не рекомендуется.

Переключатель скорости передачи данных от DTE (СН) 
По этой линии DTE сигнализирует о том, какую из двух возможных скоростей передачи данных или какой диапазон скоростей передачи должно выбрать DCE. Активное состояние этой линии соответствует выбору более высокой скорости передачи.

Переключатель скорости передачи данных от DCE (CI)
По этой линии DCE сообщает о том, какую из двух возможных скоростей передачи данных или какой диапазон скоростей передачи оно выбирает. Активное состояние этой линии соответствует выбору более высокой скорости передачи.

Готовность к приему (CJ)

Для обеспечения документированного метода аппаратного управления потоком данных стандартом RS-232 предусмотрена линия "Готовность к приему". DTE активизирует эту линию, чтобы сообщить DCE о своей готовности к приему данных. Напротив, неактивное состояние этой линии означает, что DTE не может принимать данные от DCE. В этом случае DCE должно сохранить не переданные данные. Локальное DCE-устройство может передать удаленному DCE сигнал на приостановку передачи данных по каналу связи. В системах, использующих линию "Готовность к приему", все остальные линии работают так, как если бы линия ' Запрос передачи" постоянно находилась в активном состоянии.

Местный шлейф (LL)
DTE использует эту линию для перевода локального DCE в режим петлевого тестирования. Когда DTE активизирует линию "Местный шлейф", локальное DCE-устройство отключает свой сигнальный выход от канала связи и подключает его к своей собственной входной линии. Затем это DCE активизирует линию "Индикатор тестирования". В результате этого любые данные, передаваемые от DTE к DCE, немедленно возвращаются обратно к DTE. При переключении линии "Местный шлейф" в неактивное состояние DCE реконфигурирует себя для нормальной работы. Состояние линии "Местный шлейф" не влияет на работу линии "Индикатор вызова".

Удаленный шлейф (RL).
DTE использует эту линию для перевода удаленного DCE в режим дистанционного тестирования. Когда DTE активизирует линию "Удаленный шлейф", локальное DCE выдает команду удаленному DCE на установку петлевой конфигурации. Когда установка такой конфигурации завершена, локальное DCE переключает линию "Индикатор тестирования" в активное состояние. При дистанционном тестировании данные, передаваемые локальным DTE-устройством, проходят через локальное DCE-устройство и далее поступают в канал связи. Удаленное DCE принимает эти данные и сразу же передает их обратно по каналу связи к локальному DCE, а последнее — к локальному DTE. Когда локальное DTE переключает линию 'Удаленный шлейф" в неактивное состояние, локальное DCE выдает команду удаленному DCE на окончание тестирования. Во время дистанционного тестирования удаленное DCE устанавливает линию "Готовность DCE' в неактивное, а линию "Индикатор тестирования" в активное состояние, указывая тем самым, что связь с удаленным DCE невозможна.

Индикатор тестирования (ТМ)
DCE активизирует эту линию для того, чтобы сообщить DTE о своем переходе в тестовый режим. Активизация этой линии является откликом DCE-устройства на переключение линий "Местный шлейф" или "Удаленный шлейф" в активное состояние. Линия "Индикатор тестирования" активизируется также в том случае, когда DCF. отвечает на команду перехода в режим петлевого тестирования, поступающего от удаленного DCE. Неактивное состояние линии "Индикатор тестирования" означает, что DCE готово для нормальной работы.

Синхронизация передачи от DTE (DA)
По этой линии DTE передает сигналы для синхронизации DCE. Моменты переключения этой линии из активного состояния в неактивное номинально соответствуют середине каждого элементарного сигнала (импульса), поступающего от DTE на линию "Передаваемые данные". Если эта линия реализована в интерфейсе, то для поступления на нее синхронизирующей информации обычно достаточно, чтобы DTE-устройство находилось во включенном состоянии.

Синхронизация передачи от DCE (DB/TC)
По этой линии DCE передает сигналы для синхронизации DTE. DCE должно выдавать элементарные сигналы на линию "Передаваемые данные" таким образом, чтобы значащие моменты переходов между соседними элементарными сигналами (битами) соответствовали моментам переключения линии DB из неактивного состояния в активное.

Синхронизация приема от DCE (DD/RC)
По этой линии DCE передает сигналы для обеспечения синхронной работы DTE в режиме синхронной передачи данных. Моменты переключения этой линии из активного состояния в неактивное соответствуют середине каждого элементарного сигнала (бита), поступающего от DCE на линию "Принимаемые данные".

Передаваемые данные дополнительного канала (SBA/STD)
Эта линия эквивалентна линии "Передаваемые данные", но используется для организации дополнительного канала связи.

Принимаемые данные дополнительного канала (SBB/SRD)
Эта линия эквивалентна линии "Принимаемые данные", но используется для организации дополнительного канала связи.

Запрос передачи по дополнительному каналу (SCA/SRTS)
Эта линия эквивалентна линии "Запрос передачи", но используется для организации дополнительного канала связи.

Готовность к передаче по дополнительному каналу (SCB/SCTS)
Эта линия эквивалентна линии "Готовность к передаче", но используется для организации дополнительного канала связи.

Обнаружение несущей дополнительного канала (SCF/SDCD)
Эта линия эквивалентна линии "Обнаружение несущей", но используется для организации дополнительного каната связи.

 

Контроль достоверности получаемых данных


Контроль передачи данных
Одной из причин потери данных является занятость приемника, в то время как передатчик продолжает передавать данные. Избежать переполнения можно, организовав обмен таким образом, чтобы приемник мог сообщать в своей занятости передатчику.Конечно, обратная связь требует уже полного нуль-модемного провода, содержащего все необходимые линии. Система обратной связи может быть либо аппаратной, либо программной. Аппаратная обратная связь заключается в выделении некоторой линии (например, DTR/DSR) для уведомления передатчика о возможностях приемника. В этом случае передатчику разрешается передавать данные, только пока DSR находится в состоянии ON Как только приемник заполнил свой буфер, он сбрасывает DTR в OFF, уведомляя передатчик о необходимости прервать передачу данных. Windows позволяет включать такой режим с помощью флага fOutxctsFlow (управление с помощью CTS) или флага fOutxDsrFlow (управление с помощью DSR).Программная обратная связь осуществляется посылкой специальных символов. При получении символа хоп передатчик начинает передачу данных, а при получении символа xof f останавливает передачу В Windows существует режим автоматического управления посылкой таких символов.

Методы обнаружения ошибок передачи
Протокол RS-232 имеет существенный недостаток — плохую помехозащищенность. Если для символьного протокола некоторой защитой служит ограничение диапазона самих символов (например, в посылке числовых данных могут встречаться только символы "0...9", ".","-" и, может быть, буквы), то для бинарного протокола необходимы дополнительные меры контроля данных. Конечно, аппаратный контроль четности позволяет в некоторой степени контролировать достоверность данных, но, как мы покажем в разд. 10.5. надежность такого способа далека от совершенства. Способы борьбы с ошибками передачи можно разделить на две категории: не использующие обратную связь и использующие ее. В первом случае на передающей стороне передаваемые данные кодируются одним из известных кодов с исправлением ошибок. На приемной стороне, соответственно, производится декодирование принимаемой информации и исправление обнаруженных ошибок. Исправляющая возможность применяемого кода зависит от числа избыточных битов, генерируемых кодером Если вносимая избыточность невелика, то существует опасность, что принимаемые данные будут содержать необнаруженные ошибки, которые могут привести к ошибкам в работе прикладного процесса. Если же использовать код с высокой исправляющей споfont-size: 12.0pt; font-family: /spanсобностью (большой избыточностью), то это приводит к необоснованно низкой реальной скорости передачи данных. В системах с обратной связью применяются процедуры обнаружения ошибок и переспроса, также называемые "обнаружением ошибок с автоматическим запросом повторения" (ARQ, Automatic Repeat Request). В этом случае к данным добавляется контрольная информация, достаточная только для вычисления достоверности данных. Каждый принятый блок данных (кадр) должен быть подтвержден специальным кадром, посылаемым в обратном направлении. Такой кадр содержит уведомление о правильности данных или запрос на повторение кадра. Таким образом, достигается оптимальное сочетание: передаваемый код не содержит избыточных данных, а принимающая сторона может управлять коррекцией ошибок. При этом ARQ гакже может быть старт-стопного типа (SAW), с возвратом на N шагов (GBN) или селек¬тивного повторения (SR).


Для обнаружения ошибок в данных могут применяться несколько методов
• посимвольный контроль четности (реализуется аппаратпо в RS-232 с помощью контроля четности);
• поблочный контроль четности (например, в протоколах ARQ);
• добавление избыточного контрольного кода (CRC):
• увеличение вероятности корректного распознавания начала посылки;
• естественные методы контроля данных.


Контроль четности
Порт RS-232 реализует аппаратный контроль четности (или как его еще называют, контроль паритета).. Пользователь может конфигурировать порт на проверку четного или нечетного паритета или отсутствия контроля четное. При включенном контроле четности к передаваемому байту добавляется еще один бит, дополняющий биты основного байга строго определенным образом. Например, пусть производится передача байта <1100 0101 >. Общее количество единиц равно четырем. Если используется четный паритет, то бит паритета будет равен 0, и общее количество единиц в этом байте будет по-прежнему четным числом. Если же используется нечетный паритет, то бит паритета будет равен 1. Общее количество единиц в этом случае, вместе с битом паритета, будет равно пяти, т. е. нечетному числу. Принимающее устройство производит те же вычисления и сравнивает число единиц в полученном байте. При несовпадении генерируется ошибка четности. Однако, очевидно, что несовпадение четности произойдет только в случае искажения одного бита. При ошибке четности порт может генерировать аппаратное прерывание.

Контрольная сумма
Один из способов повышения достоверности получаемых данных заключается в дополнении посылки контрольной суммой. Контрольная сумма — обычно один, два или четыре байта (в случае необходимости может быть и больше), полученные некоторым преобразованием данных посылки, под¬считываемые перед отправкой и включаемые в посылку. Принимающая программа производит аналогичную операцию над данными и сверяет вычисленную и полученную контрольные суммы. Если помеха изменила один или несколько байт посылки, вероятность совпадения контрольных сумм очень мала.

Стартовый байт
Для четкого распознавания начала посылки желательно, чтобы стартовый байт (или стартовая последовательность) не встречался в самих данных. Для обеспечения уникальности стартового байта (или, точнее говоря, стартовой посылки) применяют один из способов.
- программное исключение стартовых символов из данных;
- аппаратное дублирование битов;
- программное дублирование байт.
Первый способ заключается в простом анализе данных. Так, если данные состоят из цифр и букв, то логично в качестве стартовой посылки применить, например, символ "$" или последовательность символов "!!!". Появление такой последовательности внутри самих данных исключено. Однако такое исключение можно произвести только в строковых (например, ASCII) протоколах передачи. Второй способ заключается в принудительном исключении символа начала посылки. Для синхронизации кадров используется комбинация типа "флаг" (двоичный код <01111110>). Началом передаваемого блока данных (кадра) является первый байт после флага, отличный от него. После передачи последнего информационного байта сразу передаются флаги. Для обеспечения прозрачности кода передаваемой информации используется процедура "бшп- стаффингования": принудительное добавление нулевого бита после следующих подряд пяти единиц. Таким образом, появление шести единиц подряд (как в коде флага) исключено. Такие алгоритмы реализуются аппаратно, на¬пример, в протоколах HDLC (High-level Data Link Control, Высокоуровневый протокол управления каналом передачи данных) И, наконец, программное обеспечение уникальности стартовой посылки производится на уровне байт или последовательности байт. Один из способов заключается в использовании двух байт и дублировании первого, если он попадается в данных. Например, стартовой последовательностью выбирается последовательность "$10, $01". При этом оговаривается, что если "$10" встретится внутри данных (или контрольной сумме), то этот байт будет дублирован, т. е. будет передано "$10, $10". Таким образом гарантируется, что стартовая последовательность будет уникальна, т. к. такая же последовательность в данных будет передана как "$10, $10, $01".
Другой байтовый способ реализуется, например, в протоколе SLIP (Serial Line IP). В этом случае пакет данных (кадр) должен завершаться символом "$С0" ("конец"). Во многих реализациях кадр и начинается с этого символа, что позволяет принимающей стороне эффективно отбросить все принятое до передачи кадра. Если какой-либо байт кадра равен символу "конец", то вместо него передается 2-байтовая последовательность "$DB, $DC". Если же байт пакета равен "SDB", то вместо него передается последовательность "$DB, $DD".

<На главную> <Продолжение>

 

 

 

 

 

Облако тегов