05.04.2015, 21:16 | #11 | |||
ПЖ
Пол:
Имя: Мишка
Адрес: SPb
Автомобиль: Q5 2.0T 08' >> 3.0 TDI 09'
|
Продолжим наш марафон....
Для того чтобы получать данные от машины, мы должны настроить наш порт на плате со скоростью передачи данных машиной... для каждой шины он свой. И если он выставлен не правильно, то мы просто не получим данные от машины. Для нашего примера, т.е. шины данных мотора устанавливаем скорость 500 Kbit/sec . Для шины комфорта она равна 100 Kbit/sec . В нашем случае, нам нужно установить сначала программу на ноутбук, с помощью которой мы будем редактировать и заливать саму программу. Ее мы найдем на сайте http://arduino.cc/ там в дистрибутивах отыскиваем нужную версию программы 1.0.5 , так как последняя не подойдет нам. http://arduino.googlecode.com/files/arduino-1.0.5-r2-windows.exe Скачиваем, устанавливаем. Запускаем программу. Видим интерфейс программы. В нем есть окно, в котором собственно и должен быть наш код. Вложение 7192 Затем мы копируем программу в это окно. #include <mcp_can.h> #include <SPI.h> long unsigned int rxId; unsigned char len = 0; unsigned char rxBuf[8]; MCP_CAN CAN0(10); void setup() { Serial.begin(9600); if(CAN0.begin(CAN_500KBPS) == CAN_OK) { Serial.println("can init ok!!"); } else { Serial.println("Can init fail!!"); } } void loop() { CAN0.readMsgBuf(&len, rxBuf); rxId = CAN0.getCanId(); Serial.print("ID: "); Serial.print(rxId, HEX); Serial.print(" Data: "); for(int i = 0; i<len; i++) // Print each byte of the data { if(rxBuf[i] < 0x10) // If data byte is less than 0x10, add a leading zero { Serial.print("0"); } Serial.print(rxBuf[i], HEX); Serial.print(" "); } Serial.println(); } Но, чтобы это все заработало мы должны закачать нужные файлы, так называемые библиотеки в наш компьютер. Скачиваем файл : https://cloud.mail.ru/public/ec4187dacb97/CANBUS.zip Распаковываем его и получаем из архива папку CANBUS внутри которой будет 7 файлов и одна папка. Эту папку (CANBUS) копируем в нашу программу на компьтере у каждого свой путь будет, последняя часть одинаковая - ...\Program Files\Arduino\libraries Прям так с ногами ее туда и запихиваем. Делаем настройки нашего железа... в меню программы выбираем СЕРВИС, далее выбираем ПЛАТА и там выбираем ту плату которую мы используем. В нашем случае это Leonardo. Вложение 7194 Устанавливаем порт соединения с нашей платой. Для этого она должна быть подключена к компьютеру. Выбираем СЕРВИС, далее - ПОРТ и находим порт нашей платы. Скорее всего он будет больше чем COM2. Вложение 7195 Если теряетесь в догадках, то можно посмотреть подключилась ли вообще плата и установились ли для нее драйвера в диспетчере оборудования на компьютере. После этого проверяем, будет ли загружаться наша программа для этого (естественно она у нас уже скопирована в поле где она должна быть) нажимаем кнопку компиляции, т.е. оболочка наша пытается перевести нашу программу в машинный код, чтобы компьютер мог понимать, что ему делать. Вложение 7193 Если внизу появилась надпись компилирование выполнено, то это значит Ура! программа должна работать. Затем наживаем вторую кнопку со стрелочкой для начала заливки нашего софта. Ждем окончания загрузки платы. Желтая полоска добежит до конца и исчезнет. При этом внизу не высветится никаких сообщений оранжевого цвета. Значит все хорошо. После чего на нашей плате CAN должны начать мигать два красных светодиодика рядом с синим разъемом куда подключены провода от машины. Это хороший признак того что мы идем верным путем. Для того что бы увидеть, что же все таки скрывается за этими мигающими светодиодиками RX и INT , нажимаем кнопку монитора порта находится в правом верхнем углу Вложение 7196 Мы видим бегущие данные типа ID: 6C0 Data: 01 40 04 00 00 0F 03 ID: 585 Data: 00 00 00 00 00 00 00 80 ID: 309 Data: 4A 00 00 40 Ура, мы прошли второй этап нашего марафона ... но до Финиша еще далеко.. Да, совсем забыл сказать, что все что вы делаете - выделаете на свой страх и риск. Держитесь поговорки - "Не уверен - не обгоняй!" |
|||
Пользователь сказал cпасибо: | udarnik (06.04.2015) |
Рекламный блок | ||
|
06.04.2015, 13:21 | #12 | |||
Эцилоп
Пол:
Имя: Дмитрий
Адрес: Тольятти
Автомобиль: 2.0TDI (2012 г)
|
mishka, А вот на эти приблуды смотрел?
______________________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). |
|||
2 пользователя(ей) сказали cпасибо: | MichaelRaZor (15.10.2017), mishka (06.04.2015) |
06.04.2015, 18:16 | #13 | |||
Модератор
Пол:
Имя: Сергей
Адрес: Зеленоград
Автомобиль: Q5 '14, 2.0TFSI (CNCD, 224hp), МКПП6
|
нарыл немного доков для самообучения...
загрузил в файловый архив форума: SSP 238 (Data Exchange On The CAN Bus I) SSP 269 d1 (Data transfer on CAN data bus II) CAN Specification (v. 2.0) з.ы. есть еще оч полезный файл (pdf), но не лезет в файловый архив (весит 22 мега) |
|||
Пользователь сказал cпасибо: | mishka (06.04.2015) |
06.04.2015, 22:20 | #15 | ||||
ПЖ
Пол:
Имя: Мишка
Адрес: SPb
Автомобиль: Q5 2.0T 08' >> 3.0 TDI 09'
|
Цитата:
Но, в любом случае спасибо, за помощь. ) В моем контроллере мне настройки приходится менять самому в программе, в зависимости от типа шины к которой я подключаюсь у них как я говорил разные скорости передачи информации. И так в продолжении марафона.... Все те коды что мы видим на экране монитора или иного устройства отображения информации - это и есть значения состояния оборудования. Получается, что ID - это и есть некий идентификатор какой то части оборудования, через который мы можем обратиться к машине для запроса данных. Если мы непосредственно изменим нашу программу для тог чтобы мы могли отправлять в контроллер машины данные то тем самым образом мы повлияем на ее состояние. Проще говоря, мы этими командами сможем опустить стекло в двери, открыть крышку багажника или закрыть ее, поморгать фарами и даже подудеть в сигнал ))) но это все остается лирикой пока мы не разберемся какие коды к чему относятся. Если присмотреться к первым знакам ID, а каждый символ - это есть так называемый байт информации, в ID мы видим три байта, то получается, что их можно разделить на какие то условные группы по оборудованию. Скажем, к примеру, первая цифра 6 означает что мы получаем данные с приборной панели, другая цифра или буква будет означать другую группу оборудования. Практическим путем мне удалось определить только лишь данные которые передаются часами, т.е. показания времени. т.е. прочитав блок 0х62F 44 51 0F 31 0F Я отследил, что значения в тот момент равные 0F 31 были равны текущему показанию времени 15:49. Как это определить? Открываем калькулятор и переводим его в режим работы программиста или инженерный в зависимости от вида операционной системы. Переключение делается в меню ВИД в калькуляторе. Для начала выбираем шестнадцатеричную систему путем нажатия кнопки HEX. Вводим в регистр число F так первым ноль нам не удастся ввести. Затем выбираем кнопку DEC для перевода этого числа в десятеричную систему и получаем значение 15. тоже самое сделаем с числом 31 и получим 49. т.е. у нас получилось реальное значение времени 15:49 и при переходе на следующую минуту (50) мы во втором байте получим шестнадцатеричное число 32. Но это касается только данных которые отображаются через один байт, т.е. байт 0F равен 15, а байт 31 равен 49. Но бывают значения которые выражаются двухбайтовым числом, например количество оборотов или количество километров. тогда наше число приобретает двухбайтовое значение 0х02F8 что собственно будет равно десятичному числу 760, скажем оборотов в минуту. Но в нашей строчке данных эти числа будут перевернуты. т.е. сначала будет идти F8, а потом 02. Это связано со сложностью программного выражения чисел, так называемые старший байт и младший байт. Подводя некоторые итоги поиска наших данных. вот только таким образом мы можем определить какие значения к чему относятся. Практически сканируя каждый адрес ID. Для этого существуют такие программы как CANHACKER которые показываю значения адресов и нам будет легче определить, где меняется значение когда мы , скажем открываем дверь и у нас срабатывает концевик открытия двери, хотя ведь это может стать сигналом для включения плафона света в салоне... На этом пока все. В двух словах объяснил то, что я знаю. Если я в чем то ошибаюсь, то я буду рад выслушать ваши комментарии, так как они будут полезны не только для меня. P.S. Позже сделаю видео как это выглядит живьем ) Последний раз редактировалось mishka; 06.04.2015 в 22:22. |
||||
07.04.2015, 08:53 | #16 | ||||
Модератор
Пол:
Имя: Сергей
Адрес: Зеленоград
Автомобиль: Q5 '14, 2.0TFSI (CNCD, 224hp), МКПП6
|
вот еще добыл русскоязычных SSP
Обмен данными посредством шины CAN I Обмен данными посредством шины CAN II Новые технологии обмена данными – LIN, MOST, Bluetooth ---------- Сообщение добавлено в 08:53 ---------- Предыдущее сообщение размещено в 08:44 ---------- и вот еще полезненького sergeynik с турбо-кваттро запалил на одном ресурсе по айдишникам инфа: Цитата:
немного кода внутриКод:
#define VW_MULTI_RUL 0x5C1 /* ID DLC Data 5C1 1 06 Vol up 5C1 1 07 Vol Down 5C1 1 0A Menu 5C1 1 1A Phone 5C1 1 22 Arrow Up 5C1 1 23 Arrow Down 5C1 1 28 OK 5C1 1 2B Mute 5C1 1 00 Button is released */ #define AUDI_MULTI_RUL 0x5C3 /* 5C3 2 39 00 none 5C3 2 39 02 Prev 5C3 2 39 03 Next 5C3 2 39 04 Scan Up 5C3 2 39 05 Scan down 5C3 2 39 06 Volume+ 5C3 2 39 07 Volume- 5C3 2 3C 2A Phone button pressed 5C3 2 3C 00 Phone button released, changes to 39 00 after a second or so 5C3 2 3A 1C Mode button pressed 5C3 2 3A 00 Mode button released, changes to 39 00 after a second or so 5C3 2 39 01 Mode button pressed before it turns back to 39 00 5C3 2 3A 1A up/down button pressed within 2 seconds after pressing Mode button 5C3 2 3A 02 up within 2 seconds after pressing Mode 5C3 2 3A 03 down within 2 seconds after pressing Mode 5C3 2 3B A7 vol up/down pressed 5C3 2 3C 07 vol down after pressing phone button 5C3 2 3C 06 vol up after pressing phone button */ // _______________________________ КОНЕЦ МУЛЬТИ РУЛЬ______________________________________________ // _______________________________ ПАНЕЛЬ ПРИБОРОВ______________________________________________ #define INSTR_DATE_TIME 0x623 /* h623 ДАТА И ВРЕМЯ, 8 byte, 100ms - byte 0: ?? - byte 1: Hour - byte 2: Minute - byte 3: Sekunde - byte 4: Tag - byte 5: Monat - byte 6: Jahr (1./2. Stelle) - byte 7: Jahr (3./4. Stelle) ID 623 : Uhrzeit (einmal pro Sekunde) -------------------------------------- 623h 8 05 19 44 01 13 09 20 06 = 19:44:01 13.09.2006 */ #define INIG_STATE 0x271 /* h271 зажигание, 1 byte, 100ms -h10: Fzg. unverschlossen, Schluessel steckt nicht ключ снят -h11: Fzg. unverschlossen, Schluessel steckt in Pos. 0, Zuendung aus -h01: Fzg. unverschlossen, Schluessel steckt in Pos. 1, Zuendung aus -h05: Fzg. unverschlossen, Schluessel steckt in Pos. 2, Zuendung aus -h07: Fzg. unverschlossen, Schluessel steckt in Pos. 3, зажигание включено -h0B: Fzg. unverschlossen, Schluessel steckt in Pos. 4, зажигание включено, стартер крутит */ #define Light_STATE 0x635 /* h635 Licht, 3 byte, 100ms -h 00 00 00: Licht aus, 58d 100% Dimmung -h 64 00 00: Licht aus, 58d 0% Dimmung -h 64 64 00: Licht an, 58d 0% Dimmung ID 635 : Licht Dimmung (noch nicht fertig) */ #define VIN_IDENTIF 0x65F /* h65F Fahrzeug Ident Nummer, 8 byte, 100ms, vier Zeilen je 8 byte 1. Zeile: Z 'WAU 2. Zeile: VT68E34 3. Zeile: Z 'WAU 4. Zeile: Axxxxxx ID 65F : Fahrgestellnummer (alle 200ms eine Zeile) -------------------------------------------------- 65Fh 8 00 00 00 00 00 57 41 55 = WAU 65Fh 8 01 5A 5A 5A 38 50 58 37 = ZZZ8PX7 65Fh 8 02 41 XX XX XX XX XX XX = A0XXXXX */ #define PROBEG 0x65D /* ID 65D : Kilometerstand (Datum+Uhrzeit ?) ----------------------------------------- 65Dh 8 7E A4 1D 60 C8 B8 60 1A 1+2 : A4 1D = LSB MSB = 7588km Gesamt 6+7: 6 Bit 8 ist ein und aus im Sekundentakt 6 unteren Bits zahlen immer rauf 7 geht von 00 bis 1D (0..29) Beispiel1: 7E A4 1D 60 C8 E8 A8 03 14:20 17.09.2006 Beispiel2: 7E A4 1D 60 C8 E8 AA 05 14:21 17.09.2006 Beispiel3: 7E A4 1D 60 C8 E8 BE 03 14:31 17.09.2006 */ #define SPEED 0x351 /* 351h 8 45 00 00 00 00 75 7B 10 100 1795 Geschwindigkeit speed h351, Geschwindigkeit, 8 byte, 100ms - byte 0: h00 vorwaerts, h02 rueckwaerts - byte 1/2: Geschwindigkeit - byte 4/5: Wegstreckenimpuls */ #define TANK_FUEL 0x621 //621: // byte 0: anzeigen aus dem kombi intrument //byte 3: tankinhalt+ warnung // _______________________________ КОНЕЦ ПАНЕЛЬ ПРИБОРОВ______________________________________________ // _______________________________ navi______________________________________________ #define RADIO_ONLINE 0x664 /* ID 664 : Radio ---------------------- 664h 8 01 01 12 00 00 00 00 00 0: 00 Radio aus 01 Radio ein */ #define RADIO_STATUS 0x660 /* ID 660 : Frequenz, Modus: ------------------------- 660h 8 01 0C 4A 09 04 24 A3 D3 0: 00 Radio aus 01 Radio an und UKW 100kHz) 02 Radio an und MW (9kHz) 03 Radio an und LW (9kHz) 1: Mono / Stereo - Kennung 01 Mono 0C Stereo 2: 4A unbekannt 3: RDS 01 RDSaus 09 Sender hat RDS 29 Sender hat kein RDS 4..5: Aufbau LSB MSB, Frequenz in kHz oder MHz*100 99 00 153kHz A2 00 162kHz AB 00 171kHz 17 01 279kHz 13 02 531kHz 1c 02 540khz 42 06 1602kHz 2e 22 87,5Mhz (87500) 38 22 87,6MHz (87600) 42 22 87,7MHz (87700) 30 2a 108MHz (10800) 6..7: RDS Sendercode (pi_id) LSB MSB 0A 13 Die neue 107,7 04 D7 SWR4 TU 0D D7 Radioton 04 DD SWR4 HN A2 D5 SWR2 BW 63 D3 HR3 A3 D3 SWR3 0A 13 Die neue 107,7 Kann hier eingesehen werden: http://www.myradiobase.de/fmlist/ul_login.php */ #define AUDIO_SOURSE 0x661 /* h661 Radio/Navi, 8 byte, 100ms beim RNS-E wird hier zum Beispiel angezeigt, in welchem Mode das Geraet ist -h 81 01 12 A0 00 00 00 00 FM/AM -h 81 01 12 2F 00 00 00 00 SAT -h 81 01 12 A5 00 00 00 00 CD -h 81 01 12 A4 00 00 00 00 MP3 -h 81 01 12 37 00 00 00 00 TV -h 81 01 12 3A 00 00 00 00 PHONE ID 661 : Radio Audio-Quelle: ---------------------- 661h 8 01 01 12 A0 00 00 00 00 0: 00 Radio aus 01 Radio an 03: A0 Radio A1 TP (Traffic Programm) Speicher Wiedergabe A5 CD-Player 38 CD-Wechsler */ #define RADIO_STATUS2 0x663 /* ID 663 : Radio Audio-Quelle: ---------------------- 663h 8 01 01 12 00 A5 00 00 00 00: 00 Radio aus 01 Radio an 04: A0 Radio A1 TP Memo Wiedergabe A5 CD-Player 38 CD-Wechsler */ #define DIS_TEXT_line1 0x261 #define DIS_TEXT_line2 0x263 //h261/h263 erste/zweite Zeile im FIS, wenn Radio aktiv, 8 byte, 100ms #define FIS_TEXT_line1 0x265 #define FIS_TEXT_line2 0x267 //h265/h267 erste/zweite Zeile im FIS, wenn FSE aktiv, 8 byte, 100ms #define FIS1_TEXT_line1 0x363 //ID 363 : Zeile 1 FIS (alle 800ms) //363h 8 53 57 52 33 20 20 20 20 = SWR3 Space Space Space Space #define FIS1_TEXT_line2 0x365 //ID 365 : Zeile 2 FIS (alle 800ms) //365h 8 46 4D 20 31 20 20 20 20 = FM Space 1 Space Space Space Space // _______________________________ КОНЕЦ navi______________________________________________ // _______________________________ motor bus______________________________________________ #define ESP_rate 0x0c2 #define ABS_mess 0x1a0 #define ENGINE_SPEED 0x280 //rprintdec16((can_buff[2]<<10)|(can_buff[1]<<2)); #define FUEL_LEVEL 0x320 //rprintfdec((can_buff[2]&0x7f)); #define FUEL_RASHOD 0x480 #define TEMPERATUREN 0x420 // rprintfStr("Temp ext= "); rprintfdec((can_buff[0]-100)/2);z // rprintfStr("Temp coolant= "); rprintfdec((can_buff[3]-100)/2); [свернуть] кнопки на руле проверяли - рабочие. мафон отзывается на них... |
||||
Пользователь сказал cпасибо: | MichaelRaZor (15.10.2017) |
07.04.2015, 09:22 | #17 | |||
Эцилоп
Пол:
Имя: Дмитрий
Адрес: Тольятти
Автомобиль: 2.0TDI (2012 г)
|
Добавь в программу перевод кодов в символы.
Или сохраняй дампы в файле и смотри в HEX-редакторе при разных настройках кодировок (ASCII, UTF-. Тогда можно будет выловить явно текстовые посылки, например название трека или радио от музыки в приборку А подключится на диагностическую шину (шину на разъем OBD-2) пробовал? Хакать посылки VCDS на USB - бесполезно, КМК, т.к. там совсем другие, хитроже...лт..ые, протоколы. А вот отследить, что собственно шнурок посылает на гейт и что получает, думаю, можно попробовать.
______________________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). Последний раз редактировалось DUK63; 07.04.2015 в 09:25. |
|||
07.04.2015, 10:20 | #18 | ||||
Модератор
Пол:
Имя: Сергей
Адрес: Зеленоград
Автомобиль: Q5 '14, 2.0TFSI (CNCD, 224hp), МКПП6
|
Цитата:
интересно именно полностью конторолировать все шины, тогда возможности раскрываются огого какие... |
||||
07.04.2015, 10:27 | #19 | |||
Эцилоп
Пол:
Имя: Дмитрий
Адрес: Тольятти
Автомобиль: 2.0TDI (2012 г)
|
Я имел в виду "начать с этого", пока все очень туманно, т.к. в этой шине нет постоянно летающих данных, только по запросу от шнурка. А когда будет опыт, когда и если удастся своим девайсом считывать, допустим, блоки измеряемых величин, тогда уже лезть на другие, постоянно работающие шины. Хотя, если попытаться разобраться в инфе, которую ты (точнее sergeynik) выдал чуть раньше - м.б. можно и на рабочую шину цепляться.
______________________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). |
|||
07.04.2015, 10:35 | #20 | |||
Модератор
Пол:
Имя: Сергей
Адрес: Зеленоград
Автомобиль: Q5 '14, 2.0TFSI (CNCD, 224hp), МКПП6
|
думаю, НУЖНО именно так делать...
через гейтвей оно типа так, но не так... пост кстати от 2007 года... думаю, у него уже полная инфа есть) потеплеет немного... на даче в выхи потихонечку будем ковырять... |
|||
Рекламный блок | ||
|
Нижняя навигация | ||||||
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Замена масла и все, что с этим связано | Zaratustra07 | 2.0 TFSI | 265 | 28.03.2020 08:34 |