exponenta event banner

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

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

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

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

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

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

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

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

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

  • Максимальная скорость передачи битов и длина кабеля

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

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

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

Примечание

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

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

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

  • 64-разрядная версия Linux ®

  • macOS 64-разрядная версия

  • 64-разрядная версия Microsoft ® Windows ®

Подключение двух устройств с помощью последовательного кабеля

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

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

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

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

Примечание

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

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

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

На следующем рисунке показана схема назначения контактов для 9-контактного штекерного разъема в DTE.

В этой таблице описываются контакты и сигналы, связанные с 9-контактным разъемом. Описание сигналов и назначение контактов для 25-контактного разъема см. в стандарте RS-232 или RS-485.

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

Булавка

Этикетка

Имя сигнала

Тип сигнала

1

CD

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

Контроль

2

RD

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

Данные

3

TD

Передаваемые данные

Данные

4

DTR

Терминал передачи данных готов

Контроль

5

GND

Сигнальное заземление

Земля

6

DSR

Набор данных готов

Контроль

7

РТС

Запрос на отправку

Контроль

8

CTS

Очистить для отправки

Контроль

9

RI

Индикатор кольцевой сети

Контроль

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

Примечание

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

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

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

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

Для приведения сигнала в состояние «включено» управляющее устройство отменяет (или понижает) значение для выводов данных и устанавливает (или повышает) значение для выводов управления. И наоборот, чтобы перевести сигнал в состояние «выключено», управляющее устройство устанавливает значение для выводов данных и отменяет значение для выводов управления.

На следующем рисунке показаны состояния «включено» и «выключено» для сигнала данных и для управляющего сигнала.

Контакты данных

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

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

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

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

Контакты RTS и CTS.  Контакты RTS и 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 изначально были разработаны для обеспечения альтернативного метода аппаратного квитирования. Однако таким образом обычно используются контакты RTS и CTS, а не контакты DSR и DTR. Для определения конкретного поведения контактов обратитесь к документации по устройству.

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

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. Передают биты данных. Первый бит данных соответствует младшему значащему биту (LSB), в то время как последний бит данных соответствует самому значащему биту (MSB).

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

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

Число битов, передаваемых в секунду, определяется скоростью передачи в бодах. Переданные биты включают в себя начальный бит, биты данных, бит четности (если определен) и стоповые биты.

Биты запуска и остановки

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

  1. Если контакт последовательного порта свободен (не передает данные), то он находится в состоянии «включено».

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

  3. Контакт последовательного порта переключается обратно в состояние «вкл». Это указывает на конец байта.

Биты данных

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

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

Бит четности

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

Типы четности

Тип четности

Описание

Даже

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

Марк

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

Странный

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

Пространство

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

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

Процесс проверки четности выполняется следующим образом:

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

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

Примечание

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

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

Поиск информации о последовательном порте для вашей платформы

Информацию о последовательном порте можно найти с помощью ресурсов, предоставляемых платформами Windows и UNIX.

Примечание

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

Вы также можете использовать instrhwinfo функция для программного возврата доступных последовательных портов.

Используйте serialportlist Функция поиска доступных портов

serialportlist функция возвращает список всех последовательных портов в системе, включая виртуальные последовательные порты, предоставляемые USB-последовательными устройствами и устройствами профиля последовательного порта Bluetooth. Функция предоставляет список последовательных портов, к которым имеется доступ на компьютере и которые можно использовать для связи с последовательными портами. Например:

serialportlist
ans = 

  1×3 string array

    "COM1"    "COM3"    "COM4"

Примечание

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

Платформа Windows

Доступ к информации о последовательном порте можно получить через Диспетчер устройств.

  1. Откройте Диспетчер устройств.

  2. Разверните список Порты (COM&LPT).

  3. Дважды щелкните по элементу Communications Port (COM1).

  4. Выберите вкладку Port Settings (Параметры порта).

Платформа 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

Чтобы настроить скорость передачи в бодах как 4800 бит в секунду, введите:

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

Примечание

В этом примере показано, как установить tty параметры, а не скорость передачи в бодах. Для установки скорости передачи в бодах с использованием последовательного интерфейса MATLAB см. раздел Настройка параметров связи с последовательным портом.