Обзор последовательного порта

Что такое последовательная передача?

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

Как следует из названия, последовательный порт отправляет и получает байты информации последовательным способом — один бит за один раз. Эти байты передаются с помощью или двоичного формата или текста (ASCII) формат.

Для многих приложений последовательного порта можно связаться с инструментом без детального знания того, как последовательный порт работает. Коммуникация устанавливается через объект последовательного порта, который вы создаете в рабочей области MATLAB®.

Если ваше приложение является прямым, или если вы уже знакомы с упомянутыми выше темами, вы можете хотеть начать с Объекта последовательного порта. Если вы захотите высокоуровневое описание всех шагов, то вы, вероятно, возьмете при передаче с инструментом, обратиться к Начинающей документации, которая соединяется с наверху основной страницы Instrument Control Toolbox Doc Center.

Стандарт последовательного порта

За эти годы несколько стандартов последовательного порта для соединения компьютеров к периферийным устройствам были разработаны. Эти стандарты включают RS-232, RS-422 и RS-485 — все из которых поддерживаются объектом последовательного порта. Из них наиболее широко используемый стандарт является RS-232, который обозначает Рекомендуемый стандарт номер 232.

Текущая версия этого стандарта определяется как TIA/EIA-232C, который публикуется Ассоциацией Телекоммуникационной отрасли. Однако термин “RS-232” все еще находится в популярном употреблении и используется в этом руководстве при обращении к последовательному порту, который следует стандарту TIA/EIA-232. RS-232 задает эти характеристики последовательного порта:

  • Максимальный битрейт и длина кабеля

  • Имена, электрические характеристики и функции сигналов

  • Механические связи и назначения контактов

Первичная коммуникация выполняется с помощью трех контактов: контакт Transmit Data, контакт Recieve Data и Заземляющий контакт. Другие контакты доступны для управления потоком данных, но не требуются.

Примечание

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

Поддерживаемые платформы

Интерфейс последовательного порта MATLAB поддерживается на

  • Linux® 64-bit

  • macOS 64-bit

  • Microsoft® Windows® 64-bit

Соединение двух устройств последовательным кабелем

Стандарт RS-232 и RS-485 задает эти два устройства, соединенные последовательным кабелем как Data Terminal Equipment (DTE) и Data Circuit-Terminating Equipment (DCE). Эта терминология отражает источник RS-232 как стандарт для связи между компьютерным терминалом и модемом.

В этом руководстве ваш компьютер рассматривается DTE, в то время как периферийные устройства, такие как модемы и принтеры рассматриваются DCEs. Обратите внимание на то, что много научных приборов функционируют как DTEs.

Поскольку RS-232 в основном включает соединение DTE к DCE, назначения контактов заданы таким образом, что сквозные кабельные соединения используются, где контакт 1 соединяется с контактом 1, контакт 2 соединяется с контактом 2 и так далее. DTE к DCE последовательная связь с помощью контакта данных о передаче (TD) и контакта приема данных (RD) показывают ниже. Обратитесь к Сигналам Последовательного порта и Назначениям контактов для получения дополнительной информации о контактах последовательного порта.

Если вы соединяете два DTEs или два DCEs использование прямого последовательного кабеля, то контакт TD на каждом устройстве соединяется с другим, и контакт RD на каждом устройстве соединяется с другим. Поэтому, чтобы соединиться два как устройства, необходимо использовать нуль-модемный кабель. Как показано ниже, нуль-модемные кабели пересекают передачу и получают строки в кабеле.

Примечание

Можно соединить несколько RS-422 или RS 485 устройств к последовательному порту. Если вы имеете RS-232/RS-485 адаптер, то можно использовать объект последовательного порта с этими устройствами.

Сигналы последовательного порта и назначения контактов

Последовательные порты состоят из двух типов сигнала: сигналы данных и управляющие сигналы. Чтобы поддержать эти типы сигнала, а также сигнальную землю, стандарт RS-232 задает 25-контактную связь. Однако большинство PC и платформ UNIX® используют 9-контактную связь. На самом деле только три контакта требуются для коммуникаций последовательного порта: один для получения данных, один для передачи данных, и один для сигнальной земли.

Схема назначения контактов 9 штырьковых разъемов на DTE приведена ниже.

Контакты и сигналы, сопоставленные с 9-контактным коннектором, описаны ниже. Обратитесь к RS-232 или стандарту RS-485 для описания сигналов и назначений контактов, используемых для 25-контактного коннектора.

Контакт последовательного порта и присвоения сигнала

Контакт

Метка

Имя сигнала

Тип сигнала

1

CD

Обнаружение несущей

Управление

2

RD

Полученные данные

Данные

3

TD

Transmitted Data

Данные

4

DTR

DataTerminalReady

Управление

5

GND

Signal Ground

Земля

6

DSR

Data Set Ready

Управление

7

RTS

RequestToSend

Управление

8

CTS

Clear to Send

Управление

9

RI

Ring Indicator

Управление

Термин “набор данных” синонимичен с “модемом” или “устройством”, в то время как термин “терминал” синонимичен с “компьютером”.

Примечание

Контакт последовательного порта и присвоения сигнала относительно DTE. Например, данные передаются от контакта TD DTE к контакту RD DCE.

Состояния сигнала

Сигналы могут быть или в активном состоянии или в неактивном состоянии. Активное состояние соответствует двоичному значению 1, в то время как неактивное состояние соответствует двоичному значению 0. Активное состояние сигнала часто описывается как логическая 1, вкл, истина, или метка. Неактивное состояние сигнала часто описывается как логический 0, выкл, ложь, или пробел.

Для сигналов данных, “на” состоянии происходит, когда полученное напряжение сигнала меньше-3 вольт, в то время как “от” состояния происходит для больше 3 вольт напряжений. Для управляющих сигналов, “на” состоянии происходит, когда полученное напряжение сигнала больше 3 вольт, в то время как “от” состояния происходит для меньше-3 вольт напряжений. Напряжение между-3 вольтами и +3 вольтами рассматривается областью перехода, и состояние сигнала не определено.

Чтобы принести сигнал к “на” состоянии, управляющее устройство не утверждает (или понижается), значение для контактов передачи данных, и утверждает (или повышения) значение для контактов управления. С другой стороны, чтобы принести сигнал к “от” состояния, управляющее устройство утверждает значение для контактов передачи данных и не утверждает значение для контактов управления.

“На” и “от” состояний для сигнала данных и для управляющего сигнала показаны ниже.

Контакты передачи данных

Большинство устройств последовательного порта поддерживает полнодуплексную коммуникацию, означающую, что они могут отправить и получить данные одновременно. Поэтому отдельные контакты используются для передачи и получения данных. Для этих устройств используются TD, RD и контакты GND. Однако некоторые типы устройств последовательного порта поддерживают только односторонние или полудуплексные коммуникации. Для этих устройств только используются TD и контакты GND. В этом руководстве это принято, что полнодуплексный последовательный порт соединяется с вашим устройством.

Контакт TD несет данные, переданные DTE к DCE. Контакт RD несет данные, которые получены DTE от DCE.

Контакты управления

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

РТС и CTS контакты.  РТС и CTS контакты используются, чтобы сигнализировать, готовы ли устройства отправить или получить данные. Этот тип управления потоком данных — названный аппаратным квитированием — используется, чтобы предотвратить потерю данных во время передачи. Когда включено и для DTE и для DCE, аппаратное квитирование с помощью RTS и CTS выполняет эти шаги:

  1. DTE утверждает контакт RTS, чтобы сообщить DCE, что это готово получить данные.

  2. DCE утверждает контакт CTS, указывающий, что это ясно отправить данные по контакту TD. Если данные больше не могут отправляться, контакт CTS не утверждается.

  3. Данные передаются к DTE по контакту TD. Если данные больше не могут приниматься, контакт RTS не утверждается DTE, и передача данных останавливается.

Чтобы включить аппаратное квитирование, обратитесь к Управлению Потоком Данных: Квитирование.

DTR и DSR контакты.  Много устройств используют DSR, и DTR прикрепляет к сигналу, если они соединяются и приводятся в действие. Сигнализация о присутствии подключенных устройств с помощью DTR и DSR выполняет эти шаги:

  1. DTE утверждает контакт DTR, чтобы запросить, чтобы DCE соединился с линией передачи данных.

  2. DCE утверждает контакт DSR, чтобы указать, что это соединяется.

  3. DCE не утверждает контакт DSR, когда это отключается от линии передачи данных.

DTR и DSR контакты были первоначально разработаны, чтобы обеспечить альтернативный метод аппаратного квитирования. Однако РТС и CTS контакты обычно используются таким образом, а не контакты DTR и DSR. Однако необходимо обратиться к документации устройства, чтобы определить ее определенное поведение контакта.

CD и RI контакты.  CD и RI контакты обычно используются, чтобы указать на присутствие определенных сигналов во время соединений модем-модем.

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

RI используется, чтобы указать на присутствие слышимого сигнала вызова. RI утверждается, когда DCE получает звонящий сигнал. RI не утверждается, когда DCE не получает звонящий сигнал (например, это между звонками).

Формат последовательных данных

Формат последовательных данных включает один старт-бит, от пяти до восьми битов данных, и один стоп-бит. Бит четности и дополнительный стоп-бит могут быть включены в формат также. Схема ниже иллюстрирует формат последовательных данных.

Формат для данных о последовательном порте часто выражается с помощью следующего обозначения:

количество битов данных - тип контроля четности - количество стоп-битов

Например, 8-N-1 интерпретирован как восемь битов данных, бит четности отсутствует, и один стоп-бит, в то время как 7-E-2 интерпретирован как семь битов данных, четность и два стоп-бита.

Биты данных часто упоминаются как символ, потому что эти биты обычно представляют символ ASCII. Остающиеся биты называются предельными битами, потому что они структурируют биты данных.

Байты по сравнению со значениями

Набор битов, которые составляют формат последовательных данных, называется байтом. Сначала, этот термин может казаться неточным, потому что байт составляет 8 битов, и формат последовательных данных может расположиться между 7 битами и 12 битами. Однако, когда последовательные данные хранятся на вашем компьютере, предельные биты сняты, и только биты данных сохраняются. Кроме того, восемь битов данных всегда используются независимо от количества битов данных, заданных для передачи с неиспользованными битами, присвоенными значение 0.

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

Синхронная и асинхронная коммуникация

RS-232 и стандарт RS-485 поддерживают два типа протоколов связи: синхронный и асинхронный.

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

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

В частности, передача данных синхронизируется с помощью старт-бита слова, в то время как один или несколько стоп-битов указывают на конец слова. Требование, чтобы отправить эти дополнительные биты заставляет асинхронные коммуникации быть немного медленнее, чем синхронный. Однако это имеет преимущество, что процессор не должен иметь дело с дополнительными символами бездействия. Большинство последовательных портов действует асинхронно.

Примечание

Когда используется в этом руководстве, термины, “синхронные” и “асинхронные”, относятся к или операции чтения, или операции записи блокируют доступ к Окну Команды MATLAB.

Как биты передаются?

По определению последовательные данные передаются один бит за один раз. Порядок, в котором передаются биты, выполняет эти шаги:

  1. Старт-бит передается со значением 0.

  2. Биты данных передаются. Бит First Data соответствует младшему значащему биту (LSB), в то время как последний бит данных соответствует старшему значащему биту (MSB).

  3. Бит четности (если задано) передается.

  4. Один или два стоп-бита передаются, каждый со значением 1.

Количество битов, переданных в секунду, дано скоростью в бодах. Переданные биты включают старт-бит, биты данных, бит четности (если задано), и стоп-биты.

Стартовый и стоповый биты

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

  1. Когда контакт последовательного порта неактивен (не передача данных), затем это находится в “на” состоянии.

  2. Когда данные собираются быть переданными, контакт последовательного порта переключается на “от” состояния из-за старт-бита.

  3. Последовательный порт прикрепляет переключатели обратно к “на” состоянии из-за стоп-бита (стоп-битов). Это указывает на конец байта.

DataBits

Биты данных, переданные через последовательный порт, могут представлять команды устройства, показания датчика, сообщения об ошибке, и так далее. Данные могут быть переданы или как двоичные данные или как текст (ASCII) данные.

Большинство последовательных портов использует от пяти до восьми битов данных. Двоичные данные обычно передаются как восемь битов. Основанные на тексте данные передаются или как семь битов или как восемь битов. Если данные основаны на наборе символов ASCII, то минимум семи битов требуется, потому что существует 27 или 128 отличных символов. Если восьмой бит используется, он должен иметь значение 0. Если данные основаны на расширенном наборе символов ASCII, то восемь битов должны использоваться, потому что существует 28 или 256 отличных символов.

Бит четности

Бит четности обеспечивает простую проверку ошибок (четности) для передаваемых данных. Типы проверки четности приведены ниже.

Типы контроля четности

Тип контроля четности

Описание

Даже

Биты данных плюс бит четности производят четное число 1 с.

Марк

Бит четности всегда равняется 1.

Нечетный

Биты данных плюс бит четности производят нечетное число 1 с.

Пробел

Бит четности всегда 0.

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

Процесс проверки четности выполняет эти шаги:

  1. Устройство передачи устанавливает бит четности на 0 или на 1 в зависимости от значений бита данных и типа выбранной проверки четности.

  2. Приемное устройство проверяет, сопоставим ли бит четности с передаваемыми данными. Если это, то биты данных приняты. Если это не, то ошибка возвращена.

Примечание

Проверка четности может обнаружить только 1 битовую ошибку. Несколько битных ошибок могут появиться как допустимые данные.

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

Нахождение информации о последовательном порте для платформы

В этом разделе описывается найти информацию о последовательном порте с помощью ресурсов, обеспеченных платформами UNIX и Windows.

Примечание

Ваша операционная система обеспечивает значения по умолчанию для всех настроек последовательного порта. Однако эти настройки заменены вашим кодом MATLAB и не будут иметь никакого эффекта на ваше приложение последовательного порта.

Можно также использовать функцию instrhwinfo, чтобы возвратить доступные последовательные порты программно.

Используйте функцию seriallist, чтобы найти доступные порты

Функция seriallist возвращает список всех последовательных портов в системе. Список включает виртуальные последовательные порты, обеспеченные USB-to-serial устройствами и Bluetooth Serial Port Profile устройствами. Это предоставляет список последовательных портов, к которым вы имеете доступ на вашем компьютере и могли использовать для коммуникации последовательного порта. Например:

seriallist

ans = 

  1×2 string array

  "COM1"    "COM3"

Примечание

В системах Linux функция seriallist не показывает порты, которые используются. На Windows и macOS системах, это показывает и доступные и порты в использовании. Но на Linux это показывает только доступные порты.

Платформа Windows

Можно получить доступ к информации о последовательном порте через диалоговое окно System Properties. Получить доступ к этому в Window XP,

  1. Щелкните правой кнопкой по My Computer по рабочему столу и выберите Properties.

  2. В диалоговом окне System Properties кликните по вкладке Hardware.

  3. Нажмите Device Manager.

  4. В диалоговом окне Device Manager расширьте узел Ports.

  5. Дважды кликните узел Communications Port (COM1).

  6. Выберите вкладку Port Settings.

    Получившееся диалоговое окно Ports показывают ниже.

Платформа UNIX

Чтобы найти информацию о последовательном порте для платформ UNIX, необходимо знать имена последовательного порта. Эти имена могут отличаться между различными операционными системами.

На Linux устройства последовательного порта обычно называют ttyS0, ttyS1, и так далее. Можно использовать команду setserial, чтобы отобразить или сконфигурировать информацию о последовательном порте. Например, чтобы отобразиться, какие последовательные порты доступны,

setserial -bg /dev/ttyS*
/dev/ttyS0 at 0x03f8 (irq = 4) is a 16550A
/dev/ttyS1 at 0x02f8 (irq = 3) is a 16550A

Отобразить подробную информацию о ttyS0,

setserial -ag /dev/ttyS0
/dev/ttyS0, Line 0, UART: 16550A, Port: 0x03f8, IRQ: 4
        Baud_base: 115200, close_delay: 50, divisor: 0
        closing_wait: 3000, closing_wait2: infinte
        Flags: spd_normal skip_test session_lockout

Примечание

Если команда setserial -ag не работает, убедитесь, что вы читали и разрешение записи для порта.

Для всех поддерживаемых платформ UNIX, включая macOS, можно использовать команду stty, чтобы отобразить или сконфигурировать информацию о последовательном порте. Например, чтобы отобразить свойства последовательного порта для ttyS0, введите:

stty -a < /dev/ttyS0

Чтобы сконфигурировать скорость в бодах к 4 800 битам в секунду, введите:

stty speed 4800 < /dev/ttyS0 > /dev/ttyS0

Примечание

Это - пример параметров установки tty, не скорость в бодах. Чтобы установить использование скорости в бодах последовательный интерфейс MATLAB относятся к Конфигурированию Коммуникационных Настроек.