Skocz do zawartości
View in the app

A better way to browse. Learn more.

Autokącik

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Tajemnice ECU - Część III

Featured Replies

Napisano

Ze względu na dość długą przerwę od ostatniego odcinka, tym razem postanowiłem rozpocząć dość ciekawy temat. Mam nadzieje że nie umrze on śmiercią naturalną za szybko, bo przede wszystkim licze na udaną dyskusje na zaprezentowany temat.

Teraz trochę na wstępie, aktualnie borykam się z problemem ujarzmienia ECU od 1.1 do pracy z górą od 1.2 MPI. Już proby oswojenia wolnych obrotów przysparzają sporo problemów, więc wpadłem na ciekawy pomysł. Wgłębiając się w kod ustalający czas wtrysku można dostać sporego bólu głowy, tyle czynników jest branych pod uwagę. Tylko tak po chwili namysłu doszedłem do wniosku że zasada działania wolnych obrotów ( bo na razie tylko o nich mowa ) nie jest sama w sobie jakąś skomplikowaną operacją. Chodzi jedynie o utrzymanie silnika w stanie pracy, przy możliwie jak najmniejszym zużyciu paliwa. Oczywiście są jeszcze fazy nagrzewania lub próby chłodzenia, jednak nie wszystko tak od razu.

Analizując kod do tej pory udało mi się mniej więcej poznać zasadę obsługi wtryskiwacza - sama w sobie nie jest zbyt skomplikowana, w skrócie wygląda tak :

* wykrycie x stopni przed GMP

* wyliczenie "sugerowanego" czasu wtrysku

* sprawdzenie poprawności czasu, ew. przyjęcie czasu domyślnego

* wyliczenie momentu załączenia wtrysku

* w momencie włączenia wtrysku ,wyliczenie na podstawie ustalonego czasu wtrysku, czasu jego wyłączenia.

Cały pomysł polega na podmianie, częsci drugiej tego algorytmu na swój własny wink.gif. Brzmi dosyć abstrakcyjnie ale czemu by nie spróbować.

I właśnie o tym zamierzam pisać w tym odcinku, a przede wszystkim liczę na jakąś dyskusje i własne przemyślenia w tym temacie. Mam nadzieje że z czasem własna obsługa wolnych obrotów rozwinie się na tyle że będzie mogła zastąpić fabryczną również w codziennej jeździe.

Temat wydaje się dosyć skomplikowany ale zamierzam zacząć od podstaw i powoli go rozwijać. O ile będą w ogóle jakieś efekty.

Zakładam że do dyspozycji są wszystkie parametry jakie gromadzi ECU, typu RPM,AFR , IAT , MAP, temp. wody, położenie silnika krokowego itp.... jest ich o wiele więcej jak pojawia się pomysł wykorzystania jeszcze jakiegoś to proszę pytać możliwe że również jest dostępny.

To chyba tyle słowem wstępu. Czas przejść do konkretów i zobaczymy co z tego wyjdzie.

Na początek wypadałoby przedstawić parę faktów. To jest wycinek kodu, który pozwala myśleć że właśnie tutaj jest wyliczany czas wtrysku.

Jego najważniejsze części to :

na samym początku wywołanie funkcji obliczającej czas wtrysku, zapamiętany on zostaje w zmiennej WYLICZONY_CZAS_WTRYSKU.

Jak widać w pewnym przypadku jest on sprawdzany z domyślnym czasem wtrysku, i w momencie kiedy czas wyliczony jest mniejszy od czasu domyślnego zostaje od podstawiany w miejsce wyliczonego.

Następnie, również w zależności od sytuacji, wyliczony czas jest zwiększany o zmienną word_106.

Te dwie informacje (porównanie czasu wtrysku z domyślną wartością , i podstawienie go do zmiennej word_106), pozwalają domyślać się że własnie funkcja wywoływana na początku oblicza nowy czas wtrysku, a to dlatego że obie te zmienne w określonych sytuacjach stają się bezpośrednią wartością użytą do fizycznego wyłączenia wtrysku.

280491959-inj1.jpg

Tak więc spróbujemy zrobić w następujący sposób, w miejsce wywołania funkcji fabrycznej wstawiamy naszą funkcje.

Ze względu na ograniczony czas dzisiaj jest ona dosyć skromna ale od czegoś zawsze trzeba zacząć.

Tak więc nasz aktualny algorytm wyznaczania czasu wtrysku wygląda następująco :

280491959-inj2.jpg

Jeżeli przepustnica nie jest zamknięta to używamy funkcji fabrycznej opisana tutaj jako sub_0_7C15.

Jeżeli przepustnica jest zamknięta to sprawdzamy czy zmienna 101 ma wartość 4. ( Tutaj jest zapisany stan pracy silnika 1,2 rozruch , 3 chwila po rozruchu , 4 normalna praca ).

Czyli pozwalamy ECU wprawić w ruch nasz silnik i dopiero w momencie kiedy normalnie przechodzi na podstawową obsługę silnika nie wykonujemy funkcji fabrycznej tylko samemu próbujemy wyliczyć czas wtrysku.

Jak widać algorytm nie jest zbyt skomplikowany wink.gif, niezależnie od niczego czas wynosi 768( jedna uwaga co do jednostek, jednostka czasu to us czyli mikro sekunda = 1s = 1000ms, 1ms = 1000us , i dodatkowo w tym wypadku bazową jednostką jest 2us) czyli faktycznie 2*768us co daje ~ 1.5ms. To jest czas wtrysku na którym silnika pracuje poprawnie tylko że na ECU od 1.2.

Jak mówiłem z braku czasu, dzisiaj na tym zakończone zostały testy.

Krótka relacja to przy wartosci ( w stanie 3 obroty 1000 , stablina praca )

500 zgon natychmiastowy po przejsciu w tryb 4

2816 rownież

1408 silnik "prawie" chodzi obroty ~400, strasznie przelany strzela z wydechu

768 po przejsciu na 4 praktycznie niewielka zmiana niz stan 3, AFR jednak dosyc niski.

Testy zakończone z powodu resetowania się komputera i niemożności przeprowadzenia dalszych zmian, z powodów środowiskowych i społecznych wink.gif.

Do momentu kiedy zostanie potwierdzona stabilna praca na aktualnym "algorytmie", temat uważam za zawieszony, ponieważ nie mam pewności że takie brutalne podejście do kodu fabrycznego nie zaburzy działania ECU.

Jednak z chęcią rozpocznę dyskusje jak można by ulepszać aktualny "algorytm". Na pewno dobrze by brać pod uwagę AFR ale czy napewno to jest priorytet. Wydaje mi się że istotą wolnych obrotów jest jak najmniejsze spalanie, bez szkody dla silnika, ale mogę się mylić....

Pozdrawiam i zapraszam do dyskusji smile.gif

post-42871-14352491635987_thumb.jpg

Napisano

Dlugo na to czekalem, ale za ostre (jak dla mnie) zagadnienia sie wziales. Wydaje mi sie, ze ustalanie stalej wartosci wtrysku dla wolnych obrotow nie da rady zadzialac, nie na darmo orginalny program bierze tone parametrow pod uwage (wlaczajac poziom napiecia z akumulatora - jezli dobrze to rozumiem, to jezeli jest slaby prad wtryskiwacz sie mniej otwiera i trzeba go otworzyc na dluzej). Ja znalazlem w kodzie piekna tablice, ktora najpierw wylicza ile wolnych obrotow ma byc w zaleznosci od temperatry silnika (czujnik temp. wody). Na chlopski rozum na tej podstawie i na podstawie aktualnych obrotow wylicza sie (a) polozenie silnika krokowego, i (b) czas wtrysku. Ale nie moge poprzec tych gdyban faktami, bo dawno nie zagladalem w ten program, a teraz nie jestem na silach, zeby to odkopac nie wspominajac o tym, ze jest tam tona rzeczy ktorych nadal nie rozumiem (jak chociazby takie magiczne komorki jak twoja word_106). Tak czy owak, wydaje mi sie, ze z jednej strony za bardzo chcesz isc na skroty, z drugiej zas moze jest to prostsze niz ci sie wydaje - wtryskiwacze w 1.2 maja po prostu inna dawke paliwa dostarczana na us - czy nie wystarczy podzielic wartosci wyliczonej przez oryginalny ecu 1.1 przez odpowiedni wspolczynnik niewiem.gif

Napisano
  • Autor

> Dlugo na to czekalem, ale za ostre (jak dla mnie) zagadnienia sie

> wziales. Wydaje mi sie, ze ustalanie stalej wartosci wtrysku dla

> wolnych obrotow nie da rady zadzialac, nie na darmo orginalny

> program bierze tone parametrow pod uwage

Własnie o to chodzi, to jest tylko wersja początkowa żeby wogole sprawdzic jak zachowa sie program po takiej dosc brutalnej wink.gif zmianie. Byc moze ze w funkcji ktora zostala zastapiona wylicza sie rowniez inne zmienne oprocz tej od czasu wtrysku i wtedy wogole ECU przestanie dzialac. Po to sa te wstepne testy, a docelowo licze na dopracowanie algorytmu sterowania wtryskiem, sam mam juz troche pomyslow jak mozna go rozbudowac, napisze o tym wieczorem, ale rowniez licze na pomysly innych waytogo.gif

> napiecia z akumulatora - jezli dobrze to rozumiem, to jezeli

> jest slaby prad wtryskiwacz sie mniej otwiera i trzeba go

> otworzyc na dluzej).

To sie dokladnie zgadza, na podstawie napiecia jest ustalany "bazowy" czas wtrysku, ktory to w sytujacjach awaryjnych jest podstawiany.

> Ja znalazlem w kodzie piekna tablice, ktora

> najpierw wylicza ile wolnych obrotow ma byc w zaleznosci od

> temperatry silnika (czujnik temp. wody).

Jest cos takiego, w opisywanym przezemnie przypadku aby uproscic sprawe ustalilem stale obroty na 1000 w kazdej temperaturze.

> Tak czy owak, wydaje mi sie, ze z jednej strony za

> bardzo chcesz isc na skroty, z drugiej zas moze jest to prostsze

> niz ci sie wydaje - wtryskiwacze w 1.2 maja po prostu inna dawke

> paliwa dostarczana na us - czy nie wystarczy podzielic wartosci

> wyliczonej przez oryginalny ecu 1.1 przez odpowiedni

> wspolczynnik

Wszystko sie zgadza tylko sa tu drobne "niuanse", ta zwiekszona wartosc trzeba wstawic w odpowiednia mape, a ktora to niestety nie wiem. Jest jedna glowna mapa sluzaca do korekcji wtrysku, tylko problem polega na tym ze praca silnika jest podzielona na etapy, w trakcie nagrzewania jest brana inna wartosc bazowa ktora jest korygowana przez ta mape, a potem inna. Efekt jest taki ze modyfikacje mapy korekcji dla etapu nagrzewania dzialaja do momemntu kiedy ECU przechodzi na tryb normalny, i wtedy by trzeba bylo znowu przestawiac ta mape od korekcji. Tym bardziej ze roznice sa znacze i silnik bez zmian natychmiast gasnie.

Ale tak czy innaczej nie o to mi chodzi, bo poprostu chcialbym sprobowac stworzyc cos samemu. waytogo.gif

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

Ostatnio przeglądający 0

  • Brak zarejestrowanych użytkowników przeglądających tę stronę.

Powiadomienie o plikach cookie

Używając tego serwisu, wyrażasz zgodnę na naszą Polityka prywatności oraz Warunki użytkowania.

Account

Navigation

Szukaj

Szukaj

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.