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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

  • macOS 64-bit

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

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

Стандарт RS-232 и RS-485 определяет два устройства, соединенные последовательным кабелем, как терминальное оборудование данных (DTE) и Data Circuit-Terminating Equipment (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-контактное соединение. На самом деле для последовательной связи портов требуется только три контакта: один для приема данных, один для передачи данных и один для сигнальной земли.

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

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

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

Контакт

Метка

Имя сигнала

Тип сигнала

1

CD

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

Контроль

2

RD

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

Данные

3

TD

Transmitted Data

Данные

4

DTR

Сигнал готовности терминала

Контроль

5

GND

Signal Ground

Земля

6

DSR

Сигнал готовности данных

Контроль

7

РТС

Request To Send

Контроль

8

CTS

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

Контроль

9

RI

Ring Indicator

Контроль

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

Примечание

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

Сигнальные состояния

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

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

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

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

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

Большинство устройств последовательных портов поддерживают полнодуплексную связь, что означает, что они могут отправлять и получать данные одновременно. Поэтому отдельные контакты используются для передачи и приема данных. Для этих устройств используются контакты 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 используется модемом, чтобы сигнализировать о том, что он установил соединение с другим модемом или обнаружил тональный сигнал оператора связи. 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.

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

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

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

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

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

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

Биты данных

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

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

Бит четности

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

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

Тип четности

Описание

Даже

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

Марк

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

Странный

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

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

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

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

Процесс проверки четности следует следующим шагам:

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

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

Примечание

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

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

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

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

Примечание

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

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

The serialportlist функция возвращает список всех последовательных портов в системе, включая виртуальные последовательные порты, предоставляемые USB-to-serial устройствам и Bluetooth Serial Port Profile устройствам. Функция предоставляет список последовательных портов, к которым вы имеете доступ на вашем компьютере и которые можете использовать для последовательной передачи портов. Для примера:

serialportlist
ans = 

  1×3 string array

    "COM1"    "COM3"    "COM4"

Примечание

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

Платформа Windows

Вы можете получить доступ к информации о последовательном порте через Device Manager.

  1. Откройте Device Manager.

  2. Разверните список Ports (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 см. раздел «Настройка параметров связи с последовательными портами».