Работа с CAN

 

Порядок работы с CAN анализатором программы CARBUS Analyzer

Выбор и соединение с интерфейсом 

В верхнем меню программы CARBUS Analyzer выбрать пункт Settings – > Device settings

В открывшимся окне, в выпадающем списке Device type выбрать тип Вашего интерфейса. В выпадающем списке Device mode выбрать режим работы CAN.

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

 

Настройка скорости работы каналов CAN

Настройка скоростей каналов CAN осуществляется на вкладках Chanel 1: CAN и Chanel 2.
Доступны как предустановленные скорости так и возможность пользовательской настройки.
Выбор предустановленных скоростей осуществляется простым выбором нужной скорости из выпадающего списка Channel baudrate.

Пользовательская скорость задается выбором позиции  Custom baudrate в выпадающем списке Channel baudrate

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

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

В этом случае необходимо установить флаг Low accuracy  и CARBUS Analyzer настроит скорость канала CAN максимально близко к введенному значению. Для того чтобы узнать расчитанное приближенное значение необходимо нажать кнопку “?”

После настройки скоростей CAN нажимаем кнопку ОК, настройки будут переданы в интерфейс и меню Settings  закроется.

После настройки CAN адаптера и CAN каналов в верхнем меню нажать Connect

 

 

Прием пакетов

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

 

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

 

Передача пакетов

Для передачи пакетов в окне Transmit нажмите кнопку Add и сформируйте необходимый пакет. Вы можете выбрать канал передачи, тип ID 11 или 29 бит и период следования пакета при нажатии кнопки Run. Для однократной отправки нажмите Shot. Кроме того, если щелкнуть правой кнопкой мыши по окну Transmit – Вы можете выполнить групповые операции – Run All и Stop All, а так же сохранить и загрузить передаваемые пакеты в файл.
Кнопкой Shot осуществляется однократная отправка выбранного пакета.

 

Триггеры для автоматической передачи пакетов.

Для автоматической передачи можно настроить триггер для каждого сообщения. В этом случае передача начнется лишь в том случае – если будет принят заданный в настройках триггера пакет. На скриншоте выше триггер настроен следующим образом: Если CAN канал #2 примет пакет с ID=0x123, DLC=8 и массивом данных:
12 34 56 78 12 34 56 78,  то автоматически будет передан пакет с ID=0x321, DLC=8
и массивом данных: 87 65 43 21 87 65 43 21. В данном примере каналы 1 и 2 были объединены физически для наглядности, поэтому автоматически отправленный пакет через канал #2 мы видим принятым в канале #1. Активация триггера происходит при нажатии кнопки RUN для выделенного пакета.

 

Битовые поля

Принимаемые пакеты можно представлять в виде битового поля, что удобно, например, при поиске бинарных сигналов, таких как: открытые\закрытые двери, включены\выключены фары, и т. д.
Для представления пакета в виде битового поля необходимо кликнуть правой кнопкой мыши по интересующему пакету и в появившемся контекстном меню кликнуть по       View message bit-map

После чего появится окно с битовым полем выбранного пакета

 

Фильтры пакетов

Программное обеспечение CARBUS Analyzer позволяет работать как с аппаратными фильтрами CAN пакетов, так и с программным фильтром на заданный диапазон ID.
Отличие аппаратных фильтров заключается в том, что они работают непосредственно в CAN контроллере интерфейса и не влияют на быстродействие программы и прошивки.
Программный фильтр работает в самой программе CARBUS Analyzer поэтому в этом случае программа получает от интерфейса весь поток данных с CAN шины и если этот поток плотный, то это может сказаться на быстродействии. Но при этом настройка программного фильтра намного проще., необходимо только задать диапазон ID, которые необходимо принимать.

Аппаратные CAN фильтры имеют приоритет над программным фильтром!

Аппаратные фильтры находятся на вкладке Hardware таблицы фильтров. Программный фильтр на диапазон ID находится на вкладке Range.

Работа с аппаратными CAN фильтрами

Для работы с CAN фильтрами используйте вкладку в правой части CARBUS Analyzer. Если вы используете монитор с узким экраном, то для вызова окна настройки фильтров нажмите иконку в виде воронки в верхнем меню программы.

 

Для двухканальных CAN интерфейсов  фильтры с 0 по 12 относятся к CAN каналу 1. Фильтры с 13 по 28 относятся к CAN каналу 2.
Для одноканальных интерфейсов (например CH-OBD.M02) все 28 CAN фильтров относятся к одному каналу CAN.
Соответствие фильтров и CAN каналов отражено в колонке CH таблицы фильтров.

Каждый фильтр и маска могут принимать либо 11 битное либо 29 битное значение. Выбирайте нужный тип исходя из того, какой тип ID Вы хотите добавить в таблицу.

Для настройки фильтра дважды щелкните по нему, что вызовет окно настройки выбранного фильтра.
Если Вы хотите использовать 29-битный – установите флаг 29 bit filter
Задав значение маски и кода фильтра установите флаг Enable Filter и нажмите Set. В таблице фильтров активный фильтр будет выделен установленным флагом напротив него.
Быстрое включение\отключение фильтра возможно при помощи ручной установки\снятия флага напротив фильтра.

 

Занести нужный ID в таблицу фильтров можно и из окна Receive Monitor или окна Stream.
Для этого необходимо кликнуть правой кнопкой мыши по интересующему ID и в появившемся контекстном меню кликнуть по Add message ID to filter

 

 

Принцип задания значений аппаратных фильтров

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

Пример:

ID = 7E0  HEX        111 1110 0000‬  BIN

Mask = 7FF  HEX        111 1111 1111  BIN‬

В этом примере, мы говорим CAN контроллеру что необходимо учитывать все 11 бит принимаемого ID, и эти биты должны быть равны = 111 1110 0000‬  BIN    или 7E0.
Таким образом фильтр будет настроен на прием только пакетов имеющих ID=7E0.

Если в этом примере в значении маски заменить последние четыре бита на нули,  маска примет вид Mask = 7F0  HEX    111 1111 0000  BIN‬, то мы скажем CAN контроллеру, что нас не интересуют последние четыре бита (половина байта) принятого ID и приниматься будут все пакеты в диапазоне ID от 7E0 до 7EF.

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

Еще примеры:

Пропускать только пакеты с ID =0x7E8
ID
= 7E8  HEX        111 1110 1000‬  BIN

Mask = 7FF  HEX        111 1111 1111  BIN‬

Пропускать все пакеты  у ID которых девятый бит=1
(1xx, 3xx,5xx, 7xx, где xx—любое число от 0 до FF)
ID
= 100  HEX

Mask = 100  HEX

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

Например:
Пропускать только пакеты имеющий 29-битный ID = 0x00000333:
ID = 0x00000333

Mask = 1FFFFFFF

При этом важно понимать, что тип фильтра (11 или 29 бит) зависит не от величины значения фильтра или маски, а зависит от специального флага устанавливаемого CAN контроллером, поэтом ID могут быть:
0x00000333 – 29 бит
0x333 – 11 бит

ВАЖНО: Если все фильтры отключены, то первые фильтры каждого CAN канала настроены на пропускание всех входящих пакетов.

 

Работа с программным фильтром на диапазон ID

Для того чтобы настроить программный фильтр на диапазон ID необходимо зайти на вкладку Range таблицы фильтров.
Двойной щелчок правой кнопки мыши по фильтру выбранного канала откроет окно настройки.
Диапазон идентификаторов которые будут ПРИНЯТЫ задается в полях From – начальный ID диапазона и To – конечная точка диапазона. Все пакеты имеющие ID из заданного диапазона будут приняты.

В поле Exclude задаются ID которые НЕ НУЖНО принимать в заданном выше диапазоне.
На скриншоте выше задан диапазон ID от 0x100 до 0x200. При этом пакеты с ID равными 0x101,0x102,0x103 – пропускаться не будут.

После завершения настройки фильтра необходимо нажать кнопку SET и фильтр будет активирован.

В примере ниже канал CAN-1 принимает пакеты передаваемые каналом CAN-2 согласно настроенному программному фильтру.

ВАЖНО: Программный Range фильтр не различает 11 битные и 29 битные ID. Поэтому если вы зададите диапазон 0x222….0x333, то пакеты имеющие ID в диапазоне  0x00000222,,, 0x00000333 так же будут приняты.

 

Работа с логам\трейсами

Для записи потока (Трейса) нажмите в верхнем меню Stream

 

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

 

Для воспроизведение сохраненного потока (трейса) нажмите верхнем меню кнопку Tracer

 

В открывшимся окне загрузите сохраненный файл потока (трейс) и выберите в списке Only for Channel канал данные которого будут использоваться в работе. Это необходимо для того в случае если поток писался одновременно с двух каналов.

 

Выберите в какой канал вы хотите передавать пакеты из сохраненного потока как на рисунке выше. При выборе опции To Monitor  пакеты из трейса будут транслироваться в окно монитора и не будут передаваться в шину CAN физически.

 

Кнопками Play\Stop, Step и Repeat, которые имеют соответствующие графические изображения в верхнем меню, Вы сможете управлять воспроизведением потока.

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

 

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

 

Режим CAN шлюза

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

 

Настройки CAN шлюза находятся на вкладке настройки CAN фильтров.
Флаг Transmit CAN1=>CAN2 включает проброс пакетов из канала 1  в канал 2.
Флаг Transmit CAN2=>CAN1 включает проброс пакетов из канала 2  в канал 1.
При помощи кнопок Lock\Unlock и соответствующих полей для ввода ID можно заблокировать прохождение пакетов имеющих конкретный ID.

 

CAN Bomber

CAN Bomber – это встроенный инструмент который позволяет передавать пакеты в CAN шину с перебором ID и данных. Для перехода в режим Bomber необходимо кликнуть по надписи Bomber в верхнем меню CARBUS Analyzer

После чего в нижней части формы откроется сам Bomber

В полях ID from и To задается диапазон перебора ID. Для перебора 29 битных ID необходимо установить флаг 29 bit, находящийся чуть ниже под выпадающим списком Channel.
Режим работы Bomber задается в выпадающем списке Mode. Доступны следующие режимы:
– ID Counter – перебор ID c инкрементом +1
– ID List – перебор ID по списку
– Data counter – перебор байтов данных с фиксированным ID
– Data counter with shift – перебор данных с переносом влево.

Самый просто режим это ID Counter. В этом режиме осуществляется передача пакета с фиксированными данными и перебором ID в заданном диапазоне с инкрементом +1.
Более сложный режим – это ID List.  В этом режиме передача пакета с фиксированными данными осуществляется с ID находящимися в таблице Unique ID List – это список ID для перебора. Добавить ID в таблицу можно вручную, из файла или скопировать все ID из окна Receive Monitor. Выбор способа добавления доступен если кликнуть правой кнопкой мыши по таблице Unique ID List

Для ручного добавления ID нажимаем Add ID. Для удаления – Delete ID

Для добавления ВСЕХ ID из окна принятых пакетов в выпадающем меню выбираем     From receive monitor

 

Перебор начинается после нажатия кнопки Run. Перебор идет с периодом заданным в поле Period. С каждым ID передается количество пакетов заданное в поле Msg per step.

Для перебора данных выбирается режим  Data counter или Data counter with shift.
В режиме Data counter осуществляется отправка пакета с фиксированным ID и с инкрементом отмеченных флагами байт данных. Инкремент осуществляется на величину указанную в строке Increment=>, индивидуально для каждого байта данных.

В режиме Data counter with shift осуществляется инкремент на заданное значение отмеченных байтов данных. При этом если более правый отмеченный байт переходит через FF, то инкрементируется на +1 отмеченный байт находящийся левее. Так можно перебрать все возможные комбинации байт данных в пакете.

В режиме Bomber присутствует возможность расчета контрольной суммы пакета – CRC. Контрольная сумма применяется на многих автомобилях, и в случае если она не верная, то передаваемые пакеты игнорируются. На автомобилях разных производителей алгоритмы расчета CRC могут отличаться. В Bomber доступно два алгоритма расчета: Toyota (универсальный) и ISO J1850. Режим CRC задается в меню левее Unique ID list.

В режиме Toyota CRC осуществляется сложение по модуля 2 всех отмеченных элементов пакета. А полученное значение вставляется в байт данных выбранный в выпадающем списке Insert CRC to.

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