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:
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user