mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-18 03:09:18 +02:00
Added fuel consumption calculation for DieselEngine
This commit is contained in:
committed by
tmj-fstate
parent
a550f07b23
commit
d0ac6bf599
@@ -1121,6 +1121,10 @@ public:
|
||||
double dizel_minVelfullengage = 0.0; /*najmniejsza predkosc przy jezdzie ze sprzeglem bez poslizgu*/
|
||||
double dizel_maxVelANS = 3.0; /*predkosc progowa rozlaczenia przetwornika momentu*/
|
||||
double dizel_AIM = 1.0; /*moment bezwladnosci walu itp*/
|
||||
double dizel_NominalFuelConsumptionRate = 250.0; /*jednostkowe zużycie paliwa przy mocy nominalnej, wczytywane z fiz, g/kWh*/
|
||||
double dizel_FuelConsumption = 0.0; /*współczynnik zużycia paliwa przeliczony do jednostek maszynowych, l/obrót*/
|
||||
double dizel_FuelConsumptionActual = 0.0; /*chwilowe spalanie paliwa w l/h*/
|
||||
double dizel_FuelConsumptedTotal = 0.0; /*ilość paliwa zużyta od początku symulacji, l*/
|
||||
double dizel_engageDia = 0.5; double dizel_engageMaxForce = 6000.0; double dizel_engagefriction = 0.5; /*parametry sprzegla*/
|
||||
double engagedownspeed = 0.9;
|
||||
double engageupspeed = 0.5;
|
||||
@@ -1401,7 +1405,8 @@ public:
|
||||
bool dizel_spinup { false }; // engine spin up to idle speed flag
|
||||
double dizel_engagedeltaomega = 0.0; /*roznica predkosci katowych tarcz sprzegla*/
|
||||
double dizel_n_old = 0.0; /*poredkosc na potrzeby obliczen sprzegiel*/
|
||||
double dizel_Torque = 0.0; /*poredkosc na potrzeby obliczen sprzegiel*/
|
||||
double dizel_Torque = 0.0; /*aktualny moment obrotowy silnika spalinowego*/
|
||||
double dizel_Power = 0.0; /*aktualna moc silnika spalinowego*/
|
||||
double dizel_nreg_min = 0.0; /*predkosc regulatora minimalna, zmienna w hydro*/
|
||||
|
||||
/* - zmienne dla przetowrnika momentu */
|
||||
|
||||
@@ -5054,7 +5054,8 @@ double TMoverParameters::TractionForce( double dt ) {
|
||||
break;
|
||||
}
|
||||
case TEngineType::DieselEngine: {
|
||||
EnginePower = ( 2 * dizel_Mstand + dmoment ) * enrot * ( 2.0 * M_PI / 1000.0 );
|
||||
dizel_Power = Mm * enrot * (2.0 * M_PI / 1000.0);
|
||||
EnginePower = ( dizel_Mstand + Mm ) * enrot * ( 2.0 * M_PI / 1000.0 );
|
||||
if( MainCtrlPowerPos() > 1 ) {
|
||||
// dodatkowe opory z powodu sprezarki}
|
||||
// dmoment -= dizel_Mstand * ( 0.2 * enrot / dizel_nmax ); //yB: skąd to w ogóle się bierze?!
|
||||
@@ -5238,8 +5239,7 @@ double TMoverParameters::TractionForce( double dt ) {
|
||||
|
||||
case TEngineType::DieselEngine:
|
||||
{
|
||||
Mm = dmoment; //bylo * dizel_engage
|
||||
Mw = Mm * dtrans; // dmoment i dtrans policzone przy okazji enginerotation
|
||||
Mw = dmoment * dtrans; // dmoment i dtrans policzone przy okazji enginerotation
|
||||
if ((hydro_R) && (hydro_R_Placement == 0))
|
||||
Mw -= dizel_MomentumRetarder(nrot * Transmision.Ratio, dt) * Transmision.Ratio;
|
||||
Fw = Mw * 2.0 / WheelDiameter / NPoweredAxles;
|
||||
@@ -7122,6 +7122,9 @@ double TMoverParameters::dizel_Momentum(double dizel_fill, double n, double dt)
|
||||
|
||||
if( enrot > 0 ) {
|
||||
Moment = ( dizel_Mmax - ( dizel_Mmax - dizel_Mnmax ) * square( ( enrot - dizel_nMmax ) / ( dizel_nMmax - dizel_nmax ) ) ) * dizel_fill - dizel_Mstand;
|
||||
Mm = Moment;
|
||||
dizel_FuelConsumptionActual = dizel_FuelConsumption * enrot * dizel_fill;
|
||||
dizel_FuelConsumptedTotal += dizel_FuelConsumptionActual * dt / 3600.0;
|
||||
if ((hydro_R) && (hydro_R_Placement == 2))
|
||||
Moment -= dizel_MomentumRetarder(enrot, dt);
|
||||
}
|
||||
@@ -10036,11 +10039,18 @@ void TMoverParameters::LoadFIZ_DList( std::string const &Input ) {
|
||||
extract_value( dizel_nmax, "nmax", Input, "" );
|
||||
extract_value( dizel_nominalfill, "nominalfill", Input, "" );
|
||||
extract_value( dizel_Mstand, "Mstand", Input, "" );
|
||||
extract_value( dizel_NominalFuelConsumptionRate, "NomFuelConsRate", Input, "");
|
||||
|
||||
if( dizel_nMmax == dizel_nmax ) {
|
||||
// HACK: guard against cases where nMmax == nmax, leading to division by 0 in momentum calculation
|
||||
dizel_nMmax = dizel_nmax - 1.0 / 60.0;
|
||||
}
|
||||
|
||||
//Calculation of fuel consumption coefficient for futher calculation
|
||||
double dizel_max_power = dizel_nmax * (dizel_Mnmax - dizel_Mstand) * M_PI * 2 * 0.001; //power in kW
|
||||
double dizel_max_energy = dizel_max_power; //energy per one hour in kWh is equal to power in kW times 1 h
|
||||
double fuel_density = 850; //g/l
|
||||
dizel_FuelConsumption = dizel_NominalFuelConsumptionRate * dizel_max_energy / fuel_density / dizel_nmax;
|
||||
}
|
||||
|
||||
void TMoverParameters::LoadFIZ_FFList( std::string const &Input ) {
|
||||
|
||||
@@ -793,11 +793,20 @@ debug_panel::update_section_engine( std::vector<text_line> &Output ) {
|
||||
// diesel engine data
|
||||
if( mover.EngineType == TEngineType::DieselEngine ) {
|
||||
|
||||
double fuel_mean = 0.0;
|
||||
if (mover.DistCounter > 0.5) {
|
||||
fuel_mean = 100 * mover.dizel_FuelConsumptedTotal / mover.DistCounter;
|
||||
}
|
||||
|
||||
std::string parameterstext = "param value";
|
||||
std::vector< std::pair <std::string, double> > const paramvalues {
|
||||
{ " rpm: ", mover.enrot * 60.0 },
|
||||
{ "efill: ", mover.dizel_fill },
|
||||
{ "etorq: ", mover.dizel_Torque },
|
||||
{ "power: ", mover.dizel_Power },
|
||||
{ "f_act: ", mover.dizel_FuelConsumptionActual },
|
||||
{ "f_tot: ", mover.dizel_FuelConsumptedTotal },
|
||||
{ "fmean: ", fuel_mean },
|
||||
{ "creal: ", mover.dizel_engage },
|
||||
{ "cdesi: ", mover.dizel_engagestate },
|
||||
{ "cdelt: ", mover.dizel_engagedeltaomega },
|
||||
|
||||
Reference in New Issue
Block a user