Расшифровка шин: ТрансТехСервис (ТТС): автосалоны в Казани, Ижевске, Чебоксарах и в других городах

Как расшифровать сообщения CAN BUS

Молье Тудор Михай

Молье Тудор Михай

Технический координатор по ирригации в IPSO Agricultură

Опубликовано 16 мая 2020 г.

+ Подписаться


Какая связь между инженерами-механиками и CAN BUS?

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

Сегодня в сельском хозяйстве и не только многие машины управляются электронными системами управления (Например: шина CAN), на мой взгляд, инженер-механик должен понимать, как управляются эти машины, недостаточно иметь только механические знания.

Назначение

В этой статье я хочу показать вам, как расшифровывать сообщения шины CAN, точнее, я хочу показать вам, как преобразовать сообщение шины CAN в удобочитаемый параметр:

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

Что такое CAN BUS?

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

Шина CAN состоит из двух проводов: CAN High и CAN Low, которые скручены вместе, чтобы уменьшить возможные электромагнитные помехи или электрические шумы, в то же время требуются два терминатора для уменьшения ошибок между блоками управления. Иногда эти два терминатора могут быть интегрированы в структуру контроллера, чтобы в сети не было дополнительного резистора. Когда шина CAN находится в рецессивном режиме, оба этих провода имеют 2,5 В, когда сеть находится в доминирующем режиме, высокое напряжение CAN достигает 3,75 В, а низкое CAN падает до 1,25 В.

Как декодировать данные шины CAN?

Чтобы понять, как работает эта система, нам нужно взять реальный пример, в связи с моей реальной профессией я возьму трактор John Deere , точнее 5125 R 2019 года выпуска .

В данном случае система шины CAN имеет скорость 500 кбит/с, этот параметр очень важно знать при использовании устройства «Sniffer» шины CAN. В качестве примера возьму параметр оборотов двигателя, так как этот параметр интересует всех, кто эксплуатирует данный трактор.

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

, аналоговый сигнал создается магнитным датчиком, который считывает скорость тормозного колеса, установленного на коленчатом валу двигателя. Частота вращения двигателя рассчитана на минимальный угол поворота коленчатого вала 720 градусов, разделенный на количество цилиндров, в данном случае трактор оснащен двигателем объемом 4,5 л, который имеет 4 цилиндра.

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

После некоторого прослушивания шины CAN и после консультации с протоколом SAE J1939 мы находим идентификатор сообщения, который содержит параметр скорости двигателя, в данном случае это 0CF00400 .

Для этого идентификатора PGN (номер группы параметров) это F004 в шестнадцатеричном формате и 61444 в формате DEC, в SAE J1939 эти PGN можно найти только в десятичном формате, поэтому их обязательно преобразовывать каждый раз. Данные о частоте вращения двигателя задаются четвертым и пятым байтами [1]. В данном случае у нас есть C6 и 26, оба в шестнадцатеричном формате.

Чтобы получить RPM, необходимо объединить эти два байта, но в правиле с прямым порядком байтов [2] наименее значащий байт должен быть первым. Как видите, C6 (HEX) = 19.8 (DEC) и 26 (HEX) = 38 (DEC), так что очевидно, какой байт первый. Конечно, когда упорядочивает с обратным порядком байтов, сначала применяется самый старший байт. Очень важно не добавлять байты вместо конкатенации байтов, результат будет другим. После конкатенации получаем 26C6 (HEX) это 9926 (DEC), после этой операции обязательно умножить на 0.125 и новый результат будет 1240 RPM. Для получения дополнительной информации читайте о SPN (номер подозрительного параметра) 190 в SAE J1939 — 17 . SPN 190 может давать информацию о частоте вращения двигателя в диапазоне от 0 до 8 031,875 об/мин [1].

На изображении выше вы можете видеть, как изменялась частота вращения двигателя во время прослушивания CAN-шины, этот SPN отправлялся каждые сто миллисекунд, в то же время отправлялись другие параметры, такие как: байт 2 — требуемый крутящий момент двигателя или байт 3 — Фактический крутящий момент двигателя в процентах. На изображении ниже вы можете видеть, как это сообщение: OCF00400 F1 FF A9 C6 26 FF FF FF выглядит при анализе логическим анализатором.

Когда вертикальная линия находится вверху, сигнал шины CAN находится в доминирующем положении и значение бита равно 0, а когда вертикальная линия находится вниз, сигнал шины CAN находится в рецессивном положении и значение бита равно 1, например: FF байт состоит из 11111111 рецессивных битов.


Ресурсы:

[1] — SAE J1939

[2] — https://en.wikipedia.org/wiki/Endianness

[3] — https://support.squarell.com/index.php?/Knowledgebase/Article/View/94/7/can-high—can-low

[4] — https://www . tradus.com/ro/search/ferma-c50/tractoare-t51/tractors-s4243/marca-john-deere/

Диагностика шины CAN и декодирование серийного номера Вопросы и ответы

Вопрос 1:

«Каково пороговое значение напряжения CAN? Или, другими словами, при каком напряжении узел CAN решает, является ли сигнал высоким или низким?»

Когда мы декодируем физический уровень CAN (используя математику CAN Hi — CAN Lo), мы устанавливаем пороговое значение напряжения (точка пересечения) на уровне 1 В, поскольку оно находится посередине между 0 и 2 В. Подробнее об этом можно прочитать ниже. Часть Школьного бонусного класса Scope.

С узлами CAN все не так просто, так как нет четко определенного значения.

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

Реальный мир

Используя в качестве примера 0–2 В, узел CAN выберет центральную точку (1 В) в качестве порогового напряжения или точки пересечения, чтобы определить изменение состояния шины с рецессивного на доминантное.

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

Подумайте об окружающей среде типичной автомобильной шины CAN, которая подвержена шуму, проблемам с подключением, ограничениям по прокладке жгутов, длине проводки и различным условиям эксплуатации. (Здесь мои мысли обращаются к сельскохозяйственным транспортным средствам.) Можем ли мы когда-нибудь получить идеальную прямоугольную волну в диапазоне 0–2 В с центральной точкой пересечения 1 В?

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

Отличное объяснение гистерезиса и его влияния на точки пересечения можно найти на странице 157 Руководства пользователя PicoScope 6. Хотя это объяснение применимо к настройке триггера в PicoScope, контроллер CAN выполняет аналогичное упражнение вокруг расчетной средней точки нашего коммутируемого напряжения на шине — переход от рецессивного к доминантному уровню напряжения.

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

Дрейф точки пересечения

Вы можете найти захват выше и соответствующую информацию в следующей теме форума.

Как мы можем гарантировать доставку идеальной, бесшумной, прямоугольной волны с фиксированным пересечением для декодирования CAN-контроллером?

Я думаю, что никогда, но Bosch уже подумал об этом

Вопрос 2:

 «Если Pico декодирует сообщение CAN, как мы можем гарантировать, что автомобильные контроллеры будут делать то же самое? Или, другими словами, допустимые диапазоны напряжения в узлах могут отличаться от допустимых диапазонов, установленных в программном обеспечении Pico?»

Это отличный вопрос, поскольку мы никогда не можем предположить, что все контроллеры CAN декодировали правильно только потому, что PicoScope успешно декодировал.

PicoScope будет декодировать данные CAN на основе пороговых напряжений, выбранных во время настройки декодирования (которые могут отсутствовать на всей шине CAN).

Мы предполагаем, что все контроллеры CAN получают одинаковые уровни напряжения от шины CAN на свои соответствующие клеммы, но на самом деле это не так. В ответвленном проводе CAN к одному ЭБУ/узлу CAN может существовать неисправность, из-за которой этот узел не может декодировать, в то время как остальные узлы декодируют успешно (включая PicoScope).

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

В таком сценарии, когда один узел CAN не может декодировать из-за резкого изменения напряжения на шине CAN, у нас есть несколько возможных сценариев.

  1. Последовательные данные сообщают о потере связи с узлом CAN, который не может декодировать данные шины CAN
  2. Несколько узлов CAN сообщают о потере связи с одним конкретным узлом CAN (указывает пальцем).
  3. Серийный список «Проверка шины данных» «Узлы на линии» показывает один отсутствующий узел
  4. Декодированные данные, отображаемые в PicoScope, могут содержать несколько рецессивных битов в полях RTR, ACK или ошибки CRC
  5. Использование выделенного декодера/регистратора CAN также позволит выявить полевые ошибки, упомянутые в пункте 4, но декодированные на силиконовом уровне, а не на физическом уровне, как в PicoScope.


Мы должны помнить, что PicoScope — это не специальный декодер/регистратор CAN, а осциллограф с ограниченными функциями декодера/регистратора. Декодирование данных CAN на основе уровней напряжения, захваченных в одной точке измерения на шине CAN (физический уровень), потенциально может быть неполным, поскольку уровни напряжения могут быть неодинаковыми по всей шине CAN.

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

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

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

С учетом сказанного, если на силиконовом уровне будут отображаться ошибки (через ваш регистратор CAN), нам потребуется проверить физический уровень с помощью PicoScope либо на одном ошибочном узле (на наличие ошибок декодирования одного узла), либо на всей шине, если несколько узлов сообщения об ошибках декодирования.

Вопрос 3:

Проверка CAN с активным окончанием.

Это была функция, о которой я не знал, пока вопрос не был поднят во время прямой трансляции.
После некоторого продолжительного чтения становится совершенно понятным, почему активная терминация шины CAN будет использоваться в автомобильных сетях. Если мы вернемся к тому, почему необходимо пассивное согласование (постоянный резистор/местоположение), то активное согласование имеет смысл.

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

Ограничения пассивного завершения
Как правило, пассивное окончание устанавливается на каждом конце шины CAN, что может быть затруднительно с точки зрения производителя (как технический специалист, попробуйте найти «настоящие» концы шины CAN)

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

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

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

Активное завершение позволяет использовать несколько конфигураций транспортных средств как во время, так и после производства (имеется в виду преобразование транспортных средств).

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

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

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

Эта ссылка поможет вам познакомиться с Active Termination и приведет вас к другим источникам информации.

Итак, мысли теперь обращаются к тому, «как тестировать такие сети?»

С этого момента я высказал свои мысли о тестировании таких сетей, поскольку я еще не нашел ни одного транспортного средства, использующего эту технологию. (Я уверен, что они есть.)

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

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

Доступ к точным техническим данным и обучение будут иметь первостепенное значение, поскольку знание — это сила (особенно знание продукта).

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

Будет очень интересно зафиксировать влияние на сообщения CAN при переходе от одного согласующего резистора к другому, так как я уверен, что это будет видно! (Это само по себе будет ценным диагностическим свидетельством функциональности.)

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

Вопрос 4


В сетях FlexRay используются согласующие резисторы?

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

Типичное значение согласующего резистора находится в диапазоне от 80 до 110 Ом, поэтому необходимо обращаться к соответствующим техническим данным.

Читая руководство BMW, их подход к измерению согласующих резисторов в сетях FlexRay сопровождается предупреждением о неправильном толковании!

Беспокойство связано с различными вариантами подключения FlexRay, которые могут привести к неправильной интерпретации измеренного значения сопротивления. На данном этапе я могу только предположить, что использование нескольких согласующих резисторов может привести к различным значениям в зависимости от вашей точки измерения на шине. Полагаю, мы тоже не можем на 100% полагаться на измерения сопротивления?

Опять же, имея в виду BMW (F31), они используют различные конфигурации сетей FlexRay на одном и том же автомобиле. Например, от модуля шлюза (ZGM) до блока переключателей на рулевой колонке (SZL) представляет собой единую двухточечную шину с согласующими резисторами в обоих модулях.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *