Распиновка COM порта(RS232). Распиновка COM порта(RS232) Rs 232 разъем

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

Хотя такие интерфейсы, как Ethernet, FireWire и USB, все отправляют данные в виде последовательного потока, термин «последовательный порт» обычно идентифицирует аппаратное обеспечение, более или менее совместимое со стандартом RS-232, предназначенное для взаимодействия с модемом или с аналогичной связью Устройства.

Современные компьютеры без последовательных портов могут потребовать конвертеры с последовательным интерфейсом, чтобы обеспечить совместимость с последовательными устройствами RS-232. Серийные порты все еще используются в таких приложениях, как системы промышленной автоматизации, научные приборы, системы продаж и некоторые промышленные и потребительские товары. Серверные компьютеры могут использовать последовательный порт в качестве консоли управления или диагностики. Сетевое оборудование (например, маршрутизаторы и коммутаторы) часто используют последовательную консоль для конфигурации. Серийные порты по-прежнему используются в этих областях, поскольку они просты, дешевы, а их консольные функции высоко стандартизированы и широко распространены.

Распиновка COM порта(RS232)

Существует 2-е разновидности com порта, 25-и пиновый старый разъем и сменившей его более новый 9-и пиновый разъем.

Ниже приведена схема типового стандартного 9-контактного разъема RS232 с разъемами, этот тип разъема также называется разъемом DB9.

  1. Обнаружение несущей(DCD).
  2. Получение данных(RXD).
  3. Передача данных(TXD).
  4. Готовность к обмену со стороны приемника(DTR).
  5. Земля(GND).
  6. Готовность к обмену со стороны источника(DSR).
  7. Запрос на передачу(RTS).
  8. Готовность к передаче(CTS).
  9. Сигнал вызова(RI).

RJ-45 к DB-9 Информация о выводе адаптера последовательного порта для коммутатора

Консольный порт представляет собой последовательный интерфейс RS-232, который использует разъём RJ-45 для подключения к управляющему устройству, например ПК или ноутбуку. Если на вашем ноутбуке или ПК нет штыря разъема DB-9, и вы хотите подключить ноутбук или ПК к коммутатору, используйте комбинацию адаптера RJ-45 и DB-9.

DB-9 RJ-45
Получение Данных 2 3
Передача данных 3 6
Готовность обмену 4 7
Земля 5 5
Земля 5 4
Готовность обмену 6 2
Запрос на передачу 7 8
Готовность к передаче 8 1

Цвета проводов:

1 Черный
2 Коричневый
3 Красный
4 Оранжевый
5 Желтый
6 Зеленый
7 Синий
8 Серый (или белый)

Существует несколько стандартов RS-232, различающихся буквой в суффиксе: RS-232C. RS-232D. RS-232E и пр. Вдаваться в различия между ними нет никакого смысла- они являются лишь последовательным усовершенствованием и детализацией технических особенностей одного и того же устройства. Все современные порты поддерживают спецификации RS-232D или RS- 232Е. В состав любого порта с интерфейсом RS-232 (в том числе СОМ-порта PC) входит универсальный асинхронный приемопередатчик (Universal Asynchronous Receiver-Transmitter. UART), который потому и носит название "универсального", что одинаков для всех подобных интерфейсов (кроме RS-232, это RS-485 и RS-422 1). Также в RS-232 входит схема преобразования логических уровней UART (это обычные логические уровни 0^5 илн 0+3,3 В) в уровни RS-232, где биты передаются разпополярными уровнями напряжения, притом инвертированными относительно IJART. В UART действует положительная логика, где логическая 1 есть высокий уровень (+3 или +5 В), а у RS-232 наоборот, логическая I есть отрицательный уровень от -3 до -12 В, а логический 0 - положительный уровень от +3 до +12 В.

Сама идея передачи по этому интерфейсу заключается в передачи целого байта по одному проводу в аиде последовательных импульсов, каждый ич которых может быть 0 или 1. Если в определенные моменты времени считывать состояние линии, то можно восстановить то. что было послано. Однако эта простая идея натыкается на определенные трудности. Для приемника и передатчика, связанных между собой тремя проводами ("земля" и два сиг нальных провода "туда" и "обратно"), приходится задавать скорость передачи и приема, которая должна быть одинакова для устройств на обоих концах линии. Эти скорости стандартизированы, и выбираются из ряда 1200, 2400. 4800, 9600. 14 400, 19 200. 28 800, 38 400, 56 000, 57 600, 115 200, 128 000, 256 000 (более медленные скорости я опустил) 2 . Число это обозначает количество передаваемых/принимаемых бит в секунду (бод). Проблема состоит в том, что приемник и передатчик - это физически совершенно разные системы, и скорости эти для них не могут быть строго одинаковыми в принципе (из-за разброса параметров тактовых генераторов), и даже если их каким-то фантастическим образом синхронизировать в начале, то они в любом случае быстро "разъедутся". Поэтому такая передача всегда сопровождается начальным (стартовым) битом, который служит для синхронизации. После нею идут восемь (или девять - если используется проверка на четность) информационных битов, а затем стоповые биты, которых может быт ь один, два и более, но это уже не имеет принципиального значения - почему, мы сейчас увидим.

Общая диаграмма передачи таких последовательностей показана на рис. ГИЛ. Хитрость заключается в том, что состояния линии передачи, называемые стартовый и столовый биты, имеют разные уровни. В данном случае стартовый бит передается положительным уровнем напряжения (логическим нулем), а столовый- отрицательным уровнем (логической единицей) 3 , по-

Обычный формат данных, по которому работает львиная доля всех устройств, обозначается 8nl, что читается так: 8 информационных бит, no parity,

тому фронт стартового бита всегда однозначно распознается. В этот-то момент и происходит синхронизация. Приемник отсчитывает время от фронта стартового бита, равное Ъ А периода заданной частоты обмена (чтобы попасть примерно в середину следующего бита), и затем восемь (или девять, если это задано заранее) раз подряд с заданным периодом регистрирует состояние линии. После этого линия переходит в состояние стопового бита и может в нем пребывать сколь угодно долго, пока не придет следующий стартовый бит. Задание минимального количества стоповых битов, однако, производится тоже- для того чтобы приемник знал, сколько времени минимально ему нужно ожидать следующего стартового бита (как минимум, это может быть, естественно, один период частоты обмена, т. е. один стоповый бит). Если по истечении этого времени стартовый бит не придет, приемник может регистрировать так называемый Timeout, т. е. перерыв, по-русски, и заняться своими делами. Если же линия "зависнет" в состоянии логического 0 (высокого уровня напряжения), то это может восприниматься устройством, как состояние "обрыва" линии- не очень удобный механизм, и в микроконтроллерах он через UART не поддерживается. Это не мешает нам, естественно, для установки или определения такого состояния просто отключать UART и устанавливать состояние логического нуля на выводе TxD (что и есть имитация физического "обрыва"), или определять уровень логического 0 на выводе RxD, но серьезных причин для использования этой возможности, я, честно говоря, не вижу (см. на эту тему также замечание в главе 20).

Рис. П4.1. Диаграмма передачи данных по последовательному интерфейсу RS-232

в формате 8N2

1 столовый бит. "No parity" означает, что проверка на четность не производится. Это самая распространенная схема работы такого порта, причем, т. к. никакими тайм-аугами (Timeout) мы также себе голову заморачивать не будем, то нам в принципе все равно, сколько стоповых битов будет, но во избежание излишних сложностей следует их устанавливать всегда одинаково - у передатчика и у приемника. На диаграмме рис. П4.1 показана передача некоего кода, а также, для наглядности, передача байта, состоящего из всеч единиц и из всех нулей в формате, опять же для наглядности, 8п2.

Из описанного алгоритма работы понятно, что погрешность несовпадения скоростей обмена может быть такой, чтобы фронты не "разъезжались" за время передачи/приема всех десяти-двенадцати битов более, чем на полпериода, т. е. в принципе фактическая разница скоростей может достигать 4-5%, но на практике их стараются все же сделать как можно ближе к стандартным величинам.

Приемник RS-232 часто дополнительно снабжают схемой, которая фиксирует уровень не единожды за период действия бита, а трижды, при этом за окончательный результат принимается уровень двух одинаковых из трех полученных состояний линии, таким образом удается избежать случайных помех. Длина линии связи по стандарту не должна превышать 15 м. но на практике это могут быть много большие величины. Если скорость передачи не выбирать слишком высокой, то такая линия может надежно работать на десятки метров (автору этих строк удавалось без дополнительных ухищрений наладить обмен с компьютером на скорости 4800 по кабелю, правда, довольно толстому, длиной около полукилометра). В табл. П4.1 приведены ориентировочные эмпирические данные по длине неэкранированной линии связи для различных скоростей передвчи.

Таблица П4.1. Длина кабеля RS-232 для разных скоростей передачи данных

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

Для работы в обе стороны нужно две линии, которые у каждого приемопередатчика обозначаются RxD (приемная) и TxD (передающая). В каждый момент времени может работать только одна из линий, т. е. приемопередатчик либо передает, либо принимает данные, но не одновременно (так называемый "полудуплексный режим" - это сделано потому, что у UART-микросхем чаще всего один регистр и на прием и на передачу). Кроме линий RxD и TxD, в разъемах RS-232 присутствуют также и другие линии. Полный список всех контактов для обоих стандартных разъемов типа DB (9- и 25-контактного) приведен в табл. П4.2. Нумерация контактов DB-разъема обычно написана прямо на нем, она также есть на рис. 10.8 в главе 10 (на примере гнезда разъема для игрового порта DB-15F).

Таблица П4.2. Контакты для ОВ-разьемов

Обозначение

Направление

Детектор принимаемого сигнала с линии (Data Carrier Detect)

Принимаемые данные (Receive Data)

Передаваемые данные (Transmit Data)

Готовность выходных данных (Data Terminal Ready)

Общий (Ground)

Готовность данных (Data Set Ready)

Запрос для передачи данных (Request То Send)

Таблица П4.2 (окончание)

Для нормальной совместной работы приемника и передатчика выводы RxD н TxD, естественно, нужно соединять накрест - TxD одного устройства с RxD второго и наоборот (то же относится и к RTS-CTS и т. д.). Кабели RS-232, которые устроены именно таким образом, называются еще нуль-модемными (в отличие от простых удлинительных). Их стандартная конфигурация показана на рис. П4.2. В варианте "с" (справа на рисунке) дополнительные выводы соединены именно так, как описано ранее.

Рис. П4.2. Схемы нуль-модемных кабелей RS-232: a.b - различные полные варианты,

с - минимальный вариант

Выходные линии RTS и DTR иногда могут использовать и для "незаконных" целей - питания устройств, подсоединенных к СОМ-порту. Именно так устроены, например, компьютерные мыши, работающие через СОМ. Позже мы покажем пример устройства (преобразователя уровней), которое будет использовать питание от вывода RTS. А как при необходимости можно установить эти линии в нужное состояние?

RS -232 – это название стандарта (RS– рекомендуемый стандарт, 232 – его номер), который был разработан в 60-х годах прошлого века для подключения к компьютеру внешних устройств (принтера, сканера, мыши и др.), а также связи компьютеров между собой. ИнтерфейсRS-232 разрабатывался для соединения устройств двух видов: терминального и связного. Терминальное оборудование (DTE), например компьютер, может посылать или принимать данные по последовательному интерфейсу. Связное оборудование (DCE) понимается как устройство, которое может практически реализовать последовательную передачу данных.

Наиболее часто в качестве DCEиспользуется модем, организующий обмен информацией с использованием телефонных линий связи. Возможно также соединение двухDTE-устройств, например, компьютеров непосредственно с помощью интерфейсаRS-232 без использования модемов. СтандартRS-232 описывает виды и параметры сигналов, способы их передачи, типы разъемов.

Разъемы RS -232. Применяются 25-контактный разъемDB-25 или более компактный 9-контактный вариантDB-9.

Сигналы RS -232. Стандарт предусматривает асинхронный и синхронный режимы обмена, но в настоящее время практически используется только асинхронный, тем более, чтоCOM-порты поддерживают только асинхронный режим. В интерфейсе имеются две линии сигналов последовательных данных:TxD– передаваемые иRxD– принимаемые, а также несколько линий сигналов управления:RTSиCTS– первая пара квитирования,DTRиDSR– вторая пара квитирования,DCDиRI– сигналы состояния модема. Имеется общий проводSG- сигнальное заземление и линияPG– защитное заземление (корпус).

В интерфейсе используется небалансный метод передачи сигналов с несимметричными передатчиками и приемниками. Соединение передатчика и приемника приведено на рис. 14.1, где приняты следующие условные обозначения: T(Transmitter) – передатчик;R(Receiver) – приемник;TI(TransmitterInput) – цифровой вход передатчика;RO(ReceiverOutput) – цифровой выход приемника;U T – линейное напряжения на выходе передатчика иU R – на входе приемника.

Рис. 14.1. Соединение передатчика и приемника в интерфейсе RS-232

Уровни сигналов на выходах передатчиков должны быть в диапазоне от -15 до -5 В для представления логической 1 и в диапазоне от +5 до +15 В для представления логического 0. На практике величина напряжений логических уровней сигналов не превышает ±12 В.

Форматы передачи данных. В интерфейсе RS-232 используется асинхронный метод передачи последовательных данных. В отсутствие передачи сообщений линии данных находятся в состоянии логической 1. Сообщения передаются кадрами. Каждый кадр состоит из стартового бита, битов данных, бита паритета и стоповых битов. Старт-бит всегда имеет уровень логического 0. Количество битов данных по стандарту может быть 5, 6, 7 и 8. Чаще всего используются 8 или 7 битов. Количество стоп-битов: 1 или 2. Стоповые биты всегда имеют уровень логической 1. Биты данных передаются, начиная с младшего. Скорость передачи в RS-232 может выбираться из ряда: 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 бит/с. Синхронизация генератора приемника осуществляется в момент поступления старт-бита из линии связи от передатчика.

Для преобразования параллельных данных в последовательные и наоборот, устройства, подключаемые к интерфейсу RS-232, должны иметь модуль универсального асинхронного приемопередатчика UART. Этот модуль работает, как правило, с сигналами ТТЛ-уровней. Для преобразования этих сигналов в уровни интерфейса RS-232 и наоборот используются передатчики и приемники.

Соединение устройств интерфейса. Стандарт RS-232 предполагает непосредственное соединение контактов разъемов устройств DTE и DCE. Если аппаратура DTE, например, два компьютера подключаются без модемов, то их разъемы соединяются между собой нуль-модемным кабелем. При этом возможно несколько вариантов подключения. На рис. а приведено соединение с полным протоколом квитирования. Оно требует 7 проводов кабеля. На рис. б приведен пример нуль-модемного соединения, которое требует только трех проводов кабеля для двустороннего обмена данными. Для того, чтобы устройства могли передавать данные по интерфейсу, их выходы RTS соединяются со своими входами CTS, а выходы DTR – со своими входами DSR и DCD. Таким образом, оба устройства DTE-1 и DTE-2 всегда будут готовы к передаче.

Соединение компьютеров нуль-модемным кабелем:

а) - с полным протоколом квитирования; б) - без сигналов квитирования

Управление потоком данных означает возможность остановить, а после этого возобновить передачу данных без их потери. Могут использоваться два варианта протокола: аппаратный и программный.

Аппаратный протокол управления потоком обычно использует пару сигналов квитирования RTS/CTS. При этом контакт RTS разъема одного устройства соединяется с контактом CTS разъема другого устройства. На рис. 14.3,а приведена схема подключения устройства DTE-1 (например, компьютера) к устройству DTE-2 (например, принтеру или контроллеру) при односторонней передаче.

Когда приемник (DTE-2) готов к приему, он устанавливает сигнал на контакте своего разъема RTS. Передатчик (DTE-1), получив этот сигнал на контакте CTS своего разъема, передает очередной байт данных. Если сигнал CTS на разъеме передатчика будет сброшен, то он прекращает передачу. Сообщение, которое уже начало передаваться, задержать сигналом CTS невозможно. Если необходима двусторонняя передача (дуплексный обмен), то аппаратный протокол требует перекрестного соединения линий RTS и CTS, как показано на рис. 14.3,б.

Программный протокол управления потоком заключается в посылке принимающей стороной специальных символов останова передачи XOFF и возобновления передачи XON. При этом предполагается наличие двунаправленного канала обмена данными. Работу этого протокола можно описать следующим образом. Передающее устройство посылает данные на контакт своего разъема TxD, а приемное принимает их с контакта RxD своего разъема. Если приемное устройство не может принимать данные, то оно посылает на линию связи (контакт TxD) байт-символ XOFF. Передатчик, приняв этот символ с контакта RxD, останавливает передачу. Затем, когда принимающее устройство снова становится готовым к приему данных, оно посылает байт-символ XON. Приняв его, передающее устройство возобновляет передачу.

Рис. 14.3. Соединение двух DTE с аппаратным протоколом управления потоком RTS/CTS: а) - при односторонней передаче; б) - при двусторонней передаче

Длина соединительного кабеля. Длина кабеля влияет на максимальную скорость передачи информации. Максимальная длина стандартного кабеля 15 метров при скорости передачи 19200 бит/с. При уменьшении скорости передачи длина кабеля может быть существенно увеличена.

Достоинства интерфейса RS -232 : большой парк работающего оборудования, использующего этот стандарт; простота и дешевизна соединительного кабеля; простота и доступность программного обеспечения для работы с интерфейсом.

Недостатки интерфейса : невысокая скорость обмена; малая длина соединительного кабеля; невысокая помехоустойчивость; интерфейс предназначен для соединения, как правило, только двух устройств (передатчика и приемника).

В молодости мы легко расстаемся со старыми, привычными вещами в угоду новым, модным и дорогим. Став постарше, мы с удивлением обнаруживаем, что старое, по сути дела, не хуже нового, только проще и дешевле. Примером такого «старого» является интерфейс RS-232, спецификация которого была принята более 30 лет назад, для хайтека – целая эпоха, да, пожалуй, и не одна. Тем не менее, архаичный интерфейс и по сей день является хорошим и надежным инструментом инсталлятора, когда ему требуется передавать данные в условиях с высоким уровнем шумов и помех.

История

В 1969 году ассоциация электронной промышленности США (EIA) опубликовала вариант «С» своего рекомендуемого стандарта (Recommended Standart – RS) за номером 232 «Интерфейс между оконечным оборудованием обработки данных и оконечным оборудованием линии с использованием последовательного обмена данными в двоичной форме».

Сейчас этот стандарт известен просто как стандарт RS-232C. Международный консультативный комитет по телефонии и телеграфии ввел свой собственный вариант этого стандарта в виде стандартов V.24 и V.28, а министерство обороны США выпустило практически идентичный стандарт Mil-Std-188C.

Система передачи данных (передатчик, приемник, соединительные кабели), реализованная в соответствии с техническими условиями стандарта RS-232C, обеспечивает передачу сигнала со скоростями, не превышающими 20 Кбит/с (реально используют на скоростях до 115200 бит/с).

В настоящее время действует редакция стандарта, принятая в 1991 году ассоциациями электронной и телекоммуникационной промышленности, под названием EIA/TIA-232-E. В ней нет никаких технических изменений, которые могли бы привести к несовместимости с оборудованием, поддерживающим интерфейс RS-232 более ранних версий.

Как это работает

До появления интерфейсов IEEE-1394 и USB‑2 асинхронный последовательный интерфейс был основным устройством, с помощью которого осуществлялось взаимодействие компьютеров. Слово «асинхронный» означает, что при передаче данных специальный синхронизирующий сигнал не используется, и отдельные символы могут передаваться с произвольными временными интервалами.

Каждый символ должен быть «взят в скобки» т.е. ему должен предшествовать стандартный стартовый сигнал, а заканчиваться его передача должна стоповым сигналом. Стартовый сигнал – это нулевой бит (с уровнем логического 0), который называется стартовым битом. Его предназначение – сообщить принимающему устройству о том, что следующие восемь бит представляют из себя байт данных. После символа передаются один или два стоповых бита, сигнализирующие об окончании его передачи. В принимающем устройстве символы распознаются по появлению стартовых и стоповых сигналов, а не по моменту их передачи. Асинхронный интерфейс ориентирован на передачу символов (байтов), а в передаваемой информации примерно 20% оказывается «лишней», предназначенной только для идентификации начала и конца каждого символа.

Термин последовательный означает, что связь осуществляется по одиночному проводу, а биты передаются последовательно, один за другим.

Интерфейс RS-232 обеспечивает соединение двух устройств, одно из которых называется DTE (Data Terminal Equipment) – ООД (Оконечное Оборудование Данных), второе – DCE (Data Communications Equipment) – ОПД (Оборудование Передачи Данных).

Важно запомнить эти обозначения (DTE и DCE). Они используются в названиях сигналов интерфейса и помогают разобраться с описанием конкретной реализации.

За и против

К несомненному достоинству RS-232 следует отнести его популярность: все компьютеры РС (но не Mac) оборудованы по крайней мере одним портом RS-232, поэтому приобретение готовых кабелей для него не составляет никакой проблемы. Процессом передачи можно управлять на аппаратном уровне, хотя эту возможность используют нечасто.

Недостатки RS-232 состоят, прежде всего, в том, что он реализует связь типа «точка-точка» с низкой, по современным меркам, скоростью (обычно 9600 бит в секунду), и работает только на небольших расстояниях (до 10-15 м).

Состав линий связи между устройствами DTE и DCE точно не определён. Стандарт описывает функции до 25 соединительных линий, но не указывает, должна или не должна использоваться та или иная линия. Лучше (технологически) обстоят дела в стандарте RS‑422. По этому стандарту связь осуществляется по двум парам проводов, а передаваемый сигнал может приниматься более чем одним устройством. Согласно стандарту RS-485 (улучшенный RS-422) используется одна пара проводов, которая предназначена для передачи или приёма многими устройствами. RS-422/RS-485 может использоваться для многоточечных соединений, из-за высокой помехоустойчивости за счёт использования дифференциальных (балансных) линий, связь возможна на расстояниях до 1,2 км.

В настоящее время RS-422/RS-485 является стандартном де-факто для значительной части вещательной видеоиндустрии.

Типы разъемов


Рис. 1. 25-контактный соединитель типа DB25

Изначально стандарт RS-232 описывал применение 25-контактного соединителя типа DB25 (Рис.1). DTE-устройство должно оснащаться вилкой, DCE-устройство – розеткой. Позднее, с появлением IBM PC, стали использовать усеченный вариант интерфейса и 9-контактные соединители DB9 (рис. 2), наиболее распространенные в настоящее время.

Распайка RS-232


Рис. 2. 9-контактный соединитель DB9

В таблице 1 показано назначение контактов 9-контактного соединителя DB9. Таблица показывает распайку вилки оборудования обработки данных (DTE). Розетка устройства передачи данных (DCE) распаяна так, что два разъема стыкуются напрямую, или через кабель, распаянный «контакт в контакт».

Таблица 1. Назначение контактов соединителя DB9

Вывод Сигнал Описание Тип вывода
1. CD (Carrier Detect) Несущая обнаружена Вход
2. RxD (Receive Data) Принимаемые данные Вход
3. TxD (Transmit Data) Передаваемые данные Выход
4. DTR (Data Terminal Ready) Готовность ООД Выход
5. SG (Signal Ground) Сигнальный общий -
6. DSR (Data Set Ready) Готовность ОПД Вход
7. RTS (Request To Send) Запрос на передачу Выход
8. CTS (Clear To Send) Готовность к приему Вход
9. RI (Ring Indicator) Наличие сигнала вызова Вход


Рис. 3. Распайка кабеля RS-232

Для передачи данных предназначены цепи RxD (RD) и TxD (TD). Остальные цепи предназначены для индикации состояния устройств (DTR, DSR), управления передачей (RTS, CTS) и индикации состояния линии (CD, RI). Набор используемых цепей зависит от аппаратной и программной реализации стыка в контроллере. Для соединения двух DTE-устройств используют так называемые нуль-модемные кабели, в которых провода «перекрещиваются» в соответствии с назначением сигналов. На практике перед распайкой кабеля всегда следует разобраться с документацией на оба соединяемых устройства. Для соединения многих устройств достаточно минимального набора цепей интерфейса RS-232: RD, TD и Signal Ground (рис. 3).

Рекомендуется использовать кабели на основе витой экранированной пары, где каждый из сигнальных проводов свит с общим проводом. Экран кабеля рекомендуется не объединять с сигнальным общим, а подключить к металлической оболочке разъема.

Таблица 2. Назначение контактов соединителя DB25

Вывод Сигнал Описание Тип вывода
1. Корпус
2. TxD (Transmit Data) Передаваемые данные Выход
3. RxD (Receive Data) Принимаемые данные Вход
4. RTS (Request To Send) Запрос на передачу Выход
5. CTS (Clear To Send) Готовность к приему Вход
6. DSR (Data Set Ready) Готовность ОПД Вход
7. SG (Signal Ground) Сигнальный общий
8. CD (Carrier Detect) Несущая обнаружена Вход
9. Токовый выход передатчика (+) Выход
11. Токовый выход передатчика (–) Выход
18. Токовый вход приемника (+) Вход
20. DTR (Data Terminal Ready) Готовность ООД Выход
22. RI (Ring Indicator) Наличие сигнала вызова Вход
25. Токовый вход приемника (–) Вход

Таблица 3. Соответствие выводов между 9 и 25-контактным разъемами

9-контактный разъем 25-контактный разъем
1 8
2 3
3 2
4 20
5 7
6 6
7 4
8 5
9 22

Все сигналы в интерфейсе потенциальные, с номинальными уровнями +12В и –12В относительно общего провода (Signal Ground). Логической единице соответствует уровень –12В, логическому нулю соответствует +12В.

Как уже говорилось, RS-232 называют последовательным интерфейсом, поскольку поток данных передается по одному проводу бит за битом. В отсутствие передачи данных линия находится в состоянии логической единицы (–12В). Скорость передачи данных стандартом не нормируется, но обычно выбирают из ряда 110, 300, 600, 1200, 2400, 4800, 9600, 19200 бит в секунду. В основном используется асинхронный режим работы, при котором данные передаются фреймами. Каждый фрейм состоит из стартового бита, битов данных, бита контроля четности (может отсутствовать), стопового бита. Биты байта данных передаются, начиная с младшего бита.

Для правильной стыковки приемопередатчики на обоих устройствах должны быть запрограммированы одинаковым образом, т.е. должны совпадать скорость, количество битов данных (7 или 8), тип контроля по четности, длина стопового бита (1, 1.5 или 2).

При точных расчётах времени на передачу массива байтов наряду с битами данных следует учитывать все служебные биты.

На рис. 4 показан вид одного фрейма RS-232 при следующих настройках: 8 битов данных, контроль по нечетности (parity odd), 1 стоповый бит. Стартовый бит всегда идет с уровнем логического нуля, стоповый – единицы. Состояние бита четности определяется настройкой передатчика. Бит дополняет число единичных битов данных до нечетности (parity odd), четности (parity even), может не использоваться (parity none), быть всегда единицей (mark) или нулем (space).


Рис. 4. Вид фрейма RS-232

Как преодолеть ограничения стандарта RS-232

Наиболее существенными недостатками стандарта RS-232 являются небольшое расстояние, на которое можно передавать сигнал и возможность соединения только двух устройств по типу «точка-точка».

Для их преодоления используют специальные устройства – удлинители линии и расширители портов.

Удлинитель линии связи Range Extender

Предназначен для преодоления ограничений по расстоянию для приборов, имеющих управление через RS-232.

Осуществляет преобразование в интерфейс RS-422, а затем назад, в RS‑232, что позволяет использовать в качестве физического носителя две пары проводов. Удлинитель линии может быть использован для увеличения расстояния связи для любого нуль-модемного соединения RS-232, для управления оборудованием через интерфейс RS-422, либо в качестве преобразователя общего назначения из RS-232 в RS-422 и обратно.

Работает во всех режимах связи (число битов, скорость, чётность и т.д.) и не требует настройки этих параметров.

Расширитель портов Port Extender

Предназначен для преодоления ограничения интерфейса RS-232, который может осуществлять только соединения типа «точка-точка». Позволяет осуществлять связь между несколькими устройствами с интерфейсами RS-232.

Данные, которые поступают на любой из портов устройства, пересылаются на остальные 3 порта. Расширитель портов может быть использован для управления коммутатором от 3 устройств DTE (например, компьютеров).

Прибор поддерживает все режимы связи RS-232 (число битов, скорость, чётность и т.д.) и не требует настройки этих параметров.

Устранение неполадок при связи через RS-232

Ниже приведены меры, которые могут помочь разрешить проблемы, возникающие при связи с устройствами Kramer через интерфейс RS-232.

  1. Убедитесь, что между устройством (коммутатором, маршрутизатором) и управляющим компьютером (РС) установлено нуль-модемное соединение. Также убедитесь, что на разъёмах нет замятых контактов.

    Проще всего (при использовании 25-контактного порта на РС) использовать нуль-модемный адаптер, прилагаемый к устройству. Подключите такой переходник 25-контактным разъёмом к последовательному порту РС, после чего прямым кабелем – т.е. с распайкой один к одному – соедините 9-контактный разъём адаптера с последовательным портом на устройстве. (Если адаптер используется с неполным кабелем, то необходимо, как минимум, соединить на 9-контактных разъёмах с обоих концов: контакт 2 с контактом 2, 3 – с 3 и 5 – с 5.)

    При непосредственном подключении 25-контактного порта на РС к 9-контактному разъёму на устройстве (т.е. без нуль-модемного адаптера) соедините:

    • Контакт 2 на 25-контактном разъёме – с контактом 2 на 9-контактном;
    • Контакт 3 на 25-контактном разъёме – с контактом 3 на 9-контактном;
    • Контакт 7 на 25-контактном разъёме – с контактом 5 на 9-контактном;
    • Закоротите вместе контакты 6 и 20 на 25-контактном разъёме;
    • Закоротите вместе контакты 4, 5 и 8 на 25-контактном разъёме.

    При непосредственном подключении 9-контактного порта на РС к 9-контактному разъёму на устройстве соедините:

    • Контакт 2 на разъёме РС – с контактом 3 на разъёме устройства;
    • Контакт 3 на разъёме РС – с контактом 2 на разъёме устройства;
    • Контакт 5 на разъёме РС – с контактом 5 на разъёме устройства;
    • Соедините вместе контакты 4 и 6 на разъёме РС;
    • Соедините вместе контакты 1, 7 и 8 на разъёме РС;
  2. Убедитесь, что на устройстве правильно выставлены все DIP-переключатели.
  3. Убедитесь, что установки для скорости передачи данных на РС и на устройстве совпадают, а на РС выбран правильный com-порт.
  4. Если несколько устройств используются одновременно, убедитесь, что все они включены. Если в системе, работающей по схеме «ведущий/ведомый» (master/slave), какое-либо из устройств выключено, обмен в такой системе не будет надёжным.
  5. Если в устройстве имеется функция «DISABLE TXD» (Отключить TXD), убедитесь, что эта функция выключена; аналогично, если для «отключения ответа» используется DIP-переключатель, убедитесь, что ответ разрешён.
  6. Контакт 3 на разъёме RS-232 устройства используется для отправки данных в РС (это TXD устройства и RXD на РС). Контакт 2 на разъёме устройства используется для приёма данных от РС (это RXD устройства и TXD на РС). Может оказаться полезным с помощью цифрового запоминающего осциллографа убедиться в том, что устройство передаёт/принимает данные на указанных контактах.
  7. В большинстве устройств используется «двунаправленный» протокол обмена. Это значит, что один и тот же код используется как для передачи в устройство команды на выполнение определённого действия, так и в качестве ответа от устройства (в РС) при нажатии кнопки на его передней панели для выполнения аналогичного действия. Например, если пользователь нажал кнопки и скоммутировал вход 4 на выход 5, устройство посылает в компьютер шестнадцатеричный код 7В; в то же время при получении устройством кода 7В оно также отработает подключение входа 4 на выход 5. Для такого протокола может оказаться полезным анализировать коды, посылаемые устройством при нажатии кнопок на его передней панели с тем, чтобы разобраться в протоколе обмена.
  8. При устранении неполадок может оказаться полезным применять коммуникационную программу типа Procomm или Viewcom чтобы вначале проанализировать коды, посылаемые устройством. Затем можно попробовать посылать такие коды назад (см. пункт 7), проверяя, что устройство правильно на них реагирует. Наконец, можно послать код, по которому устройство вернёт своё состояние.
  9. Если должна использоваться написанная пользователем программа, по возможности вначале с помощью фирменной программы убедитесь в том, что связь между РС и устройством работает нормально.
  10. Для оборудования, в котором управление через RS-232 предусмотрено в качестве опции и вводится установкой дополнительной аппаратной платы, проверьте, что такая плата правильно установлена (как описано в руководстве).
  11. Некоторые устройства могут получать управление от других элементов оборудования и могут настраиваться на работу через RS-232 с таким оборудованием, а не с компьютером. В этом случае необходимо правильно настроить устройство. Например, матричный коммутатор звуковых сигналов 16X16 настраевается на заводе (по умолчанию) на работу с матричным коммутатором видео 16X16. В этом случае звуковая матрица получает управление от РС через видеоматрицу. Если звуковой матрицей надо управлять независимо, её следует соответственно перенастроить (на работу в режиме устройства, переключающего «только звук»).
  12. Если необходимо выслать несколько команд, то перед отправкой дополнительной команды следует убедиться в том, что устройство отработало предыдущую команду. Для этого дождитесь получения ответа на предыдущую команду перед отправкой следующей.
  13. Убедитесь в том, что для связи с устройством используется настоящий интерфейс RS-232! Некоторое оборудование (например, стандартный последовательный порт Macintosh), хотя и аналогичен RS-232, использует иные режимы обмена данными.
  14. При использовании РС с операционной системой Windows NT4.0 (и ниже) следует принять дополнительные меры. Эта система не имеет функции «plug and play» и поэтому настройка портов компьютера в ней – непростая задача. Обратитесь к документации на Windows NT! Даже если Ваша программа работает на компьютере с иной операционной системой, возможно, что под Windows NT порт не будет правильно инициализироваться.
  15. Учтите, что рабочее расстояние для RS-232 (по определению) не превышает 10 метров! Если требуется большая длина связи, следует использовать «удлинитель линии связи».
  16. По определению, интерфейс RS-232 предназначен для осуществления обмена между 2 портами (в нашем случае это РС и коммутатор). Если надо соединить вместе несколько устройств с интерфейсами RS-232, можно использовать расширитель портов (Port Extender) (например, если коммутатором надо управлять от 2-х компьютеров и контроллера).

ПРИМЕЧАНИЕ: Для некоторых изделий допускается управление несколькими такими устройствами при их последовательном соединении прямыми кабелями – что кажется неправильным в свете вышесказанного. На самом деле устройства настраиваются в режимы «ведущий/ведомый» (master/slave), при этом с компьютером через RS-232 связано только одно, ведущее устройство. При таком включении ведущее устройство передаёт информацию на и от РС к ведомым устройствам, а интерфейсом RS-232 порты оказываются связанными попарно).

  • Tutorial

Вместо вступления

Как обычно я предлагаю заняться странным - попробовать подключить несколько старых RS232 устройств, через один USB порт с помощью синей изоленты и смекалки. Статья не будет большой, скорее это описание что где взять и зачем вообще все это делать.

Зачем?

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

Как правило «мозгами» такого комплекса является компьютер у которого 100500 выходов RS232. Из примеров могу привести место кассира в супермаркете, банкоматы и тому подобное. С первым случаем столкнулся я.

Эти компьютеры не блещут мощностью, но отличаются космической стоимостью. Естественно он перестает отвечать требованиям современных технологий и многим приходит в голову идея заменить их на обычный ПК и получить приличную мощность по адекватной цене, однако быстро выясняется что RS232 на новых ПК вымер как класс. Теперь этот интерфейс стал сугубо специализированным. Соответственно надо или самостоятельно прикручивать кучу RS232 или искать уже готовое спец решение.

Разумеется что можно заменить само оборудование, но если вы посмотрите сколько стоит стационарный лазерный сканер приличной фирмы и помножите эту цену на их количество то передумаете.

Люди не посвященный в тему сразу радостно покупают пучок китайских USBtoRS232 переходников, а дальше все идет очень печально. Лучше этого не делать. Вторым вариантом является покупка специализированной платы расширения с кучей RS232. Этот вариант уже лучше и имеет право на жизнь, но тоже имеет свои недостатки. Например стоимость и проблемы с дровами если используется не Windows или не та версия. Так же не маловажным фактором является доступность в будущем, так как что-то выходит из строя и парк может расширятся в будущем. Потом оказывается что конкретная модель уже не выпускается или не постановляется в конкретную местность и т.д. В общем привязывать себя к конкретному устройству это всегда опасно, особенно если можно этого не делать.

Пробуем что-то сделать

Может показаться странным что примитивные RS232 устройства так сложно и дорого подключить по нормальному если по сути там обычно простые протоколы и примитивный физический уровень. А все потому что обычно подобные аппаратные комплексы используются в коммерческих доходных сферах и покупка оборудования по таким ценам оправдана, а само оборудование уже перешло в разряд специального. Спец оборудование = спец цена вопроса.

Однако все это не мешает попробовать собрать свой бюджетный велосипед. Бонусом получим возможность менять поведение такого своеобразного RS232 мультиплексора и полностью обойдем проблему написания USB драйверов. HID профиль поддерживается почти везде.

High level

Вторая часть софта это примеры и тесты собранные в сумбурный проект на Java написанный IDE IDEA. Предполагается что работа с устройством интегрируется в софт высокого уровня используя различные обертки по работе с USB стеком в зависимости от языка на кортом этот софт пишется. Сейчас сложно найти такой ЯП чтобы под него не существовало таких оберток. Отдельно для староверов отмечу что java и usb совместимы если готовить правельно, это доказано практикой и используется в коммерческом проекте.

В процессе тестирования выяснилось что работа в Linux и Windows с USB HID несколько отличается, работа отлаживалась через две библиотеки usb4java и hid4java. Работа через последнюю используется в Linux (Raspberry Pi 3).

Разница заключается в том что в Windows можно обратится напрямую к USB устройству даже если оно зарегистрировано как HID и писать\читать его конечные точки (endpoint). В Linux же приходится работать с hid устройством. То есть устанавливается стандартный драйвер hid и всё, работайте только с ним пожалуйста. Работа таким образом происходит немного медленнее чем напрямую, но напрямую тоже возможно если убедить систему не ставить драйвера. Это реально.

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

Заключение

Представленное устройство это лишь одни из примеров как довольно легко можно приобщится к процессу создания нативных USB устройств и перестать наконец использовать переходники.

Не забываем плюсовать