ВНИМАНИЕ! В конце статьи есть видео!
CAN-Gateway это новая прошивка для CAN-Hacker3.0 которая позволяем работать ему в двухканальном режиме. То есть Вы можете включать CAN-Hacker в разрыв CAN шины между двумя ECU или несколькими группами ECU и блокировать передачу выбранных пакетов. Программное обеспечение для управления гейтвеем построено на базе уже известного CAN-Hacker Bomber и полностью реализует и расширяет его функционал. Например теперь осуществлять передачу и прием пакетов можно как по первому так и по второму канала CAN.
В качестве примера использования режима гейта рассмотрим включение CAN-Hacker 3.0 в разрыв CAN шины между замком зажигания и панелью приборов от автомобиля Mercedes Benz E 211
В этом случае один из CAN каналов мы подключаем к замку зажигания, а второй к панели приборов. На выбранной связке скорость CAN шины 83.333кбит\с
Для наглядности примера будем использовать тот факт, что если пробег в панели приборов будет меньше чем в замке зажигания, то панель автоматически забирает в себя пробег из замка. Та же самая ситуация актуальна и для замка.
Обмен данными между панелью и замком происходит следующим образом:
Панель передает пакет ID=0x09E DLC=7 DATA: 00 81 D9 B3 2C 05 E8
Замок передает пакет ID=0x058 DLC=7 DATA: 00 81 D9 B3 2C 05 E8
Где:
00 81 D9 B3 – байты отвечающие за идентификацию панели и замка. Если они разные в пакетах панели и замка то связь не будет установлена.
2С 05 E8 – пробег автомобиля умноженный на 10 и переведенный в Hex. В нашем примере пробег равен 2С 55 EE – >DEC /10 -> 288 509 км
Так же по шине, помимо многих других пакетов, передается пакет с ID=000 который отвечает за включение системы, инициируя сигнал IGN-ON. Источником этого пакета является замок. Ввиду того что в примере собрана не полная сеть автомобиля замок не может включить зажигание полностью и пакет с ID=000 будет нам мешать полноценно запустить панель.
Поэтому заблокируем его в таблице фильтров, а прохождение пакетов с ID 0x058 и 0x09E разрешим.
Для этого нам понадобиться настроить два фильтра на вкладке Filters:
- Index=0 ID=058 Mask=7FF
- Index=1 ID=09E MAsk=7FF
Желтым цветом отмечаются активированные фильтры.
В такой конфигурации через CAN-Hacker будут проходить только пакеты имеющие ID 0x058 и 0x09E
Очистим окна приема пакетов нажав кнопку Clear и увидим что теперь принимаются только те данные, которые мы разрешили принимать.
После настройки фильтров заходим во вкладку Gateway и нажимаем кнопки Transmit from 1 to 2 и Transmit from 2 to 1. Сделав это мы разрешаем передачу данных из канала 1 в канал 2 и наоборот.
После подачи питания панель приборов и замок зажигания начнут обмениваться данными о пробеге.
Теперь попробуем изменить пробег в замке зажигания на больший, при этом блокируя это изменение для панели приборов. Вследствие чего пробег на панели не должен измениться.
Для этого во вкладке Gateway в поле Chanel выбираем канал 1 к которому у нас подключен замок, в поле ID From задаем 0x058 и нажимаем Lock. После этого информация о пробеге не будет поступать из замка зажигания в панель приборов. Поскольку мы будем изменять пробег в замке на больший, а в панели пробег остается прежним, нам необходимо заблокировать и передачу информации о пробеге и из панели. Это временная мера необходимая для того чтобы панели не мешала нам менять пробег в замке. Для этого выбираем Chanel 2 ID 0x9E и жмем Lock. Информация о пробеге не попадает из панели в замок.
Затем увеличим пробег в замке. Для этого заходим на вкладку Bomber, в поле Cnahel выбираем канал 1, в поле ID From задаем ID= 0x09E , DLC=7, DATA : 00 11 22 33 2C 55 EE
В поле данных занесен текущий пробег 288 509км, увеличим его на 0x100 HEX (+26км) и получим пакет:
288 509 * 10 ->HEX =2C 05 E8, +0x100 изменим данные
0x09E , DLC=7, DATA : 00 81 D9 B3 2C 06 E8
Пакеты с информацией о пробеге передаются из панели приборов с периодичностью примерно 1000 мс, поставим такой же период, и установим флаг Data Counter не отмечая ни одного байта пакета для инкремента.
Нажимаем кнопку Go, и смотрим в поле приема пакетов канала 1. После отправки нескольких пакетов произойдет следующее изменение:
ID=0x058 DLC=7 DATA: 00 81 D9 B3 2C 05 E8 поменяется на:
ID=0x058 DLC=7 DATA: 00 B1 D9 B3 2C 06 E8
Пробег в замке увеличился, но на панели приборов остался прежним.
Нажмем Stop
Теперь можно открыть ID с данными о пробеге передающийся от панели приборов.
На вкладке GateWay в поле Chanel выбираем 2 – канал к которому подключена панель приборов и жмем Unlock.
Данные о пробеге передаются из панели в замок, а данные из замка в панель не передаются.
Можем в этом убедиться в окне приема пакетов:
ID=0x058 DLC=7 DATA: 00 81 D9 B3 2C 05 E8 Панель приборов
ID=0x09E DLC=7 DATA: 00 81 D9 B3 2C 06 E8 Замок зажигания
Ну и наконец для чистоты эксперимента откроем канал от замка в панель, Для этого на вкладке Gateway выбираем Chanel 1 к которому подключен замок и жмем Unlock. Пробег на панели приборов сразу увеличивается до 288 535 км
А теперь видео о том же самом во всех деталях