mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-19 08:49:18 +02:00
Some additional functions for diesel engine regulator for hydrodiesel vehicles
This commit is contained in:
committed by
tmj-fstate
parent
83743fe99b
commit
7fbc864852
@@ -1041,6 +1041,7 @@ public:
|
||||
double dizel_nmin = 0.0; /*najmniejsza dopuszczalna predkosc obrotowa*/
|
||||
double dizel_nmin_hdrive = 0.0; /*najmniejsza dopuszczalna predkosc obrotowa w czasie jazdy na hydro */
|
||||
double dizel_nmin_hdrive_factor = 0.0; /*wspolczynnik wzrostu obrotow minimalnych hydro zaleznosci od zadanego procentu*/
|
||||
double dizel_nmin_retarder = 0.0; /*obroty pracy podczas hamowania retarderem*/
|
||||
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*/
|
||||
@@ -1070,6 +1071,7 @@ public:
|
||||
double hydro_R_FillRateInc = 1.0; /*szybkosc napelniania sprzegla*/
|
||||
double hydro_R_FillRateDec = 1.0; /*szybkosc oprozniania sprzegla*/
|
||||
double hydro_R_MinVel = 1.0; /*minimalna predkosc, przy ktorej retarder dziala*/
|
||||
double hydro_R_EngageVel = 1.0; /*minimalna predkosc hamowania, przy ktorej sprzeglo jest wciaz wlaczone*/
|
||||
/*- dla lokomotyw spalinowo-elektrycznych -*/
|
||||
double AnPos = 0.0; // pozycja sterowania dokladnego (analogowego)
|
||||
bool AnalogCtrl = false; //
|
||||
@@ -1310,6 +1312,7 @@ public:
|
||||
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_nreg_min = 0.0; /*predkosc regulatora minimalna, zmienna w hydro*/
|
||||
|
||||
/* - zmienne dla przetowrnika momentu */
|
||||
double hydro_TC_Fill = 0.0; /*napelnienie*/
|
||||
@@ -1565,7 +1568,7 @@ public:
|
||||
bool dizel_EngageSwitch(double state);
|
||||
bool dizel_EngageChange(double dt);
|
||||
bool dizel_AutoGearCheck(void);
|
||||
double dizel_fillcheck(int mcp);
|
||||
double dizel_fillcheck(int mcp, double dt);
|
||||
double dizel_Momentum(double dizel_fill, double n, double dt);
|
||||
double dizel_MomentumRetarder(double n, double dt); // moment hamowania retardera
|
||||
void dizel_HeatSet( float const Value );
|
||||
|
||||
@@ -6359,10 +6359,15 @@ bool TMoverParameters::dizel_AutoGearCheck(void)
|
||||
if (EIMCtrlType > 0) //sterowanie komputerowe
|
||||
{
|
||||
if (dizel_automaticgearstatus == 0)
|
||||
if ((hydro_TC && hydro_TC_Fill > 0.01 )||( eimic_real > 0.0 ))
|
||||
{
|
||||
if ((hydro_TC && hydro_TC_Fill > 0.01) || (eimic_real > 0.0))
|
||||
dizel_EngageSwitch(1.0);
|
||||
else
|
||||
dizel_EngageSwitch(0.0);
|
||||
if (Vel > hydro_R_EngageVel && hydro_R && hydro_R_Fill > 0.01)
|
||||
dizel_EngageSwitch(0.5);
|
||||
else
|
||||
dizel_EngageSwitch(0.0);
|
||||
}
|
||||
else
|
||||
dizel_EngageSwitch(0.0);
|
||||
}
|
||||
@@ -6498,7 +6503,7 @@ bool TMoverParameters::dizel_Update(double dt) {
|
||||
dizel_EngageChange( dt );
|
||||
DU = dizel_AutoGearCheck();
|
||||
double const fillspeed { 2 };
|
||||
dizel_fill = dizel_fill + fillspeed * dt * ( dizel_fillcheck( MainCtrlPos ) - dizel_fill );
|
||||
dizel_fill = dizel_fill + fillspeed * dt * ( dizel_fillcheck( MainCtrlPos , dt ) - dizel_fill );
|
||||
}
|
||||
|
||||
dizel_Heat( dt );
|
||||
@@ -6510,10 +6515,9 @@ bool TMoverParameters::dizel_Update(double dt) {
|
||||
// Q: 20160715
|
||||
// oblicza napelnienie, uzwglednia regulator obrotow
|
||||
// *************************************************************************************************
|
||||
double TMoverParameters::dizel_fillcheck(int mcp)
|
||||
double TMoverParameters::dizel_fillcheck(int mcp, double dt)
|
||||
{
|
||||
auto realfill { 0.0 };
|
||||
auto nreg_min { dizel_nmin * 0.98 };
|
||||
|
||||
if( ( true == Mains )
|
||||
&& ( MainCtrlPosNo > 0 )
|
||||
@@ -6533,11 +6537,14 @@ double TMoverParameters::dizel_fillcheck(int mcp)
|
||||
realfill = std::max(0.0, eimic_real);
|
||||
if (eimic_real>0 && !hydro_TC_Lockup)
|
||||
{
|
||||
nreg_min = dizel_nmin_hdrive + eimic_real * dizel_nmin_hdrive_factor;
|
||||
dizel_nreg_min = std::min(dizel_nreg_min + 2.5 * dt, dizel_nmin_hdrive + eimic_real * dizel_nmin_hdrive_factor);
|
||||
}
|
||||
else
|
||||
{
|
||||
nreg_min = dizel_nmin;
|
||||
if (Vel < hydro_R_EngageVel && hydro_R && hydro_R_Fill > 0.01)
|
||||
dizel_nreg_min = std::min(dizel_nreg_min + 5.0 * dt, dizel_nmin_retarder);
|
||||
else
|
||||
dizel_nreg_min = dizel_nmin;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -6587,7 +6594,7 @@ double TMoverParameters::dizel_fillcheck(int mcp)
|
||||
realfill = 0;
|
||||
if (enrot < nreg) //pod predkoscia regulatora dawka zadana
|
||||
realfill = realfill;
|
||||
if ((enrot < nreg_min)&&(RList[mcp].R>0.001)) //jesli ponizej biegu jalowego i niezerowa dawka, to dawaj pelna
|
||||
if ((enrot < dizel_nreg_min)&&(RList[mcp].R>0.001)) //jesli ponizej biegu jalowego i niezerowa dawka, to dawaj pelna
|
||||
realfill = 1;
|
||||
}
|
||||
}
|
||||
@@ -9151,6 +9158,7 @@ void TMoverParameters::LoadFIZ_Engine( std::string const &Input ) {
|
||||
|
||||
extract_value( dizel_nmin, "nmin", Input, "" );
|
||||
dizel_nmin /= 60.0;
|
||||
dizel_nreg_min = dizel_nmin * 0.98;
|
||||
extract_value(dizel_nmin_hdrive, "nmin_hdrive", Input, "");
|
||||
dizel_nmin_hdrive /= 60.0;
|
||||
if (dizel_nmin_hdrive == 0.0) {
|
||||
@@ -9158,6 +9166,11 @@ void TMoverParameters::LoadFIZ_Engine( std::string const &Input ) {
|
||||
}
|
||||
extract_value(dizel_nmin_hdrive_factor, "nmin_hdrive_factor", Input, "");
|
||||
dizel_nmin_hdrive_factor /= 60.0;
|
||||
extract_value(dizel_nmin_retarder, "nmin_retarder", Input, "");
|
||||
dizel_nmin_retarder /= 60.0;
|
||||
if (dizel_nmin_retarder == 0.0) {
|
||||
dizel_nmin_retarder = dizel_nmin;
|
||||
}
|
||||
// TODO: unify naming scheme and sort out which diesel engine params are used where and how
|
||||
extract_value( nmax, "nmax", Input, "" );
|
||||
nmax /= 60.0;
|
||||
@@ -9203,6 +9216,7 @@ void TMoverParameters::LoadFIZ_Engine( std::string const &Input ) {
|
||||
extract_value(hydro_R_FillRateInc, "R_FRI", Input, "");
|
||||
extract_value(hydro_R_FillRateDec, "R_FRD", Input, "");
|
||||
extract_value(hydro_R_MinVel, "R_MinVel", Input, "");
|
||||
extract_value(hydro_R_EngageVel, "R_EngageVel", Input, "");
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user