Отговори на тема  [ 18 мнения ]  Отиди на страница 1, 2  Следваща
AVR ISO 9141/14230-2 Interface 
Автор Съобщение
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Сря Фев 06, 2013 9:25 am
Мнения: 197
Мнение AVR ISO 9141/14230-2 Interface
Здравейте,

Немерих в нета малко код и схема за нещо подобно на ELM327.
Този стандард е наречен още KWP2000. Устройството може да се сврърже с ECU-то на колата по K или KL линия, от другата страна терминал.

Прилагам кода и схемата.
По-надолу имам няколко забележки и проблема, които искам да споделя с вас и да ги обсъдим.

1) Кварцовият резонатор на схемата е 4MHz, а в мейк файла е 7,372800MHz.
2) Няма готов HEX файл, за това изтеглих една приставка на Atmel Studio, за създаване на проект от мейк файл (Create Project form Makefile Extension (Beta) extension), обаче гърми компилацията със следната грешка:
Код:
------ Build started: Project: iso, Configuration: Debug AVR ------
Build started.
Project "iso.cproj" (default targets):
Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!='').
Target "CoreBuild" in file "C:\Program Files (x86)\Atmel\Atmel Studio 6.0\Vs\Compiler.targets" from project "C:\Users\Bibi\Documents\Atmel Studio\kpw2 - Copy - Copy\iso.cproj" (target "Build" depends on it):
   Using "RunCompilerTask" task from assembly "C:\Program Files (x86)\Atmel\Atmel Studio 6.0\Vs\Compiler.Task.dll".
   Task "RunCompilerTask"
      C:\Program Files (x86)\Atmel\Atmel Studio 6.0\make\make.exe -C "C:\Users\Bibi\Documents\Atmel Studio\kpw2 - Copy - Copy" -f "Makefile" all
      The system cannot find the path specified.
      make: Entering directory `C:/Users/Bibi/Documents/Atmel Studio/kpw2 - Copy - Copy'
      ECHO is off.
      -------- begin --------
      avr-gcc (AVR_8_bit_GNU_Toolchain_3.4.1_830) 4.6.2
      Copyright (C) 2011 Free Software Foundation, Inc.
      This is free software; see the source for copying conditions.  There is NO
      warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
      -f was unexpected at this time.
      make: *** [sizebefore] Error 255
      make: Leaving directory `C:/Users/Bibi/Documents/Atmel Studio/kpw2 - Copy - Copy'
   Done executing task "RunCompilerTask" -- FAILED.
Done building target "CoreBuild" in project "iso.cproj" -- FAILED.
Done building project "iso.cproj" -- FAILED.

Build FAILED.
========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========

3) Опитах се да направя проекта без мейк файл - само .c и .h файловете.
Компилатора ми каза, че SIGNAL(SIG_OVERFLOW0) и SIGNAL(SIG_INTERRUPT0) са deprecated.

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

4) Функците за инициализация на протокола изобщо не се извикват никъде в кода. Става дума за char iso_5_baud_init(unsigned char addr) или char iso_fast_init(void).

Благодаря предварително за всяко мнение или препоръка.


Прикачени файлове:
Коментар на файл: Кратко ръководство за KPW2000
K-line_communication_description_V3_0(1).pdf [66.54 KiB]
461 пъти
Коментар на файл: код
ISO_SourceCode.zip [17.54 KiB]
394 пъти
Коментар на файл: Схема
AVR-ISO_Interface_Iss.B.pdf [100.33 KiB]
413 пъти
Сря Фев 20, 2013 11:52 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Май 01, 2009 3:01 pm
Мнения: 1438
Мнение Re: AVR ISO 9141/14230-2 Interface
ELM327 е изграден с PIC18F2480. Не всичко дето лети е АТМЕЛ :prayer: :prayer: :prayer: :prayer: :prayer: :prayer:


Сря Фев 20, 2013 12:06 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Сря Фев 06, 2013 9:25 am
Мнения: 197
Мнение Re: AVR ISO 9141/14230-2 Interface
CarBeta написа:
ELM327 е изграден с PIC18F2480. Не всичко дето лети е АТМЕЛ :prayer: :prayer: :prayer: :prayer: :prayer: :prayer:

Знам, че е ПИК.Това, което намерих е с Atmega8.
Смятам коментара ти за абослютен спам.
П.С. Оправи си аватара. Правилното е 極太


Сря Фев 20, 2013 12:36 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Май 01, 2009 3:01 pm
Мнения: 1438
Мнение Re: AVR ISO 9141/14230-2 Interface
Прав си, написал си ...нещо подобно на ELM327 та в първия момент не схванах, че става дума за някакъв незнаен клонинг. Успех в борбата!
Смятам коментара ти за абсолютен спам на моя спам.
П.П. Опитай пак... поне езика да уцелиш...


Сря Фев 20, 2013 12:59 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Сря Фев 06, 2013 9:25 am
Мнения: 197
Мнение Re: AVR ISO 9141/14230-2 Interface
Здравейте колеги,

Имам малък напредък с проекта.
1. Поправих кода така, че да се компилира.
2. Направих хардуерната част.
3. Извиках инициализиращата функция.

Опитах да се свържа с ECU-то.... Без успех.
Бързата комуникация се инициира по следния начин:
1. 25ms ниско ниво на линията.
2. 25ms високо ниво на линията.
3. 10400bps се изпраща 0xC1, 0x33, 0xF1, 0x81
където:
C1 - формат байт
33 - адреса на ECU-то
F1 - адреса на тестера
81 - рекуест за старт на комуникацията

Накрая се праща чек сума. В случая 66

След голямо ровене установих, че адреса на моето еку е 0А.
Пробвах да инициирам комуникация с 0xC1, 0x0А, 0xF1, 0x81
3D е чек сумата в този случай.

От ECU-то трябва да получа: 0x83, 0xF1, 0x0A, 0xC1, 0xYY, 0xZZ, 0xCS, където YY и ZZ са ключови думи, а CS е чек сумата.

Отново неуспех.

Изнервих се и вързах устройствто към един USB-TTL адаптер и пуснах терминала да видя какво ще получа.

Получавам 0xC1, 0x0А, 0xF1, 0x81, 0x3D, което е правилната комбинация, но понякога получавам: 0xC1, 0x0А, 0xF1, 0x81, 0xBD.

Имам проблем с последния байт, а именно чек сумата (само с него).
Каквото и да подам чек сумата мърда понякога с 0x10000000.

Като се има в предвид, че LSB се предава първи, а MSB последен си мисля, че понякога последняи предаден бит е грешен.

Някой занимавал ли се е с подобен проект ?
Нека помогне.


Сря Фев 27, 2013 2:14 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Чет Окт 06, 2005 1:06 pm
Мнения: 194
Местоположение: Sofia
Мнение Re: AVR ISO 9141/14230-2 Interface
На мен ми прилича на грешка в скоростите. Повечето USB-TTL адаптери не могат да сетват нестандартни скорости или ги сетват с по големи грешки. Пробвай да смениш на твоето устройство и на адаптера скоростта на 9600, за да се убедиш, че е от това.


Сря Фев 27, 2013 2:40 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Сря Фев 06, 2013 9:25 am
Мнения: 197
Мнение Re: AVR ISO 9141/14230-2 Interface
От няколко дни преглеждам кода за инициализация за грешки. Няма....
Просто е написан като за 6+.
Довечера ще пробвам да се вържа отново с ECU-то.


Сря Фев 27, 2013 3:49 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Сря Фев 06, 2013 9:25 am
Мнения: 197
Мнение Re: AVR ISO 9141/14230-2 Interface
rumen65 написа:
На мен ми прилича на грешка в скоростите. Повечето USB-TTL адаптери не могат да сетват нестандартни скорости или ги сетват с по големи грешки. Пробвай да смениш на твоето устройство и на адаптера скоростта на 9600, за да се убедиш, че е от това.

Здравейте,

Пробвах да настроя скоростта на 9600, както каза колегата по-горе.
Наистина тогава всичко е точно. Върнах пак на 10400.
Опитах да се свържа, но ЕКУ-то не реагира.
Реших да видя какво изпраща Unidiag-а.
25ms ниско
25ms високо
0x81 на 10400.
Въпроса ми е защо не изпраща другите байтове ?!?

След това реших да видя с осцилоскоп какво става.
1) Моето устройство праща:
25ms ниско
25ms високо
0xC1, 0x33, 0xF1, 0x81 на 10400.
2) Unidiag-а:
25ms ниско
25ms високо
0x81 на 10400.


Чет Фев 28, 2013 9:35 am
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Чет Мар 19, 2009 7:33 pm
Мнения: 779
Мнение Re: AVR ISO 9141/14230-2 Interface
Е , Unidiag свързва ли се към ЕКУ-то?

Ако Да, то копирай му поведението.
Т.е. и ти пращай каквото праща и то.

Може по стандарт протокола да е както си написал, ама троето ЕКУ да е някакъв по вид и да иска по различна инициализация.


Чет Фев 28, 2013 8:26 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Сря Фев 06, 2013 9:25 am
Мнения: 197
Мнение Re: AVR ISO 9141/14230-2 Interface
Здравейте,

Свързах го!!! Най - накрая.

Правилната комбинация се оказа 0x81, 0x0А, 0xF1, 0x81, 0xBD.
Това го видях от дебъг лога на unidiaga.
Пусках тази последователност и пак не стана.

Най-накрая пак с осцилоскопа и видях, че между байтовете нямам никакви паузи.
Един байт се предава като:
1. един старт бит.
2. 8 дита
3. стоп бит
Общо 10 бита.
При скорост 10400kbs това прави 10/10400 ~ 1ms.

Ето какво изкарва Unidiaga като го "затапя" (TxD<->RxD):

Код:
Log file Iso9141Thread  7:00:52 PM
0 COM port: COM5 set
229 COM port: COM5 opened
229 COM port: COM5 timeouts set
231 COM port: COM5 RTS and DTR set/cleared
296 baudrate switched to: 10400
296 25ms pulse fast init start
321 25ms pulse fast init stop
347 send:  81
348 echo:  81 OK
354 send:  0A
355 echo:  0A OK
361 send:  F1
362 echo:  F1 OK
368 send:  81
369 echo:  81 OK
375 send:  FD
376 echo:  FD OK
Error Wait_timeout rcv
7032  rcvd:  nothing/error
StartTester: error 7034 COM port closed


Както се вижда имаме по 7ms между байтовете.
Тоест имаме по 6ms пауза между байтовете.

Направих същия времеви интервал и най-накрая инициализирах връзката!

Утре ще пробвам няколко PID команди с терминала.

П.С. Намерих много добър материал за OBD командите.
Ето го: http://obdexplained.hit.bg/OBD_protocols_explained.zip

Разбрах формата на съобщението.
Има много изключения от правилото, но ще обясня, това, което се
използва от EDC17 и Unidiag-a.

[Format byte] [Target] [Source] [Data]...[Data] [CS]
Където:
Format byte: битове XXLL LLLL.
Ако XX = 10 -> физически адрес (използваният от нас)
Ако XX = 11 -> функционален адрес
LLLLLL определя дължината на данние и/или дали ще има байт
за дължина на данните.
Ако LLLLLL = 000000 - тогава имаме байт за дължина
(това не е нашия случай).
Ако LLLLLL е различно от 000000 тогава това число
определя броя на байтовете с данни.

Target: 0x0A адреса на ECU-то.
Source: 0xF1 адреса на тест устройството.
Data: данните, които предаваме, или приемаме
CS: Чек сума. Смята се като сума на всички байтве с данни и от
полученото число се взимат последните 8 бита.

Пример за инициализация:
1) 25ms ниско ниво
2) 25ms високо ниво
Това е еднократно (освен ако няма тайм аут от 5 сек.)
1) може да се постигне ако се прати 0x00 на 360bps.
3) 0x81 0x0A 0xF1 0x81 0xFD

0x81: 1000 0001. Имаме физическо адресиране и един байт данни
0x0A: адреса на еку-то
0xF1: адреса на тестера
0x81: Start Communication Request
0xFD: чек сума.

Еку-то трябва да отговори с:
0x83 0xF1 0x0A C1 0xYY oxZZ 0xCS

0x83 от тук се вижда, че байтовете са три.
0xF1 и 0x0A са съответно адресите на тестера и еку-то.
0xC1 е подтвърждение на рекуеста 0x81.
0xXX , 0xYY са ключовата дума.

С това инициализацията приключва.



Успях да получа данни от ЕКУ-то.
Интерфейса е 99% както на ELM327.

След инициализацията трябва да се поиска startDiagnosticSession .
Тук хватката е да се diagnostic mode = fa или по-фолямо число. Това са дисгностични режими на Фиат.
Тук бях ударил на камък. Но всичко си го пише в документа, няколко поста по-нагоре.

изпращам: 82 0a f1 10 fa
получавам: 7F 10 12 . Това според документа е отказ за диагностика: subFunctionNotSupported

След това може да се изискат данни от ЕКУ-то:
Километраж:
От Unidiag def файла: RDBLI_2000, 0x21, 0x03, "Odometer", 1, "Odometer", 1, "#scaling unsigned 3 X*1 km";

изпращам: 82 0a f1 21 03
получавам: 61 03 68 80 6E.
61 03 е отговора на 21 03 заявката.
68 80 6Е са данние.

Това е 6848622 десетично число.
Въпроса е как да го сметна ??? километража в момента е на 198997км.
"scaling unsigned 3" scaled числата са мащабирани. Тоест би трябвало да го разделя на 3 или на 10^3, не съм сигурен, но и по двата начина не става.


Напрежение на акумулатора:
От Unidiag def файла: RDBLI_2000, 0x21, 0x43, "Battery voltage", 1, "Battery voltage", 1, "#scaling unsigned 2 (X*20.372 + 700)/1000 Volt";

изпращам: 820af12143
получавам: 61 43 02 44
61 43 е отговора на 21 43 заявката.
02 44 са данние.

Това дава 580 десетично число.
(580 *20.372 + 700)/1000 Volt = 12,51V

Това е напрежение е ОК, обаче километража не е ОК.


Пон Мар 04, 2013 10:29 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 11:02 am
Мнения: 8900
Местоположение: Разград
Мнение Re: AVR ISO 9141/14230-2 Interface
Ами простичко - изваждаш си данните на километража, караш 10 километра, пак четеш и гледаш с колко се е променило. Ще ти покаже къв точно е скейла. Ама както казваш че колата е на 198х.км. най вероятно си е втора употреба. Ако не си и първи собственик въобще не можеш да бъдеш сигурен че това са и истинските километри. Напоследък даже италианците спестяват на нашите тарикати тази работа :) Виждам ги като ги слизат от автовоза - дърти кошници на по 127 ли 137 х.км. Е па знаем ги тия номера :)


Вто Мар 12, 2013 9:35 am
Профил ICQ
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Сря Фев 06, 2013 9:25 am
Мнения: 197
Мнение Re: AVR ISO 9141/14230-2 Interface
Успях да изкарам данни на LCD.

Видео:
Изображение[/quote]


Сря Мар 13, 2013 10:46 am
Профил
Ранг: Ориентиран
Ранг: Ориентиран
Аватар

Регистриран на: Пон Яну 09, 2006 10:32 am
Мнения: 276
Местоположение: Kozloduy
Мнение Re: AVR ISO 9141/14230-2 Interface
Здравей, с каква кола тестваш? Би ли показал актуалния проект. Просто ми е любопитно, преди време си бях играл малко с тези работи но без успех.


Чет Мар 14, 2013 6:48 am
Профил ICQ
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Сря Фев 06, 2013 9:25 am
Мнения: 197
Мнение Re: AVR ISO 9141/14230-2 Interface
bobyk написа:
Здравей, с каква кола тестваш? Би ли показал актуалния проект. Просто ми е любопитно, преди време си бях играл малко с тези работи но без успех.

Fiat Brava 1.9 JTD (Bosch EDC15 ECU).
Почти всички Fiat, Alfa, Lanchia 1.9 и 2.4 JTD са с такива ЕКУта.
Ето снимки на устройството:
Изображение

ИзображениеИзображениеИзображениеИзображениеИзображениеИзображениеИзображение[/quote]


Чет Мар 14, 2013 11:49 am
Профил
Ранг: Ориентиран
Ранг: Ориентиран
Аватар

Регистриран на: Пон Яну 09, 2006 10:32 am
Мнения: 276
Местоположение: Kozloduy
Мнение Re: AVR ISO 9141/14230-2 Interface
Мойте опити бяха на Фиат Мареа 1.6, ЕКУ Marelli IAW-49F
Не съм се задълбочавал, но освен Виза-та нищо друго не иска да си говори с него. Ама ако някой ден се видя в свободно време може да си поиграя пак.


Чет Мар 14, 2013 1:45 pm
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 18 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни