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

DynamicBrake parameters in FIZ file

This commit is contained in:
Królik Uszasty
2018-07-22 11:01:11 +02:00
committed by tmj-fstate
parent cf7b9652e0
commit 9830e6c15e
2 changed files with 18 additions and 6 deletions

View File

@@ -859,6 +859,13 @@ public:
//CouplerNr: TCouplerNr; {ABu: nr sprzegu podlaczonego w drugim obiekcie} //CouplerNr: TCouplerNr; {ABu: nr sprzegu podlaczonego w drugim obiekcie}
bool IsCoupled = false; /*czy jest sprzezony ale jedzie z tylu*/ bool IsCoupled = false; /*czy jest sprzezony ale jedzie z tylu*/
int DynamicBrakeType = 0; /*patrz dbrake_**/ int DynamicBrakeType = 0; /*patrz dbrake_**/
int DynamicBrakeAmpmeters = 2; /*liczba amperomierzy przy hamowaniu ED*/
double DynamicBrakeRes = 5.8; /*rezystancja oporników przy hamowaniu ED*/
double TUHEX_Sum = 750; /*nastawa sterownika hamowania ED*/
double TUHEX_Diff = 10; /*histereza działania sterownika hamowania ED*/
double TUHEX_MinIw = 60; /*minimalny prąd wzbudzenia przy hamowaniu ED - wynika z chk silnika*/
double TUHEX_MaxIw = 400; /*maksymalny prąd wzbudzenia przy hamowaniu ED - ograniczenie max siły*/
int RVentType = 0; /*0 - brak, 1 - jest, 2 - automatycznie wlaczany*/ int RVentType = 0; /*0 - brak, 1 - jest, 2 - automatycznie wlaczany*/
double RVentnmax = 1.0; /*maks. obroty wentylatorow oporow rozruchowych*/ double RVentnmax = 1.0; /*maks. obroty wentylatorow oporow rozruchowych*/
double RVentCutOff = 0.0; /*rezystancja wylaczania wentylatorow dla RVentType=2*/ double RVentCutOff = 0.0; /*rezystancja wylaczania wentylatorow dla RVentType=2*/

View File

@@ -88,7 +88,6 @@ double TMoverParameters::Current(double n, double U)
// w zaleznosci od polozenia nastawnikow MainCtrl i ScndCtrl oraz predkosci obrotowej n // w zaleznosci od polozenia nastawnikow MainCtrl i ScndCtrl oraz predkosci obrotowej n
// a takze wywala bezpiecznik nadmiarowy gdy za duzy prad lub za male napiecie // a takze wywala bezpiecznik nadmiarowy gdy za duzy prad lub za male napiecie
// jest takze mozliwosc uszkodzenia silnika wskutek nietypowych parametrow // jest takze mozliwosc uszkodzenia silnika wskutek nietypowych parametrow
double const ep09resED = 5.8; // TODO: dobrac tak aby sie zgadzalo ze wbudzeniem
double R, MotorCurrent; double R, MotorCurrent;
double Rz, Delta, Isf; double Rz, Delta, Isf;
@@ -166,7 +165,7 @@ double TMoverParameters::Current(double n, double U)
{ {
// TODO: zrobic bardziej uniwersalne nie tylko dla EP09 // TODO: zrobic bardziej uniwersalne nie tylko dla EP09
MotorCurrent = MotorCurrent =
-Max0R(MotorParam[0].fi * (Vadd / (Vadd + MotorParam[0].Isat) - MotorParam[0].fi0), 0) * n * 2.0 / ep09resED; -Max0R(MotorParam[0].fi * (Vadd / (Vadd + MotorParam[0].Isat) - MotorParam[0].fi0), 0) * n * 2.0 / DynamicBrakeRes;
} }
else if( ( RList[ MainCtrlActualPos ].Bn == 0 ) else if( ( RList[ MainCtrlActualPos ].Bn == 0 )
|| ( false == StLinFlag ) ) { || ( false == StLinFlag ) ) {
@@ -4581,16 +4580,16 @@ double TMoverParameters::TractionForce( double dt ) {
} }
if ((DynamicBrakeType == dbrake_automatic) && (DynamicBrakeFlag)) if ((DynamicBrakeType == dbrake_automatic) && (DynamicBrakeFlag))
{ {
if (((Vadd + abs(Im)) > 760) || (Hamulec->GetEDBCP() < 0.25)) if (((Vadd + abs(Im)) > TUHEX_Sum + TUHEX_Diff) || (Hamulec->GetEDBCP() < 0.25))
{ {
Vadd -= 500.0 * dt; Vadd -= 500.0 * dt;
if (Vadd < 1) if (Vadd < 1)
Vadd = 0; Vadd = 0;
} }
else if ((DynamicBrakeFlag) && ((Vadd + abs(Im)) < 740)) else if ((DynamicBrakeFlag) && ((Vadd + abs(Im)) < TUHEX_Sum - TUHEX_Diff))
{ {
Vadd += 70.0 * dt; Vadd += 70.0 * dt;
Vadd = Min0R(Max0R(Vadd, 60), 400); Vadd = Min0R(Max0R(Vadd, TUHEX_MinIw), TUHEX_MaxIw);
} }
if (Vadd > 0) if (Vadd > 0)
Mm = MomentumF(Im, Vadd, 0); Mm = MomentumF(Im, Vadd, 0);
@@ -8088,6 +8087,7 @@ void TMoverParameters::LoadFIZ_Cntrl( std::string const &line ) {
lookup != dynamicbrakes.end() ? lookup != dynamicbrakes.end() ?
lookup->second : lookup->second :
dbrake_none; dbrake_none;
extract_value(DynamicBrakeAmpmeters, "DBAM", line, "");
} }
extract_value( MainCtrlPosNo, "MCPN", line, "" ); extract_value( MainCtrlPosNo, "MCPN", line, "" );
@@ -8479,6 +8479,10 @@ void TMoverParameters::LoadFIZ_Circuit( std::string const &Input ) {
extract_value( ImaxHi, "ImaxHi", Input, "" ); extract_value( ImaxHi, "ImaxHi", Input, "" );
Imin = IminLo; Imin = IminLo;
Imax = ImaxLo; Imax = ImaxLo;
extract_value( TUHEX_Sum, "TUHEX_Sum", Input, "" );
extract_value( TUHEX_Diff, "TUHEX_Diff", Input, "" );
extract_value( TUHEX_MaxIw, "TUHEX_MaxIw", Input, "" );
extract_value( TUHEX_MinIw, "TUHEX_MinIw", Input, "" );
} }
void TMoverParameters::LoadFIZ_RList( std::string const &Input ) { void TMoverParameters::LoadFIZ_RList( std::string const &Input ) {
@@ -8506,6 +8510,7 @@ void TMoverParameters::LoadFIZ_RList( std::string const &Input ) {
} }
extract_value( RVentMinI, "RVentMinI", Input, "" ); extract_value( RVentMinI, "RVentMinI", Input, "" );
extract_value( RVentSpeed, "RVentSpeed", Input, "" ); extract_value( RVentSpeed, "RVentSpeed", Input, "" );
extract_value( DynamicBrakeRes, "DynBrakeRes", Input, "");
} }
void TMoverParameters::LoadFIZ_DList( std::string const &Input ) { void TMoverParameters::LoadFIZ_DList( std::string const &Input ) {
@@ -9609,7 +9614,7 @@ double TMoverParameters::ShowCurrentP(int AmpN) const
Bn = RList[MainCtrlActualPos].Bn; // ile równoległych gałęzi silników Bn = RList[MainCtrlActualPos].Bn; // ile równoległych gałęzi silników
if ((DynamicBrakeType == dbrake_automatic) && (DynamicBrakeFlag)) if ((DynamicBrakeType == dbrake_automatic) && (DynamicBrakeFlag))
Bn = 2; Bn = DynamicBrakeAmpmeters;
if (Power > 0.01) if (Power > 0.01)
{ {
if (AmpN > 0) // podać prąd w gałęzi if (AmpN > 0) // podać prąd w gałęzi