Розетка для com порта
COM порт. Распайка, распиновка и схема
То есть, программа прочитает данное из памяти в процессор, что-то с ним сделает, может быть получит из этой информации какие-то новые данные, которые запишет в другое место. Или само данное просто перепишет на другое место. Во всяком случае в памяти информация, которая однажды была записана может быть либо прочитана, либо стёрта. Ячейка получается как сундучок, стоящий у стенки. А вся память состоит из ячейки каждая ячейка имеет свой адрес. Точно как сундучки, стоящие в ряд у стенки в подвале скупого рыцаря.
Ну и порт можно себе представить тоже как ячейку. Только такая ячейка сзади имеет окошко, ведущее куда-то за стенку. Можно записать в неё информацию, а информация возьмёт, и улетит в окошко, хотя какое-то время будет находиться в ячейке так же, как и в обычной ячейке оперативной памяти.
Или наоборот, в ячейку-порт информация может «прилететь» из окошка. Процессор это увидит и прочтёт эту новую появившуюся информацию. И пустит её в дело — перепишет куда-то, пересчитает вместе с какими-то другими данными. Даже может записать её в другую ячейку. Или в другую ячейку-порт, тогда эта поступившая по первому порту информация может «улететь» в окошко второго порта, — ну это уж как распорядится процессор. Вернее, программа, которая в этот момент процессором командует и данные, записанные в памяти и приходящие из портов, обрабатывает.
Просто и красиво. Эти порты так и назвали сразу — порты ввода-вывода. Через одни из них данные отправляются куда-то, через другие — откуда-то принимаются.
Ну а дальше начинается движение по кругу. Вот есть одно устройство, и есть другое. И вот есть цепочка символов, каждый из которых состоит из отдельных двоичных битов, и эту цепочку нужно передать. Как передавать? Можно по линии из 8 проводочков сразу передавать по целому символу — один проводок = один бит, потом код другого, потом третьего, и так, пока не передашь всю цепочку.
А можно было разворачивать каждый бит не в пространстве (по проводочкам), а во времени: сначала передать один бит символа, потом второй и так восемь раз. Ясно, что во втором случае нужны какие-то дополнительные средства, чтобы символы так разворачивать во времени.
Мастерам на все руки будет интересна статья об особенностях работы и схеме включения МС34063.
Наиболее часто для последовательного порта персональных компьютеров используется стандарт RS-232C. Ранее последовательный порт использовался для подключения терминала, позже для модема или мыши. Сейчас он используется для соединения с источниками бесперебойного питания, для связи с аппаратными средствами разработки встраиваемых вычислительных систем, спутниковыми ресиверами, кассовыми аппаратами, программаторами, с приборами систем безопасности объектов, а также с многими прочими устройствами.
С помощью COM-порта можно соединить два компьютера, используя так называемый «нуль-модемный кабель» (см. ниже). Такой кабель использовался со времен MS-DOS для передачи файлов с одного компьютера на другой, в UNIX для терминального доступа к другой машине, а в Windows (даже современной) — для отладчика уровня ядра.
Достоинством технологии является крайняя простота оборудования. Недостатком является низкая скорость, крупные разъёмы, а также зачастую высокие требования ко времени отклика ОС и драйвера и большое количество прерываний (одно на половину аппаратной очереди, то есть 8 байт).
COM-порт. Сопряжение устройств с ПК. Программирование
Иногда приходится решать задачу связи электронного устройства с компьютером, будь то просто обмен данными или удалённое управление. Эта статья описывает, как это можно реализовать, используя последовательный порт. Главным его преимуществом является то, что стандартный программный интерфейс Windows (API) позволяет производить непосредственное управление выходными линиями, давая прямой контроль над ними, и имеет функцию ожидания некоторого события, связанного с COM-портом. Также стандарт RS-232, по которому выполнены COM-порты, допускает подключение и отключение кабелей во время работы устройств (hot plug).
Описание
COM-порт (последовательный порт) – двунаправленный интерфейс, передающий данные в последовательном виде (бит за битом) по протоколу RS-232. Это довольно-таки распространённый протокол, применяемый для связи одного устройства (например, компьютера) с другими посредством проводов длиной до 30м. Уровни логических сигналов здесь отличаются от стандартных: уровень логической единицы – от +5 до +15В, уровень логического нуля – от -5 до -15В, что требует дополнительных преобразований схемы, но обеспечивает хорошую помехоустойчивость.
Рассмотрим 9-пинововый разъём (DB-9M). Ниже представлена его распиновка:
№ вывода | Наименование | Характер сигнала | Сигнал |
1 | DCD | Входной | Data carrier detect |
2 | RxD | Выходной | Transmit data |
3 | TxD | Входной | Receive data |
4 | DTR | Выходной | Data terminal ready |
5 | GND | — | Ground |
6 | DSR | Входной | Data set ready |
7 | RTS | Выходной | Request to send |
8 | CTS | Входной | Clear to send |
9 | RI | Входной | Ring indicator |
Больше всего нас будут интересовать пины 2 (передача данных),3 (приём данных) и 5 (земля). Это минимальный набор для возможности двухстороннего общения приборов.
Подробно останавливаться на описании протокола не буду. Для этого есть ГОСТ’ы и т.п. Поэтому мы пойдём дальше и поговорим о том, как же управлять этим зверем.
Применение
Как уже говорилось, уровни ЛС RS-232 отличаются от стандартных уровней ТТЛ. Следовательно, нам необходимо как-то преобразовывать величины напряжений. Т.е. сделать 5В из +15В и 0В из -15В (и наоборот). Один из способов (и, наверное, самый простой) – использование специальной микросхемы MAX232. Она проста в понимании и одновременно может преобразовывать два логических сигнала.
Ниже приведена схема её включения:
Думаю, трудностей быть не должно. Это один из вариантов использования этой микросхемы: передача данных с микроконтроллера на ЭВМ и наоборот. Передаваемый сигнал поступает на ножки TxIN с одной стороны и на RxIN с другой. Входные сигналы снимаются с TxOUT и RxOUT соответственно.
Программирование
Для начала поговорим о программировании портов на низком уровне. Так будет более правильно. Я очень много нервов потратил, разбираясь с этим интерфейсом, пока не начал вникать в принцип его работы на более низком уровне, нежели простая передача символов. Если будет понятно это, значит и с языками высокого уровня проблем не будет.
Ниже представлены адреса COM-портов, с которыми нам придётся работать:
Название порта | Адрес | IRQ |
COM 1 | 3F8h | 4 |
COM 2 | 2F8h | 3 |
COM 3 | 3E8h | 4 |
COM 4 | 2E8h | 3 |
Они могут различаться. Установить значения можно в настройках BIOS’а. Это базовые адреса. От них же и будут зависеть адреса регистров, отвечающие за работу портов:
Адрес | DLAB | Чтение/Запись | Аббревиатура | Название регистра |
+ 0 | =0 | Write | – | Transmitter Holding Buffer |
=0 | Read | – | Receiver Buffer | |
=1 | Read/Write | – | Divisor Latch Low Byte | |
+ 1 | =0 | Read/Write | IER | Interrupt Enable Register |
=1 | Read/Write | – | Divisor Latch High Byte | |
+ 2 | — | Read | IIR | Interrupt Identification Register |
— | Write | FCR | FIFO Control Register | |
+ 3 | — | Read/Write | LCR | Line Control Register |
+ 4 | — | Read/Write | MCR | Modem Control Register |
+ 5 | — | Read | LSR | Line Status Register |
+ 6 | — | Read | MSR | Modem Status Register |
+ 7 | — | Read/Write | – | Scratch Register |
Первая колонка – адрес регистра относительно базового. Например, для COM1: адрес регистра LCR будет 3F8h+3=3FB. Вторая колонка – DLAB (Divisor Latch Access Bit) бит, определяющий разное назначение для одного и того же регистра.. Т.е. он позволяет оперировать 12-ю регистрами, используя всего 8 адресов. Например, если DLAB=1, то, обращаясь по адресу 3F8h, мы будем устанавливать значение младшего байта делителя частоты тактового генератора. Если же DLAB=0, то, обращаясь по тому же адресу, в этот регистр будет записан передаваемый или принятый байт.
“Нулевой” регистр
Ему соответствуют регистры приёма/передачи данных и установки коэффициента делителя частоты генератора. Как уже было сказано выше, если 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, то в нём задаётся старший байт делителя частоты тактового генератора.
Бит | Значение |
---|---|
0 | 1 – разрешемие прерывания при готовности принимаемых данных. |
1 | 1 – разрешение прерывания после передачи байта (когда выходной выходной буфер передачи пуст). |
2 | 1 – разрешение прерывания по обнаружении состояния «BREAK» или ошибки. |
3 | 1 – разрешение прерывания по изменению на разъёме RS-232C. |
4-7 | Не используются, должны быть равны 0. |
Interrupt Identification Register (IIR)
Прерывание – это событие, при котором останавливается выполнение основной программы и начинается выполнение процедуры прерываний. Этот регистр определяет тип произошедшего прерывания.
Бит | Значение |
0 | 1 – нет прерываний, ожидающих обслуживания. |
1-2 | 00 – переполнение приёмника, ошибка чётности или формата данных, или при состоянии «BREAK». Сбрасывается после чтения состояния линии и порта 3FDh. |
01 – данные приняты и доступны для чтения. Сбрасывается после после чтения регистра LSR. | |
11 – Состояние модема. Устонавливается при изменении состояния входных линий CTS, RI, DCD, DSR. | |
3-7 | Равны 0. |
Line Control Register (LCR)
Это управляющий регистр.
Бит 7 | 1 | Divisor Latch Access Bit – задание скорости обмена данными | ||
0 | Обычнй режим (управление прерываниями, приём/передача данных) | |||
Бит 6 | Имитировать обрыв линии (посылает последовательность из нескольких нулей) | |||
Биты 3 – 5 | Бит 5 | Бит 4 | Бит 3 | Выбор чётности |
X | X | 0 | No Parity | |
0 | 0 | 1 | Odd Parity | |
0 | 1 | 1 | Even Parity | |
1 | 0 | 1 | High Parity (Sticky) | |
1 | 1 | 1 | Low Parity (Sticky) | |
Бит 2 | Кол-во стоп-битов | |||
0 | 1 стоп-бит | |||
1 | 2 стоп-бита при 6,7 или 8 бит данных или 1.5 стоп-бита при 5 битах данных. | |||
Биты 0 And 1 | Бит 1 | Бит 0 | Число битов данных | |
0 | 0 | 5 бит | ||
0 | 1 | 6 бит | ||
1 | 0 | 7 бит | ||
1 | 1 | 8 бит |
Проверка чётности подразумевает под собой передачу ещё одного бита – бита чётности. Его значение устанавливается таким образом, чтобы в пакете битов общее количество единиц (или нулей) было четно или нечетно, в зависимости от установки регистров порта. Этот бит служит для обнаружения ошибок, которые могут возникнуть при передаче данных из-за помех на линии. Приемное устройство заново вычисляет четность данных и сравнивает результат с принятым битом четности. Если четность не совпала, то считается, что данные переданы с ошибкой.
Стоп-бит означает окончание передачи данных.
Modem Control Register (MCR)
Регистр управления модемом.
Бит | Значение |
---|---|
0 | Линия DTR |
1 | Линия RTS. |
2 | Линия OUT1 (запасная) |
3 | Линия OUT2 (запасная) |
4 | Запуск диагностики при входе асинхронного адаптера, замкнутом на его выход. |
5-7 | Равны 0 |
Line Status Register (LSR)
Регистр, определяющий состояние линии.
Бит | Значение |
---|---|
0 | Данные получены и готовы для чтения, автоматически сбрасывается при чтении данных. |
1 | Ошибка переполнения. Был принят новый байт данных, а предыдущий ещё не был считан программой. Предыдущий байт потерен. |
2 | Ошибка чётности, сбрасывается после чтения состояния линии. |
3 | Ошибка синхронизации. |
4 | Обнаружен запрос на прерывание передачи «BREAK» – длинная строка нулей. |
5 | Регистр хранения передатчика пуст, в него можно записать новый байт для передачи. |
6 | Регистр сдвига передатчика пуст. Этот регистр получает данные из регистра хранения и преобразует их в последовательный вид для передачи. |
7 | Тайм-аут (устройство не связано с компьютером). |
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 и т.д. Они интуитивно понятны, поэтому, думаю, здесь не стоит заострять на них внимание.
Главными недостатками данного порта являются его низкая скорость, большие размеры разъемов, а также высокие требования к времени отклика операционной системы. Также, в данном стандарте наблюдается высокое количество прерываний (одно прерывание на каждые 8 байт).
Самыми распространенными разъемами стандарта являются 9-ти и 25-ти контактные (DB-9 и DB-25, соответственно), которые были стандартизированы в 1969 году. Это D-образные разъемы. Помимо них использовались и другие, но из этого же семейства: DB-31 и круглые восьмиконтактные DIN-8.
Максимальная скорость передачи (в обычном исполнении) достигает 115 200 бод.
Связанные материалы
База знаний / F.A.Q
- Как правильно подключить устройство к NPort по RS-485?
- Найдите распиновку на подключаемое устройство и на NPort. MOXA придерживается стандартов и определяет сигнал B как положительный, а сигнал A как отрицательный. Во всех устройствах MOXA с разъемом DB9 сигнал B выведен на PIN3, сигнал A на PIN4.
Соедините положительный сигнал (B) NPort с положительным сигналом (B) устройства и отрицательный сигнал (A) NPort с отрицательным сигналом (A) устройства.
Некоторые производители используют не стандартное обозначение выводов, и возможно, придется поменять местами контакты A и B.
Известно, что такая ситуация возникает с устройствами, построенными на микросхеме Maxim MAX483.
Драйвер UPort не ограничивает количество устройств, которые можно подключить к компьютеру или ноутбуку. В системе Windows количество подключенных устройств ограничено спецификацией USB, которая ограничивает количество адресов устройств максимум 127 устройствами USB. Максимальное количество устройств, которое вы можете подключить, зависит от конфигурации вашей системы. Кроме того, необходимо учитывать требования к питанию подключенных устройств. По мере роста количества подключенных устройств необходимо рассчитать, будет ли каждое устройство получать достаточное количество энергии.
Рекомендация
Рекомендуемое максимальное количество конвертеров UPort, подключенных к одному хост-компьютеру, составляет 4. Подключение более 4 конвертеров UPort к одному хост-компьютеру или ноутбуку может привести к перегрузке системных ресурсов и потенциальной нестабильной работы системы.
NPort серии 5000 поддерживает до 4-ех одновременных подключений.
Серии NPort 5000A (Advanced), NPort 6000 и выше поддерживают до 8-ми одновременных подключений.
В качестве преобразователя USB – UART в UPort 1150 используется микросхема TUSB3410 производства Texas Instruments.
MTBF (среднее время между отказами) является индикатором надежности.
Для расчета значения MTBF MOXA использует стандарт Telcordia (ранее известный как Bellcore).
Значения MTBF можно посмотреть в карточке товара на нашем сайте или в спецификации на оборудование.
Вы также можете получить официальный отчет MTBF, направив обращение на нашу почту russia@moxa.pro
О стандарте Telcordia
Метод основан на военном стандарте MIL-HDBK 217, но с изменениями и дополнениями для учёта параметров, полученных в режиме реальной коммерческой эксплуатации оборудования, и при этом также содержит обновленную информацию о надежности компонентов. Методика сфокусирована на прогнозировании надёжности системы с учётом характеристик отдельных составляющих путём присвоения различных значений интенсивности отказов каждому электронному компоненту, а также присвоением соответствующих значений интенсивности отказов для характерных стрессовых условий (например – температуры), определённых на основании анализа результатов стрессовых испытаний.
Хотя значение MTBF является показателем надежности, тем не менее, оно не отражает предполагаемый срок эксплуатации изделия.
Для MGate с версией прошивки выше 3.0 пароль по умолчанию: moxa
Для входа на веб-интерфейс MGate по умолчанию установлен логин: admin, пароль: moxa
Для сброса пароля и восстановления заводских настроек MGate нажмите и удерживайте кнопку Reset в течение 5 секунд.
Стандартный пароль NPort по умолчанию: moxa
(Раньше был пустым).
Для сброса пароля и возврата к заводским настройкам NPort нажмите и удерживайте кнопку Reset в течение 5 секунд. Иного способа восстановить забытый пароль NPort не существует.
Некоторые Modbus TCP Slave устройства не поддерживают работу с двумя TCP Master. В этом случае для опроса Modbus TCP Slave двумя TCP Master нужно использовать MGate с двумя портами Ethernet, например, MGate MB3170/3270 или MGate MB3660.
Да, серия MGate MB3100/MB3200 поддерживает подключение до 16 TCP-master/клиент или 32 TCP-slave/сервер устройств.
Многопортовые MGate MB3660 поддерживают подключение до 256 TCP-master/клиент или 128 TCP-slave/сервер устройств.
Если необходимо, чтобы MGate был доступен по публичному IP-адресу, находясь при этом за NAT/Firewall, необходимо настроить функцию проброса портов на маршрутизаторе. Большинство маршрутизаторов поддерживают данную функцию.
В таблицах перечислены наиболее распространенные порты, необходимые для выполнения различных функций на шлюзах MGate.
Принцип работы последовательного порта и его отличие от параллельного
В отличие от параллельного (LPT) порта, последовательный порт передает данные побитно по одной-единственной линии, а не по нескольким одновременно. Последовательности битов группируются в серии данных, начинающиеся стартовым битом и кончающиеся стоповым битом, а также битами контроля четности, использующимися для контроля ошибок. Отсюда происходит и еще одно английское название, которое имеет последовательный порт – Serial Port.
Последовательный порт имеет две линии, по которым передаются собственно данные – это линии для передачи данных от терминала (ПК) к коммуникационному устройству и обратно. Кроме того, существует еще несколько управляющих линий. Обслуживает Serial port специальная микросхема UART, которая способна поддерживать относительно высокую скорость передачи данных, достигающую 115 000 бод (байт/с). Правда, стоит отметить, что реальная скорость обмена информацией зависит от обоих коммуникационных устройств. Кроме того, в функции контроллера UART входит преобразование параллельного кода в последовательный и обратно.
Порт использует электрические сигналы сравнительного высокого напряжения – до +15 B и -15 В. Уровень логического нуля последовательного порта составляет +12 В, а логической единицы – -12 В. Такой большой перепад напряжений позволяет гарантировать высокую степень помехоустойчивости передаваемых данных. С другой стороны, используемые в Serial port высокие напряжения требуют сложных схемотехнических решений. Это обстоятельство также поспособствовало снижению популярности порта.
Связанные материалы
База знаний / F.A.Q
- Как правильно подключить устройство к NPort по RS-485?
- Найдите распиновку на подключаемое устройство и на NPort. MOXA придерживается стандартов и определяет сигнал B как положительный, а сигнал A как отрицательный. Во всех устройствах MOXA с разъемом DB9 сигнал B выведен на PIN3, сигнал A на PIN4.
Соедините положительный сигнал (B) NPort с положительным сигналом (B) устройства и отрицательный сигнал (A) NPort с отрицательным сигналом (A) устройства.
Некоторые производители используют не стандартное обозначение выводов, и возможно, придется поменять местами контакты A и B.
Известно, что такая ситуация возникает с устройствами, построенными на микросхеме Maxim MAX483.
Драйвер UPort не ограничивает количество устройств, которые можно подключить к компьютеру или ноутбуку. В системе Windows количество подключенных устройств ограничено спецификацией USB, которая ограничивает количество адресов устройств максимум 127 устройствами USB. Максимальное количество устройств, которое вы можете подключить, зависит от конфигурации вашей системы. Кроме того, необходимо учитывать требования к питанию подключенных устройств. По мере роста количества подключенных устройств необходимо рассчитать, будет ли каждое устройство получать достаточное количество энергии.
Рекомендация
Рекомендуемое максимальное количество конвертеров UPort, подключенных к одному хост-компьютеру, составляет 4. Подключение более 4 конвертеров UPort к одному хост-компьютеру или ноутбуку может привести к перегрузке системных ресурсов и потенциальной нестабильной работы системы.
NPort серии 5000 поддерживает до 4-ех одновременных подключений.
Серии NPort 5000A (Advanced), NPort 6000 и выше поддерживают до 8-ми одновременных подключений.
В качестве преобразователя USB – UART в UPort 1150 используется микросхема TUSB3410 производства Texas Instruments.
MTBF (среднее время между отказами) является индикатором надежности.
Для расчета значения MTBF MOXA использует стандарт Telcordia (ранее известный как Bellcore).
Значения MTBF можно посмотреть в карточке товара на нашем сайте или в спецификации на оборудование.
Вы также можете получить официальный отчет MTBF, направив обращение на нашу почту russia@moxa.pro
О стандарте Telcordia
Метод основан на военном стандарте MIL-HDBK 217, но с изменениями и дополнениями для учёта параметров, полученных в режиме реальной коммерческой эксплуатации оборудования, и при этом также содержит обновленную информацию о надежности компонентов. Методика сфокусирована на прогнозировании надёжности системы с учётом характеристик отдельных составляющих путём присвоения различных значений интенсивности отказов каждому электронному компоненту, а также присвоением соответствующих значений интенсивности отказов для характерных стрессовых условий (например – температуры), определённых на основании анализа результатов стрессовых испытаний.
Хотя значение MTBF является показателем надежности, тем не менее, оно не отражает предполагаемый срок эксплуатации изделия.
Для MGate с версией прошивки выше 3.0 пароль по умолчанию: moxa
Для входа на веб-интерфейс MGate по умолчанию установлен логин: admin, пароль: moxa
Для сброса пароля и восстановления заводских настроек MGate нажмите и удерживайте кнопку Reset в течение 5 секунд.
Стандартный пароль NPort по умолчанию: moxa
(Раньше был пустым).
Для сброса пароля и возврата к заводским настройкам NPort нажмите и удерживайте кнопку Reset в течение 5 секунд. Иного способа восстановить забытый пароль NPort не существует.
Некоторые Modbus TCP Slave устройства не поддерживают работу с двумя TCP Master. В этом случае для опроса Modbus TCP Slave двумя TCP Master нужно использовать MGate с двумя портами Ethernet, например, MGate MB3170/3270 или MGate MB3660.
Да, серия MGate MB3100/MB3200 поддерживает подключение до 16 TCP-master/клиент или 32 TCP-slave/сервер устройств.
Многопортовые MGate MB3660 поддерживают подключение до 256 TCP-master/клиент или 128 TCP-slave/сервер устройств.
Если необходимо, чтобы MGate был доступен по публичному IP-адресу, находясь при этом за NAT/Firewall, необходимо настроить функцию проброса портов на маршрутизаторе. Большинство маршрутизаторов поддерживают данную функцию.
В таблицах перечислены наиболее распространенные порты, необходимые для выполнения различных функций на шлюзах MGate.