Понимание последовательного протокола передачи данных и RS232 соединений

Шаг 1: Понимание RS232-соединения и сигналов
RS-232C, EIA RS-232 или просто RS-232 относится к тому же стандарту, определенному Ассоциацией электронной промышленности в 1969 году для последовательного канала передачи данных.

DTE и DCE
DTE расшифровывается как терминальное оборудование. Компьютер - это DTE. DCE обозначает оборудование для передачи данных. Модем это DCE.
DTE обычно поставляется с разъемом "мама", а DCE - с разъемом "мама". Однако это не всегда так. Для проверки используйте простой способ, приведенный ниже:
измерьте контакт 3 и контакт 5 разъема DB-9 с помощью вольтметра, если вы получаете напряжение от -3 В до -15 В, то это устройство DTE. Если напряжение на контакте 2В, то это устройство DCE.
Примечание. Результат для коннектора DB-25 меняется на противоположный (см. Таблицу преобразования DB-9 в DB-25 ниже).
Распиновка разъема RS-232 (DB-9)

Разъем DB-9 Male, вид спереди. Обратный или задний вид разъема Male (штекерный) для Female (розеточный) разъема.

Назначение контактов DTE (DB-9)
Назначение контактов DCE (DB-9)
1 DCD Data Carrier Detect 1 DCD Data Carrier Detect
2 RxD Receive Data 2 TxD Transmit Data
3 TxD Transmit Data 3 RxD Receive Data
4 DTR Data Terminal Ready 4 DSR Data Set Ready
5 GND Ground (Signal) 5 GND Ground (Signal)
6 DSR Data Set Ready 6 DTR Data Terminal Ready
7 RTS Request to Send 7 CTS Clear to Send
8 CTS Clear to Send 8 RTS Request to Send
9 RI Ring Indicator 9 RI Ring Indicator


Преобразование DB-9 в DB-25


DB-9 DB-25 Назначение
1 8 DCD Data Carrier Detect
2 3 RxD Receive Data
3 2 TxD Transmit Data
4 20 DTR Data Terminal Ready
5 7 GND Ground (Signal)
6 6 DSR Data Set Ready
7 4 RTS Request to Send
8 5 CTS Clear to Send
9 22 RI Ring Indicator


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


Прямое соединение (DB-9)   Нуль-модемное, кроссовое соединение (DB-9)
(DTE)   (DCE)   (DTE)   (DTE)
1 DCD ------- DCD 1   1 DCD   DCD 1
2 RxD ------- TxD 2   2 RxD ------- TxD 3
3 TxD ------- RxD 3   3 TxD ------- RxD 2
4 DTR ------- DSR 4   4 DTR ------- DSR 6
5 GND ------- GND 5   5 GND ------- GND 5
6 DSR ------- DTR 6   6 DSR ------- DTR 4
7 RTS ------- CTS 7   7 RTS ------- CTS 8
8 CTS ------- RTS 8   8 CTS ------- RTS 7
9 RI ------- RI 9   9 RI   RI 9


Сигналы RS-232


Логическая форма сигнала RS-232 (8N1)

На рисунке выше показан типичный логический сигнал RS-232 (формат данных: 1 стартовый бит, 8 битов данных, без контроля четности, 1 стоповый бит). Передача данных начинается с начального бита, за которым следуют биты данных (LSB отправляется первым, а MSB отправляется последним) и заканчивается битом «Стоп».
Напряжение логической «1» (метка) находится в диапазоне от -3 В до -15 В постоянного тока, в то время как логическое «0» (пробел) находится в диапазоне от + 3 В до + 15 В постоянного тока.
RS-232 соединяет заземление двух разных устройств вместе, что является так называемым «несбалансированным» соединением. Несбалансированное соединение более восприимчиво к шуму и имеет ограничение расстояния 15 метров.


Шаг 2: Узнайте о протоколе

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

Синхронная и асинхронная передача данных

Синхронная связь требует, чтобы отправитель и получатель использовали одни и те же часы. Отправитель передает синхронизирующий сигнал получателю, чтобы получатель знал, когда «читать» данные. Синхронная связь, как правило, имеет более высокие скорости передачи данных и большую возможность проверки ошибок. Принтер - это форма синхронного общения. Асинхронная связь не имеет тактового сигнала или тактового сигнала. Вместо этого он вставляет стартовые / стоповые биты в каждый байт данных, чтобы «синхронизировать» связь. Поскольку для связи используется меньше проводов (без тактовых сигналов), асинхронная связь проще и экономичнее. RS-232 / RS-485 / RS-422 / TTL являются формами асинхронной связи.


Развертывание: биты и байты

Внутренняя компьютерная связь состоит из цифровой электроники, представленной только двумя условиями: ВКЛ или ВЫКЛ. Мы представляем их двумя числами: 0 и 1, которые в двоичной системе называются битами. Байт состоит из 8 битов, которые представляют десятичное число от 0 до 255 или шестнадцатеричное число от 0 до FF. Как описано выше, байт является основной единицей асинхронной связи.


Скорость передачи, биты данных, четность и стоповый бит


Скорость передачи - это скорость передачи данных, которая измеряет количество битовых передач в секунду. Например, 19200 бод - это 19200 бит в секунду.
Биты данных являются измерением фактических битов данных в пакете связи. Например, вышеприведенный рисунок показывает восемь (8) битов данных в пакете связи. Пакет связи относится к передаче одного байта, включая биты пуска / останова, биты данных и четность. Если вы передаете стандартный код ASCII (от 0 до 127), достаточно 7 бит данных. Если это расширенный код ASCII (от 128 до 255), то требуется 8 бит данных.
Четность - это простой способ проверки ошибок. Есть четные, нечетные, отметки и пробелы. Вы также можете использовать без паритета. Для четного и нечетного контроля четности последовательный порт устанавливает бит четности (последний бит после бита данных) в значение, чтобы гарантировать, что пакет данных имеет четное или нечетное число старших логических битов. Например, если данные равны 10010010, для четности четности последовательный порт устанавливает бит четности равным 1, чтобы сохранить количество старших логических битов четности. Для нечетной четности бит четности равен 0, поэтому число старших логических битов нечетно. Метка четности просто устанавливает бит четности на высокий логический уровень, а пробел устанавливает бит четности на низкий логический уровень, чтобы принимающая сторона могла определить, повреждены ли данные.
Стоповые биты используются для сигнализации об окончании пакета связи. Это также помогает синхронизировать различные часы на последовательных устройствах.


Рукопожатие (управление потоком)
Рукопожатие также называется «Управление потоком». Основное назначение Handshaking - предотвратить перегрузку приемника. Используя сигналы квитирования, получатели смогут сообщить отправляющему устройству приостановить передачу данных, если приемник перегружен. Существует три типа квитирования: программное квитирование, аппаратное квитирование и оба.
Программное обеспечение рукопожатия использует два управляющих символа: XON и XOFF. Приемник отправляет эти управляющие символы, чтобы приостановить передатчик во время связи. XON - это десятичное 17, а XOFF - десятичное 19 на графике ASCII. Недостаток программного рукопожатия заключается в том, что эти два управляющих символа нельзя использовать в данных. Это очень важно при передаче двоичных данных, так как вам может понадобиться использовать эти два кода в ваших данных.
Аппаратное подтверждение связи использует фактические аппаратные линии, такие как RTS / CTS, DTR / DSR и DCD / RI (для модема).
В связи DTE / DCE RTS (Запрос на отправку) является выходом на DTE и входом на DCE. CTS (Clear to Send) - ответный сигнал от DCE. Перед отправкой данных DTE запрашивает разрешение, устанавливая высокий уровень выходного сигнала RTS. Данные не будут отправлены, пока DCE не предоставит разрешение по линии CTS. DTE использует сигнал DTR (Data Terminal Ready), чтобы указать, что он готов принять информацию, тогда как DCE использует сигнал DSR для той же цели. DTR / DSR обычно включены или выключены для всего сеанса соединения (например, снята трубка), тогда как RTS / CTS включены или выключены для каждой передачи данных. DCD (Data Carrier Ready) используется модемом, когда установлено соединение с удаленным оборудованием, а RI (индикатор вызова) используется модемом для индикации сигнала вызова с телефонной линии.


Форматы данных (двоичные, шестнадцатеричные, декабрьские, октябрьские и ASCII)
Последовательные устройства используют Binary для связи, который состоит из двух уникальных чисел: 0 и 1.
Двоичный код - это система нумерации Base-2. Один байт данных состоит из 8 двоичных цифр от 0000 0000 до 1111 1111. Шестнадцатеричная система - это система base-16, которая состоит из 16 чисел: от 0 до 9 и букв от A до F (десятичное число 15).
Шестнадцатеричная система нумерации полезна, потому что она может представлять каждый байт в виде двух последовательных шестнадцатеричных цифр, и людям легче читать шестнадцатеричные числа, чем двоичные числа. Большинство производителей используют шестнадцатеричное в своей документации протокола. Преобразовать значение из шестнадцатеричного в двоичное просто. Просто переведите каждую шестнадцатеричную цифру в ее 4-битный двоичный эквивалент. Например. Шестнадцатеричное число F3 равно двоичному числу 1111 0011.
Десятичное число относится к числам в базе 10, которая является системой нумерации, которую мы используем чаще всего в повседневной жизни. Это не так просто, как шестнадцатеричное и восьмеричное в десятичное число, чтобы преобразовать десятичное число, но нам легче понять десятичное число.
Восьмеричное относится к системе нумерации base-8, которая использует только восемь уникальных символов (от 0 до 7). Программисты часто используют формат Octal, потому что люди относительно легко читают и могут быть легко переведены в двоичный формат: каждая цифра Octal представляет 3 двоичные цифры. Например. Восьмеричное число 73 соответствует двоичному числу 111 011.
ASCII (американский стандартный код для обмена информацией) - это кодировка символов, основанная на английском алфавите. Коды ASCII (как читаемые, так и нечитаемые) широко используются в коммуникациях, таких как модемная связь. Буквы от A до Z и цифры от 0 до 9 являются читаемыми кодами ASCII. Некоторые коды ASCII не читаются, такие как управляющие коды: XON и XOFF, которые используются в управлении потоком программного обеспечения.


В компания KS-is возможно купить адаптеры RS232 различных моделей и ценовых сегментов.


Контрольная сумма
Многие последовательные протоколы используют контрольную сумму (дополнительные байты добавляются в конце строки данных) для проверки целостности данных, поскольку при передаче данных могут возникать ошибки. Существует много типов контрольных сумм, от простейшего использования в Modula или BCC до сложных вычислений CRC. Используя Modula в качестве примера, мы узнаем, что перед передачей данных отправитель складывает все командные байты вместе, а затем модифицирует его на 255 (десятичный), чтобы получить дополнительный байт. Это должно быть добавлено в конце командной строки. Когда получатель получает командную строку, он сначала проверяет добавленный байт, чтобы увидеть, остаются ли данные неизменными или нет. Если это так, он примет данные, а если нет, то попросит отправителя повторно отправить данные.


Примеры протокольных команд
Команда протокола представляет собой строку данных, отправленную с одного последовательного устройства (например, компьютера) на другое (то есть модем). Вот некоторые примеры:
Пример команды ASCII: ATI1 для запроса информации производителя модема. (Примечание: контрольные коды возврата каретки и перевода строки).
Преобразуйте приведенную выше командную строку в шестнадцатеричное, и она становится: 41 54 49 31 0D 0A
Преобразуйте приведенную выше командную строку в десятичную, и она становится: 065 084 073 049 013 010
Преобразуйте приведенную выше строку команды в восьмеричное, и оно становится: 101 124 111 061 015 012
Преобразуйте приведенную выше командную строку в двоичную, и она становится: 01000001 01010100 01001001 00110001 00001101 00001010


Шаг 3: Управляйте своими устройствами RS232 с помощью 232Analyzer

232Analyzer - это расширенный анализатор протокола последовательного порта, который позволяет вам контролировать / отлаживать, отслеживать / прослушивать последовательные устройства (RS-232 / RS-485 / RS-422 / TTL) прямо с вашего ПК. 232Analyzer является условно-бесплатной версией, БЕСПЛАТНАЯ версия имеет некоторые ограничения, но ее более чем достаточно для тестирования и управления вашими последовательными устройствами. Нажмите здесь, чтобы скачать бесплатную копию.


Расчет контрольной суммы
232Analyzer поставляется с калькулятором контрольной суммы, который позволяет вам вычислять сложный байт контрольной суммы в секундах, вот пример:
Предположим, что вы управляете проектором, и протокол проектора использует xOR для получения дополнительного байта контрольной суммы, строка команды для включения проектора: «1A 2B 3C» плюс байт контрольной суммы. Используйте следующие процедуры для вычисления байта контрольной суммы:
Выберите Hex в качестве формата операндов
Выберите xOr в качестве оператора
Введите строку команды и добавьте запятую (,) после каждого байта кода команды: например, 1A, 2B, 3C,
Нажмите на кнопку «Рассчитать», и вы получите результат 0D (0 опущен)



Выберите COM-порт и настройте форматы связи


В приведенном выше примере панели инструментов COM-порт, подключенный к проектору, был настроен следующим образом: COM-порт: 5, скорость передачи данных: 19 200 бит / с, бит данных: 8, четность: четный, стоп-бит: 1. Примечание. После того, как вы установили правильные форматы связи (они должны совпадать с настройками COM-порта проектора), нажмите кнопку «Подключить» слева, чтобы активировать COM-порт.

Настройки управления потоком



Управление потоком можно установить из окна выше. Можно выбрать «Программное обеспечение» (XON / XOFF), «Оборудование» (RTS / CTS), «Оба» («Программное обеспечение + оборудование») или «Нет».


Управляйте своими устройствами RS232 Контроль / мониторинг состояния линии


232Analyzer позволяет вам контролировать / контролировать состояние линий ваших COM-портов. Состояния линии RTS и DTR будут переключаться при нажатии на соответствующий светодиод, вы можете использовать измеритель напряжения для проверки изменений, вы должны получить от + 6 В до + 15 В, когда состояние линии включено, и от -6 В до -15 В, когда состояние линии ВЫКЛ. Другие состояния линии могут контролироваться через виртуальные D, такие как RX, TX, DSR, CTS, DCD и RI.  

Команды отправки / получения


Используйте приведенный выше пример для управления проектором (включите проектор), введите полную командную строку «1A, 2B, 3C, 0D» в поле Send_Command_Pane, как показано выше, а затем нажмите кнопку «Отправить».


Примечания:
В бесплатной версии режим Hex недоступен. Вы можете использовать десятичный формат для отправки командной строки: «26,43,60,13»
Вы можете использовать любое устройство RS-232 для тестирования, если Вы знаете команды протокола.