Как соединить компьютеры через com порт
Мы обратили внимание, что проблема связи с компьютером через последовательный порт (COM-порт) часто обсуждается на различных форумах.
Наша команда Мониторбанка написала несколько программ для связи с ПК, поэтому и решили написать эту небольшую статью-мануал. В этой статье мы опишем интерфейс USART, которым оснащено большинство микроконтроллеров.
Основной темой будет создание приложения для ПК, которое может взаимодействовать с микроконтроллером через последовательный порт. Приложение предназначено для систем, использующих USART. Такое решение позволяет передавать данные не только через RS232, но также через USB и конвертер FT232, bluetooth, IrDA и другие интерфейсы с использованием виртуального COM-порта.
Интерфейс USART
Для работы мы будем использовать ATmega16, но программы должны быть легко перенесены на другие связанные процессоры. Сигналы TxD (передача данных) и RxD (прием данных) используются для передачи данных через USART.
Скорость передачи данных определена для соединения заранее. Это делается путем ввода соответствующего значения в UBRR (регистр скорости передачи USART), рассчитанного на основе тактовой частоты микроконтроллера.
Кстати, существуют стандартные скорости передачи: 2400, 4800, 9600 и т.д. Для обеспечения передачи с ошибкой 0,00%, тактовая частота микроконтроллера должна быть заранее известна и стабильна, но также должна быть кратна 1,8432 МГц. Выбор другой частоты снизит точность.
В таблице данных Atmel вы можете найти подробное описание используемого интерфейса, включая формулу для расчета скорости передачи и таблицу с популярными тактовыми частотами, скоростями передачи, соответствующими значениям регистра UBRR и соответствующими ошибками.
Фрейм данных в передаче UART выглядит следующим образом:
Популярной конфигурацией, в которой работает интерфейс USART, является подключение к порту RS232 компьютера. Для этого необходимо преобразовать логические состояния, что можно сделать с помощью популярной микросхемы MAX232 .
Ниже представлена схема подключения UC к RS:
Среда разработки
Поэтому нет смысла усложнять себе жизнь. Кроме того, многие среды определенно облегчают создание простых, в использовании, приложений. Это определенно хорошее изменение для кривых консольных программ.
Появится следующее окно (в полной версии Visual Studio 2010 есть выбор из большего количества типов проектов).
Рекомендуется сразу расположить панели параметров так, чтобы работать с программой было удобнее. Сначала нажмите на молоток, отмеченный кружком. Он активирует панель с элементами, которые можно добавить в нашу форму.
После щелчка правой кнопкой мыши в окне Form1 и выбора «Properties» появятся параметры объекта. Этой вкладкой мы будем пользоваться часто. Вот почему мы переместили его вправо без автоматического скрытия. А проект перенесли в левую часть экрана. В конечном итоге все выглядит так:
Создание приложения
Название и текст второй таблицы мы пока не меняли. Сначала мы сделаем терминал, а вкладку зарезервируем для более изощренного способа связи. Вы же можете использовать только вкладки с параметрами и терминалом, т.к. управлять вкладками очень просто и требует только использования кнопок Add и Remove. Теперь переходим на вкладку параметров и добавляем такие элементы, как label, combobox и button.
Не забывайте изменить поля «Text» и «Name» в параметрах. Мы меняем имена на такие, чтобы было понятно, для чего предназначен каждый элемент.
Для ComboBox, связанных со скоростью передачи и количеством битов данных, элементы этого набора должны быть определены вручную. Найдите опцию «Items» и нажмите на точки рядом со словом «Collection». Здесь мы вводим значения от 5 до 9 для битов данных, каждое из которых разделяется вводом. Во втором вводим все стандартные скорости передачи, то есть:
Последовательный интерфейс RS-232 — обзор стандарта
Это широко используемый последовательный интерфейс синхронной и асинхронной передачи данных, определяемый стандартом EIA RS-232-C и рекомендациями V.24 CCITT. Изначально он создавался для связи компьютера с терминалом. В настоящее время используется в самых различных сферах.
Интерфейс RS-232-C соединяет два устройства. Линия передачи первого устройства соединяется с линией приема второго и наоборот (полный дуплекс) Для управления соединенными устройствами используется программное подтверждение (введение в поток передаваемых данных соответствующих управляющих символов). Возможна организация аппаратного подтверждения путем организации дополнительных RS-232 линий для обеспечения функций определения статуса и управления.
Стандарт | EIA RS-232-C, CCITT V.24 |
Скорость передачи | 115 Кбит/с (максимум) |
Расстояние передачи | 15 м (максимум) |
Характер сигнала | несимметричный по напряжению |
Количество драйверов | 1 |
Количество приемников | 1 |
Схема соединения | полный дуплекс, от точки к точке |
Порядок обмена по интерфейсу RS-232C:
Наименование | Направление | Описание | Контакт (25-контактный разъем) | Контакт (9-контактный разъем) |
DCD | IN | Carrier Detect (Определение несущей) | 8 | 1 |
RXD | IN | Receive Data (Принимаемые данные) | 3 | 2 |
TXD | OUT | Transmit Data (Передаваемые данные) | 2 | 3 |
DTR | OUT | Data Terminal Ready (Готовность терминала) | 20 | 4 |
GND | — | System Ground (Корпус системы) | 7 | 5 |
DSR | IN | Data Set Ready (Готовность данных) | 6 | 6 |
RTS | OUT | Request to Send (Запрос на отправку) | 4 | 7 |
CTS | IN | Clear to Send (Готовность приема) | 5 | 8 |
RI | IN | Ring Indicator (Индикатор) | 22 | 9 |
Интерфейс RS-232C предназначен для подключения к компьютеру стандартных внешних устройств (принтера, сканера, модема, мыши и др.), а также для связи компьютеров между собой. Основными преимуществами использования RS-232C по сравнению с Centronics являются:
- возможность передачи на значительно большие расстояния;
- гораздо более простой соединительный кабель.
Назначение сигналов следующее:
-
FG — защитное заземление (экран).
Для двухпроводной линии связи в случае только передачи из компьютера во внешнее устройство используются сигналы SG и TxD. Все 10 сигналов интерфейса задействуются только при соединении компьютера с модемом.
Формат передаваемых данных показан на рисунке ниже. Собственно, данные (5, 6, 7 или 8 бит) сопровождаются стартовым битом, битом четности и одним или двумя стоповыми битами. Получив стартовый бит, приемник выбирает из линии биты данных через определенные интервалы времени. Очень важно, чтобы тактовые частоты приемника и передатчика были одинаковыми, допустимое расхождение — не более 10 %). Скорость передачи по RS-232C может выбираться из ряда: 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 бит/с.
Все сигналы RS-232C передаются специально выбранными уровнями, обеспечивающими высокую помехоустойчивость связи (рисунок ниже). Отметим, что данные передаются в инверсном коде (логической единице соответствует низкий уровень, логическому нулю — высокий уровень).
Для подключения произвольного УС к компьютеру через RS-232C обычно используют трех- или четырехпроводную линию связи, но можно задействовать и другие сигналы интерфейса.
Обмен по RS-232C осуществляется с помощью обращений по специально выделенным для этого портам:
- COM1 (адреса 3F8h. 3FFh, прерывание IRQ4);
- COM2 (адреса 2F8h. 2FFh, прерывание IRQ3);
- COM3 (адреса 3F8h. 3EFh, прерывание IRQ10);
- COM4 (адреса 2E8h. 2EFh, прерывание IRQ11).
Распиновки кабелей RS-232
Рассмотрим стандартные и не очень распиновки кабелей.
Условные обозначения:
- F — «мама»;
- M — «папа»;
- «-» — соединение;
- «х» — нет соединения;
- «+» — линии объединяются.
Применяется для соединения таких устройств как компьютер и модем.
Соединение прямое:
DTE 9 F <--> DTE 9 F (Null-modem 9)
Применяется для соединения таких устройств как компьютер и компьютер.
Примечание: 1 и 7 контакты на разъемах соединены между собой. 9 не используется. Экраны соединяются.DTE 25 F <--> DCE 9 M
Применяется для соединения таких устройств как компьютер (25-пиновый разъем) и 9-пиновая мышь (или модем).
Примечание: Остальные не используются. Экраны соединяются.DTE 9 F <--> DCE 25 M
Применяется для соединения таких устройств как компьютер (9-пиновый разъем) и 25-пиновая мышь (или модем).
Примечание: Остальные не используются. Экраны соединяются.DTE 25 F <--> DCE 25 M
Применяется для соединения таких устройств как компьютер (25-пиновый разъем) и 25-пиновая мышь (или модем).
Соединение прямое:
DTE 25 F <--> DTE 25 F (Null-modem Универсальный 25)
Применяется для соединения таких устройств как компьютер (25-пиновый разъем) и компьютер (25-пиновый разъем).
Примечание: Остальные не используются. Экраны соединяются.Заглушка на COM-порт 9 pin F
Применяется для тестирования коммуникационных приложений.
Заглушка на COM-порт 25 pin F
Применяется для тестирования коммуникационных приложений.
Как получить 5 вольт от порта RS-232?
Список необходимых деталей:
- Линейный регулятор — L78L05.
- 2 выпрямительных диода (D1, D2) — 1N4004.
- Электролитический конденсатор (C1) — 22 мкФ.
- Конденсатор (C2) — 0.001 мкФ.
- 2 резистора (R1, R2) — 43 Ом.
Преобразователи интерфейса RS-232
Конвертер RS-232 в TTL
При разработке различного рода электронных устройств с использованием микроконтроллеров очень часто оказывается полезной возможность подключения их к персональному компьютеру через последовательный порт. Однако напрямую это сделать невозможно, поскольку по стандарту RS-232 сигнал передается уровнями -3. -15 В (логическая <1>) и +3..+15В (логический <0>).
Для преобразования уровней RS-232 в стандартные логические уровни TTL обычно используют специальные микросхемы преобразователей. Однако далеко не всегда имеет смысл закладывать преобразователь уровней в схему проектируемого устройства, поскольку часто бывает так, что связь с компьютером нужна только на этапе изготовления и отладки устройства, а для конечного изделия в ней нет никакой необходимости.
Необходимые детали:
- ИС RS-232 интерфейса (U1) — MAX232A.
- Линейный регулятор (U2) — LM78L05A.
- Диод (D1).
- Конденсатор (С1-С5) — 5х0.1 мкФ.
- Электролитический конденсатор (С6) — 4.7 мкФ.
- Разьем (Cn1) — TTL.
- Разьем (Cn2) — RS-232.
Кроме того, с целью упрощения использования данного преобразователя в нем предусмотрена схема питания прямо от последовательного порта, что избавляет от необходимости использования внешних источников питания.
- Рекомендуем узнать, как выполнить уникальный моддинг системного блока ПК в корпусе из оргстекла
Использование описанного выше преобразователя RS-232 в TTL оказывается удобным в тех случаях, когда в процессе эксплуатации устройства не требуется наличие возможности связи с компьютером, но она нужна на этапе отладки или изготовления устройства. Типичным примером этого может служить, например, устройство с flash или EEPROM памятью, требующей начальной инициализации. Кроме того, часто бывает очень удобно в процессе разработки выводить в последовательный порт различного рода отладочную информацию, что иногда позволяет обойтись без аппаратных эмуляторов.
Преобразователь интерфейса RS232–RS422
Конвертер собран на SMD элементах и помещается в корпусе разьёма Sub-D9.
Все резисторы — 0.25 Вт, конденсаторы 16В. Корпус COM-порта соединен с -5В. Питание 5В взято с RJ-45.
Печатную плату можно скачать ниже:
Файлы для скачивания: rs232rs422.rar
Схема преобразователя интерфейсов RS232–RS485
Интерфейс RS485 довольно широко распространен в сфере подключения промышленного оборудования. По своему принципу работы он напоминает популярный интерфейс последовательной передачи данных RS232, однако RS485 более надежный и позволяет передавать информацию на куда большие расстояния, чем это может сделать RS232.
К сожалению, персональные компьютеры и большинство микроконтроллеров изначально не поддерживают интерфейс RS485, зато поддерживают RS232. Для того, чтобы соединить эти два мира в одно информационное пространство, следует собрать преобразователь этих интерфейсов. Представленная в данном материале схема позволяет сделать своими руками простой конвертер интерфейсов RS232-RS485, который позволит подключить компьютер или другое устройство к другим устройствам с RS485.
Схема основана на популярных микросхемах MAX232 и MAX485. Разъем DB-9 соединяет плату с последовательным портом с помощью кабеля. Разъемы J1 и J2 предоставляют доступ к линиям ввода/вывода MAX232, а разъем CN1 позволяет получить доступ к линиям ввода/вывода MAX485. С помощью джампера J4 к плате можно подвести внешнее питание до 12 В, которое будет преобразовано стабилизатором в 5 В. Если вы подаете питание через разъем J1, то убедитесь, что J4 разомкнут. Светодиод D2 обеспечивает визуальную индикацию питания платы, а диод D1 защищает от подключения питания не правильной полярности.
Кабель RS485 подключается к разъему CN2 через сопротивления R3, R1 и R4, обеспечивающие необходимый импеданс. Вывод A разъёма CN1 представляет собой вывод контроля приема/передачи. Подтяжка этого вывода к земле позволит RS485 работать в режиме приёма, а подтяжка к напряжению питания Vcc в режиме передачи.
Для подключения MAX232 к MAX485 соедините вывод C разъема J1 с выводом DI разъема CN1 и соедините вывод B разъема J1 с выводом RO разъема CN1.
Ниже представлены схема расположения компонентов на печатной плате и сама печатная плата.
Иногда приходится решать задачу связи электронного устройства с компьютером, будь то просто обмен данными или удалённое управление. Эта статья описывает, как это можно реализовать, используя последовательный порт. Главным его преимуществом является то, что стандартный программный интерфейс Windows (API) позволяет производить непосредственное управление выходными линиями, давая прямой контроль над ними, и имеет функцию ожидания некоторого события, связанного с COM-портом. Также стандарт RS-232, по которому выполнены COM-порты, допускает подключение и отключение кабелей во время работы устройств (hot plug).
Описание
Рассмотрим 9-пинововый разъём (DB-9M). Ниже представлена его распиновка:
Больше всего нас будут интересовать пины 2 (передача данных),3 (приём данных) и 5 (земля). Это минимальный набор для возможности двухстороннего общения приборов.
Применение
Ниже приведена схема её включения:
Программирование
Для начала поговорим о программировании портов на низком уровне. Так будет более правильно. Я очень много нервов потратил, разбираясь с этим интерфейсом, пока не начал вникать в принцип его работы на более низком уровне, нежели простая передача символов. Если будет понятно это, значит и с языками высокого уровня проблем не будет.
Ниже представлены адреса COM-портов, с которыми нам придётся работать:
Название порта | Адрес | IRQ |
COM 1 | 3F8h | 4 |
COM 2 | 2F8h | 3 |
COM 3 | 3E8h | 4 |
COM 4 | 2E8h | 3 |
Ему соответствуют регистры приёма/передачи данных и установки коэффициента делителя частоты генератора. Как уже было сказано выше, если DLAB=0, то регистр используется для записи принимаемых/передаваемых данных, если же он равен 1, то устанавливается значение младшего байта делителя частоты тактового генератора. От значения этой частоты зависит скорость передачи данных. Старший байт делителя записывается в следующую ячейку памяти (т.е. для порта COM1 это будет 3F9h). Ниже приведена зависимость скорости передачи данных от коэффициента делителя:
Делитель | Скорость передачи (в бодах) | Делитель | Скорость передачи (в бодах) |
---|---|---|---|
1040 | 110 | 24 | 4800 |
768 | 150 | 12 | 9600 |
384 | 300 | 6 | 19200 |
192 | 600 | 3 | 38400 |
96 | 1200 | 2 | 57600 |
48 | 2400 | 1 | 115200 |
Interrupt Enable Register (IER)
Если DLAB=0, то он используется как регистр управления прерываниями от асинхронного адаптера, если DLAB=1, то в нём задаётся старший байт делителя частоты тактового генератора.
Interrupt Identification Register (IIR)
Line Control Register (LCR)
Это управляющий регистр.
Стоп-бит означает окончание передачи данных.
Modem Control Register (MCR)
Регистр управления модемом.
Бит | Значение |
---|---|
0 | Линия DTR |
1 | Линия RTS. |
2 | Линия OUT1 (запасная) |
3 | Линия OUT2 (запасная) |
4 | Запуск диагностики при входе асинхронного адаптера, замкнутом на его выход. |
5-7 | Равны 0 |
Line Status Register (LSR)
Регистр, определяющий состояние линии.
Modem Status Register (MSR)
Регистр состояния модема.
Бит | Значение |
---|---|
0 | Изменилось состояние линии CTS |
1 | Изменилось состояние линии DSR |
2 | Изменилось состояние линии IR |
3 | Изменилось состояние линии DCD |
4 | Состояние линии CTS |
5 | Состояние линии DSR |
6 | Состояние линии IR |
7 | Состояние линии DCD |
Ну вот и всё. Оперируя этими регистрами, можно напрямую общаться с COM-портом, управлять передачей и приёмом данных. Если вам не хочется возиться с памятью, можно воспользоваться уже готовыми компонентами для различных сред программирования: C++, VB, Delphi, Pascal и т.д. Они интуитивно понятны, поэтому, думаю, здесь не стоит заострять на них внимание.
Последовательные интерфейсы RS-232/422/485 до сих пор очень популярны в промышленности: по ним подключаются диагностические порты, датчики, сканеры штрих-кодов и RFID меток и т.д. Однако последовательные интерфейсы имеют свои ограничения. Иногда возникает необходимость получить доступ к такому интерфейсу по IP-сети, или, например, иметь доступ к одному устройству с RS-232 с нескольких удаленных компьютеров одновременно, или объединить несколько удаленных объектов в одну шину RS-485.
Сервер последовательных интерфейсов конвертирует последовательные физические протоколы в IP-пакеты, и позволяет программно управлять ими — подключать удаленный виртуальный COM-порт к компьютеру по сети так, будто он подключен физически, и прозрачно соединять несколько устройств в режиме P2P, без использования компьютеров.
В статье мы разберем сервер последовательных интерфейсов Advantech EKI-1524, имеющий четыре последовательный порта, каждый из которых поддерживает протоколы RS-232/422/485, и два LAN-порта.
Сервер последовательных интерфейсов EKI-1524 имеет четыре порта DB9 и два LAN-порта.
- Виртуальный COM-порт — позволяет программно эмулировать виртуальный COM-порт удаленного устройства на системе Linux.
- Одновременное подключение нескольких клиентов — в режиме сервера дает возможность использовать один последовательный порт для нескольких устройств одновременно.
- Работа в режиме P2P — одновременная работа в режиме клиента и сервера позволяет объединить несколько EKI-1524 напрямую, без использования серверов и компьютеров.
Характеристики
Серия последовательных серверов EKI-1500 представлена широким спектром устройств для различных задач. От серверов с одним последовательным портом: EKI-1511X до серверов на 16 портов, для монтажа в серверную стойку, таких как EKI-1526N.
Дополнительно представлены модели с повышенным уровнем защищенности, для работы в экстремальных условиях, и гальванической развязкой портов, для защиты от высоких напряжений: EKI-1522I, EKI-1524I, и другие.
Все модели поддерживают подключение двух источников питания. Переключение между источниками питания происходит без перезагрузки устройства. Реле индикации обрыва питания замыкается в случае, если на одной из линий отсутствует напряжение.
Виртуальный COM-порт
Сервер последовательных интерфейсов позволяет по TCP/IP получить доступ к удаленным устройствам таким образом, что для прикладного ПО это будет выглядеть так, будто устройства подключены к физическому COM-порту.
Принцип работы виртуального COM-порта по сети Ethernet
Для этого на стороне клиента используется модуль ядра Linux и программа для обмена данными с сервером последовательных интерфейсов. В итоге для пользователя такое подключение выглядит как физический порт (устройство /dev/ttyADV0).
На данный момент Advantech выпускает драйвера виртуального COM-порта только для ОС Linux. Инструкция по сборке модуля ядра VCOM 2.0 на Ubuntu.
Также существуют бинарные пакеты драйвера под разные дистрибутивы: Linux Pseudo TTY
В веб-интерфейсе можно настроить параметры работы в данном режиме:
Дополнительные настройки. Можно вручную задать таймауты и т.д:
Настройки параметров последовательного интерфейса. В этом меню также можно изменить основной протокол (RS-232/422/485), для каждого порта.
Режим RFC 2217
Также доступен открытый протокол перенаправления COM-порта RFC 2217, представляющий собой расширенные команды для протокола Telnet. В этом режиме устройство принимает входящие подключения по TCP, в настройках можно указать порт для входящий соединений.
Режим P2P
Для сложных случаев, когда несколько устройств нельзя соединить напрямую, можно использовать два терминальных сервера в режиме прозрачного моста. Таким образом можно подключить удаленные устройства, используя в качестве транспорта TCP/IP.
Подключение двух удаленных устройств по последовательному протоколу через TCP/IP-транспорт
Таким образом можно программно переключать устройства между собой, соединять удаленные шины по RS-485 и делать много другое, используя все преимущества IP-сетей, включая радиомосты, виртуальные частные сети (VPN) и т.д. Передаваемые данные между двумя серверами можно дополнительно защитить от перехвата, используя шифрование на транспортном уровне.
Уведомления о событиях
Устройство позволяет настроить уведомления о событиях с помощью Email и SNMP Trap. MIB-файл для настройки SNMP-сервера доступен для каждого устройства.
События для уведомлений можно настроить вручную.
Логирование через Syslog
В веб-интерфейсе можно задать адрес удаленного Syslog-сервера для логирования. В лог записываются события подключения клиентов, ошибки аутентификации, статус LAN и последовательных портов и т.д.
Первичная настройка
Первичную конфигурацию сервера последовательных интерфейсов можно выполнить через утилиту EKI Device Configuration Utility. При этом утилита работает через ARP-пакеты и не требует настройки соответствующего IP-адреса на сетевом интерфейсе. Это значит, что можно задать любой IP-адрес устройству, без утраты доступа.
Заключение
Серверы последовательных интерфейсов позволяют обходить ограничения, которые накладывают физические протоколы, и легко масштабировать подключения. Режим P2P позволяет подключать устаревшие устройства, используя интернет в качестве транспорта, при этом обходиться без серверов.
Читайте также: