Процесс отправки данных по каналу связи или компьютерной шине
Обновлено: 21.11.2024
Во время четырнадцатого занятия, состоявшегося 24 апреля 2019 года, я познакомился с разделом "Создание сетей и коммуникации".
Индивидуальное задание заключается в разработке, создании и подключении проводных или беспроводных узлов с сетевыми или шинными адресами. Групповое задание — отправить сообщение между двумя проектами.
Типы коммуникаций:
- Последовательная связь. Последовательная связь — это процесс отправки данных по одному биту за раз, последовательно, по каналу связи или компьютерной шине. Это отличается от параллельной связи, когда несколько битов передаются целиком по каналу с несколькими параллельными каналами. Мы всегда должны использовать общие выводы заземления между микроконтроллерами.
- MISO (Master In Slave Out) — Линия подчиненного устройства для отправки данных главному устройству.
- MOSI (Master Out Slave In) — основная линия для отправки данных на периферийные устройства.
- SCK (Serial Clock) — тактовые импульсы, которые синхронизируют передачу данных, генерируемых ведущим устройством, и одной линией, характерной для каждого устройства:
- SS (Slave Select) — контакт на каждом устройстве, который мастер может использовать для включения и отключения определенных устройств.
- VCC на +5 В,
- Земля к Земле,
- ПДД до A4,
- От SCL до A5.
- Wi-Fi,
- Bluetooth,
- GSM/GPS,
- Радио.
Индивидуальное задание: проектирование, создание и подключение проводных или беспроводных узлов с сетевыми или шинными адресами.
- В категории проводных устройств: я решил подключить свою печатную плату, сделанную во время недели «Устройства ввода/вывода», в качестве ведущего устройства и использовать Arduino в качестве ведомого устройства с использованием протокола I2C.
Я использовал следующую проводку:- Контакт GND моей печатной платы к контакту GND Arduino,
- Контакт SDA моей печатной платы к контакту A4 Arduino,
- Контакт SCL моей печатной платы к контакту A5 Arduino.
Коды главного и подчиненного:
Я установил приложение "LightBlue" на свой iPhone.
Затем установил соединение между Iphone и Arduino через HM-10, светодиод на модуле HM-10 перестал мигать.
Я выбрал TxRx, затем изменил "Hex" на "String".
Затем я попробовал простое соединение между телефоном и ноутбуком.
Я добавил красный светодиод на контакт 13 и включил его, отправив 1.
Я выключил светодиод, отправив 0.
Групповое задание:
Групповое задание состоит в том, чтобы отправить сообщение между двумя проектами.
Мы решили использовать мою печатную плату в качестве «ведущей», а плату Наги в качестве «ведомой». Мы добавили кнопку на мою печатную плату и использовали светодиод на печатной плате Nagy. Мы подключили платы через соединение I2C. (от SDA к SDA, от SCL к SCL)
Коды Arduino для «ведущего» и «ведомого»:
Светодиод вкл/выкл:
Видео:
Скачать файлы:
Эта работа находится под лицензией Creative Commons Attribution 4.0 International License.
Встроенная электроника представляет собой соединение схем (процессоров или других интегральных схем) для создания симбиотической системы. Чтобы эти отдельные схемы могли обмениваться информацией, они должны использовать общий протокол связи. Для обмена данными определены сотни коммуникационных протоколов, и, как правило, каждый из них можно разделить на две категории: параллельный или последовательный.
Параллельное и последовательное
Параллельные интерфейсы передают несколько битов одновременно. Обычно им требуются шины данных — передача по восьми, шестнадцати и более проводам. Данные передаются огромными волнами из единиц и нулей.
Последовательные интерфейсы передают свои данные по одному биту за раз. Эти интерфейсы могут работать всего с одним проводом, обычно не более чем с четырьмя.
Думайте о двух интерфейсах как о потоке автомобилей: параллельный интерфейс будет больше чем 8-полосная мегамагистраль, а последовательный интерфейс больше похож на двухполосную проселочную дорогу. В течение определенного периода времени мега-шоссе может доставить больше людей к месту назначения, но двухполосная сельская дорога служит своей цели, и ее строительство обходится в несколько раз дешевле.
Параллельное взаимодействие, безусловно, имеет свои преимущества. Это быстро, просто и относительно легко реализовать. Но для этого требуется гораздо больше линий ввода/вывода (I/O). Если вам когда-либо приходилось переносить проект с базовой Arduino Uno на Mega, вы знаете, что линии ввода-вывода на микропроцессоре могут быть драгоценными и их мало. Поэтому мы часто выбираем последовательную связь, жертвуя потенциальной скоростью в пользу контактной недвижимости.
Асинхронный последовательный
За прошедшие годы были созданы десятки последовательных протоколов для удовлетворения конкретных потребностей встраиваемых систем. USB (универсальная последовательная шина) и Ethernet — это пара наиболее известных последовательных интерфейсов для вычислений. Другие очень распространенные последовательные интерфейсы включают SPI, I 2 C и последовательный стандарт, о котором мы сегодня поговорим. Каждый из этих последовательных интерфейсов можно разделить на две группы: синхронные или асинхронные.
Синхронный последовательный интерфейс всегда соединяет свои линии данных с тактовым сигналом, поэтому все устройства на синхронной последовательной шине используют общий тактовый сигнал. Это обеспечивает более простую и часто более быструю последовательную передачу, но также требует, по крайней мере, одного дополнительного провода между взаимодействующими устройствами. Примеры синхронных интерфейсов включают SPI и I 2 C.
Асинхронный означает, что данные передаются без поддержки внешнего тактового сигнала. Этот метод передачи идеально подходит для минимизации необходимых проводов и контактов ввода-вывода, но это означает, что нам нужно приложить дополнительные усилия для надежной передачи и получения данных. Последовательный протокол, который мы будем обсуждать в этом руководстве, является наиболее распространенной формой асинхронной передачи. На самом деле это настолько распространено, что когда большинство людей говорят «последовательный», они имеют в виду этот протокол (что вы, вероятно, заметите в этом руководстве).
Бестактовый последовательный протокол, который мы будем обсуждать в этом руководстве, широко используется во встроенной электронике. Если вы хотите добавить в свой проект модуль GPS, Bluetooth, XBee, ЖК-дисплеи с последовательным интерфейсом или многие другие внешние устройства, вам, вероятно, потребуется немного серийного фу.
Рекомендуемое чтение
Это руководство основано на нескольких концепциях электроники более низкого уровня, в том числе:
Двоичный
Двоичная система счисления в электронике и программировании. так что, должно быть, важно учиться. Но что такое двоичный код? Как это переводится в другие системы счисления, такие как десятичная?
Передача данных через последовательный порт с использованием протокола MODBUS
Ubiquity, выпуск 2008 г., январь | Саптарши Наскар, Кришненду Басули, Самар Сен Сарма
Полная ссылка в цифровой библиотеке ACM
Последовательная связь — это процесс последовательной отправки данных по одному биту за раз по каналу связи или компьютерной шине [5,6,7]. RS-232 – это стандарт для последовательной передачи двоичных данных между оконечным оборудованием данных (DTE) и оконечным оборудованием канала передачи данных (DCE), который обычно используется в последовательных портах компьютеров.
Последовательная связь — это процесс последовательной отправки данных по одному биту за раз по каналу связи или компьютерной шине [5,6,7]. RS-232 – это стандарт для последовательной передачи двоичных данных между оконечным оборудованием данных (DTE) и оконечным оборудованием канала передачи данных (DCE), который обычно используется в последовательных портах компьютеров.
Исходный стандарт RS-232 определял только соединение DTE с DCE, т. е. модемами. Нуль-модем — это метод связи, позволяющий напрямую соединить два DTE (компьютер, терминал, принтер и т. д.) с помощью последовательного кабеля RS-232. Нуль-модемная конфигурация упрощает квитирование связи между компьютерами. В нуль-модемном режиме обычно используется минимальный 3-проводной порт RS-232, состоящий только из передачи данных, приема данных и заземления, когда все возможности RS-232 не требуются [5,6,7].
Другим типом распространенного соединения является соединение DTE-DTE, например, соединение между двумя ПК для обмена данными между ними. Для такого соединения необходимо так называемое нуль-модемное соединение; на самом деле это соединение сделано в этом проекте.
Третий тип соединений — DCE-DCE. Здесь необходим так называемый хвостовой кабель, но это очень необычный вид соединения.
Другие части спецификаций RS-232 [5,6,7]: (a) Напряжения сигналов: от -5 В до -15 В (логическая 1), от +5 В до +15 В (логический 0) на другой стороне от -3 В до -15 В (логическая 1), от +3 В до +15 В (логический 0) на стороне приемника. Обычно на стандартном ПК используется +/- 12В. (b) Максимальная длина кабеля: 50 футов при 19200 бит/с, 3000 футов при 2400 бит/с (в большинстве случаев она может быть намного больше без проблем). (c) Разъемы: наиболее распространенными разъемами RS-232 являются DB-9 и DB-25. Существуют как мужские, так и женские версии, в большинстве случаев DTE имеет штекер, а DCE - гнездо (хотя в некоторых других случаях это может быть иначе). (d) Сигналы на разных контактах последовательного порта приведены ниже в следующей таблице.
DB-9 | DB-25 | Сигнал | Направление | Описание 200LX |
1 | 8 | DCD | Модем → ПК | Обнаружение носителя данных |
2 | 3 | RxD | Модем → ПК | Принятые данные (от DTE) |
3 | 2 | TxD | ПК → модем | Переданные данные (от DTE) |
4 | 20 | DTR | ПК → модем | Терминал данных готов |
5 | 7 | GND | Земля сигнала | |
6 | 6 | DSR | Модем → ПК | Набор данных готов |
7 | 4 | RTS | ПК → Модем | Запрос на отправку |
8 | 5 | CTS | Модем → ПК | Отменить отправку |
9 | 22 | RI | < td>Модем → ПККольцо I индикатор | |
10 | 1 | Порт. GND | Нет на DB-9. Защитное заземление: Экран штекеров и кабелей подключен. |
DCD, DTR, DSR, RTS и CTS также являются так называемыми линиями квитирования, которые устройства используют для обмена информацией о своем статусе.
Общим языком, используемым контроллерами Modicon, является протокол MODBUS [1,7]. Это открытый протокол, и он определяет структуру сообщения, которую контроллеры будут распознавать и использовать, независимо от типа сетей, по которым они обмениваются данными. Он описывает процесс, который контроллер использует для запроса доступа к другому устройству, как он будет отвечать на запросы от других устройств, а также как будет обнаруживаться ошибка и сообщаться о ней. Он устанавливает общий формат для макета и содержания поля сообщения.
Протокол MODBUS представляет собой внутренний стандарт, который контроллеры Modicon используют для разбора сообщений. Во время связи протокол определяет, как каждый контроллер будет знать адрес своего устройства, распознавать адресованное ему сообщение, определять тип действия, которое необходимо предпринять, и извлекать любые данные или другую информацию, содержащуюся в сообщении. Если требуется ответ, контроллер создаст ответное сообщение и отправит его по протоколу MODBUS. При передаче сообщений протокол MODBUS, встроенный в структуру пакетов каждой сети, обеспечивает общий язык, с помощью которого устройство может изменять данные.
Стандартные порты MODBUS на контроллерах Modicon используют последовательный интерфейс, совместимый с RS-232C, который определяет выводы разъемов, кабели, уровни сигналов, скорость передачи и проверку четности. Контроллеры могут быть объединены в сеть напрямую или через модемы. Контроллеры взаимодействуют с использованием технологии ведущий-ведомый, при которой только одно устройство (ведущее) может инициировать транзакции (запросы). Другие устройства (подчиненные) отвечают, предоставляя запрошенные данные ведущему устройству или выполняя действие, запрошенное в запросе. Типичные ведущие устройства включают в себя хост-процессоры и панели программирования. Типичные ведомые устройства включают программируемые контроллеры.
Мастер может обращаться к отдельным ведомым устройствам или может инициировать широковещательное сообщение для всех ведомых устройств. Подчиненные устройства возвращают сообщение (ответ) на запросы, адресованные им индивидуально. Ответы на широковещательные запросы от мастера не возвращаются.
Протокол MODBUS устанавливает формат запроса ведущего, помещая в него адрес устройства (или широковещательный), код функции, определяющий запрошенное действие, любые данные, которые должны быть отправлены, и поле проверки ошибок. Ответное сообщение подчиненного устройства также создается с использованием протокола MODBUS. Он содержит поля, подтверждающие предпринятое действие, любые возвращаемые данные и поле проверки ошибок. Если при получении сообщения произошла ошибка или подчиненное устройство не может выполнить запрошенное действие, подчиненное устройство создаст сообщение об ошибке и отправит его в качестве ответа.
Контроллеры можно настроить для связи в стандартных сетях MODBUS с использованием одного из двух режимов передачи: ASCII или RTU [1]. Пользователи выбирают желаемый режим вместе с параметрами связи последовательного порта (скорость передачи данных, режим четности и т. д.) во время настройки каждого контроллера.Режим и последовательные параметры должны быть одинаковыми для всех устройств в сети MODBUS. Теперь обсуждаются форматы массажа для двух режимов.
В режиме ASCII сообщения начинаются с символа двоеточия (:) (ASCII 3A hex) и заканчиваются возвратом каретки ( CRLF ) пара (ASCII 0x0D и 0x0A). Допустимые символы, передаваемые для всех остальных полей, — это шестнадцатеричные символы от 0 до 9, а затем от A до F. Сетевые устройства постоянно контролируют сетевую шину на наличие символа двоеточие. Когда он получен, каждое устройство декодирует следующее поле (поле адреса), чтобы узнать, является ли оно адресованным устройством. Интервалы до одной секунды могут проходить между символами в сообщении. Если интервал больше, принимающее устройство предполагает, что произошла ошибка.
В режиме RTU сообщения начинаются с интервала молчания не менее 3,5 символов. Это проще всего реализовать как число, кратное символьному времени при скорости передачи данных, используемой в сети (обозначенной как T1-T2-T3-T4 на рисунке ниже). Первое передаваемое поле — это адрес устройства. Допустимые символы, передаваемые для всех полей, — это шестнадцатеричные символы от 0 до 9, а затем от A до F. Сетевые устройства постоянно контролируют сетевую шину, в том числе в течение интервалов тишины. Когда получено первое поле (поле адреса), каждое устройство декодирует его, чтобы определить, является ли оно адресуемым устройством. После последнего переданного символа аналогичный интервал, равный как минимум 3,5 символам, отмечает конец сообщения. После этого интервала может начаться новое сообщение. Весь кадр сообщения должен передаваться как непрерывный поток. Если перед завершением кадра возникает интервал молчания продолжительностью более 1,5 символов, принимающее устройство сбрасывает незавершенное сообщение и предполагает, что следующий байт будет адресным полем нового сообщения. Точно так же, если новое сообщение начинается раньше, чем через 3,5 символа после предыдущего сообщения, принимающее устройство будет считать его продолжением предыдущего сообщения. Это приведет к ошибке, так как значение в последнем поле CRC не будет допустимым для комбинированных сообщений.
Основной целью проекта является картографирование магнитного поля внутри магнита (Магнита, имеющего форму полого цилиндра) [2,3,4,7]. В этой схеме для связи используется один компьютер в качестве ведущего терминала, а другой — в качестве ведомого терминала. Главный терминал на платформе MS Windows XP и содержит интерфейс оператора, разработанный с помощью Borland C (Var. 4.5). Подчиненный терминал на платформе MS Windows 98 фактически управляет механической системой и получает данные после декодирования команды, выдаваемой главным терминалом. Терминалы Master и Slave подключены к одноранговой последовательной шине через свои последовательные коммуникационные порты (COM-порты). Ведомый компьютер снова подключен к модулю преобразования напряжения в частоту, схеме считывания, выполненной в лабораторных условиях, и схеме управления двигателем через дополнительную плату ПК PCL 812. Для картирования магнитного поля мы использовали поисковую катушку (10 000 витков) в качестве датчика магнитного поля. Напряжение, индуцируемое в поисковой катушке, движущейся вдоль радиальной оси по срединной плоскости магнита, подается на модуль преобразователя напряжения в частоту. Этот модуль, в свою очередь, генерирует импульсы различной частоты в зависимости от выходного напряжения поисковой катушки. Импульсы, генерируемые модулем, затем подсчитываются с помощью счетчика PCL 812. Подсчет дает относительную меру магнитного поля в конкретной точке. Направление и движение двигателя поисковой катушки снова контролируются схемой ЦАП, усилителем мощности и реле, управляемыми той же дополнительной платой. Положение поисковой катушки определяется оптическим энкодером, закрепленным на валу приводного двигателя поисковой катушки. Оптический энкодер вырабатывает квадратурные импульсы по двум каналам, которые снова подсчитываются схемой считывания оптического энкодера и, следовательно, передаются на ПК-контроллер с помощью порта цифрового ввода PCL 812. Механическое устройство выполнено таким образом, что оптический энкодер генерирует 400 импульсов для хода 53 мм поисковой катушки. Выходные импульсы оптического энкодера снова используются для генерации аппаратного прерывания (IRQ 3), и при каждом 10-м прерывании энкодера считываются данные схемы и данные счетчика PCL 812, которые считываются и сохраняются в локальном буфере на ведомом терминале. Эти данные передаются на мастер-терминал по запросу.
В этом проекте реализован только режим ASCII протокола MODBUS. Режим RTU протокола MODBUS также может быть реализован в дальнейшем, поскольку режим RTU имеет преимущество перед режимом ASCII в методологии проверки ошибок. В режиме ASCII проверка ошибок выполняется методом LRC (проверка линейного избыточного кода), а в случае режима RTU проверка ошибок выполняется методом CRC (проверка циклическим избыточным кодом).В случае режима RTU синхронизация необходима для передачи данных между терминалами Master-Slave, это недостаток этого режима по сравнению с режимом ASCII. Тем не менее, реализация режима RTU протокола MODBUS сделает связь более жесткой, быстрой и безопасной для его основного метода кадрирования сообщений.
Встроенная электроника представляет собой соединение схем (процессоров или других интегральных схем) для создания симбиотической системы. Чтобы эти отдельные схемы могли обмениваться информацией, они должны использовать общий протокол связи. Для обмена данными определены сотни коммуникационных протоколов, и, как правило, каждый из них можно разделить на две категории: параллельный или последовательный.
Параллельное и последовательное
Параллельные интерфейсы передают несколько битов одновременно. Обычно им требуются шины данных — передача по восьми, шестнадцати и более проводам. Данные передаются огромными волнами из единиц и нулей.
Последовательные интерфейсы передают свои данные по одному биту за раз. Эти интерфейсы могут работать всего с одним проводом, обычно не более чем с четырьмя.
Думайте о двух интерфейсах как о потоке автомобилей: параллельный интерфейс будет больше чем 8-полосная мегамагистраль, а последовательный интерфейс больше похож на двухполосную проселочную дорогу. В течение определенного периода времени мега-шоссе может доставить больше людей к месту назначения, но двухполосная сельская дорога служит своей цели, и ее строительство обходится в несколько раз дешевле.
Параллельное взаимодействие, безусловно, имеет свои преимущества. Это быстро, просто и относительно легко реализовать. Но для этого требуется гораздо больше линий ввода/вывода (I/O). Если вам когда-либо приходилось переносить проект с базовой Arduino Uno на Mega, вы знаете, что линии ввода-вывода на микропроцессоре могут быть драгоценными и их мало. Поэтому мы часто выбираем последовательную связь, жертвуя потенциальной скоростью в пользу контактной недвижимости.
Асинхронный последовательный
За прошедшие годы были созданы десятки последовательных протоколов для удовлетворения конкретных потребностей встраиваемых систем. USB (универсальная последовательная шина) и Ethernet — это пара наиболее известных последовательных интерфейсов для вычислений. Другие очень распространенные последовательные интерфейсы включают SPI, I 2 C и последовательный стандарт, о котором мы сегодня поговорим. Каждый из этих последовательных интерфейсов можно разделить на две группы: синхронные или асинхронные.
Синхронный последовательный интерфейс всегда соединяет свои линии данных с тактовым сигналом, поэтому все устройства на синхронной последовательной шине используют общий тактовый сигнал. Это обеспечивает более простую и часто более быструю последовательную передачу, но также требует, по крайней мере, одного дополнительного провода между взаимодействующими устройствами. Примеры синхронных интерфейсов включают SPI и I 2 C.
Асинхронный означает, что данные передаются без поддержки внешнего тактового сигнала. Этот метод передачи идеально подходит для минимизации необходимых проводов и контактов ввода-вывода, но это означает, что нам нужно приложить дополнительные усилия для надежной передачи и получения данных. Последовательный протокол, который мы будем обсуждать в этом руководстве, является наиболее распространенной формой асинхронной передачи. На самом деле это настолько распространено, что когда большинство людей говорят «последовательный», они имеют в виду этот протокол (что вы, вероятно, заметите в этом руководстве).
Бестактовый последовательный протокол, который мы будем обсуждать в этом руководстве, широко используется во встроенной электронике. Если вы хотите добавить в свой проект модуль GPS, Bluetooth, XBee, ЖК-дисплеи с последовательным интерфейсом или многие другие внешние устройства, вам, вероятно, потребуется немного серийного фу.
Рекомендуемое чтение
Это руководство основано на нескольких концепциях электроники более низкого уровня, в том числе:
Двоичный
Двоичная система счисления в электронике и программировании. так что, должно быть, важно учиться. Но что такое двоичный код? Как это переводится в другие системы счисления, такие как десятичная?
Читайте также: