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

Added Pmax curve for EIM, e.g. EN57AL

This commit is contained in:
Królik Uszasty
2022-10-12 22:17:01 +02:00
committed by Milek7
parent bdfc5556df
commit ebd3607e4b
2 changed files with 46 additions and 2 deletions

View File

@@ -1338,6 +1338,7 @@ public:
double InvertersRatio = 0.0; double InvertersRatio = 0.0;
std::vector<inverter> Inverters; //all inverters std::vector<inverter> Inverters; //all inverters
int InverterControlCouplerFlag = 4; //which coupling flag is necessary to controll inverters int InverterControlCouplerFlag = 4; //which coupling flag is necessary to controll inverters
std::map<double, double> EIM_Pmax_Table; /*tablica mocy maksymalnej od predkosci*/
/* -dla pojazdów z blendingiem EP/ED (MED) */ /* -dla pojazdów z blendingiem EP/ED (MED) */
double MED_Vmax = 0; // predkosc maksymalna dla obliczen chwilowej sily hamowania EP w MED double MED_Vmax = 0; // predkosc maksymalna dla obliczen chwilowej sily hamowania EP w MED
double MED_Vmin = 0; // predkosc minimalna dla obliczen chwilowej sily hamowania EP w MED double MED_Vmin = 0; // predkosc minimalna dla obliczen chwilowej sily hamowania EP w MED
@@ -1989,6 +1990,7 @@ private:
bool readDMList(std::string const &line); bool readDMList(std::string const &line);
bool readV2NMAXList(std::string const &line); bool readV2NMAXList(std::string const &line);
bool readHTCList(std::string const &line); bool readHTCList(std::string const &line);
bool readPmaxList(std::string const &line);
bool readFFList( std::string const &line ); bool readFFList( std::string const &line );
bool readWWList( std::string const &line ); bool readWWList( std::string const &line );
bool readLightsList( std::string const &Input ); bool readLightsList( std::string const &Input );

View File

@@ -6159,6 +6159,10 @@ double TMoverParameters::TractionForce( double dt ) {
ActiveInverters += 1.0; ActiveInverters += 1.0;
} }
InvertersRatio = ActiveInverters / (double)InvertersNo; InvertersRatio = ActiveInverters / (double)InvertersNo;
if (EIM_Pmax_Table.size() > 1)
{
eimc[eimc_p_Pmax] = TableInterpolation(EIM_Pmax_Table, Vel);
}
//tempomat //tempomat
if (ScndCtrlPosNo == 4 && SpeedCtrlTypeTime) if (ScndCtrlPosNo == 4 && SpeedCtrlTypeTime)
{ {
@@ -8905,7 +8909,7 @@ bool TMoverParameters::switch_physics(bool const State) // DO PRZETLUMACZENIA NA
bool startBPT; bool startBPT;
bool startMPT, startMPT0; bool startMPT, startMPT0;
bool startRLIST, startUCLIST; bool startRLIST, startUCLIST;
bool startDIZELMOMENTUMLIST, startDIZELV2NMAXLIST, startHYDROTCLIST; bool startDIZELMOMENTUMLIST, startDIZELV2NMAXLIST, startHYDROTCLIST, startPMAXLIST;
bool startDLIST, startFFLIST, startWWLIST; bool startDLIST, startFFLIST, startWWLIST;
bool startLIGHTSLIST; bool startLIGHTSLIST;
bool startCOMPRESSORLIST; bool startCOMPRESSORLIST;
@@ -9219,6 +9223,26 @@ bool TMoverParameters::readHTCList(std::string const &line) {
return true; return true;
} }
bool TMoverParameters::readPmaxList(std::string const &line) {
cParser parser(line);
if (false == parser.getTokens(2, false)) {
WriteLog("Read PmaxList: arguments missing in line " + std::to_string(LISTLINE + 1));
return false;
}
auto idx = LISTLINE++;
double x = 0.0;
double y = 0.0;
parser
>> x
>> y;
EIM_Pmax_Table.emplace(x, y);
return true;
}
bool TMoverParameters::readFFList( std::string const &line ) { bool TMoverParameters::readFFList( std::string const &line ) {
cParser parser( line ); cParser parser( line );
@@ -9418,7 +9442,8 @@ bool TMoverParameters::LoadFIZ(std::string chkpath)
startDIZELMOMENTUMLIST = false; startDIZELMOMENTUMLIST = false;
startDIZELV2NMAXLIST = false; startDIZELV2NMAXLIST = false;
startHYDROTCLIST = false; startHYDROTCLIST = false;
startFFLIST = false; startPMAXLIST = false;
startFFLIST = false;
startWWLIST = false; startWWLIST = false;
startLIGHTSLIST = false; startLIGHTSLIST = false;
startCOMPRESSORLIST = false; startCOMPRESSORLIST = false;
@@ -9510,6 +9535,11 @@ bool TMoverParameters::LoadFIZ(std::string chkpath)
startHYDROTCLIST = false; startHYDROTCLIST = false;
continue; continue;
} }
if (issection("END-PML", inputline)) {
startBPT = false;
startPMAXLIST = false;
continue;
}
if( issection( "endff", inputline ) ) { if( issection( "endff", inputline ) ) {
startBPT = false; startBPT = false;
startFFLIST = false; startFFLIST = false;
@@ -9771,6 +9801,14 @@ bool TMoverParameters::LoadFIZ(std::string chkpath)
continue; continue;
} }
if (issection("PmaxList:", inputline))
{
startBPT = false;
fizlines.emplace("PmaxList", inputline);
startPMAXLIST = true; LISTLINE = 0;
continue;
}
if (issection("V2NList:", inputline)) if (issection("V2NList:", inputline))
{ {
startBPT = false; startBPT = false;
@@ -9847,6 +9885,10 @@ bool TMoverParameters::LoadFIZ(std::string chkpath)
readHTCList(inputline); readHTCList(inputline);
continue; continue;
} }
if (true == startPMAXLIST) {
readPmaxList(inputline);
continue;
}
if( true == startFFLIST ) { if( true == startFFLIST ) {
readFFList( inputline ); readFFList( inputline );
continue; continue;