mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-19 12:19:18 +02:00
Added new LocalBrake algorithm for TRAXX - test of mechanism
This commit is contained in:
@@ -2713,6 +2713,7 @@ bool TDynamicObject::Update(double dt, double dt1)
|
||||
MoverParameters->eimic_real = eimic;
|
||||
MoverParameters->SendCtrlToNext("EIMIC", Max0R(0, eimic), MoverParameters->CabNo);
|
||||
auto LBR = Max0R(-eimic, 0);
|
||||
auto eim_lb = (Mechanik->AIControllFlag || !MoverParameters->LocHandleTimeTraxx ? 0 : MoverParameters->eim_localbrake);
|
||||
|
||||
// 1. ustal wymagana sile hamowania calego pociagu
|
||||
// - opoznienie moze byc ustalane na podstawie charakterystyki
|
||||
@@ -2943,6 +2944,11 @@ bool TDynamicObject::Update(double dt, double dt1)
|
||||
p->MoverParameters->LocalBrakePosAEIM = p->MoverParameters->LocalBrakePosAEIM;
|
||||
else
|
||||
p->MoverParameters->LocalBrakePosAEIM = 0;
|
||||
if (p->MoverParameters->LocHandleTimeTraxx)
|
||||
{
|
||||
p->MoverParameters->eim_localbrake = eim_lb;
|
||||
p->MoverParameters->LocalBrakePosAEIM = std::max(p->MoverParameters->LocalBrakePosAEIM, eim_lb);
|
||||
}
|
||||
++i;
|
||||
}
|
||||
|
||||
|
||||
@@ -891,6 +891,7 @@ public:
|
||||
TBrakeValve BrakeValve = TBrakeValve::NoValve;
|
||||
TBrakeHandle BrakeHandle = TBrakeHandle::NoHandle;
|
||||
TBrakeHandle BrakeLocHandle = TBrakeHandle::NoHandle;
|
||||
bool LocHandleTimeTraxx = false; /*hamulec dodatkowy typu traxx*/
|
||||
double MBPM = 1.0; /*masa najwiekszego cisnienia*/
|
||||
|
||||
std::shared_ptr<TBrake> Hamulec;
|
||||
@@ -1306,6 +1307,7 @@ public:
|
||||
/*- zmienne dla lokomotyw z silnikami indukcyjnymi -*/
|
||||
double eimic = 0; /*aktualna pozycja zintegrowanego sterowania jazda i hamowaniem*/
|
||||
double eimic_real = 0; /*faktycznie uzywana pozycja zintegrowanego sterowania jazda i hamowaniem*/
|
||||
double eim_localbrake = 0; /*nastawa hamowania dodatkowego pneumatycznego lokomotywy*/
|
||||
int EIMCtrlType = 0; /*rodzaj wariantu zadajnika jazdy*/
|
||||
bool SpeedCtrlTypeTime = false; /*czy tempomat sterowany czasowo*/
|
||||
double eimv_pr = 0; /*realizowany procent dostepnej sily rozruchu/hamowania*/
|
||||
|
||||
@@ -6016,6 +6016,26 @@ void TMoverParameters::CheckEIMIC(double dt)
|
||||
}
|
||||
if (MainCtrlPos >= 3 && eimic < 0) eimic = 0;
|
||||
if (MainCtrlPos <= 3 && eimic > 0) eimic = 0;
|
||||
if (LocHandleTimeTraxx)
|
||||
{
|
||||
if (LocalBrakeRatio() < 0.05) //pozycja 0
|
||||
{
|
||||
eim_localbrake -= dt*0.17; //zmniejszanie
|
||||
}
|
||||
|
||||
if (LocalBrakeRatio() > 0.15) //pozycja 2
|
||||
{
|
||||
eim_localbrake += dt*0.17; //wzrastanie
|
||||
eim_localbrake = std::max(eim_localbrake, BrakePress / MaxBrakePress[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (eim_localbrake < Hamulec->GetEDBCP() / MaxBrakePress[0])
|
||||
eim_localbrake = 0;
|
||||
}
|
||||
eim_localbrake = clamp(eim_localbrake, 0.0, 1.0);
|
||||
if (eim_localbrake > 0.04 && eimic > 0) eimic = 0;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
switch (MainCtrlPos)
|
||||
@@ -8631,6 +8651,7 @@ void TMoverParameters::LoadFIZ_Cntrl( std::string const &line ) {
|
||||
extract_value( CoupledCtrl, "CoupledCtrl", line, "" );
|
||||
extract_value( EIMCtrlType, "EIMCtrlType", line, "" );
|
||||
clamp( EIMCtrlType, 0, 3 );
|
||||
LocHandleTimeTraxx = (extract_value("LocalBrakeTraxx", line) == "Yes");
|
||||
|
||||
extract_value( ScndS, "ScndS", line, "" ); // brak pozycji rownoleglej przy niskiej nastawie PSR
|
||||
|
||||
|
||||
Reference in New Issue
Block a user