Контроллеры can с последовательной шиной

Контроллеры can с последовательной шиной

Сегодня я хочу познакомить вас с интересной микроконтроллерной платформой CANNY. Это обзорная статья в которой вы узнаете о технологии, а в последующих статьях я расскажу вам о работе с сообщениями CAN, интеграции CANNY c Arduino Mega Server и о тех возможностях, которые предоставляет эта связка.

Почему CANNY? От названия шины CAN, которая широко используется на транспорте и, в частности, во всех современных автомобилях в качестве бортовой сети. Итак, что же можно сделать, имея специализированный контроллер, подключённый к CAN шине вашего автомобиля?

Видео:MCP2515, контроллер CAN шины с интерфейсом SPIСкачать

MCP2515, контроллер CAN шины с интерфейсом SPI

Шина CAN

Образно говоря, шина CAN это нервная система вашего автомобиля. По ней передаётся вся информация о состоянии блоков и систем, а также управляющие команды, которые во многом определяют поведение автомобиля. Зажигание фар, открывание и закрывание дверей, управление проигрыванием музыки в салоне машины, срабатывание сигнализации и т. д. — всё это работает и управляется по этой шине.

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

Видео:Кан шина, что это? Поймет школьник! принцип работыСкачать

Кан шина, что это? Поймет школьник! принцип работы

Контроллеры CANNY

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

Флагманом линейки является контроллер CANNY 7, наиболее мощный и имеющий максимум возможностей. Большое количество памяти, мощные выходы, позволяющие напрямую управлять реле автомобиля, интеллектуальная система защиты от коротких замыканий, защита от бросков тока и напряжения в бортовой сети автомобиля — всё это делает этот контроллер отличным решением для воплощения любых ваших идей и проектов.

Кроме CANNY 7 в линейке контроллеров присутствует ещё несколько моделей, мы будем проводить свои эксперименты с более простой встраиваемой моделью CANNY 5 Nano. Она также поддерживает работу с CAN шиной, но при этом похожа на уже знакомую нам Arduino Nano.

Видео:CAN шина👏 Как это работаетСкачать

CAN шина👏 Как это работает

Визуальное программирование

Развитая поддержка шины CAN это не единственная особенность этих контроллеров, кроме этого CANNY имеют свою собственную среду программирования, CannyLab, но не «обычную», а визуальную, где весь процесс написания программ сводится к манипулированию готовыми структурными блоками, заданию их параметров и соединению входов и выходов этих блоков в определённой последовательности, в соответствии с алгоритмом решаемой задачи.

Хорошо это или плохо? На мой взгляд, это дело привычки. Мне, как человеку привыкшему к «традиционному» программированию, было непривычно манипулировать блоками, вместо написания строк кода. С другой стороны, существует множество приверженцев именно такого подхода к составлению алгоритмов и считается, что для инженеров и «не программистов» это наиболее простой и доступный метод программирования микроконтроллеров.

Мне, как минимум, было «прикольно» составлять программы таким образом и через некоторое время мне это стало даже нравиться. Возможно, что если продолжить этим заниматься, то через некоторое время уже написание кода покажется неудобным.

CannyLab является бесплатной средой разработки и вы можете свободно скачать её с сайта разработчиков, она также не требует специальной процедуры инсталляции — достаточно распаковать файл с архивом — и вы можете начинать работу.

Видео:Как проверить CAN шину Используем симулятор ElectudeСкачать

Как проверить CAN шину  Используем симулятор Electude

Подключение

Подключение CANNY 5 Nano к компьютеру мало чем отличается от подключения контроллеров Arduino. При наличии в системе драйвера Silicon Labs CP210x, либо после его установки из скаченного дистрибутива CannyLab, Windows создаёт виртуальный COM порт и CANNY готов к работе. В моём случае понадобилось ещё перезагрузить компьютер, но возможно это особенность моей системы.

Видео:лекция 403 CAN шина- введениеСкачать

лекция 403  CAN шина- введение

Практические примеры

Давайте на простых примерах разберём, как в CannyLab выполнять действия, привычные нам в Arduino IDE. Начнём с традиционного мигания светодиодом.

В контроллере CANNY 5 на выводе С4 (Channel 4) присутствует тестовый светодиод (аналог светодиода, находящегося на 13 выводе в Arduino). И его тоже можно использовать для индикации и экспериментов, чем мы и воспользуемся.

Что же нужно, чтобы помигать светодиодом в контроллере CANNY? Нужно сделать всего две вещи — сконфигурировать пин четвертого канала как выход и подать на этот выход сигнал с ШИМ генератора. Все эти действия мы уже не раз проделывали в Arduino IDE, посмотрим как это выглядит в CannyLab.

Итак, конфигурируем пин четвертого канала как выход

Настраиваем генератор ШИМ. Задаём период 500 миллисекунд, заполнение — 250 миллисекунд (то есть 50 %) и 1 (true) на входе генератора «Старт» и… всё! Больше ничего делать не нужно — программа готова, осталось только залить её в контроллер.

Видео:Как работает LIN шина автомобиля. K-Line L-Line шины данных. Лин шина автомобиля. Lin-bus networkСкачать

Как работает LIN шина автомобиля. K-Line L-Line шины данных. Лин шина автомобиля. Lin-bus network

Режим симуляции

Тут нужно сказать пару слов о процессе симуляции на компьютере работы контроллера и заливке разработанной программы в память «железного» контроллера.

Читайте также: Надувные шины для конечностей

Среда разработки CannyLab позволяет запускать и отлаживать программу, не записывая её в память контроллера. В режиме симуляции вы можете видеть результат работы программы прямо в реальном времени и даже вмешиваться в её работу.

Видео:Как управлять автомобилем через CAN-шину?Скачать

Как управлять автомобилем через CAN-шину?

Заливка в контроллер

Для работы контроллеров CANNY, перед заливкой программы (в терминологии разработчиков «диаграммы») нужно сначала залить операционную систему «Устройство/Системное ПО/Записать». Это нужно сделать только один раз, для этого нужно выбрать соответствующий вашему контроллеру файл с расширением .ccx.

После того, как программа написана и отлажена, её можно загрузить в ваш контроллер. Это делается просто — в меню выбираете пункт «Устройство/Диаграмма/Записать» и через несколько секунд программа оказывается записанной в контроллер.

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

Видео:Простая проверка CAN шины. Сканер не видит автомобиль через OBD2. Как правильно выбрать изоленту.Скачать

Простая проверка CAN шины. Сканер не видит автомобиль через OBD2. Как правильно выбрать изоленту.

Аналоговые входы

Для того, чтобы лучше понять принцип программирования контроллеров CANNY в среде разработке CannyLab, давайте ещё разберём пример работы с аналоговым входом в этой системе.

Мы будем отслеживать уровень напряжения на 10 пине контроллера и если он находится в диапазоне 2,5 В ± 20%, будем зажигать встроенный в плату светодиод.

Как и в предыдущем примере, конфигурируем 4-й пин как выход для того, чтобы иметь возможность управлять работой светодиода.

Включаем АЦП на 10-м канале.

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

Блок «Логическое И» довершает работу и со своего выхода управляет работой светодиода на плате.

Вот и всё. То, что мы привычно делали на Arduino, мы легко сделали в CannyLab. Осталось только освоиться в этой среде программирования и вы сможете легко и непринуждённо создавать свои проекты на этой платформе.

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

Видео:STM32 CAN шина. Часть 1. Настройка и странности HALСкачать

STM32 CAN шина. Часть 1. Настройка и странности HAL

Заключение по вводной статье цикла

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

Если вам нравится визуальное программирование в стиле CannyLab, то контроллеры CANNY могут стать для вас интересной альтернативой Arduino или работать в связке с контроллерами Arduino. Об этом мы поговорим во второй статье цикла, в которой я расскажу вам об интеграции контроллеров CANNY с системой Arduino Mega Server.

Напомню, что AMS теперь работает не только на платах Arduino, но и на беспроводных Wi-Fi модулях ESP8266 и именно о такой связке пойдёт речь в следующий раз.

И как обычно, оставайтесь с нами, будет интересно!

Видео:Экспресс диагностика CAN шины на автомобиле. №21Скачать

Экспресс диагностика CAN шины на автомобиле. №21

CAN или не CAN? Или зачем мне сеть микроконтроллеров?

Этот вопрос мне пришлось задать себе лет десять назад или больше. Работа, которую надо было сделать, заключалась в дарении второй жизни диспетчерскому щиту. Это такая штука во всю стену, состоящая из лампочек и выключателей с переключателями. Думаю, не ошибусь, предположив, что щиты стали делать с тех пор, как появились лампочки, поскольку выключатели к тому времени, наверняка, уже были известны. А тяга к прекрасному, вообще, пришла к людям из далекой древности.

Сейчас многие предпочтут щитам дисплейные панели. Но будут ли любители дисплеев в большинстве, зависит от многого, нам неведомого. Но сейчас речь не об этом.

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

Все так и было, куча проводов, уходящих из ящика к выключателям и лампочкам, только лампочки — маленькие. Видимо, внучки знаменитой лампочки Ильича.

И вот, помнится, глянул за окно, а там 21-й век. Стало быть надо все делать заново и по-другому. Вместо лампочек — экономичные светодиоды. Вместо проводов — проводки. Вместо одного ящика — много-много маленьких ящичков, контроллеров, стало быть.

Оказалось, что если каждый контроллер сможет обслуживать четыре светодиода и два переключателя то это будет выглядеть оптимальненько. В смысле, не так ужасающе. А если через все контроллеры будет проходить шина питания и информационная шина, всего четыре провода, то появится некое изящество. Оказалось также, что контроллеров потребуется 104 штуки. По-хорошему, тут надо было бы поставить и решить задачу коммивояжера. И тогда, возможно, контроллеров потратили бы меньше. Но было не до хорошего.

Читайте также: Люк по can шине

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

Controller Area Network, как сказали бы иностранцы, на мой взгляд, как техническое решение, возникло из желания сделать что-то, наконец, хорошо. Не скрою, все прелести результатов работы инженеров почувствуешь не сразу, как осилишь два тома стандарта, а значительно позже. Когда пообщаешься с очевидцами, опросишь свидетелей. Сейчас томов прибавилось, но, может быть, можно сразу начинать с третьего, поскольку, теперь оно называется CAN_FD. Однако, позвольте продолжить.

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

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

CAN можно установить там, где раньше работал RS485 на витой паре. Витая пара — это не непременное условие, просто удобно сравнивать. Используя витую пару, по CAN, как и по RS485, можно передать сообщения от управляющего контроллера к подчиненному и получить ответ. Сходство бросается в глаза, но, давайте лучше остановимся на отличиях. Кое-какие из отличий могут нести знак минус для некоторых из читателей. Но им бы я посоветовал не огорчаться, а вспомнить закон Ломоносова.

Благодаря синхронной организации протокола разрешение коллизий на шине реализовано аппаратно, на лету, так сказать. Ниже отмечено, к чему это приводит и что это дает непоседливому инженеру.

Можно получить сообщение и без запроса.
Не надо ждать, когда ответ будет готов, можно спросить в это время еще кого-то.
Подчиненный контроллер тоже может спросить и получить ответ.
Из-за синхронной работы длина шины CAN обратно пропорциональна скорости передачи или типа того.
Максимальная скорость составляет 1 Мбод (10 — на подходе).
То, что сообщение не исказилось при передаче отправляющий знает сразу после последнего бита. Точнее, это знают все на шине.
Если сообщение исказилось для одного, попытка не засчитывается всеми.
Если сообщение удалось передать в шину, то абонент не получит его лишь при условии, что сломался.
Количество контроллеров на шине не должно превышать 127.

Сообщения ограничены по длине. Они состоят из идентификатора, указателя длины в байтах и блока данных, именно с таким количеством байт, как указано. Есть еще несколько служебных битов, но о них пока помолчим, поскольку сервис должен быть ненавязчивым. Идентификатор может быть размером 11 или 29 бит. Блок данных может содержать от 0 до 8 байт (64 — на подходе).

Для конкретики приведу немного цифр. Если хочется работать на скорости 1Мбод, то длина шины не должна быть больше 35 метров (некоторые предпочитают 40, то есть, погорячее). Если необходимо передать что-то на расстояние до 8 км, то скорость не должна превышать 5 Кбод. Кстати, читатель вправе спросить, почему килобод, а не килобит? Потому, что не все боды становятся битами. Как-то так.

Как можно распорядиться всеми этими совсем не секретными ингредиентами? Те, кто во всем видят игру в кубики, сразу вспомнят, что есть такая замечательная вещь, как CANopen и еще много красивых сочетаний и аббревиатур и нечего изобретать велосипед. Таким мне часто хочется ответить: «Разве не похожа на велосипед та яичница из двух яиц, которую многие готовят себе на завтрак? Почему бы не сходить в общепит и не взять себе омлет?». Но я лучше промолчу и продолжу, не отвлекаясь на выкрики из зала.

В те времена, когда 29 битовый идентификатора еще не успели придумать, существовал только 11 битовый. Одни его стали использовать, чтобы запихнуть туда название (номер) нужного вида данных. Другие использовали как адрес контроллера, к которому обращаются. И то и другое имело смысл. Например, можно спросить так:

  • А подай-ка нам, милейший, шато тринадцатого года в литровой бумажной упаковке.

Заверните мне, пожалуйста, то, что спрятано у вас на самой нижней полке справа.
Кстати, в CAN может сработать и такая конструкция:

Всем лежать! А ты быстро складывай все с полок мне в сумку.
Но этой конструкцией часто не попользуешься, поскольку после придется какое-то время ждать.
Ждать пока все ответы не выстроятся один за другим и не поступят в распоряжение запрашивающего контроллера. Мы уже ушли от кино, если что.
Меня в моем случае устроил бы вариант идентификатора в качестве адреса. Из 11 бит требовалось 7 и еще 4 оставалось на то, чтобы сделать одни сообщения более срочными по сравнению с другими, а также пометить часть контроллеров как главные.
Некоторое неудобство перекочевало сюда из RS485, а именно, адреса надо было устанавливать вручную на каждом контроллере. Затем проверять и переустанавливать. И, возможно, вернуться к предыдущему шагу и повторить.
К счастью, к тому времени уже существовали два обстоятельства.

Читайте также: Шины для нивы 4х4 лето

Первое — уже появился 29 битный идентификатор. А второе то, что многие производители микроконтроллеров стали считать хорошим тоном условие, чтобы каждый чип имел свой уникальный и довольно длинный номер.

Теперь в длинном идентификаторе можно было 24 бита смело отвести для уникального адреса. Еще 5 оставалось, для заботы о том, чтобы поезда различались срочностью, направлением (туда, обратно), наличием вагона-ресторана и вагонов с повышенным комфортом.

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

Еще немного про адресацию. Уникальный номер чипа, как правило, занимает количество битов значительно превышающее 24, например, 96 у STM32FXXX. Поэтому необходимо как-то получить 24 из 96. Я выбрал операцию XOR. Вы можете выбрать что-то другое, но небольшая проблема останется. Это совпадения адресов после редуцирования.

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

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

Теперь останется подсчитать сколько получено ответов и сколько их должно быть. Если эти два числа совпадают, значит все в порядке. Если ответов меньше чем контроллеров, то налицо совпадение адресов и наладчикам есть работа. А если ответов больше, нежели контроллеров, то надо подумать о диссертации, поскольку, вы — на пороге открытия.

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

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

Вернемся к кодированию идентификатора.

Для целей адресации в расширенном идентификаторе отведено 24 бита, а в стандартном – шесть. Адрес со значением 0x000000 является широковещательным для расширенного идентификатора. Для стандартного идентификатора нулевой адрес (6 его бит) также считается широковещательным. Пять начальных (старших) битов в длинном и коротком идентификаторе, называются заголовком, влияют на смысл сообщения и обозначаются буквами NVADR:

Контроллеры can с последовательной шиной

Конечно, для диспетчерского щита потребовалось реализовать только часть этой схемы. В первом проекте со щитом (или на щите, как правильно?) использовались чипы Cortex от NXP, а в следующих проектах (были и такие) уже применялись M0 от STMicroelectronics.

Пару слов об использовании коротких идентификаторов. Те шесть бит, которые отводятся для адресации, адресуют не контроллер, а группу. Эта группа при старте сначала у всех нулевая. Далее производится конфигурирование агентов, после которого часть из них или все становятся принадлежащими своей группе. Теперь запросом к группе, мы получаем ответы тех агентов, которые мы собрали в эту группу.

Теперь, немного о том, что добавляется, если по-разному трактовать сообщения с различной длиной данных. Например, запрос с нулевой длиной хорошо помогает при отладке, как уже упоминалось выше. Запрос с длиной 3 обслуживает пространство байтовых переменных размером 16384. Запрос с длиной 4 делает то же самое, но предназначен для агента-шлюза, который обслуживает CAN шину второго уровня. Эта шина может состоять из одного-двух агентов, зато удаленных на пару километров.

Запрос с длиной 5 и 6, аналогично, предназначены для пространства двухбайтовых переменных размером 4194304. Два бита используются не для адресации. Один бит управляет записью-чтением. Другой сигнализирует об ошибке.

Далее 7 и 8 обслуживают четырех байтовые слова. Их тоже 4194304.

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

Контроллеры can с последовательной шиной

Соединяются контроллеры плоским шлейфом на 6 жил. На питание идут сдвоенные. Микросхема о двадцати ногах — это STM32F042.

С обратной стороны присутствует MAX3051, формирователь CAN в корпусе SOT23-8.
Ну вот, мама кушать зовет.

  • Свежие записи
    • Нужно ли менять пружины при замене амортизаторов
    • Скрипят амортизаторы на машине что делать
    • Из чего состоит стойка амортизатора передняя
    • Чем стянуть пружину амортизатора без стяжек
    • Для чего нужны амортизаторы в автомобиле


    🎦 Видео

    Подробно про CAN шинуСкачать

    Подробно про CAN шину

    CAN шина на осциллографе FINIRSI ADS1013DСкачать

    CAN шина на осциллографе FINIRSI ADS1013D

    Универсальная плата CAN шиныСкачать

    Универсальная плата CAN шины

    Поиск уровня топлива в CAN шине Toyota Camry 2017Скачать

    Поиск уровня топлива в CAN шине Toyota Camry 2017

    STM32 настройка CANСкачать

    STM32 настройка CAN

    Arduino CAN Monitor (простейший монитор шины CAN)Скачать

    Arduino CAN Monitor (простейший монитор шины CAN)

    Вебинар: Как найти любые данные из CAN-шины любого автомобиля?Скачать

    Вебинар: Как найти любые данные из CAN-шины любого автомобиля?

    CAN Шина. Что такое протокол КАН. Часть 1Скачать

    CAN Шина. Что такое протокол КАН. Часть 1

    CAN-Hacker Как искать пакеты в CAN шине на примере Toyota Prius-C AquaСкачать

    CAN-Hacker Как искать пакеты в CAN шине на примере Toyota Prius-C Aqua

    03. Основы устройства компьютера. Память и шина. [Универсальный программист]Скачать

    03. Основы устройства компьютера. Память и шина. [Универсальный программист]
Поделиться или сохранить к себе:
Технарь знаток