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

More fluent dynamic brake test, fix for eimp_pnX_cp

This commit is contained in:
Królik Uszasty
2020-11-11 23:00:03 +01:00
parent a7859a856c
commit 5d0206da92
2 changed files with 24 additions and 9 deletions

View File

@@ -6507,32 +6507,47 @@ TController::UpdateSituation(double dt) {
&& (vel > std::min(TrainParams.TTVmax - 2.0, 58.0)))
{
DynamicBrakeTest = 1;
DBT_VelocityBrake = vel;
DBT_VelocityRelease = vel - 8.0;
DBT_BrakingTime = ElapsedTime;
}
switch (DynamicBrakeTest)
{
case 1:
AccDesired = fAccThreshold * 1.01;
ForcePNBrake = true;
mvOccupied->EpFuseSwitch(false);
AccDesired = -0.06;
if (ElapsedTime - DBT_BrakingTime > 1)
{
ForcePNBrake = true;
mvOccupied->EpFuseSwitch(false);
DynamicBrakeTest = 2;
}
break;
case 2:
if (ElapsedTime - DBT_BrakingTime > 2)
{
DBT_BrakingTime = ElapsedTime;
DBT_VelocityBrake = vel;
DBT_VelocityRelease = vel - 8.0;
DynamicBrakeTest = 3;
}
AccDesired = -0.06;
break;
case 3:
AccDesired = clamp(-AbsAccS, fAccThreshold * 1.01, fAccThreshold * 1.21);
if (vel <= DBT_VelocityRelease)
{
DynamicBrakeTest = 2;
DynamicBrakeTest = 4;
DBT_BrakingTime = ElapsedTime - DBT_BrakingTime;
DBT_MidPointAcc = AbsAccS;
DBT_ReleasingTime = ElapsedTime;
}
break;
case 2:
case 4:
if (fReady < 0.5)
{
if (BrakeSystem == TBrakeSystem::ElectroPneumatic) {
mvOccupied->EpFuseSwitch(true);
}
ForcePNBrake = false;
DynamicBrakeTest = 3;
DynamicBrakeTest = 5;
DBT_ReleasingTime = ElapsedTime - DBT_ReleasingTime;
DBT_VelocityFinish = vel;
}

View File

@@ -6210,7 +6210,7 @@ bool TTrain::Update( double const Deltatime )
fPress[i][0] = p->MoverParameters->BrakePress;
fPress[i][1] = p->MoverParameters->PipePress;
fPress[i][2] = p->MoverParameters->ScndPipePress;
fPress[i][3] = p->MoverParameters->CntrlPipePress;
fPress[i][3] = p->MoverParameters->PantPress;
bBrakes[i][0] = p->MoverParameters->SpringBrake.IsActive;
bBrakes[i][1] = p->MoverParameters->SpringBrake.ShuttOff;
bDoors[i][1] = ( p->MoverParameters->Doors.instances[ side::left ].position > 0.f );