Реклама

Collapse

Съобщение

Collapse
No announcement yet.

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

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

    #76
    Разменям един разходомер за един Правец 8.
    04/2000 Fiat Brava 1.9 JTD 105+

    Коментар


      #77
      vgeorgiev написа:
      Разменям един разходомер за един Правец 8.
      Два ?
      04/2000 Fiat Brava 1.9 JTD 105+

      Коментар


        #78
        Ето снимки и на разходомер вграден в Алфа 156 с червен дисплей.
        04/2000 Fiat Brava 1.9 JTD 105+

        Коментар


          #79
          А монитор за правеца трябва ли ти? Имам 4 работещи, но за какво ми е този разходомер, като си имам вграден в колата?
          Велосипед да, но ролкови кънки - не! Балканчето е без акумулатор, симсонката е без гуми. Я, падна ми се и фиатче 126! Вече съм с фиат и напреднал шофьор, та чак съм станал маниак, а сега и фанатик!

          Коментар


            #80
            Накрая реших да е цветен
            vgeorgiev написа:
            Замислям нещо с графичен дисплей.Ето проба с дисплей за Nokia 3310.
            04/2000 Fiat Brava 1.9 JTD 105+

            Коментар


              #81
              кола

              Има в интернет готови платки с дисплеи само се слага програма и показва каквито сложиш синволи демек тя да е допълнение към старата платка нещо такова http://www.techtoys.com.hk/PIC_board...598428483.html
              КЛЮЧАРА е тук – https://goo.gl/maps/GvEGbSeq7nk
              Пунто http://www.punto.mysteria.cz/puntoMk1/schema7.htm
              http://www.autoinfo24.ru/rukovodstva.../inomarki/fiat

              Коментар


                #82
                Мерси за линковете, Ключар.Всъщност ми трябва само дисплей. Ето какъв взех за проба:Доста е малък 128x160 точки 1,8 инча. Като на SE T610 дисплея
                04/2000 Fiat Brava 1.9 JTD 105+

                Коментар


                  #83
                  кола

                  Спомням си като бях в Деизи DIVA и поръчвахме на китайците дисплеи за няколко хилади 2-3 трудно се наемаха да ги правят
                  КЛЮЧАРА е тук – https://goo.gl/maps/GvEGbSeq7nk
                  Пунто http://www.punto.mysteria.cz/puntoMk1/schema7.htm
                  http://www.autoinfo24.ru/rukovodstva.../inomarki/fiat

                  Коментар


                    #84
                    @vgeorgiev Поздравления! Много готин проект!И аз съм замислил да си направя подобна машинка и намерих доста информация в интернет, а сега попаднах и на тази тема. Бих искал да попитам програмната част на OBDuino ли е, тъй като функционалността е същата и кода се разпространява публично?

                    Коментар


                      #85
                      Здравей,Не е. Ардуиното не ме кефи. Иначе от ОБДуиното може да черпиш идеи.Ако имаш някаквъ въпроси може да питаш.
                      04/2000 Fiat Brava 1.9 JTD 105+

                      Коментар


                        #86
                        Браво! Много добра реализация, изчетох темата с интерес!На моето Punto 1.9 JTD много ме дразни дървения бордови компютър и аз от първия ден се чудих какво мога да направя за да ми показва малко по-живи данни. От няколко седмици работя по хардуерната част и днес я завърших. Доста ми помогна тази тема и тази статия.Сега започвам да пиша и софтуерната част. Искам да попитам коя е библиотеката, за която говориш тук:
                        vgeorgiev написа:
                        Открих една библиотека, която ми помогна да имплементирам комуникацията.
                        Също искам да попитам възможно ли е по някакъв начин да повредя ECU-то през K линията?

                        Коментар


                          #87
                          Според мен няма как да изгориш ЕКУто през К линията.К линията е отворен колектро/дрейн. Тестер устройството също, като има и пул ъп резистор 510 ohm.Ето библиотеката: http://en.pudn.com/downloads162/doc/...735743_en.htmlEDIT: Ето и фиатската документация на даталинк и апликейшън нивата.Това, което ти трябва е да прочетеш този пдф: fiat_kwp2000.pdfhttps://www.dropbox.com/s/aj15doiw2tn8kua/kpw.rar?dl=0паролата е: fiatforum2014
                          veskoy написа:
                          Браво! Много добра реализация, изчетох темата с интерес!На моето Punto 1.9 JTD много ме дразни дървения бордови компютър и аз от първия ден се чудих какво мога да направя за да ми показва малко по-живи данни. От няколко седмици работя по хардуерната част и днес я завърших. Доста ми помогна тази тема и тази статия.Сега започвам да пиша и софтуерната част. Искам да попитам коя е библиотеката, за която говориш тук:
                          vgeorgiev написа:
                          Открих една библиотека, която ми помогна да имплементирам комуникацията.
                          Също искам да попитам възможно ли е по някакъв начин да повредя ECU-то през K линията?
                          04/2000 Fiat Brava 1.9 JTD 105+

                          Коментар


                            #88
                            vgeorgiev написа:
                            Според мен няма как да изгориш ЕКУто през К линията.К линията е отворен колектро/дрейн. Тестер устройството също, като има и пул ъп резистор 510 ohm.Ето библиотеката: http://en.pudn.com/downloads162/doc/...735743_en.htmlEDIT: Ето и фиатската документация на даталинк и апликейшън нивата.Това, което ти трябва е да прочетеш този пдф: fiat_kwp2000.pdfhttps://www.dropbox.com/s/aj15doiw2tn8kua/kpw.rar?dl=0паролата е: fiatforum2014
                            Благодаря много за библиотеката и документацията! След доста редакции успях да компилирам. Нямам идея дали работи защото е тъмно и няма да виждам нищо в мрачовата затова мисля да направя първия тест утре.Като цяло премахнах нещата свързани с L линията, тъй като няма да я използвам. Пооправих кастовете и някои от функциите и се компилира успешно.Имам въпрос. След като(ако) съм се свързал успешно с ECU-то как да поискам диагностичния режим и как да получа отговор? Респективно същата ли е процедурата при PID-овете?За сега имам това:
                            Код:
                            int main(void){    lcd_init();    lcd_clrscr();    wdt_disable();  // make sure the watchdog is not running    UBRRH = UART_BAUDRATE>>8;       // set baud rate    UBRRL = UART_BAUDRATE;    UCSRB =((1<<RXCIE)|(1<<RXEN)|(1<<TXEN));    // enable Rx & Tx, enable Rx interrupt    UCSRC =((1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0));  // config USART; 8N1    serial_msg_pntr = (signed char *)&serial_msg_buf[0];  // init serial msg pointer      iso_glob.uart_n_baud = N_9600;  // set baud rate to 9,6kBaud        iso_hardware_init();  // init ISO hardware    iso_uart_init();  // init ISO software UART        ident();  // send identification to terminal    serial_putc(’>’);  // send initial command prompt      sei();  // enable interrupts    if(iso_fast_init() == ISO_RETURN_CODE_OK) {        lcd_puts("ECU Connection:");        lcd_goto(40);        lcd_puts("Successful!");    } else {        lcd_puts("ECU Connection:");        lcd_goto(40);        lcd_puts("Error!");    }    _delay_ms(500);    return 0;}
                            Предполагам, че с iso_send_msg трябва да поискам диагностичния режим и с iso_recv_msg да получа отговор, но как точно?Примерно нещо от рода на:
                            Код:
                            unsigned char diagmode[6] = {0x82, 0x0A, 0xF1, 0x10, 0x81, 0x01};iso_send_msg(diagmode, sizeof(diagmode);
                            Само после не знам как да чакам за благоприятния отговор, по документация: {0x50, 0x81}. Също как да поискам оборотите на двигателя. Видях, че id-то на RPM е 0C. Само 0C ли трябва да изпратя?

                            Коментар


                              #89
                              Ето рекуеста
                              Код:
                              char rqst(unsigned char data){		unsigned char request[3] = {0x02, RQ_DATA, data};	sei();	timer1_start(T1_PRESCALER);	while(TCNT1 < TIME_P3_DEF);	iso_send_msg(request, sizeof(request)); 			return CODE_OK;}
                              Код:
                              	do	{  		iso_recv_msg(msg_buff);  		++time_count;			db = msg_buff[0] & FMT_MSG_LENGTH;		cs = 0;		for(i = 0; i < db + 1; i++)			cs += msg_buff[i];		if ((msg_buff[db + 1]==cs) && (msg_buff[0]!=0))			res = 1;		else			res = 0;	}while((time_count < TIME_OUT_CNT) && (res == 0));
                              Хватката е да викаш iso_recv_msg докато получиш валиден респонс или до тайм аут.Прочети и тук http://www.avrfreaks.net/forum/avr-i...30-2-interfaceВ един от последните постове написах доста дебъг.Защо се връзваш на 9600 ?Връзваш се по този начин: {0x81, ecu_address, 0xf1, 0x81} Чек сумата се смята сама и се изпраща.
                              04/2000 Fiat Brava 1.9 JTD 105+

                              Коментар


                                #90
                                Ами вързвам се на 9600 защото четох в предишните коментари, че на 10400 имало проблем.Проверих Unidiag файловете видях, че адреса на екуто е 0x0A, на тестера 0xF1.В iso_fast_init съм ги сложил:
                                Код:
                                /* send StartCommRequest message */    unsigned char start_comm[4] = {0x81, 0x0A, 0xF1, 0x81};
                                Та до колкото разбрах, за да взема някакви данни първо трябва да поискам startDiagnosticSession (hex value=10) Default Mode (OBD2 Mode) (hex value=81).Ето какво направих:
                                Код:
                                int main(void){    lcd_init();    lcd_clrscr();    wdt_disable();  // make sure the watchdog is not running    UBRRH = UART_BAUDRATE>>8;       // set baud rate    UBRRL = UART_BAUDRATE;    UCSRB =((1<<RXCIE)|(1<<RXEN)|(1<<TXEN));    // enable Rx & Tx, enable Rx interrupt    UCSRC =((1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0));  // config USART; 8N1    serial_msg_pntr = (signed char *)&serial_msg_buf[0];  // init serial msg pointer      iso_glob.uart_n_baud = N_10400;  // set baud rate to 9,6kBaud        iso_hardware_init();  // init ISO hardware    iso_uart_init();  // init ISO software UART        ident();  // send identification to terminal    serial_putc(’>’);  // send initial command prompt      sei();  // enable interrupts    int iSuccess = 0;    if(iso_fast_init() == ISO_RETURN_CODE_OK) {        lcd_puts("ECU Connection:");        lcd_goto(40);        lcd_puts("Successful!");        iSuccess = 1;    } else {        lcd_puts("ECU Connection:");        lcd_goto(40);        lcd_puts("Error!");    }    _delay_ms(500);    if(iSuccess == 1) {        unsigned char diagmode[5] = {0x81, 0x0A, 0xF1, 0x10, 0x81};        sei();        unsigned char return_code;        return_code = iso_send_msg(diagmode, sizeof(diagmode));        unsigned char time_count = 0;        unsigned char msg_buff[260];        timeout_multiplier = 0x19;        int db, cs, res, i;        if(return_code == ISO_RETURN_CODE_OK) {            do            {                iso_recv_msg(msg_buff);                 ++time_count;                   db = msg_buff[0] & FMT_MSG_LENGTH;                cs = 0;                for(i = 0; i < db + 1; i++) {                    cs += msg_buff[i];                }                if ((msg_buff[db + 1]==cs) && (msg_buff[0]!=0)) {                    res = 1;                } else {                    res = 0;                }            } while((time_count < timeout_multiplier) && (res == 0));         }        unsigned char rpm_request[5] = {0x81, 0x0A, 0xF1, 0x21, 0x30};        int rpm=0;        char text[16], rpm_str[5];        while(1) {            return_code = iso_send_msg(rpm_request, sizeof(rpm_request));            time_count = 0;            db=0;            cs=0;            res=0;            if(return_code == ISO_RETURN_CODE_OK) {                do                {                    iso_recv_msg(msg_buff);                     ++time_count;                       db = msg_buff[0] & FMT_MSG_LENGTH;                    cs = 0;                    for(i = 0; i < db + 1; i++) {                        cs += msg_buff[i];                    }                    if ((msg_buff[db + 1]==cs) && (msg_buff[0]!=0)) {                        res = 1;                    } else {                        res = 0;                    }                } while((time_count < timeout_multiplier) && (res == 0));                 rpm = cs * 1; // RDBLI_2000, 0x21, 0x30, "Engine speed", 1, "Engine speed", 1, "#scaling unsigned 2 X*1 RPM";                lcd_clrscr();                strcpy(text, "RPM: ");                itoa(rpm, rpm_str, 10);                strcat(text, rpm_str);                lcd_puts(text);                _delay_ms(150);            }        }    }    return 0;}
                                Ако съм разбрал правилно чексумата (cs) са ми данните (отговора)?

                                Коментар

                                Working...
                                X