16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-19 07:39:19 +02:00

Add sustain parameter (BRVto in Engine section)

This commit is contained in:
2025-01-03 19:22:37 +01:00
parent f10550ea23
commit bb56f97692
2 changed files with 24 additions and 13 deletions

View File

@@ -1342,6 +1342,8 @@ public:
std::vector<inverter> Inverters; //all inverters
int InverterControlCouplerFlag = 4; //which coupling flag is necessary to controll inverters
int Imaxrpc = 0; // Maksymalny prad rezystora hamowania chlodzonego pasywnie
int BRVto = 0; // Czas jaki wentylatory jeszcze dodatkowo schladzaja rezystor
double BRVtimer = 0; // Timer dla podtrzymania wentylatora
std::map<double, double> EIM_Pmax_Table; /*tablica mocy maksymalnej od predkosci*/
/* -dla pojazdów z blendingiem EP/ED (MED) */
double MED_Vmax = 0; // predkosc maksymalna dla obliczen chwilowej sily hamowania EP w MED

View File

@@ -1597,6 +1597,26 @@ void TMoverParameters::compute_movement_( double const Deltatime ) {
}
}
// Uproszczona symulacja wentylatorow rezystora hamowania
// Prad oddawany na rezystor
double Irh = abs(eimv[eimv_Pe]) - abs(eimv[eimv_Ipoj]);
// Wlacz wentylator jesli prad rekuperacji przekroczy maksymalny dla pasywnego chlodzenia rezystora
if (Irh > Imaxrpc && eimv[eimv_Ipoj] < 0)
{
BRVtimer = 0;
BRVentilators = true;
}
else {
BRVtimer += Deltatime;
if (BRVtimer > BRVto)
BRVentilators = false;
}
// automatyczny rozruch
if( EngineType == TEngineType::ElectricSeriesMotor ) {
if( AutoRelayCheck() ) {
@@ -6408,18 +6428,6 @@ double TMoverParameters::TractionForce( double dt ) {
0.007 * (std::abs(EngineVoltage) - (EnginePowerSource.CollectorParameters.MaxV - 100)));
Itot = eimv[eimv_Ipoj] * (0.01 + std::min(0.99, 0.99 - Vadd));
// Uproszczona symulacja rezystora hamowania
if (eimv[eimv_Ipoj] < 0)
{
// Prad oddawany na rezystor
double Irh = abs(eimv[eimv_Pe]) - abs(eimv[eimv_Ipoj]);
// Wlacz wentylator jesli prad przekroczy maksymalny dla pasywnego chlodzenia
BRVentilators = Irh > Imaxrpc;
}
else
BRVentilators = false;
EnginePower = abs(eimv[eimv_Ic] * eimv[eimv_U] * NPoweredAxles) / 1000;
// power inverters
@@ -11032,7 +11040,8 @@ void TMoverParameters::LoadFIZ_Engine( std::string const &Input ) {
extract_value( EIMCLogForce, "eimclf", Input, "" );
extract_value( InvertersNo, "InvNo", Input, "" );
extract_value( InverterControlCouplerFlag, "InvCtrCplFlag", Input, "" );
extract_value(Imaxrpc, "Imaxrpc", Input, "");
extract_value(Imaxrpc, "Imaxrpc", Input, "");
extract_value(BRVto, "BRVto", Input, "");
extract_value( Flat, "Flat", Input, "");
if (eimc[eimc_p_Pmax] > 0 && Power > 0 && InvertersNo == 0) {