servus,
ich kram mal das alte thema wieder aus.
da mich die "neue" baro calc schon immer etwas merkwürdig vorkam und die phänomäne bei anderen mit der "neuen"barocalc keine ruhe ließen.
also hab ich mich mal durch den 3.4.2 firmware code gewühlt.
**************************************************************************
**
** Computation of Fuel Parameters
** Note that GAMMAE only includes Warm, Tpsfuelcut, Barocor, and Aircor
** (EGO no longer included)
**
**************************************************************************
lsum = ((outpc.warmcor * (long)outpc.tpsfuelcut) / 100);
if ((flash4.FuelAlgorithm & 0xf) != 5)
{/* Use baro and aircor for everything except primary MAF mode */
lsum = (lsum * ((outpc.barocor * (long)outpc.aircor) / 1000L)/1000L);}
outpc.gammae = (int)lsum;
if ((flash4.FuelAlgorithm & 0xf) == 5) {
int inj_load;
if (flash4.feature7 & 0x01) { // MAT cor curve
inj_load = (int)( ((long)mafload_no_air *
(1000 + intrp_1ditable(outpc.mat, NO_MAFMATS, (int *)flash5.MatVals, 1,
(unsigned int *)flash5.AirCorDel) )) / 1000);}
else
{inj_load = mafload_no_air;}
lsum2 = inj_load;
local_div = 1000;
/* MAF algorithm uses MAF to calculate mafload_no_air (calc is ~line )
mafload is a 'synthetic' load.
mafload_no_air excludes the aircor variable to avoid cancelling it out again here.
VE is taken as 100.0% as MAF ideally gives a perfect mass flow number.
The rest of the fuel calc follows as normal.
i.e. PW = RF * mafload_no_air * other_corrections
cf. Speed density where
PW = RF * map * VE(rpm,map) * airden * other_corrections * /
cf. Alpha/n
PW = RF * map * VE(rpm,tps) * airden * other_corrections *
else
if (
flash4.loadopts & LOADOPTS_LOADMULT) (
sollte die eingabe „multiply map ja/nein“ sein ?)
{
lsum2 = (long)outpc.map;}
else (
also bei a/n-pure,s/d,itb,%baro,maf ohne multiply map) richtig ? )
{lsum2 = 1000; // normalizes to ~1 when divide by baro} (
also entfällt die lsum2/local divider, sie kürzt sich quasi weg ?)
if (flash4.loadopts & LOADOPTS_OLDBARO) {local_div = outpc.baro} (
bei old baro calc ist die lsum2 wieder vorhanden in der rechnung )
else
if (flash4.loadopts & LOADOPTS_NEWBARO) { local_div = 1000} (
bei new baro calc ist die lsum2 zwar vorhanden,aber mit konstant 1000)
lsum1 = (lsum * ((outpc.egocor1 * lsum2) / local_div)/100);
lsum1 = lsum1 * ((outpc.vecurr1 * (long)flash4.ReqFuel)/ 10000); // .01 usec
if (((flash8.seq_inj & 0x03) == 3) && (seq_inj_ctrl & SEQ_HYBRID))
{lsum1 *= 2; // double the reqfuel due to the single pulse} (also bei sequenzieller injection ?)
lsum2 = (lsum * ((outpc.egocor2 * lsum2) / local_div)/100);
lsum1 = (lsum * ((outpc.egocor1 * lsum2) / local_div)/100);
lsum1 = lsum1 * ((outpc.vecurr1 * (long)flash4.ReqFuel)/ 10000)
((outpc.warmcor * (long)outpc.tpsfuelcut) / 100) * ((outpc.barocor * (long)outpc.aircor) / 1000L)/1000L) * ((outpc.egocor1 * lsum2) / local_div)/100) * ((outpc.vecurr1 * (long)flash4.ReqFuel)/ 10000) = lsum1
lsum1 = ausgabezeit ms pw ohne deadtime
(flash4.loadopts & LOADOPTS_OLDBARO) {local_div = outpc.baro}
(flash4.loadopts & LOADOPTS_NEWBARO) { local_div = 1000}
((outpc.warmcor * (long)outpc.tpsfuelcut) / 100) * ((outpc.barocor * (long)outpc.aircor) / 1000L)/1000L) * ((outpc.egocor1 *
(long)outpc.map ) /
{outpc.baro}) /100) * ((outpc.vecurr1 * (long)flash4.ReqFuel)/ 10000) = lsum1
((outpc.warmcor * (long)outpc.tpsfuelcut) / 100) * ((outpc.barocor * (long)outpc.aircor) / 1000L)/1000L) * ((outpc.egocor1 *
(long)outpc.map ) /
1000) /100) * ((outpc.vecurr1 * (long)flash4.ReqFuel)/ 10000) = lsum1
hier mal eine bsp rechnung
reqfuel 7,75ms
ve106
barocorwerte identisch
mat 20°C und ego 100%
Lsum1
new baro calc = map 96 baro 97 mat 20 barocor 96
pw =
((outpc.vecurr1 * (long)flash4.ReqFuel)/ 10000) *
(1060 * 775,0) / 10000 = 8.215 *
((outpc.egocor1 * (long)outpc.map ) / 1000) /100) *
((100 * 960) / 1000) / 100) = 0,96 *
((outpc.barocor * (long)outpc.aircor) / / 1000L)/1000L) *
((960 * 1000) / 1000) / 1000 = 0,96 *
((outpc.warmcor * (long)outpc.tpsfuelcut) / 100)
1 = 7,571
lsum1
old baro calc = map 96 baro 97 mat 20 barocor 96
pw =
((outpc.vecurr1 * (long)flash4.ReqFuel)/ 10000) *
(1060 * 775,0)/10000 = 8.215 *
((outpc.egocor1 * (long)outpc.map ) / {outpc.baro}) /100)*
((100 * 960 ) / 970) / 100) = 0,989 *
((outpc.barocor * (long)outpc.aircor) / / 1000L)/1000L) *
((960 * 1000) / 1000) / 1000 = 0,96 *
((outpc.warmcor * (long)outpc.tpsfuelcut) / 100)
1 = 7.799
new baro calc = map 94 baro 95 mat 20 barocor 94
pw =
((outpc.vecurr1 * (long)flash4.ReqFuel)/ 10000) *
(1060 * 775,0) / 10000 = 8.215 *
((outpc.egocor1 * (long)outpc.map ) / 1000) /100) *
((100 * 940) / 1000) / 100) = 0,94 *
((outpc.barocor * (long)outpc.aircor) / / 1000L)/1000L) *
((940 * 1000) / 1000) / 1000 = 0,94 *
((outpc.warmcor * (long)outpc.tpsfuelcut) / 100)
1 = 7,258
lsum1
old baro calc = map 94 baro 95 mat 20 barocor 94
pw =
((outpc.vecurr1 * (long)flash4.ReqFuel)/ 10000) *
(1060 * 775,0)/10000 = 8.215 *
((outpc.egocor1 * (long)outpc.map ) / {outpc.baro}) /100)*
((100 * 940 ) / 950) / 100) = 0,989 *
((outpc.barocor * (long)outpc.aircor) / / 1000L)/1000L) *
((940 * 1000) / 1000) / 1000 = 0,94 *
((outpc.warmcor * (long)outpc.tpsfuelcut) / 100)
1 = 7,637
ergibt bei baro_calc new
eine verminderung der benzinmasse von 2 % pro 1kpa map/baro
fallend vom berechnungsgrundlagen wert.
ergibt bei baro_calc old
eine verminderung der benzinmasse von 1 % pro 1kpa map/baro
fallend vom berechnungsgrundlagen wert.
die grundlage,bei 101.3kpa baro und map von 100kpa eine füllung von 100% ergibt.
also im prinzip gehen 1,28% vom baro durch den luftfilter und drosselklappe verloren.
d.h die grundlage enthält ein verlustverhältniss bei 100ve , 100kpa map und 101.3kpa baro zwischen atmosphäre und brennraum von 1.28%
an diesem "verlustverhältniss" (summe der ganzen strömungsübergängen und -widerständen) ändert sich nichts,
es sei denn,der luftfilter (wenn vorhanden) geht langsam zu.
ok ich hab 101 kpa baro und 100 kpa als 100%
ich habe einen guten luftfilter und drosselklappe,es geht nur 1% verloren
nach der neuen baro calc ergibt sich aber durch ((long)outpc.map ) / 1000) immer ein anderes "verlustverhältniss" bei wot in abhängigkeit vom barometer.
zusätzlich wird über die in der gammae enthaltenen barocor korrigiert
bei der alter baro calc ergibt sich aber durch ((long)outpc.map ) / {outpc.baro}) immer das gleiche "verlustverhältniss" bei wot,egal bei welchen barometer.
ausschließlich wird über die in der gammae enthaltene barocor korrigiert.