mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 11:39:19 +02:00
Przesunięcie Init dla TNest3. Zmiany w CheckLocParams
This commit is contained in:
@@ -1050,7 +1050,7 @@ public:
|
|||||||
TPowerSource PowerSourceDecode(std::string s); //Q 20160719
|
TPowerSource PowerSourceDecode(std::string s); //Q 20160719
|
||||||
TPowerType PowerDecode(std::string s); //Q 20160719
|
TPowerType PowerDecode(std::string s); //Q 20160719
|
||||||
TEngineTypes EngineDecode(std::string s); //Q 20160721
|
TEngineTypes EngineDecode(std::string s); //Q 20160721
|
||||||
bool CreateBrakeSys(); //Q 20160722
|
bool CreateBrakeSys(bool ReadyFlag = true); //Q 20160722
|
||||||
bool CheckLocomotiveParameters(bool ReadyFlag, int Dir);
|
bool CheckLocomotiveParameters(bool ReadyFlag, int Dir);
|
||||||
std::string EngineDescription(int what);
|
std::string EngineDescription(int what);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -6873,285 +6873,6 @@ bool TMoverParameters::LoadFIZ(std::string chkpath)
|
|||||||
// *************************************************************************************************
|
// *************************************************************************************************
|
||||||
|
|
||||||
bool TMoverParameters::CheckLocomotiveParameters(bool ReadyFlag, int Dir)
|
bool TMoverParameters::CheckLocomotiveParameters(bool ReadyFlag, int Dir)
|
||||||
{
|
|
||||||
bool OK;
|
|
||||||
int b;
|
|
||||||
int DefBrakeTable[8] = {15, 4, 25, 25, 13, 3, 12, 2};
|
|
||||||
|
|
||||||
OK = true;
|
|
||||||
|
|
||||||
AutoRelayFlag = (AutoRelayType == 1);
|
|
||||||
Sand = SandCapacity;
|
|
||||||
|
|
||||||
// WriteLog("aa = " + AxleArangement + " " + std::string( Pos("o", AxleArangement)) );
|
|
||||||
|
|
||||||
// if ((Pos("o", AxleArangement) > 0) && (EngineType == ElectricSeriesMotor))
|
|
||||||
// OK = (RList[1].Bn * RList[1].Mn == NPoweredAxles); //test poprawnosci ilosci osi
|
|
||||||
// indywidualnie napedzanych
|
|
||||||
|
|
||||||
// if ((Pos(LoadType, LoadAccepted) == 0) && (LoadType != ""))
|
|
||||||
// {
|
|
||||||
// WriteLog("Load Accepted fail");
|
|
||||||
// Load = 0;
|
|
||||||
// OK = false;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (BrakeSystem == Individual)
|
|
||||||
// if (BrakeSubsystem != ss_None)
|
|
||||||
// {
|
|
||||||
// WriteLog("BrakeSubsystem fail");
|
|
||||||
// OK = false; //!
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if ((BrakeVVolume == 0) && (MaxBrakePress[3] > 0) && (BrakeSystem != Individual))
|
|
||||||
// BrakeVVolume = MaxBrakePress[3] / (5 - MaxBrakePress[3]) * (BrakeCylRadius * BrakeCylRadius
|
|
||||||
// * BrakeCylDist * BrakeCylNo * PI) * 1000;
|
|
||||||
// if (BrakeVVolume == 0) BrakeVVolume = 0.01;
|
|
||||||
BrakeVVolume = 0.01; // q
|
|
||||||
|
|
||||||
switch (BrakeValve)
|
|
||||||
{
|
|
||||||
case W:
|
|
||||||
case K:
|
|
||||||
{
|
|
||||||
Hamulec = new TWest(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
|
||||||
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA);
|
|
||||||
// if(MBPM<2) //jesli przystawka wazaca
|
|
||||||
// (dynamic_cast<TWest*>(Hamulec))->SetLP(0,MaxBrakePress[3],0);
|
|
||||||
// else
|
|
||||||
// (dynamic_cast<TWest*>(Hamulec))->SetLP(Mass, MBPM, MaxBrakePress[1]);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case KE:
|
|
||||||
{
|
|
||||||
Hamulec = new TKE(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume, BrakeCylNo,
|
|
||||||
BrakeDelays, BrakeMethod, NAxles, NBpA);
|
|
||||||
// (dynamic_cast<TKE*>(Hamulec))->SetRM(RapidMult);
|
|
||||||
// if(MBPM<2) //jesli przystawka wazaca
|
|
||||||
// (dynamic_cast<TKE*>(Hamulec))->SetLP(0, MaxBrakePress[3], 0);
|
|
||||||
// else
|
|
||||||
// (dynamic_cast<TKE*>(Hamulec))->SetLP(Mass, MBPM, MaxBrakePress[1]);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case NESt3:
|
|
||||||
case ESt3:
|
|
||||||
case ESt3AL2:
|
|
||||||
case ESt4:
|
|
||||||
{
|
|
||||||
Hamulec = new TNESt3(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
|
||||||
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA);
|
|
||||||
// (dynamic_cast<TNESt3*>(Hamulec))->SetSize(BrakeValveSize,BrakeValveParams);
|
|
||||||
// if(MBPM<2) //jesli przystawka wazaca
|
|
||||||
// (dynamic_cast<TNESt3*>(Hamulec))->SetLP(0, MaxBrakePress[3], 0);
|
|
||||||
// else
|
|
||||||
// (dynamic_cast<TNESt3*>(Hamulec))->SetLP(Mass, MBPM, MaxBrakePress[1]);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case LSt:
|
|
||||||
{
|
|
||||||
Hamulec = new TLSt(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume, BrakeCylNo,
|
|
||||||
BrakeDelays, BrakeMethod, NAxles, NBpA);
|
|
||||||
//(dynamic_cast<TLSt*>(Hamulec))->SetRM(RapidMult);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case EStED:
|
|
||||||
{
|
|
||||||
Hamulec = new TEStED(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
|
||||||
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA);
|
|
||||||
//(dynamic_cast<TEStED*>(Hamulec))->SetRM(RapidMult);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case EP2:
|
|
||||||
{
|
|
||||||
Hamulec = new TEStEP2(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
|
||||||
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA);
|
|
||||||
//(dynamic_cast<TEStEP2*>(Hamulec))->SetLP(Mass, MBPM, MaxBrakePress[1]);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CV1:
|
|
||||||
{
|
|
||||||
Hamulec = new TCV1(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume, BrakeCylNo,
|
|
||||||
BrakeDelays, BrakeMethod, NAxles, NBpA);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case CV1_L_TR:
|
|
||||||
{
|
|
||||||
Hamulec = new TCV1L_TR(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
|
||||||
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
default:
|
|
||||||
Hamulec = new TBrake(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
|
||||||
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Hamulec->SetASBP(MaxBrakePress[4]);
|
|
||||||
|
|
||||||
switch (BrakeHandle)
|
|
||||||
{
|
|
||||||
case FV4a:
|
|
||||||
Handle = new TFV4aM();
|
|
||||||
break;
|
|
||||||
case FVel6:
|
|
||||||
Handle = new TFVel6();
|
|
||||||
break;
|
|
||||||
case testH:
|
|
||||||
Handle = new Ttest();
|
|
||||||
break;
|
|
||||||
case M394:
|
|
||||||
Handle = new TM394();
|
|
||||||
break;
|
|
||||||
case Knorr:
|
|
||||||
Handle = new TH14K1();
|
|
||||||
break;
|
|
||||||
case St113:
|
|
||||||
Handle = new TSt113();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
Handle = new TDriverHandle();
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (BrakeLocHandle)
|
|
||||||
{
|
|
||||||
case FD1:
|
|
||||||
{
|
|
||||||
LocHandle = new TFD1();
|
|
||||||
LocHandle->Init(MaxBrakePress[0]);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case Knorr:
|
|
||||||
{
|
|
||||||
LocHandle = new TH1405();
|
|
||||||
LocHandle->Init(MaxBrakePress[0]);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
LocHandle = new TDriverHandle();
|
|
||||||
}
|
|
||||||
|
|
||||||
// ustalanie srednicy przewodu glownego (lokomotywa lub napêdowy
|
|
||||||
if ((TestFlag(BrakeDelays, bdelay_G)) && ((!TestFlag(BrakeDelays, bdelay_R)) || (Power > 1)))
|
|
||||||
Spg = 0.792;
|
|
||||||
else
|
|
||||||
Spg = 0.507;
|
|
||||||
|
|
||||||
Pipe = new TReservoir();
|
|
||||||
Pipe2 = new TReservoir(); // zabezpieczenie, bo sie PG wywala... :(
|
|
||||||
Pipe->CreateCap((Max0R(Dim.L, 14) + 0.5) * Spg * 1); // dlugosc x przekroj x odejscia i takie
|
|
||||||
// tam
|
|
||||||
Pipe2->CreateCap((Max0R(Dim.L, 14) + 0.5) * Spg * 1);
|
|
||||||
|
|
||||||
if (LightsPosNo > 0)
|
|
||||||
LightsPos = LightsDefPos;
|
|
||||||
|
|
||||||
// to dac potem do init
|
|
||||||
|
|
||||||
if (ReadyFlag) // gotowy do drogi
|
|
||||||
{
|
|
||||||
WriteLog("Ready to depart");
|
|
||||||
CompressedVolume = VeselVolume * MinCompressor * (9.8) / 10;
|
|
||||||
ScndPipePress = CompressedVolume / VeselVolume;
|
|
||||||
PipePress = CntrlPipePress;
|
|
||||||
BrakePress = 0;
|
|
||||||
LocalBrakePos = 0;
|
|
||||||
|
|
||||||
if (CabNo == 0)
|
|
||||||
BrakeCtrlPos = floor(Handle->GetPos(bh_NP)); // Q: TODO: Trunc na floor
|
|
||||||
else
|
|
||||||
BrakeCtrlPos = floor(Handle->GetPos(bh_RP));
|
|
||||||
MainSwitch(false);
|
|
||||||
PantFront(true);
|
|
||||||
PantRear(true);
|
|
||||||
MainSwitch(true);
|
|
||||||
ActiveDir = 0; // Dir; //nastawnik kierunkowy - musi byæ ustawiane osobno!
|
|
||||||
DirAbsolute = ActiveDir * CabNo; // kierunek jazdy wzglêdem sprzêgów
|
|
||||||
LimPipePress = CntrlPipePress;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{ // zahamowany}
|
|
||||||
WriteLog("Bracked");
|
|
||||||
// Volume = BrakeVVolume * MaxBrakePress[3];
|
|
||||||
// CompressedVolume = VeselVolume * MinCompressor * 0.55;
|
|
||||||
// ScndPipePress = 5.1;
|
|
||||||
// PipePress = LowPipePress;
|
|
||||||
// PipeBrakePress = MaxBrakePress[3];
|
|
||||||
// BrakePress = MaxBrakePress[3];
|
|
||||||
// LocalBrakePos = 0;
|
|
||||||
// BrakeCtrlPos = floor(Handle->GetPos(bh_NP)); //Q: TODO: Trunc na floor
|
|
||||||
// LimPipePress = LowPipePress;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ActFlowSpeed = 0;
|
|
||||||
// BrakeCtrlPosR = BrakeCtrlPos;
|
|
||||||
|
|
||||||
// if (BrakeLocHandle == Knorr)
|
|
||||||
// LocalBrakePos = 5;
|
|
||||||
|
|
||||||
// Pipe->CreatePress(PipePress);
|
|
||||||
// Pipe2->CreatePress(ScndPipePress);
|
|
||||||
// Pipe->Act();
|
|
||||||
// Pipe2->Act();
|
|
||||||
|
|
||||||
// EqvtPipePress = PipePress;
|
|
||||||
|
|
||||||
// Handle->Init(PipePress);
|
|
||||||
|
|
||||||
//--ComputeConstans(); // TODO:
|
|
||||||
//przeinesiono do mover.cpp
|
|
||||||
|
|
||||||
if (LoadFlag > 0)
|
|
||||||
{
|
|
||||||
if (Load < MaxLoad * 0.45)
|
|
||||||
{
|
|
||||||
IncBrakeMult();
|
|
||||||
IncBrakeMult();
|
|
||||||
DecBrakeMult(); // TODO: przeinesiono do mover.cpp
|
|
||||||
if (Load < MaxLoad * 0.35)
|
|
||||||
DecBrakeMult();
|
|
||||||
}
|
|
||||||
if (Load >= MaxLoad * 0.45)
|
|
||||||
{
|
|
||||||
IncBrakeMult(); // TODO: przeinesiono do mover.cpp
|
|
||||||
if (Load >= MaxLoad * 0.55)
|
|
||||||
IncBrakeMult();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// taki mini automat - powinno byc ladnie dobrze :)
|
|
||||||
// BrakeDelayFlag = bdelay_P;
|
|
||||||
// if ((TestFlag(BrakeDelays, bdelay_G)) && !(TestFlag(BrakeDelays, bdelay_R)))
|
|
||||||
// BrakeDelayFlag = bdelay_G;
|
|
||||||
// if ((TestFlag(BrakeDelays, bdelay_R)) && !(TestFlag(BrakeDelays, bdelay_G)))
|
|
||||||
// BrakeDelayFlag = bdelay_R;
|
|
||||||
|
|
||||||
// yB: jesli pojazdy nie maja zadeklarowanych czasow, to wsadz z przepisow +-16,(6)%
|
|
||||||
// for ( b=1; b<4; b++)
|
|
||||||
// {
|
|
||||||
// if (BrakeDelay[b] == 0)
|
|
||||||
// BrakeDelay[b] = DefBrakeTable[b];
|
|
||||||
// BrakeDelay[b] = BrakeDelay[b] * (2.5 + random(0.0, 0.2)) / 3.0;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if(TrainType == dt_ET22)
|
|
||||||
// CompressorPower = 0;
|
|
||||||
|
|
||||||
// Hamulec->Init(PipePress, HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag);
|
|
||||||
|
|
||||||
// ScndPipePress = Compressor;
|
|
||||||
WriteLog("OK=" + to_string(OK));
|
|
||||||
|
|
||||||
return OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
// *************************************************************************************************
|
|
||||||
// Q: 20160717
|
|
||||||
// Funkcja pelniaca role pierwotnej CheckLocomotiveParameters(bool ReadyFlag, int Dir)
|
|
||||||
// wywolywana w dynobj.cpp w double TDynamicObject::Init()
|
|
||||||
// *************************************************************************************************
|
|
||||||
bool TMoverParameters::CreateBrakeSys()
|
|
||||||
{
|
{
|
||||||
WriteLog("check locomotive parameters...");
|
WriteLog("check locomotive parameters...");
|
||||||
int b;
|
int b;
|
||||||
@@ -7187,6 +6908,83 @@ bool TMoverParameters::CreateBrakeSys()
|
|||||||
else
|
else
|
||||||
Spg = 0.507;
|
Spg = 0.507;
|
||||||
|
|
||||||
|
// taki mini automat - powinno byc ladnie dobrze :)
|
||||||
|
BrakeDelayFlag = bdelay_P;
|
||||||
|
if ((TestFlag(BrakeDelays, bdelay_G)) && !(TestFlag(BrakeDelays, bdelay_R)))
|
||||||
|
BrakeDelayFlag = bdelay_G;
|
||||||
|
if ((TestFlag(BrakeDelays, bdelay_R)) && !(TestFlag(BrakeDelays, bdelay_G)))
|
||||||
|
BrakeDelayFlag = bdelay_R;
|
||||||
|
|
||||||
|
int DefBrakeTable[8] = { 15, 4, 25, 25, 13, 3, 12, 2 };
|
||||||
|
|
||||||
|
// checking ready flag
|
||||||
|
// to dac potem do init
|
||||||
|
if (ReadyFlag) // gotowy do drogi
|
||||||
|
{
|
||||||
|
// WriteLog("Ready to depart");
|
||||||
|
CompressedVolume = VeselVolume * MinCompressor * (9.8) / 10;
|
||||||
|
ScndPipePress = CompressedVolume / VeselVolume;
|
||||||
|
PipePress = CntrlPipePress;
|
||||||
|
BrakePress = 0;
|
||||||
|
LocalBrakePos = 0;
|
||||||
|
|
||||||
|
if (CabNo == 0)
|
||||||
|
BrakeCtrlPos = floor(Handle->GetPos(bh_NP)); // Q: TODO: Trunc na floor
|
||||||
|
else
|
||||||
|
BrakeCtrlPos = floor(Handle->GetPos(bh_RP));
|
||||||
|
MainSwitch(false);
|
||||||
|
PantFront(true);
|
||||||
|
PantRear(true);
|
||||||
|
MainSwitch(true);
|
||||||
|
ActiveDir = 0; // Dir; //nastawnik kierunkowy - musi byæ ustawiane osobno!
|
||||||
|
DirAbsolute = ActiveDir * CabNo; // kierunek jazdy wzglêdem sprzêgów
|
||||||
|
LimPipePress = CntrlPipePress;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ // zahamowany}
|
||||||
|
WriteLog("Bracked");
|
||||||
|
Volume = BrakeVVolume * MaxBrakePress[3];
|
||||||
|
CompressedVolume = VeselVolume * MinCompressor * 0.55;
|
||||||
|
ScndPipePress = 5.1;
|
||||||
|
PipePress = LowPipePress;
|
||||||
|
PipeBrakePress = MaxBrakePress[3];
|
||||||
|
BrakePress = MaxBrakePress[3];
|
||||||
|
LocalBrakePos = 0;
|
||||||
|
BrakeCtrlPos = Trunc(Handle->GetPos(bh_NP)); // Q: TODO: Trunc na floor
|
||||||
|
LimPipePress = LowPipePress;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (LoadFlag > 0)
|
||||||
|
{
|
||||||
|
if (Load < MaxLoad * 0.45)
|
||||||
|
{
|
||||||
|
IncBrakeMult();
|
||||||
|
IncBrakeMult();
|
||||||
|
DecBrakeMult(); // TODO: przeinesiono do mover.cpp
|
||||||
|
if (Load < MaxLoad * 0.35)
|
||||||
|
DecBrakeMult();
|
||||||
|
}
|
||||||
|
if (Load >= MaxLoad * 0.45)
|
||||||
|
{
|
||||||
|
IncBrakeMult(); // TODO: przeinesiono do mover.cpp
|
||||||
|
if (Load >= MaxLoad * 0.55)
|
||||||
|
IncBrakeMult();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (BrakeOpModes & bom_PS)
|
||||||
|
BrakeOpModeFlag = bom_PS;
|
||||||
|
else
|
||||||
|
BrakeOpModeFlag = bom_PN;
|
||||||
|
|
||||||
|
// yB: jesli pojazdy nie maja zadeklarowanych czasow, to wsadz z przepisow +-16,(6)%
|
||||||
|
for (b = 1; b < 4; b++)
|
||||||
|
{
|
||||||
|
if (BrakeDelay[b] == 0)
|
||||||
|
BrakeDelay[b] = DefBrakeTable[b];
|
||||||
|
BrakeDelay[b] = BrakeDelay[b] * (2.5 + Random(0.0, 0.2)) / 3.0;
|
||||||
|
}
|
||||||
|
|
||||||
// WriteLog("SPG = " + FloatToStr(Spg));
|
// WriteLog("SPG = " + FloatToStr(Spg));
|
||||||
|
|
||||||
switch (BrakeValve)
|
switch (BrakeValve)
|
||||||
@@ -7196,25 +6994,25 @@ bool TMoverParameters::CreateBrakeSys()
|
|||||||
{
|
{
|
||||||
WriteLog("XBT W, K");
|
WriteLog("XBT W, K");
|
||||||
Hamulec = new TWest(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
Hamulec = new TWest(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
||||||
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA,
|
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA, PipePress,
|
||||||
PipePress, HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag);
|
HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag);
|
||||||
if (MBPM < 2) // jesli przystawka wazaca
|
if (MBPM < 2) // jesli przystawka wazaca
|
||||||
(static_cast<TWest *>(Hamulec))->SetLP(0, MaxBrakePress[3], 0);
|
Hamulec->SetLP(0, MaxBrakePress[3], 0);
|
||||||
else
|
else
|
||||||
(static_cast<TWest *>(Hamulec))->SetLP(Mass, MBPM, MaxBrakePress[1]);
|
Hamulec->SetLP(Mass, MBPM, MaxBrakePress[1]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case KE:
|
case KE:
|
||||||
{
|
{
|
||||||
WriteLog("XBT WKE");
|
WriteLog("XBT WKE");
|
||||||
Hamulec = new TKE(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume, BrakeCylNo,
|
Hamulec = new TKE(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume, BrakeCylNo,
|
||||||
BrakeDelays, BrakeMethod, NAxles, NBpA,
|
BrakeDelays, BrakeMethod, NAxles, NBpA, PipePress, HighPipePress,
|
||||||
PipePress, HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag);
|
LowPipePress, BrakePress, BrakeDelayFlag);
|
||||||
(static_cast<TKE *>(Hamulec))->SetRM(RapidMult);
|
Hamulec->SetRM(RapidMult);
|
||||||
if (MBPM < 2) // jesli przystawka wazaca
|
if (MBPM < 2) // jesli przystawka wazaca
|
||||||
(static_cast<TKE *>(Hamulec))->SetLP(0, MaxBrakePress[3], 0);
|
Hamulec->SetLP(0, MaxBrakePress[3], 0);
|
||||||
else
|
else
|
||||||
(static_cast<TKE *>(Hamulec))->SetLP(Mass, MBPM, MaxBrakePress[1]);
|
Hamulec->SetLP(Mass, MBPM, MaxBrakePress[1]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case NESt3:
|
case NESt3:
|
||||||
@@ -7224,13 +7022,13 @@ bool TMoverParameters::CreateBrakeSys()
|
|||||||
{
|
{
|
||||||
WriteLog("XBT NESt3, ESt3, ESt3AL2, ESt4");
|
WriteLog("XBT NESt3, ESt3, ESt3AL2, ESt4");
|
||||||
Hamulec = new TNESt3(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
Hamulec = new TNESt3(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
||||||
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA,
|
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA, PipePress,
|
||||||
PipePress, HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag);
|
HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag);
|
||||||
(static_cast<TNESt3 *>(Hamulec))->SetSize(BrakeValveSize, BrakeValveParams);
|
(static_cast<TNESt3 *>(Hamulec))->SetSize(BrakeValveSize, BrakeValveParams);
|
||||||
if (MBPM < 2) // jesli przystawka wazaca
|
if (MBPM < 2) // jesli przystawka wazaca
|
||||||
(static_cast<TNESt3 *>(Hamulec))->SetLP(0, MaxBrakePress[3], 0);
|
Hamulec->SetLP(0, MaxBrakePress[3], 0);
|
||||||
else
|
else
|
||||||
(static_cast<TNESt3 *>(Hamulec))->SetLP(Mass, MBPM, MaxBrakePress[1]);
|
Hamulec->SetLP(Mass, MBPM, MaxBrakePress[1]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -7238,27 +7036,27 @@ bool TMoverParameters::CreateBrakeSys()
|
|||||||
{
|
{
|
||||||
WriteLog("XBT LSt");
|
WriteLog("XBT LSt");
|
||||||
Hamulec = new TLSt(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume, BrakeCylNo,
|
Hamulec = new TLSt(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume, BrakeCylNo,
|
||||||
BrakeDelays, BrakeMethod, NAxles, NBpA,
|
BrakeDelays, BrakeMethod, NAxles, NBpA, PipePress, HighPipePress,
|
||||||
PipePress, HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag);
|
LowPipePress, BrakePress, BrakeDelayFlag);
|
||||||
(static_cast<TLSt *>(Hamulec))->SetRM(RapidMult);
|
Hamulec->SetRM(RapidMult);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case EStED:
|
case EStED:
|
||||||
{
|
{
|
||||||
WriteLog("XBT EStED");
|
WriteLog("XBT EStED");
|
||||||
Hamulec = new TEStED(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
Hamulec = new TEStED(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
||||||
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA,
|
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA, PipePress,
|
||||||
PipePress, HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag);
|
HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag);
|
||||||
(static_cast<TEStED *>(Hamulec))->SetRM(RapidMult);
|
Hamulec->SetRM(RapidMult);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case EP2:
|
case EP2:
|
||||||
{
|
{
|
||||||
WriteLog("XBT EP2");
|
WriteLog("XBT EP2");
|
||||||
Hamulec = new TEStEP2(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
Hamulec = new TEStEP2(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
||||||
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA,
|
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA, PipePress,
|
||||||
PipePress, HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag);
|
HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag);
|
||||||
(static_cast<TEStEP2 *>(Hamulec))->SetLP(Mass, MBPM, MaxBrakePress[1]);
|
Hamulec->SetLP(Mass, MBPM, MaxBrakePress[1]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -7266,23 +7064,23 @@ bool TMoverParameters::CreateBrakeSys()
|
|||||||
{
|
{
|
||||||
WriteLog("XBT CV1");
|
WriteLog("XBT CV1");
|
||||||
Hamulec = new TCV1(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume, BrakeCylNo,
|
Hamulec = new TCV1(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume, BrakeCylNo,
|
||||||
BrakeDelays, BrakeMethod, NAxles, NBpA,
|
BrakeDelays, BrakeMethod, NAxles, NBpA, PipePress, HighPipePress,
|
||||||
PipePress, HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag);
|
LowPipePress, BrakePress, BrakeDelayFlag);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CV1_L_TR:
|
case CV1_L_TR:
|
||||||
{
|
{
|
||||||
WriteLog("XBT CV1_L_T");
|
WriteLog("XBT CV1_L_T");
|
||||||
Hamulec = new TCV1L_TR(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
Hamulec = new TCV1L_TR(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
||||||
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA,
|
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA, PipePress,
|
||||||
PipePress, HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag);
|
HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
Hamulec = new TBrake(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
Hamulec = new TBrake(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
||||||
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA,
|
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA, PipePress,
|
||||||
PipePress, HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag);
|
HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag);
|
||||||
}
|
}
|
||||||
|
|
||||||
Hamulec->SetASBP(MaxBrakePress[4]);
|
Hamulec->SetASBP(MaxBrakePress[4]);
|
||||||
@@ -7338,9 +7136,88 @@ bool TMoverParameters::CreateBrakeSys()
|
|||||||
if (LightsPosNo > 0)
|
if (LightsPosNo > 0)
|
||||||
LightsPos = LightsDefPos;
|
LightsPos = LightsDefPos;
|
||||||
|
|
||||||
|
ActFlowSpeed = 0;
|
||||||
|
BrakeCtrlPosR = BrakeCtrlPos;
|
||||||
|
|
||||||
|
if (BrakeLocHandle == Knorr)
|
||||||
|
LocalBrakePos = 5;
|
||||||
|
|
||||||
|
Pipe->CreatePress(PipePress);
|
||||||
|
Pipe2->CreatePress(ScndPipePress);
|
||||||
|
Pipe->Act();
|
||||||
|
Pipe2->Act();
|
||||||
|
|
||||||
|
EqvtPipePress = PipePress;
|
||||||
|
|
||||||
|
Handle->Init(PipePress);
|
||||||
|
|
||||||
|
ComputeConstans();
|
||||||
|
|
||||||
|
if (TrainType == dt_ET22)
|
||||||
|
CompressorPower = 0;
|
||||||
|
|
||||||
|
// Hamulec->Init(PipePress, HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag);
|
||||||
|
|
||||||
|
ScndPipePress = Compressor;
|
||||||
|
|
||||||
|
// WriteLogSS("OK=", BoolTo10(OK));
|
||||||
|
// WriteLog("");
|
||||||
|
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
// *************************************************************************************************
|
||||||
|
// Q: 20160717
|
||||||
|
// Funkcja pelniaca role pierwotnej CheckLocomotiveParameters(bool ReadyFlag, int Dir)
|
||||||
|
// wywolywana w dynobj.cpp w double TDynamicObject::Init()
|
||||||
|
// *************************************************************************************************
|
||||||
|
bool TMoverParameters::CreateBrakeSys(bool ReadyFlag)
|
||||||
|
{
|
||||||
|
WriteLog("check locomotive parameters...");
|
||||||
|
int b;
|
||||||
|
bool OK = true;
|
||||||
|
|
||||||
|
AutoRelayFlag = (AutoRelayType == 1);
|
||||||
|
|
||||||
|
Sand = SandCapacity;
|
||||||
|
|
||||||
|
// WriteLog("aa = " + AxleArangement + " " + std::string( Pos("o", AxleArangement)) );
|
||||||
|
|
||||||
|
if ((Pos("o", AxleArangement) > 0) && (EngineType == ElectricSeriesMotor))
|
||||||
|
OK = (RList[1].Bn * RList[1].Mn ==
|
||||||
|
NPoweredAxles); // test poprawnosci ilosci osi indywidualnie napedzanych
|
||||||
|
// WriteLogSS("aa ok", BoolToYN(OK));
|
||||||
|
|
||||||
|
if (BrakeSystem == Individual)
|
||||||
|
if (BrakeSubsystem != ss_None)
|
||||||
|
OK = false; //!
|
||||||
|
|
||||||
|
if ((BrakeVVolume == 0) && (MaxBrakePress[3] > 0) && (BrakeSystem != Individual))
|
||||||
|
BrakeVVolume = MaxBrakePress[3] / (5 - MaxBrakePress[3]) *
|
||||||
|
(BrakeCylRadius * BrakeCylRadius * BrakeCylDist * BrakeCylNo * PI) * 1000;
|
||||||
|
if (BrakeVVolume == 0)
|
||||||
|
BrakeVVolume = 0.01;
|
||||||
|
|
||||||
|
// WriteLog("BVV = " + FloatToStr(BrakeVVolume));
|
||||||
|
|
||||||
|
if ((TestFlag(BrakeDelays, bdelay_G)) &&
|
||||||
|
((!TestFlag(BrakeDelays, bdelay_R)) ||
|
||||||
|
(Power > 1))) // ustalanie srednicy przewodu glownego (lokomotywa lub napêdowy
|
||||||
|
Spg = 0.792;
|
||||||
|
else
|
||||||
|
Spg = 0.507;
|
||||||
|
|
||||||
|
// taki mini automat - powinno byc ladnie dobrze :)
|
||||||
|
BrakeDelayFlag = bdelay_P;
|
||||||
|
if ((TestFlag(BrakeDelays, bdelay_G)) && !(TestFlag(BrakeDelays, bdelay_R)))
|
||||||
|
BrakeDelayFlag = bdelay_G;
|
||||||
|
if ((TestFlag(BrakeDelays, bdelay_R)) && !(TestFlag(BrakeDelays, bdelay_G)))
|
||||||
|
BrakeDelayFlag = bdelay_R;
|
||||||
|
|
||||||
|
int DefBrakeTable[8] = {15, 4, 25, 25, 13, 3, 12, 2};
|
||||||
|
|
||||||
// checking ready flag
|
// checking ready flag
|
||||||
// to dac potem do init
|
// to dac potem do init
|
||||||
bool ReadyFlag = true;
|
|
||||||
if (ReadyFlag) // gotowy do drogi
|
if (ReadyFlag) // gotowy do drogi
|
||||||
{
|
{
|
||||||
// WriteLog("Ready to depart");
|
// WriteLog("Ready to depart");
|
||||||
@@ -7364,23 +7241,205 @@ bool TMoverParameters::CreateBrakeSys()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ // zahamowany}
|
{ // zahamowany}
|
||||||
// WriteLog("Bracked");
|
WriteLog("Bracked");
|
||||||
// Volume = BrakeVVolume * MaxBrakePress[3];
|
Volume = BrakeVVolume * MaxBrakePress[3];
|
||||||
// CompressedVolume = VeselVolume * MinCompressor * 0.55;
|
CompressedVolume = VeselVolume * MinCompressor * 0.55;
|
||||||
// ScndPipePress = 5.1;
|
ScndPipePress = 5.1;
|
||||||
// PipePress = LowPipePress;
|
PipePress = LowPipePress;
|
||||||
// PipeBrakePress = MaxBrakePress[3];
|
PipeBrakePress = MaxBrakePress[3];
|
||||||
// BrakePress = MaxBrakePress[3];
|
BrakePress = MaxBrakePress[3];
|
||||||
// LocalBrakePos = 0;
|
LocalBrakePos = 0;
|
||||||
// BrakeCtrlPos = Trunc(Handle->GetPos(bh_NP)); //Q: TODO: Trunc na floor
|
BrakeCtrlPos = Trunc(Handle->GetPos(bh_NP)); // Q: TODO: Trunc na floor
|
||||||
// LimPipePress = LowPipePress;
|
LimPipePress = LowPipePress;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (LoadFlag > 0)
|
||||||
|
{
|
||||||
|
if (Load < MaxLoad * 0.45)
|
||||||
|
{
|
||||||
|
IncBrakeMult();
|
||||||
|
IncBrakeMult();
|
||||||
|
DecBrakeMult(); // TODO: przeinesiono do mover.cpp
|
||||||
|
if (Load < MaxLoad * 0.35)
|
||||||
|
DecBrakeMult();
|
||||||
|
}
|
||||||
|
if (Load >= MaxLoad * 0.45)
|
||||||
|
{
|
||||||
|
IncBrakeMult(); // TODO: przeinesiono do mover.cpp
|
||||||
|
if (Load >= MaxLoad * 0.55)
|
||||||
|
IncBrakeMult();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (BrakeOpModes & bom_PS)
|
||||||
|
BrakeOpModeFlag = bom_PS;
|
||||||
|
else
|
||||||
|
BrakeOpModeFlag = bom_PN;
|
||||||
|
|
||||||
|
// yB: jesli pojazdy nie maja zadeklarowanych czasow, to wsadz z przepisow +-16,(6)%
|
||||||
|
for (b = 1; b < 4; b++)
|
||||||
|
{
|
||||||
|
if (BrakeDelay[b] == 0)
|
||||||
|
BrakeDelay[b] = DefBrakeTable[b];
|
||||||
|
BrakeDelay[b] = BrakeDelay[b] * (2.5 + Random(0.0, 0.2)) / 3.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// WriteLog("SPG = " + FloatToStr(Spg));
|
||||||
|
|
||||||
|
switch (BrakeValve)
|
||||||
|
{
|
||||||
|
case W:
|
||||||
|
case K:
|
||||||
|
{
|
||||||
|
WriteLog("XBT W, K");
|
||||||
|
Hamulec = new TWest(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
||||||
|
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA, PipePress,
|
||||||
|
HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag);
|
||||||
|
if (MBPM < 2) // jesli przystawka wazaca
|
||||||
|
Hamulec->SetLP(0, MaxBrakePress[3], 0);
|
||||||
|
else
|
||||||
|
Hamulec->SetLP(Mass, MBPM, MaxBrakePress[1]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case KE:
|
||||||
|
{
|
||||||
|
WriteLog("XBT WKE");
|
||||||
|
Hamulec = new TKE(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume, BrakeCylNo,
|
||||||
|
BrakeDelays, BrakeMethod, NAxles, NBpA, PipePress, HighPipePress,
|
||||||
|
LowPipePress, BrakePress, BrakeDelayFlag);
|
||||||
|
Hamulec->SetRM(RapidMult);
|
||||||
|
if (MBPM < 2) // jesli przystawka wazaca
|
||||||
|
Hamulec->SetLP(0, MaxBrakePress[3], 0);
|
||||||
|
else
|
||||||
|
Hamulec->SetLP(Mass, MBPM, MaxBrakePress[1]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case NESt3:
|
||||||
|
case ESt3:
|
||||||
|
case ESt3AL2:
|
||||||
|
case ESt4:
|
||||||
|
{
|
||||||
|
WriteLog("XBT NESt3, ESt3, ESt3AL2, ESt4");
|
||||||
|
Hamulec = new TNESt3(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
||||||
|
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA, PipePress,
|
||||||
|
HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag);
|
||||||
|
(static_cast<TNESt3 *>(Hamulec))->SetSize(BrakeValveSize, BrakeValveParams);
|
||||||
|
if (MBPM < 2) // jesli przystawka wazaca
|
||||||
|
Hamulec->SetLP(0, MaxBrakePress[3], 0);
|
||||||
|
else
|
||||||
|
Hamulec->SetLP(Mass, MBPM, MaxBrakePress[1]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case LSt:
|
||||||
|
{
|
||||||
|
WriteLog("XBT LSt");
|
||||||
|
Hamulec = new TLSt(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume, BrakeCylNo,
|
||||||
|
BrakeDelays, BrakeMethod, NAxles, NBpA, PipePress, HighPipePress,
|
||||||
|
LowPipePress, BrakePress, BrakeDelayFlag);
|
||||||
|
Hamulec->SetRM(RapidMult);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case EStED:
|
||||||
|
{
|
||||||
|
WriteLog("XBT EStED");
|
||||||
|
Hamulec = new TEStED(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
||||||
|
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA, PipePress,
|
||||||
|
HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag);
|
||||||
|
Hamulec->SetRM(RapidMult);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case EP2:
|
||||||
|
{
|
||||||
|
WriteLog("XBT EP2");
|
||||||
|
Hamulec = new TEStEP2(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
||||||
|
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA, PipePress,
|
||||||
|
HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag);
|
||||||
|
Hamulec->SetLP(Mass, MBPM, MaxBrakePress[1]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case CV1:
|
||||||
|
{
|
||||||
|
WriteLog("XBT CV1");
|
||||||
|
Hamulec = new TCV1(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume, BrakeCylNo,
|
||||||
|
BrakeDelays, BrakeMethod, NAxles, NBpA, PipePress, HighPipePress,
|
||||||
|
LowPipePress, BrakePress, BrakeDelayFlag);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case CV1_L_TR:
|
||||||
|
{
|
||||||
|
WriteLog("XBT CV1_L_T");
|
||||||
|
Hamulec = new TCV1L_TR(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
||||||
|
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA, PipePress,
|
||||||
|
HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
Hamulec = new TBrake(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume,
|
||||||
|
BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA, PipePress,
|
||||||
|
HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag);
|
||||||
|
}
|
||||||
|
|
||||||
|
Hamulec->SetASBP(MaxBrakePress[4]);
|
||||||
|
|
||||||
|
switch (BrakeHandle)
|
||||||
|
{
|
||||||
|
case FV4a:
|
||||||
|
Handle = new TFV4aM();
|
||||||
|
break;
|
||||||
|
case FVel6:
|
||||||
|
Handle = new TFVel6();
|
||||||
|
break;
|
||||||
|
case testH:
|
||||||
|
Handle = new Ttest();
|
||||||
|
break;
|
||||||
|
case M394:
|
||||||
|
Handle = new TM394();
|
||||||
|
break;
|
||||||
|
case Knorr:
|
||||||
|
Handle = new TH14K1();
|
||||||
|
break;
|
||||||
|
case St113:
|
||||||
|
Handle = new TSt113();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Handle = new TDriverHandle();
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (BrakeLocHandle)
|
||||||
|
{
|
||||||
|
case FD1:
|
||||||
|
{
|
||||||
|
LocHandle = new TFD1();
|
||||||
|
LocHandle->Init(MaxBrakePress[0]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case Knorr:
|
||||||
|
{
|
||||||
|
LocHandle = new TH1405();
|
||||||
|
LocHandle->Init(MaxBrakePress[0]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
LocHandle = new TDriverHandle();
|
||||||
|
}
|
||||||
|
|
||||||
|
Pipe = new TReservoir();
|
||||||
|
Pipe2 = new TReservoir(); // zabezpieczenie, bo sie PG wywala... :(
|
||||||
|
Pipe->CreateCap((Max0R(Dim.L, 14) + 0.5) * Spg * 1); // dlugosc x przekroj x odejscia i takie
|
||||||
|
// tam
|
||||||
|
Pipe2->CreateCap((Max0R(Dim.L, 14) + 0.5) * Spg * 1);
|
||||||
|
|
||||||
|
if (LightsPosNo > 0)
|
||||||
|
LightsPos = LightsDefPos;
|
||||||
|
|
||||||
ActFlowSpeed = 0;
|
ActFlowSpeed = 0;
|
||||||
BrakeCtrlPosR = BrakeCtrlPos;
|
BrakeCtrlPosR = BrakeCtrlPos;
|
||||||
|
|
||||||
// if(BrakeLocHandle==Knorr)
|
if (BrakeLocHandle == Knorr)
|
||||||
// LocalBrakePos =5;
|
LocalBrakePos = 5;
|
||||||
|
|
||||||
Pipe->CreatePress(PipePress);
|
Pipe->CreatePress(PipePress);
|
||||||
Pipe2->CreatePress(ScndPipePress);
|
Pipe2->CreatePress(ScndPipePress);
|
||||||
@@ -7391,32 +7450,17 @@ bool TMoverParameters::CreateBrakeSys()
|
|||||||
|
|
||||||
Handle->Init(PipePress);
|
Handle->Init(PipePress);
|
||||||
|
|
||||||
// taki mini automat - powinno byc ladnie dobrze :)
|
ComputeConstans();
|
||||||
BrakeDelayFlag = bdelay_P;
|
|
||||||
if ((TestFlag(BrakeDelays, bdelay_G)) && !(TestFlag(BrakeDelays, bdelay_R)))
|
|
||||||
BrakeDelayFlag = bdelay_G;
|
|
||||||
if ((TestFlag(BrakeDelays, bdelay_R)) && !(TestFlag(BrakeDelays, bdelay_G)))
|
|
||||||
BrakeDelayFlag = bdelay_R;
|
|
||||||
|
|
||||||
int DefBrakeTable[8] = {15, 4, 25, 25, 13, 3, 12, 2};
|
if (TrainType == dt_ET22)
|
||||||
|
CompressorPower = 0;
|
||||||
|
|
||||||
// yB: jesli pojazdy nie maja zadeklarowanych czasow, to wsadz z przepisow +-16,(6)%
|
// Hamulec->Init(PipePress, HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag);
|
||||||
// for ( b=1; b<4; b++)
|
|
||||||
// {
|
|
||||||
// if (BrakeDelay[b] == 0)
|
|
||||||
// BrakeDelay[b] = DefBrakeTable[b];
|
|
||||||
// BrakeDelay[b] = BrakeDelay[b] * (2.5 + random(0.0, 0.2)) / 3.0;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if(TrainType == dt_ET22)
|
|
||||||
// CompressorPower = 0;
|
|
||||||
|
|
||||||
//Hamulec->Init(PipePress, HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag);
|
|
||||||
|
|
||||||
ScndPipePress = Compressor;
|
ScndPipePress = Compressor;
|
||||||
|
|
||||||
// WriteLogSS("OK=", BoolTo10(OK));
|
// WriteLogSS("OK=", BoolTo10(OK));
|
||||||
//WriteLog("");
|
// WriteLog("");
|
||||||
|
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -322,7 +322,7 @@ void TNESt3::EStParams(double i_crc) // parametry charakterystyczne dla ESt
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void TNESt3::Init(double PP, double HPP, double LPP, double BP, unsigned char BDF)
|
void TNESt3::Init(double PP, double HPP, double LPP, double BP, int BDF)
|
||||||
{
|
{
|
||||||
ValveRes->CreatePress(1 * PP);
|
ValveRes->CreatePress(1 * PP);
|
||||||
BrakeCyl->CreatePress(1 * BP);
|
BrakeCyl->CreatePress(1 * BP);
|
||||||
|
|||||||
@@ -184,14 +184,19 @@ class TNESt3 : public TBrake
|
|||||||
bool autom; // odluzniacz samoczynny
|
bool autom; // odluzniacz samoczynny
|
||||||
double LBP; // cisnienie hamulca pomocniczego
|
double LBP; // cisnienie hamulca pomocniczego
|
||||||
|
|
||||||
|
void Init(double PP, double HPP, double LPP, double BP, int BDF) /*override*/;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
inline TNESt3(double i_mbp, double i_bcr, double i_bcd, double i_brc,
|
inline TNESt3(double i_mbp, double i_bcr, double i_bcd, double i_brc,
|
||||||
int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa) : TBrake(i_mbp, i_bcr, i_bcd, i_brc, i_bcn
|
int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa,
|
||||||
, i_BD, i_mat, i_ba, i_nbpa) { }
|
double PP, double HPP, double LPP, double BP, int BDF) : TBrake(i_mbp, i_bcr, i_bcd, i_brc, i_bcn
|
||||||
|
, i_BD, i_mat, i_ba, i_nbpa, PP, HPP, LPP, BP, BDF)
|
||||||
|
{
|
||||||
|
Init(PP, HPP, LPP, BP, BDF);
|
||||||
|
}
|
||||||
virtual double GetPF(double PP, double dt,
|
virtual double GetPF(double PP, double dt,
|
||||||
double Vel) /*override*/; // przeplyw miedzy komora wstepna i PG
|
double Vel) /*override*/; // przeplyw miedzy komora wstepna i PG
|
||||||
void EStParams(double i_crc); // parametry charakterystyczne dla ESt
|
void EStParams(double i_crc); // parametry charakterystyczne dla ESt
|
||||||
virtual void Init(double PP, double HPP, double LPP, double BP, unsigned char BDF) /*override*/;
|
|
||||||
virtual double GetCRP() /*override*/;
|
virtual double GetCRP() /*override*/;
|
||||||
void CheckState(double BCP, double &dV1); // glowny przyrzad rozrzadczy
|
void CheckState(double BCP, double &dV1); // glowny przyrzad rozrzadczy
|
||||||
void CheckReleaser(double dt); // odluzniacz
|
void CheckReleaser(double dt); // odluzniacz
|
||||||
|
|||||||
@@ -219,6 +219,8 @@ Knorr/West EP -
|
|||||||
bool SetBDF(int nBDF); //nastawiacz GPRM
|
bool SetBDF(int nBDF); //nastawiacz GPRM
|
||||||
void Releaser(int state); //odluzniacz
|
void Releaser(int state); //odluzniacz
|
||||||
virtual void SetEPS(double nEPS); //hamulec EP
|
virtual void SetEPS(double nEPS); //hamulec EP
|
||||||
|
virtual void SetRM(double RMR) {}; //ustalenie przelozenia rapida
|
||||||
|
virtual void SetLP(double TM, double LM, double TBP) {}; //parametry przystawki wazacej
|
||||||
void ASB(int state); //hamulec przeciwposlizgowy
|
void ASB(int state); //hamulec przeciwposlizgowy
|
||||||
int GetStatus(); //flaga statusu, moze sie przydac do odglosow
|
int GetStatus(); //flaga statusu, moze sie przydac do odglosow
|
||||||
void SetASBP(double Press); //ustalenie cisnienia pp
|
void SetASBP(double Press); //ustalenie cisnienia pp
|
||||||
|
|||||||
Reference in New Issue
Block a user