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