Оглавление:

Простое руководство по CANBUS: 8 шагов
Простое руководство по CANBUS: 8 шагов

Видео: Простое руководство по CANBUS: 8 шагов

Видео: Простое руководство по CANBUS: 8 шагов
Видео: Простая проверка CAN шины. Сканер не видит автомобиль через OBD2. Как правильно выбрать изоленту. 2024, Июль
Anonim
Простое руководство по CANBUS
Простое руководство по CANBUS

Я изучаю CAN в течение трех недель, и теперь я заполнил несколько приложений, чтобы подтвердить свои результаты обучения. В этом руководстве вы узнаете, как использовать Arduino для реализации связи CANBUS. Если у вас есть предложения, оставьте сообщение.

Запасы:

Аппаратное обеспечение:

  • Maduino Zero CANBUS
  • Модуль температуры и влажности DHT11
  • 1,3 дюйма, I2C OLED, 128x64, синий
  • Кабель DB9 - DB9 (розетка - розетка)
  • Dupont Line

Программное обеспечение:

IDE Arduino

Шаг 1. Что такое CANBUS

Что такое CANBUS
Что такое CANBUS
Что такое CANBUS
Что такое CANBUS

О CAN

CAN (Controller Area Network) - это сеть последовательной связи, которая может реализовать распределенное управление в реальном времени. Он разработан для автомобильной промышленности для замены сложного жгута проводов двухпроводной шиной.

Протокол CAN определяет уровень канала передачи данных и часть физического уровня в модели OSI.

Протокол CAN стандартизирован ISO с ISO11898 и ISO11519. ISO11898 - это стандарт высокоскоростной связи CAN со скоростью 125 кбит / с-1 Мбит / с. ISO11519 - это стандарт низкоскоростной связи CAN со скоростью менее 125 кбит / с.

Здесь мы сосредоточимся на высокоскоростной CAN.

ISO-11898 описывает, как информация передается между устройствами в сети, и соответствует модели взаимодействия открытых систем (OSI), которая определяется в терминах уровней. Фактическая связь между устройствами, соединенными физической средой, определяется физическим уровнем модели

  • Каждый CAN-блок, подключенный к шине, можно назвать узлом. Все блоки CAN подключаются к шине, оконцованной на каждом конце резисторами 120 Ом, чтобы сформировать сеть. Шина состоит из линий CAN_H и CAN_L. Контроллер CAN определяет уровень шины на основе разницы уровней мощности на обоих проводах. Уровни автобуса делятся на доминирующий и рецессивный уровни, которые должны быть одним из них. Отправитель отправляет сообщение получателю, внося изменения на уровне шины. Когда на шине выполняется логическая линия «и», доминирующим уровнем является «0», а рецессивным уровнем «1».
  • В доминирующем состоянии напряжение CAN_H составляет около 3,5 В, а напряжение CAN_L составляет около 1,5 В. В рецессивном состоянии напряжение на обеих линиях составляет около 2,5 В.
  • Сигнал является дифференциальным, поэтому CAN отличается устойчивостью к помехам и отказоустойчивостью. Сбалансированный дифференциальный сигнал снижает шумовую связь и обеспечивает высокую скорость передачи сигналов по кабелю витой пары. Ток в каждой сигнальной линии одинаков, но в противоположном направлении, что приводит к эффекту подавления поля, что является ключом к низкому уровню шума. Использование сбалансированных дифференциальных приемников и витой пары улучшает подавление синфазных сигналов и высокую помехоустойчивость шины CAN.

CAN трансивер

CAN-трансивер отвечает за преобразование логического уровня в физический сигнал. Преобразуйте логический сигнал на дифференциальный уровень или физический сигнал на логический уровень.

CAN контроллер

Контроллер CAN является основным компонентом CAN, который реализует все функции уровня канала передачи данных в протоколе CAN и может автоматически разрешать протокол CAN.

MCU

MCU отвечает за управление функциональной схемой и контроллером CAN. Например, параметры контроллера CAN инициализируются при запуске узла, кадр CAN считывается и отправляется через контроллер CAN и т. Д.

Шаг 2: о коммуникациях CAN

Когда шина простаивает, все узлы могут начать отправлять сообщения (управление с несколькими мастерами). Узел, который первым обращается к шине, получает право на отправку (режим CSMA / CA). Когда несколько узлов начинают отправку одновременно, узел, который отправляет сообщение с идентификатором высокого приоритета, получает право на отправку.

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

Шина CAN - это шина широковещательного типа. Это означает, что все узлы могут «слышать» все передачи. все узлы неизменно принимают весь трафик. Аппаратное обеспечение CAN обеспечивает локальную фильтрацию, так что каждый узел может реагировать только на интересные сообщения.

Шаг 3: Рамки

Кадры
Кадры

Устройства CAN отправляют данные по сети CAN в пакетах, называемых кадрами. CAN имеет четыре типа кадров:

  • Фрейм данных: фрейм, содержащий данные узла для передачи.
  • Удаленный кадр: кадр, запрашивающий передачу определенного идентификатора.
  • Кадр ошибки: кадр, переданный любым узлом, обнаружившим ошибку.
  • Кадр перегрузки: кадр для вставки задержки между данными или удаленным кадром

Фрейм данных

Есть два типа фреймов данных: стандартные и расширенные.

Значение битовых полей на рисунке:

  • SOF - бит одиночного доминирующего начала кадра (SOF) отмечает начало сообщения и используется для синхронизации узлов на шине после простоя.
  • Идентификатор - Стандартный 11-битный идентификатор CAN устанавливает приоритет сообщения. Чем ниже двоичное значение, тем выше его приоритет.
  • RTR - бит одиночного запроса удаленной передачи (RTR).
  • IDE - доминирующий бит расширения единого идентификатора (IDE) означает, что передается стандартный идентификатор CAN без расширения.
  • R0 - зарезервированный бит (для возможного использования в будущих поправках к стандарту).
  • DLC - 4-битный код длины данных (DLC) содержит количество байтов передаваемых данных.
  • Данные - может быть передано до 64 бит данных приложения.
  • CRC - 16-битный (15 бит плюс разделитель) циклический избыточный контроль (CRC) содержит контрольную сумму (количество переданных битов) данных предыдущего приложения для обнаружения ошибок.
  • ACK – ACK - это 2 бита, один - бит подтверждения, а второй - разделитель.
  • EOF - это 7-битное поле конца кадра (EOF) отмечает конец кадра CAN (сообщения) и отключает заполнение битов, указывая на ошибку заполнения при доминировании. Когда во время нормальной работы последовательно появляются 5 битов одного логического уровня, в данные вставляется бит противоположного логического уровня.
  • IFS - это 7-битное межкадровое пространство (IFS) содержит время, необходимое контроллеру для перемещения правильно принятого кадра в его правильную позицию в области буфера сообщений.

Арбитраж

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

Шаг 4: скорость и расстояние

Скорость и расстояние
Скорость и расстояние

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

Расстояние связи обратно пропорционально скорости связи, и чем дальше расстояние связи, тем меньше скорость связи. Более длинное расстояние может составлять 1 км и более, но скорость меньше 40 км / с.

Шаг 5: Оборудование

Аппаратное обеспечение
Аппаратное обеспечение

Модуль CAN-BUS Maduino Zero - это инструмент, разработанный Makerfabs для связи по CANbus, основанный на Arduino, с контроллером CAN и трансивером CAN, для создания готового к использованию порта CAN-шины.

  • MCP2515 - это автономный контроллер CAN, который реализует спецификацию CAN. Он способен передавать и принимать как стандартные, так и расширенные данные и удаленные кадры.
  • MAX3051 взаимодействует между контроллером протокола CAN и физическими проводами шин в сети контроллеров (CAN). MAX3051 обеспечивает возможность дифференциальной передачи на шину и возможность дифференциального приема на контроллер CAN.

Шаг 6: Подключение

Связь
Связь

Подключите модуль DHT11 к модулю CAN-BUS Maduino Zero с помощью проводов, которые будут использоваться в качестве инструмента для поддержки связи CAN. Аналогичным образом подключите дисплей к модулю, чтобы получать данные и отображать их.

Связь между Maduino Zero CANBUS и DHT11 :

Maduino Zero CANBUS - DHT11

3v3 ------ VCC GND ------ GND D10 ------ ДАННЫЕ

Связь между Maduino Zero CANBUS и OLED :

Maduino Zero CANBUS - OLED-дисплей

3v3 ------ VCC GND ------ GND SCL ------ SCL SDA ------ SDA

Используйте кабель DB9 для соединения двух модулей Maduino Zero CANBUS.

Шаг 7: Код

MAX3051 завершает преобразование дифференциальных уровней в логические сигналы. MCP2515 выполняет такие функции CAN, как кодирование и декодирование данных. MCU нужно только инициализировать контроллер и отправлять и получать данные.

  • Github:
  • После установки Arduino нет пакета для поддержки платы (Arduino zero), который необходимо установить.
  • Выберите Tools -> Board -> Board Manager, найдите «Arduino zero» и установите «Arduino SAMD Boards».
  • Выберите Инструменты -> Плата -> Arduino Zero (собственный порт USB), выберите Инструменты -> Порт -> com…
  • После получения программы с GitHub необходимо убедиться, что все файлы находятся в каталоге проекта, который содержит файлы библиотеки, поддерживающие CANBUS.
  • Установите библиотеку датчиков DHT от Adafruit, которая используется для управления DHT11 для измерения температуры и влажности.
  • Используйте разные адреса для отправки температуры и влажности отдельно в коде Test_DHT11.ino.

CAN.sendMsgBuf (0x10, 0, stmp1.length (), stmp_send1);

задержка (500); CAN.sendMsgBuf (0x11, 0, stmp2.length (), stmp_send2); задержка (500);

«0x10» означает идентификатор сообщения, «0» означает стандартный кадр, «stmp1.length ()» означает длину сообщения, «stmp_send1» - отправленные данные.

  • В коде Test_OLED.ino все сообщения на CANBUS принимаются по запросу, а необходимая информация отображается на OLED-экране.
  • Загрузите программу Maduino-CANbus-RS485 / Test_DHT11_OLED / Test_DHT11 / Test_DHT11.ino в модуль, подключенный к датчику, и загрузите программу Maduino-CANbus RS485 / Test_DHT11_OLED / Test_OLED / Test_OLED.ino в другой модуль, подключенный к OLED.

Шаг 8: Показать

Показать
Показать
Показать
Показать

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

Рекомендуемые: