Страсти
вокруг последовательных портов.
Последовательный
порт - пожалуй, единственный узел персонального компьютера (если, конечно, не
считать кнопку ВКЛ), который не претерпел существенных изменений в процессе
беспрерывных технический революций и контрреволюций. Видимо поэтому некоторые
считают COM-порт той осью, вокруг которой вертится все компьютерное
"железо", и предлагают рассматривать Intel Pentium MMX как
сопроцессор универсального асинхронного приемо-передатчика.
С
такой постановкой вопроса можно не соглашаться, но СОМ-порт, этот самый
статичный агрегат в самом динамичном творении современной технической мысли
заслуживает некоторого внимания. Особенно со стороны тех, кто "неровно
дышит" в сторону семейства UNIX или Windows NT, или планирует создавать
системы автоматизации торговых предприятий на
базе контрольно-кассовых машин или POS-терминалов. Не стоит забывать,
что именно "из COM-порта"
большинство пользователей отправляется в плавание по океану Internet.
Последовательный
порт (или СОМ-порт, в стандартной
конфигурации ПК их два: СОМ1 и СОМ2) - это узел компьютера, который реализует
интерфейс RS-232C. Этот интерфейс
поддерживает последовательный, асинхронный (старт-стопный) протокол для связи
между собой двух устройств, причем их величество Данные (в коде ASCII, в любом
другом алфавитно-цифровом коде или по особому протоколу) передаются
последовательностью из нескольких бит, следующих один за другим. Для передачи
данных требуется один сигнал (линия TxD), для приема данных требуется еще один
сигнал (линия RxD).
Структура
кадра при обмене данными следующая.
Когда передача данных отсутствует, линия находится в состоянии "Маркер" (логическая
1). Передача данных начинается со старт-бита, когда "Маркер"
сменяется "Пробелом" (логическая 1 переходит в логический 0). Затем следуют собственно биты данных (их
количество от 5 до 8, в зависимости от формата кадра). Затем следует бит
паритета (контроль на четность, который может отсутствовать) и один или два
стоповых бита. Длительность всех бит одинакова, скорость последовательной
передачи измеряется в Бодах (количество бит за одну секунду). Существует более-менее стандартный набор
скоростей обмена:
300 |
1200 |
4800 |
14400 |
28800 |
57600 |
230400 |
600 |
2400 |
9600 |
19200 |
38400 |
115200 |
288000 |
Иногда
применяется условное обозначение форматов старт-стопного обмена данными:
38400 8N2 - 38400 Бод, 8 бит данных,
без паритета, два стопа;
1200 7E1 - 1200 Бод, 7 бит данных, контроль по нечетности, один стоп;
4800 8O1 - 4800 Бод, 8 бит данных, контроль по четности, один стоп;
Максимальная
длина кадра - 11 бит (старт + 8 данных+ 1 паритет + 1 стопа). Между кадрами допускается состояние
"Маркер" любой длительности (даже нулевой). Длительное состояние
"Пробел", более допустимого
значения (старт+данные+паритет), воспринимается как аварийное, и называется
"Разрыв" (BREAK).
Последовательный
порт выполняет все эти требования с помощью специальной схемы - универсального
асинхронного приемо-передатчика (УАПП, по английски - UART). Эта схема
под названием 16С550А в современных моделях компьютеров обычно
интегрирована с другими схемами -контроллерами параллельных портов, дисководов,
клавиатуры, "мышки" и т.п.
Интерфейс
RS-232C определяет в том числе электрический способ передачи сигналов.
Состояния “Маркер” и “Пробел” передаются двуполярными уровнями напряжения.
Интерфейс
RS-232C имеет два "тонких" момента, незнание этих моментов не
освобождает Вас от ответственности, если
соединенные Вами устройства с интерфейсом RS-232C не работают:
1. В стандарте
RS-232C определены два типа устройств, DCE (аппаратура передачи данных, АПД) и
DTE (оконечное оборудование данных, ООД). Причем входные контакты разъемов
одного типа соответствуют выходным контактам разъемов другого типа, и наоборот.
Устройство DTE имеет разъем мужского
рода ("папа"), а устройство DCE - женского ("мама").
Например, стандартные СОМ-порты персонального компьютера являются DTE, а модем
- DCE.
2. В интерфейсе
имеется две пары сигналов квитирования и два служебных сигнала. Некоторые
устройства формируют эти сигналы и ожидают их приема. Другие - игнорируют
соответствующие входы и ничего не подают на выходы.
Подключая
DTE к DCE, Вы просто соединяете одноименные контакты разъемов DB-25 (или DB-9),
- "папу" с "мамой". Если после этой эротической сцены все
заработало - Вам повезло. Так как результат зависит еще от того, какие
квитирующие сигналы устройства ожидают друг от друга, и от того, совпадают ли у
них скорость передачи и формат кадра. Некоторые устройства используют
аппаратные сигналы квитирования для индикации начала и конца передачи данных,
некоторые их просто держат установленными. Ряд устройств осуществляет
программное квитирование: символ CTRL-S (XOFF) для приостановки передачи,
STRL-Q (XON) для возобновления.
Описанных проблем
не возникает, когда Вы подключаете к компьютеру "мышку" или
стандартный модем со стандартным программным обеспечением. Проблемы начинаются, когда вы пытаетесь
соединить между собой два компьютера, подключить к компьютеру кассовый аппарат
или что-либо иное.
Опасность
подстерегает еще с одной стороны. Интерфейс RS-232 позволяет выполнить
соединение двух устройств на довольно большом удалении друг от друга,
расстояния в несколько сотен метров не являются пределом. Но при этом
необходимо очень внимательно относиться к состоянию силовой электрической сети.
В наших зданиях это "состояние" удручает. Большие "перекосы
фаз", отсутствие нормального зануления, не говоря уж о заземлении,
приводит к тому, что два устройства, соединенные кабелем RS-232, выгорают с
дымом и копотью. И никогда не знаешь, где 220 или 380 остановятся - на
процессоре, винчестере, или на тридцать первом мегабайте оперативной
памяти. Не рискуйте, поручите работу
профессионалам, "не экономьте на услугах специалистов".
Обычно в таких
случаях грамотные люди применяют интерфейс "Токовая петля". Отличие
интерфейса "Токовая петля" (ИРПС) от RS-232C заключается только в
электрических характеристиках сигналов. Для каждого из сигналов используется, в
общем случае независимый, контур тока.
Поэтому для обмена данными между двумя устройствами необходимо, как
минимум, четырех-проводное включение - контур передачи данных и контур приема
данных. (Никто не запрещает таким же образом передавать квитирующие и служебные
сигналы). Наличие независимых контуров тока позволяет достигать лучших
соотношений скорость/дальность и обеспечивает надежную защиту (гальваническую
развязку) от фазовых перетеканий между соединяемыми устройствами.
Проблемы
другого рода возникают, если существует необходимость увеличить количество
последовательных портов на Вашем компьютере. Такая потребность имеет место
быть, когда Персональный Компьютер становится Сервером. Когда Вы решили
установить Windows NT Server 4.0 и воспользоваться услугами Службы Удаленного
Доступа (RAS), подключив к компьютеру несколько модемов. Или осваиваете
операционные сиcтемы семейства UNIX.
Или Вас привлекли уникальные возможности программных продуктов WinFrame
или WinCenterPro. А может быть, Вы просто желаете подключить к компьютеру
несколько кассовых аппарат и штрих-сканеров, или программируемых швейных или
вязальных машин?
Наиболее простой и дешевый способ
решения задачи - установка в компьютер так называемых "мультипортовых
плат". Эти устройства содержат
четыре, чаще восемь последовательных портов (UART 16C550A), идентичных тем, что
от рождения присутствуют в компьютере. Ассортимент этих изделий на рынке
достаточно широкий - от импортных до отечественных. Вторые дешевле (иногда в 2-3 раза), и при этом учитывают
особенности российской энергетики - имеют встроенные или дополнительные
преобразователи интерфейсов (RS-232С/"Токовая петля").
Более
дорогой способ предполагает использование "интеллектуальных" (в
отличии от "безмозглых", рассмотренных выше) многопортовых
устройств. Эти устройства содержат
помимо собственно UART 16С550А еще и специальный процессор, который
предварительно обрабатывает данные от нескольких каналов RS-232С и разгружает
таким образом основной процессор сервера для более высоких задач. Такие устройства могут быть выполнены в виде плат
расширения и устанавливаться на шину компьютера, а могут выполняться в виде
отдельных приборов и подключаться через Ethernet или SCSI. Программное обеспечение
может открывать эти устройства как дополнительные СОМ-порты.
Пользователям,
которые решили расширить возможности компьютера путем установки дополнительных
последовательных портов, или просто явлются энтузиастами интерфейса RS-232С,
полезно знать о следующих интересных устройствах. Это так называемые модемы
ограниченного диапазона (Short Range Modem) и статистические мультиплексоры.
Модемы
ограниченного диапазона (еще одно название - минимодемы) позволяют соединять
два устройства с интерфейсом RS-232C по
выделенным 2-х или 4-х проводным физическим линиям на расстоянии до 27 км при
скорости до 19200 Бод. При меньших расстояниях скорости могут достигать 57-115
кБод. Существуют минимодемы с питанием от служебных сигналов последовательного
порта, чаще (в силу упомянутых выше причин) используют минимодемы с
гальванической развязкой (до 500 - 1500 Вольт) и отдельным источником питания.
Естественно, минимодемы всегда используют по-парно, они не способны работать на
коммутируемых (обычных телефонных, с набором номера абонента) линиях.
татистический
мультиплексор удобен в случаях, когда Вам необходимо подключить к серверу
группу из нескольких устройств с интерфейсом RS-232C (терминалов, кассовых
аппаратов, промышленных приборов и проч.), компактно размещенных на площадке (в
комнате, цехе, отделе), очень далеко расположенной от места установки сервера.
Статистический мультиплексор быстро, но плотно упакует до 8 каналов RS-232C в
один синхронный или асинхронный канал и через модем (или минимодем) и много
метров-километров единственного кабеля отправит на аналогичную пару
модем-мультиплексор, которая заботливо примет и быстро, но аккуратно, распакует
данные обратно в 8 каналов RS-232C. Естественно, система работает в обе стороны
одинаково хорошо. Если учесть, что каналы связи очень дороги, описанный прием
весьма эффективен.
Амбурцев Михаил
http://www.sector-t.ru/html/products/products.htm