Реклама

Collapse

Съобщение

Collapse
No announcement yet.

Fiat Live Data Reader [Bosch EDC15 ECU протокол ?]

Collapse
X
 
  • Филтър
  • Час
  • Покажи
Clear All
new posts

    Fiat Live Data Reader [Bosch EDC15 ECU протокол ?]

    Здравейте,Интересуват ме следните неща за EDC15:1) Двата пина на буксата за дисгностика са Rx и Tx (тоест приемане и предаване на данни) ?2) Baud rate, stop bits, контрол по четност.3) Как мога да комуникирам с ECU-то ? Тук не говорим за ELM интерфейс.Ако някой може да поговори, нека сподели.
    04/2000 Fiat Brava 1.9 JTD 105+

    #2
    K линия само, няма тука Рх и Тх, това да не ти е газова уредба В буксата имаш К линия двупосочна и маса (GND)Какво искаш точно да направиш ?
    F9Q750 @ 151hp/332.2Nm

    Коментар


      #3
      emzo написа:
      K линия само, няма тука Рх и Тх, това да не ти е газова уредба В буксата имаш К линия двупосочна и маса (GND)Какво искаш точно да направиш ?
      Искам да направя устройство с LCD дисплей 2х16, което да се свърже с ECU-то и да показвам данни в реално време. Най-вече моментен разход.Искам да избегна ELM327 интерфейса, защото няма от къде да намеря само чип. Иначе с него би станало сравнително лесно.Предполагам мога да ползвам KKL адаптера.Нещо като това: http://www.youtube.com/watch?v=t0Lb_ov3SSY или това http://www.youtube.com/watch?v=PbA_bOO2mMw
      04/2000 Fiat Brava 1.9 JTD 105+

      Коментар


        #4
        Ето тук http://www.blafusel.de/obd/obd2lcd_d.html#1 един немец го е направил, но не дава кода на програмата.
        04/2000 Fiat Brava 1.9 JTD 105+

        Коментар


          #5
          Здравейте, "Бордовия компютър" е почти завършен хардуерно.Остава да започна да работя по комуникацията.
          04/2000 Fiat Brava 1.9 JTD 105+

          Коментар


            #6
            Само напред, браво
            00' Bravo 105 JTD

            Коментар


              #7
              vgeorgiev написа:
              Здравейте, "Бордовия компютър" е почти завършен хардуерно.Остава да започна да работя по комуникацията.
              Предполагам знаеш, че за всяко ЕКУ комуникацията е различна?Така, че имай го предвид, когато го правиш, че трябва да търси един и същ параметър на различни адреси за различните ЕКУ-та. Демек ще трябва да го направиш малко "по-умно", за да е по-универсално. Или ще трябва просто да се зареждат различни комуникационни параметри според модела...
              A20DTH ЖТД ама не баш
              1NZ−FXE ; 182A8.000 Брава
              Х... 330XD, Мултипла, Мареа, Либра, Пунто; 166; Брава; 146; Тема; 145; Типо; Панда

              Коментар


                #8
                Здравейте,След голямо търсене, най-накрая открих, че протокола е ISO 14230-2. Още наречен KPW2000.По - долу има два документа по въпроса.Открих една библиотека, която ми помогна да имплементирам комуникацията.За сега вързах борд компа с терминална програма и изкарах началното съобщение.Остана да вържа кабелите с колата. http://kwp2000.hit.bg/fiat_kwp2000.pdfhttp://kwp2000.hit.bg/K-line_communi...%29%5B1%5D.pdfЕто и схемата http://kwp2000.hit.bg/AVR-ISO_Interface_Iss.B.pdf
                04/2000 Fiat Brava 1.9 JTD 105+

                Коментар


                  #9
                  Здравейте колеги,Имам малък напредък с проекта.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 последен си мисля, че понякога последняи предаден бит е грешен.Някой занимавал ли се е с подобен проект ?Нека помогне.
                  04/2000 Fiat Brava 1.9 JTD 105+

                  Коментар


                    #10
                    Оказа се, че Unidiaga изпраща 0x81 [ECU] [Tester] 0x81 0xCS След всеки байт, чака за ехо от линията.Много документи описват rt Communication Message-а, като: 0XC1 [ECU] [Tester] 0x81 0xCS Объркан съм. Някой знае ли кое е вярното и защо ?
                    04/2000 Fiat Brava 1.9 JTD 105+

                    Коментар


                      #11
                      vgeorgiev написа:
                      Оказа се, че Unidiaga изпраща 0x81 [ECU] [Tester] 0x81 0xCS След всеки байт, чака за ехо от линията.Много документи описват rt Communication Message-а, като: 0XC1 [ECU] [Tester] 0x81 0xCS Объркан съм. Някой знае ли кое е вярното и защо ?
                      Колега, ако разбирам правилно проблема не може ли да си напишеш нещо, което да ти интерпретира 0xC1, 0x0А, 0xF1, 0x81, 0xBD като 0xC1, 0x0А, 0xF1, 0x81, 0x3D???Силно дървено решение, но ако няма промяна в данните когато получаваш 0xC1, 0x0А, 0xF1, 0x81, 0xBD може ако не друго да го пробваш. Един вид да емулираш резултата който ти трябва?

                      Коментар


                        #12
                        Здравейте,Свързах го!!! Най - накрая.Правилната комбинация се оказа 0x81, 0x0А, 0xF1, 0x81, 0xBD.Това го видях от дебъг лога на unidiaga.Пусках тази последователност и пак не стана. Най-накрая пак с осцилоскопа и видях, че между байтовете нямам никакви паузи. Един байт се предава като:1. един старт бит.2. 8 дита3. стоп битОбщо 10 бита.При скорост 10400kbs това прави 10/10400 ~ 1ms.Ето какво изкарва Unidiaga като го "затапя" (TxD<->RxD):
                        Код:
                        Log file Iso9141Thread  7:00:52 PM0 COM port: COM5 set229 COM port: COM5 opened229 COM port: COM5 timeouts set231 COM port: COM5 RTS and DTR set/cleared296 baudrate switched to: 10400296 25ms pulse fast init start321 25ms pulse fast init stop347 send:  81348 echo:  81 OK354 send:  0A355 echo:  0A OK361 send:  F1362 echo:  F1 OK368 send:  81369 echo:  81 OK375 send:  FD376 echo:  FD OK Error Wait_timeout rcv7032  rcvd:  nothing/errorStartTester: error 7034 COM port closed
                        Както се вижда имаме по 7ms между байтовете. Тоест имаме по 6ms пауза между байтовете. Направих същия времеви интервал и най-накрая инициализирах връзката! Утре ще пробвам няколко PID команди с терминала. П.С. Намерих много добър материал за OBD командите. Ето го: http://obdexplained.hit.bg/OBD_protocols_explained.zip
                        todorakiggg написа:
                        vgeorgiev написа:
                        Оказа се, че Unidiaga изпраща 0x81 [ECU] [Tester] 0x81 0xCS След всеки байт, чака за ехо от линията.Много документи описват rt Communication Message-а, като: 0XC1 [ECU] [Tester] 0x81 0xCS Объркан съм. Някой знае ли кое е вярното и защо ?
                        Колега, ако разбирам правилно проблема не може ли да си напишеш нещо, което да ти интерпретира 0xC1, 0x0А, 0xF1, 0x81, 0xBD като 0xC1, 0x0А, 0xF1, 0x81, 0x3D???Силно дървено решение, но ако няма промяна в данните когато получаваш 0xC1, 0x0А, 0xF1, 0x81, 0xBD може ако не друго да го пробваш. Един вид да емулираш резултата който ти трябва?
                        04/2000 Fiat Brava 1.9 JTD 105+

                        Коментар


                          #13
                          Разбрах формата на съобщението.Има много изключения от правилото, но ще обясня, това, което сеизползва от 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 0xFD0x81: 1000 0001. Имаме физическо адресиране и един байт данни0x0A: адреса на еку-то0xF1: адреса на тестера0x81: Start Communication Request0xFD: чек сума.Еку-то трябва да отговори с:0x83 0xF1 0x0A C1 0xYY oxZZ 0xCS0x83 от тук се вижда, че байтовете са три.0xF1 и 0x0A са съответно адресите на тестера и еку-то.0xC1 е подтвърждение на рекуеста 0x81.0xXX , 0xYY са ключовата дума.С това инициализацията приключва.
                          04/2000 Fiat Brava 1.9 JTD 105+

                          Коментар


                            #14
                            Някой може ли да ми даде лог файл от Unidiag ?Файла се намира в папката на Unidiaga и се казва Iso9141.log.
                            04/2000 Fiat Brava 1.9 JTD 105+

                            Коментар


                              #15
                              Здравейте, Успях да получа данни от ЕКУ-то.Интерфейса е 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/2000 Fiat Brava 1.9 JTD 105+

                              Коментар

                              Working...
                              X