mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-03-22 15:05:03 +01:00
Sprawdzone mover do UpdatePipePressure
Dodane funkcje virtualne do TBrake zamiast static_cast
This commit is contained in:
@@ -1881,6 +1881,7 @@ bool TMoverParameters::DecMainCtrl(int CtrlSpeed)
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160710
|
||||
// zwiększenie bocznika
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::IncScndCtrl(int CtrlSpeed)
|
||||
{
|
||||
@@ -1926,11 +1927,18 @@ bool TMoverParameters::IncScndCtrl(int CtrlSpeed)
|
||||
if (LastRelayTime > CtrlDelay)
|
||||
LastRelayTime = 0;
|
||||
|
||||
if ((OK) && (EngineType == ElectricInductionMotor))
|
||||
if ((Vmax < 250))
|
||||
ScndCtrlActualPos = Round(Vel + 0.5);
|
||||
else
|
||||
ScndCtrlActualPos = Round(Vel * 1.0 / 2 + 0.5);
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160710
|
||||
// zmniejszenie bocznika
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::DecScndCtrl(int CtrlSpeed)
|
||||
{
|
||||
@@ -1973,6 +1981,9 @@ bool TMoverParameters::DecScndCtrl(int CtrlSpeed)
|
||||
if (LastRelayTime > CtrlDownDelay)
|
||||
LastRelayTime = 0;
|
||||
|
||||
if ((OK) && (EngineType == ElectricInductionMotor))
|
||||
ScndCtrlActualPos = 0;
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
@@ -2042,6 +2053,7 @@ bool TMoverParameters::AddPulseForce(int Multipler)
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160713
|
||||
// sypanie piasku
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::SandDoseOn(void)
|
||||
{
|
||||
@@ -2063,7 +2075,7 @@ bool TMoverParameters::SandDoseOn(void)
|
||||
}
|
||||
|
||||
void TMoverParameters::SSReset(void)
|
||||
{
|
||||
{ // funkcja pomocnicza dla SecuritySystemReset - w Delphi Reset()
|
||||
SecuritySystem.SystemTimer = 0;
|
||||
|
||||
if (TestFlag(SecuritySystem.Status, s_aware))
|
||||
@@ -2090,6 +2102,7 @@ void TMoverParameters::SSReset(void)
|
||||
|
||||
// *****************************************************************************
|
||||
// Q: 20160710
|
||||
// zbicie czuwaka / SHP
|
||||
// *****************************************************************************
|
||||
// hunter-091012: rozbicie alarmow, dodanie testu czuwaka
|
||||
bool TMoverParameters::SecuritySystemReset(void) // zbijanie czuwaka/SHP
|
||||
@@ -2117,13 +2130,15 @@ bool TMoverParameters::SecuritySystemReset(void) // zbijanie czuwaka/SHP
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160711
|
||||
// sprawdzanie stanu CA/SHP
|
||||
// *************************************************************************************************
|
||||
void TMoverParameters::SecuritySystemCheck(double dt)
|
||||
{
|
||||
// Ra: z CA/SHP w EZT jest ten problem, że w rozrządczym nie ma kierunku, a w silnikowym nie ma
|
||||
// obsady
|
||||
// poza tym jest zdefiniowany we wszystkich 3 członach EN57
|
||||
// SecuritySystem SS;
|
||||
if ((!Radio))
|
||||
EmergencyBrakeSwitch(false);
|
||||
|
||||
if ((SecuritySystem.SystemType > 0) && (SecuritySystem.Status > 0) &&
|
||||
(Battery)) // Ra: EZT ma teraz czuwak w rozrządczym
|
||||
@@ -2133,13 +2148,13 @@ void TMoverParameters::SecuritySystemCheck(double dt)
|
||||
SecuritySystem
|
||||
.AwareMinSpeed) // domyślnie predkość większa od 10% Vmax, albo podanej jawnie w FIZ
|
||||
{
|
||||
SecuritySystem.SystemTimer = SecuritySystem.SystemTimer + dt;
|
||||
SecuritySystem.SystemTimer += dt;
|
||||
if (TestFlag(SecuritySystem.SystemType, 1) &&
|
||||
TestFlag(SecuritySystem.Status, s_aware)) // jeśli świeci albo miga
|
||||
SecuritySystem.SystemSoundCATimer = SecuritySystem.SystemSoundCATimer + dt;
|
||||
SecuritySystem.SystemSoundCATimer += dt;
|
||||
if (TestFlag(SecuritySystem.SystemType, 1) &&
|
||||
TestFlag(SecuritySystem.Status, s_CAalarm)) // jeśli buczy
|
||||
SecuritySystem.SystemBrakeCATimer = SecuritySystem.SystemBrakeCATimer + dt;
|
||||
SecuritySystem.SystemBrakeCATimer += dt;
|
||||
if (TestFlag(SecuritySystem.SystemType, 1))
|
||||
if ((SecuritySystem.SystemTimer > SecuritySystem.AwareDelay) &&
|
||||
(SecuritySystem.AwareDelay >= 0)) //-1 blokuje
|
||||
@@ -2156,10 +2171,10 @@ void TMoverParameters::SecuritySystemCheck(double dt)
|
||||
// SHP
|
||||
if (TestFlag(SecuritySystem.SystemType, 2) &&
|
||||
TestFlag(SecuritySystem.Status, s_active)) // jeśli świeci albo miga
|
||||
SecuritySystem.SystemSoundSHPTimer = SecuritySystem.SystemSoundSHPTimer + dt;
|
||||
SecuritySystem.SystemSoundSHPTimer += dt;
|
||||
if (TestFlag(SecuritySystem.SystemType, 2) &&
|
||||
TestFlag(SecuritySystem.Status, s_SHPalarm)) // jeśli buczy
|
||||
SecuritySystem.SystemBrakeSHPTimer = SecuritySystem.SystemBrakeSHPTimer + dt;
|
||||
SecuritySystem.SystemBrakeSHPTimer += dt;
|
||||
if (TestFlag(SecuritySystem.SystemType, 2) && TestFlag(SecuritySystem.Status, s_active))
|
||||
if ((Vel > SecuritySystem.VelocityAllowed) && (SecuritySystem.VelocityAllowed >= 0))
|
||||
SetFlag(SecuritySystem.Status, s_SHPebrake);
|
||||
@@ -2178,7 +2193,7 @@ void TMoverParameters::SecuritySystemCheck(double dt)
|
||||
|
||||
// TEST CA
|
||||
if (TestFlag(SecuritySystem.Status, s_CAtest)) // jeśli świeci albo miga
|
||||
SecuritySystem.SystemBrakeCATestTimer = SecuritySystem.SystemBrakeCATestTimer + dt;
|
||||
SecuritySystem.SystemBrakeCATestTimer += dt;
|
||||
if (TestFlag(SecuritySystem.SystemType, 1))
|
||||
if (TestFlag(SecuritySystem.Status, s_CAtest)) // juz wlaczony sygnal swietlny
|
||||
if ((SecuritySystem.SystemBrakeCATestTimer > SecuritySystem.EmergencyBrakeDelay) &&
|
||||
@@ -2192,12 +2207,14 @@ void TMoverParameters::SecuritySystemCheck(double dt)
|
||||
}
|
||||
else if (!Battery)
|
||||
{ // wyłączenie baterii deaktywuje sprzęt
|
||||
EmergencyBrakeSwitch(false);
|
||||
// SecuritySystem.Status = 0; //deaktywacja czuwaka
|
||||
}
|
||||
}
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160710
|
||||
// włączenie / wyłączenie baterii
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::BatterySwitch(bool State)
|
||||
{
|
||||
@@ -2214,7 +2231,7 @@ bool TMoverParameters::BatterySwitch(bool State)
|
||||
BS = true;
|
||||
|
||||
if ((Battery) && (ActiveCab != 0)) /*|| (TrainType==dt_EZT)*/
|
||||
SecuritySystem.Status = (SecuritySystem.Status || s_waiting); // aktywacja czuwaka
|
||||
SecuritySystem.Status = (SecuritySystem.Status | s_waiting); // aktywacja czuwaka
|
||||
else
|
||||
SecuritySystem.Status = 0; // wyłączenie czuwaka
|
||||
|
||||
@@ -2223,6 +2240,7 @@ bool TMoverParameters::BatterySwitch(bool State)
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160710
|
||||
// włączenie / wyłączenie hamulca elektro-pneumatycznego
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::EpFuseSwitch(bool State)
|
||||
{
|
||||
@@ -2239,6 +2257,7 @@ bool TMoverParameters::EpFuseSwitch(bool State)
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160710
|
||||
// kierunek do tyłu
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::DirectionBackward(void)
|
||||
{
|
||||
@@ -2269,6 +2288,7 @@ bool TMoverParameters::DirectionBackward(void)
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160710
|
||||
// załączenie przycisku przeciwpoślizgowego
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::AntiSlippingButton(void)
|
||||
{
|
||||
@@ -2280,17 +2300,19 @@ bool TMoverParameters::AntiSlippingButton(void)
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160713
|
||||
// włączenie / wyłączenie obwodu głownego
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::MainSwitch(bool State)
|
||||
{
|
||||
bool MS = false;
|
||||
bool MS;
|
||||
|
||||
MS = false; // Ra: przeniesione z końca
|
||||
if ((Mains != State) && (MainCtrlPosNo > 0))
|
||||
{
|
||||
if ((State == false) ||
|
||||
((ScndCtrlPos == 0) && (ConvOvldFlag == false) && (LastSwitchingTime > CtrlDelay) &&
|
||||
!TestFlag(DamageFlag, dtrain_out)))
|
||||
((ScndCtrlPos == 0) && ((ConvOvldFlag == false) || (TrainType == dt_EZT)) &&
|
||||
(LastSwitchingTime > CtrlDelay) && !TestFlag(DamageFlag, dtrain_out) &&
|
||||
!TestFlag(EngDmgFlag, 1)))
|
||||
{
|
||||
if (Mains) // jeśli był załączony
|
||||
SendCtrlToNext("MainSwitch", int(State),
|
||||
@@ -2305,7 +2327,9 @@ bool TMoverParameters::MainSwitch(bool State)
|
||||
{
|
||||
dizel_enginestart = State;
|
||||
}
|
||||
// if (State=false) then //jeśli wyłączony
|
||||
if (((TrainType == dt_EZT) && (!State)))
|
||||
ConvOvldFlag = true;
|
||||
// if (State=false) then //jeśli wyłączony
|
||||
// begin
|
||||
// SetFlag(SoundFlag,sound_relay); //hunter-091012: przeniesione do Train.cpp, zeby sie
|
||||
// nie zapetlal
|
||||
@@ -2323,6 +2347,7 @@ bool TMoverParameters::MainSwitch(bool State)
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160713
|
||||
// włączenie / wyłączenie przetwornicy
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::ConverterSwitch(bool State)
|
||||
{
|
||||
@@ -2344,6 +2369,7 @@ bool TMoverParameters::ConverterSwitch(bool State)
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160713
|
||||
// włączenie / wyłączenie sprężarki
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::CompressorSwitch(bool State)
|
||||
{
|
||||
@@ -2366,6 +2392,7 @@ bool TMoverParameters::CompressorSwitch(bool State)
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160711
|
||||
// zwiększenie nastawy hamulca
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::IncBrakeLevelOld(void)
|
||||
{
|
||||
@@ -2401,20 +2428,21 @@ bool TMoverParameters::IncBrakeLevelOld(void)
|
||||
(BrakePressureTable[BrakeCtrlPos - 1].PipePressureVal > 0))
|
||||
LimPipePress = PipePress;
|
||||
|
||||
if (BrakeSystem == ElectroPneumatic)
|
||||
if (BrakeSubsystem != ss_K)
|
||||
{
|
||||
if ((BrakeCtrlPos * BrakeCtrlPos) == 1)
|
||||
{
|
||||
// SendCtrlToNext('Brake',BrakeCtrlPos,CabNo);
|
||||
// SetFlag(BrakeStatus,b_epused);
|
||||
}
|
||||
else
|
||||
{
|
||||
// SendCtrlToNext('Brake',0,CabNo);
|
||||
// SetFlag(BrakeStatus,-b_epused);
|
||||
}
|
||||
}
|
||||
//ten kawałek jest bez sensu gdyż nic nie robił. Zakomntowałem. GF 20161124
|
||||
//if (BrakeSystem == ElectroPneumatic)
|
||||
// if (BrakeSubsystem != ss_K)
|
||||
// {
|
||||
// if ((BrakeCtrlPos * BrakeCtrlPos) == 1)
|
||||
// {
|
||||
// // SendCtrlToNext('Brake',BrakeCtrlPos,CabNo);
|
||||
// // SetFlag(BrakeStatus,b_epused);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// // SendCtrlToNext('Brake',0,CabNo);
|
||||
// // SetFlag(BrakeStatus,-b_epused);
|
||||
// }
|
||||
// }
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2431,6 +2459,7 @@ bool TMoverParameters::IncBrakeLevelOld(void)
|
||||
|
||||
// *****************************************************************************
|
||||
// Q: 20160711
|
||||
// zmniejszenie nastawy hamulca
|
||||
// *****************************************************************************
|
||||
bool TMoverParameters::DecBrakeLevelOld(void)
|
||||
{
|
||||
@@ -2442,11 +2471,11 @@ bool TMoverParameters::DecBrakeLevelOld(void)
|
||||
{
|
||||
BrakeCtrlPos--;
|
||||
// BrakeCtrlPosR:=BrakeCtrlPos;
|
||||
if (EmergencyBrakeFlag)
|
||||
{
|
||||
EmergencyBrakeFlag = false; //!!!
|
||||
SendCtrlToNext("Emergency_brake", 0, CabNo);
|
||||
}
|
||||
//if (EmergencyBrakeFlag)
|
||||
//{
|
||||
// EmergencyBrakeFlag = false; //!!!
|
||||
// SendCtrlToNext("Emergency_brake", 0, CabNo);
|
||||
//}
|
||||
|
||||
// youBy: wywalilem to, jak jest EP, to sa przenoszone sygnaly nt. co ma robic, a nie
|
||||
// poszczegolne pozycje;
|
||||
@@ -2473,20 +2502,21 @@ bool TMoverParameters::DecBrakeLevelOld(void)
|
||||
// (BrakePressureTable[BrakeCtrlPos+1].PipePressureVal > 0))
|
||||
// LimPipePress:=PipePress;
|
||||
|
||||
if (BrakeSystem == ElectroPneumatic)
|
||||
if (BrakeSubsystem != ss_K)
|
||||
{
|
||||
if ((BrakeCtrlPos * BrakeCtrlPos) == 1)
|
||||
{
|
||||
// SendCtrlToNext("Brake", BrakeCtrlPos, CabNo);
|
||||
// SetFlag(BrakeStatus, b_epused);
|
||||
}
|
||||
else
|
||||
{
|
||||
// SendCtrlToNext("Brake", 0, CabNo);
|
||||
// SetFlag(BrakeStatus, -b_epused);
|
||||
}
|
||||
}
|
||||
// to nic nie robi. Zakomentowałem. GF 20161124
|
||||
//if (BrakeSystem == ElectroPneumatic)
|
||||
// if (BrakeSubsystem != ss_K)
|
||||
// {
|
||||
// if ((BrakeCtrlPos * BrakeCtrlPos) == 1)
|
||||
// {
|
||||
// // SendCtrlToNext("Brake", BrakeCtrlPos, CabNo);
|
||||
// // SetFlag(BrakeStatus, b_epused);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// // SendCtrlToNext("Brake", 0, CabNo);
|
||||
// // SetFlag(BrakeStatus, -b_epused);
|
||||
// }
|
||||
// }
|
||||
// for b:=0 to 1 do {poprawic to!}
|
||||
// with Couplers[b] do
|
||||
// if CouplingFlag and ctrain_controll=ctrain_controll then
|
||||
@@ -2504,6 +2534,7 @@ bool TMoverParameters::DecBrakeLevelOld(void)
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160711
|
||||
// zwiększenie nastawy hamulca pomocnicznego
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::IncLocalBrakeLevel(int CtrlSpeed)
|
||||
{
|
||||
@@ -2526,6 +2557,7 @@ bool TMoverParameters::IncLocalBrakeLevel(int CtrlSpeed)
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160711
|
||||
// zmniejszenie nastawy hamulca pomocniczego
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::DecLocalBrakeLevel(int CtrlSpeed)
|
||||
{
|
||||
@@ -2548,6 +2580,7 @@ bool TMoverParameters::DecLocalBrakeLevel(int CtrlSpeed)
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160711
|
||||
// ustawienie pozycji kranu pomocniczego na masymalną wartość
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::IncLocalBrakeLevelFAST(void)
|
||||
{
|
||||
@@ -2565,6 +2598,7 @@ bool TMoverParameters::IncLocalBrakeLevelFAST(void)
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160711
|
||||
// ustawienie pozycji hamulca pomocniczego na minimalną
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::DecLocalBrakeLevelFAST(void)
|
||||
{
|
||||
@@ -2582,6 +2616,7 @@ bool TMoverParameters::DecLocalBrakeLevelFAST(void)
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160711
|
||||
// zwiększenie nastawy hamulca ręcznego
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::IncManualBrakeLevel(int CtrlSpeed)
|
||||
{
|
||||
@@ -2603,6 +2638,7 @@ bool TMoverParameters::IncManualBrakeLevel(int CtrlSpeed)
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160711
|
||||
// zmniejszenie nastawy hamulca ręcznego
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::DecManualBrakeLevel(int CtrlSpeed)
|
||||
{
|
||||
@@ -2651,6 +2687,7 @@ bool TMoverParameters::DynamicBrakeSwitch(bool Switch)
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160711
|
||||
// włączenie / wyłączenie hamowania awaryjnego
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::EmergencyBrakeSwitch(bool Switch)
|
||||
{
|
||||
@@ -2682,6 +2719,7 @@ bool TMoverParameters::EmergencyBrakeSwitch(bool Switch)
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160710
|
||||
// hamowanie przeciwpoślizgowe
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::AntiSlippingBrake(void)
|
||||
{
|
||||
@@ -2697,10 +2735,11 @@ bool TMoverParameters::AntiSlippingBrake(void)
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160711
|
||||
// włączenie / wyłączenie odluźniacza
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::BrakeReleaser(int state)
|
||||
{
|
||||
bool OK;
|
||||
bool OK = true; //false tylko jeśli nie uda się wysłać, GF 20161124
|
||||
Hamulec->Releaser(state);
|
||||
if (CabNo != 0) // rekurencyjne wysłanie do następnego
|
||||
OK = SendCtrlToNext("BrakeReleaser", state, CabNo);
|
||||
@@ -2709,6 +2748,7 @@ bool TMoverParameters::BrakeReleaser(int state)
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160711
|
||||
// włączenie / wyłączenie hamulca elektro-pneumatycznego
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::SwitchEPBrake(int state)
|
||||
{
|
||||
@@ -2718,10 +2758,10 @@ bool TMoverParameters::SwitchEPBrake(int state)
|
||||
OK = false;
|
||||
if ((BrakeHandle == St113) && (ActiveCab != 0))
|
||||
{
|
||||
// if(state > 0)
|
||||
// temp = (Handle as TSt113).GetCP // TODO: przetlumaczyc
|
||||
// else
|
||||
temp = 0;
|
||||
if (state > 0)
|
||||
temp = Handle->GetCP(); // TODO: przetlumaczyc
|
||||
else
|
||||
temp = 0;
|
||||
Hamulec->SetEPS(temp);
|
||||
SendCtrlToNext("Brake", temp, CabNo);
|
||||
}
|
||||
@@ -2732,6 +2772,7 @@ bool TMoverParameters::SwitchEPBrake(int state)
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160711
|
||||
// zwiększenie ciśnienia hamowania
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::IncBrakePress(double &brake, double PressLimit, double dp)
|
||||
{
|
||||
@@ -2763,6 +2804,7 @@ bool TMoverParameters::IncBrakePress(double &brake, double PressLimit, double dp
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160711
|
||||
// zmniejszenie ciśnienia hamowania
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::DecBrakePress(double &brake, double PressLimit, double dp)
|
||||
{
|
||||
@@ -2789,12 +2831,23 @@ bool TMoverParameters::DecBrakePress(double &brake, double PressLimit, double dp
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160711
|
||||
// przełączenie nastawy hamulca O/P/T
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::BrakeDelaySwitch(int BDS)
|
||||
{
|
||||
bool rBDS;
|
||||
// if (BrakeCtrlPosNo > 0)
|
||||
if (Hamulec->SetBDF(BDS))
|
||||
if (BrakeHandle == MHZ_EN57)
|
||||
{
|
||||
if ((BDS != BrakeOpModeFlag) && ((BDS & BrakeOpModes) > 0))
|
||||
{
|
||||
BrakeOpModeFlag = BDS;
|
||||
rBDS = true;
|
||||
}
|
||||
else
|
||||
rBDS = false;
|
||||
}
|
||||
else if (Hamulec->SetBDF(BDS))
|
||||
{
|
||||
BrakeDelayFlag = BDS;
|
||||
rBDS = true;
|
||||
@@ -2810,6 +2863,7 @@ bool TMoverParameters::BrakeDelaySwitch(int BDS)
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160712
|
||||
// zwiększenie przełożenia hamulca
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::IncBrakeMult(void)
|
||||
{
|
||||
@@ -2833,6 +2887,7 @@ bool TMoverParameters::IncBrakeMult(void)
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160712
|
||||
// zmniejszenie przełożenia hamulca
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::DecBrakeMult(void)
|
||||
{
|
||||
@@ -2855,11 +2910,12 @@ bool TMoverParameters::DecBrakeMult(void)
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160712
|
||||
// zaktualizowanie ciśnienia w hamulcach
|
||||
// *************************************************************************************************
|
||||
void TMoverParameters::UpdateBrakePressure(double dt)
|
||||
{
|
||||
const LBDelay = 5.0; // stala czasowa hamulca
|
||||
double Rate, Speed, dp, sm;
|
||||
//const double LBDelay = 5.0; // stala czasowa hamulca
|
||||
//double Rate, Speed, dp, sm;
|
||||
|
||||
dpLocalValve = 0;
|
||||
dpBrake = 0;
|
||||
@@ -2998,11 +3054,12 @@ void TMoverParameters::CompressorCheck(double dt)
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160712
|
||||
// aktualizacja ciśnienia w przewodzie głównym
|
||||
// *************************************************************************************************
|
||||
void TMoverParameters::UpdatePipePressure(double dt)
|
||||
{
|
||||
const LBDelay = 100;
|
||||
const kL = 0.5;
|
||||
const double LBDelay = 100;
|
||||
const double kL = 0.5;
|
||||
double dV;
|
||||
TMoverParameters *c; // T_MoverParameters
|
||||
double temp;
|
||||
@@ -3013,21 +3070,32 @@ void TMoverParameters::UpdatePipePressure(double dt)
|
||||
|
||||
dpMainValve = 0;
|
||||
|
||||
if ((BrakeCtrlPosNo > 1) && (ActiveCab != 0))
|
||||
if ((BrakeCtrlPosNo > 1) /*&& (ActiveCab != 0)*/)
|
||||
// with BrakePressureTable[BrakeCtrlPos] do
|
||||
{
|
||||
dpLocalValve = LocHandle->GetPF(LocalBrakePos / LocalBrakePosNo, Hamulec->GetBCP(),
|
||||
ScndPipePress, dt, 0);
|
||||
if ((EngineType != ElectricInductionMotor))
|
||||
dpLocalValve =
|
||||
LocHandle->GetPF(Max0R(LocalBrakePos * 1.0 / LocalBrakePosNo, LocalBrakePosA),
|
||||
Hamulec->GetBCP, ScndPipePress, dt, 0);
|
||||
else
|
||||
dpLocalValve =
|
||||
LocHandle->GetPF(LocalBrakePosA, Hamulec->GetBCP(), ScndPipePress, dt, 0);
|
||||
if ((BrakeHandle == FV4a) &&
|
||||
((PipePress < 2.75) && ((Hamulec->GetStatus() && b_rls) == 0)) &&
|
||||
((PipePress < 2.75) && ((Hamulec->GetStatus() & b_rls) == 0)) &&
|
||||
(BrakeSubsystem == ss_LSt) && (TrainType != dt_EZT))
|
||||
temp = PipePress + 0.00001;
|
||||
else
|
||||
temp = ScndPipePress;
|
||||
Handle->SetReductor(BrakeCtrlPos2);
|
||||
|
||||
dpMainValve = Handle->GetPF(BrakeCtrlPosR, PipePress, temp, dt, EqvtPipePress);
|
||||
if (dpMainValve < 0) // && (PipePressureVal > 0.01) //50
|
||||
if ((BrakeOpModeFlag != bom_PS))
|
||||
if ((BrakeOpModeFlag < bom_EP) || (Handle->GetPos(bh_EB) - 0.5 < BrakeCtrlPosR) ||
|
||||
(BrakeHandle != MHZ_EN57))
|
||||
dpMainValve = Handle->GetPF(BrakeCtrlPosR, PipePress, temp, dt, EqvtPipePress);
|
||||
else
|
||||
dpMainValve = Handle->GetPF(0, PipePress, temp, dt, EqvtPipePress);
|
||||
|
||||
if (dpMainValve < 0) // && (PipePressureVal > 0.01) //50
|
||||
if (Compressor > ScndPipePress)
|
||||
{
|
||||
CompressedVolume = CompressedVolume + dpMainValve / 1500;
|
||||
@@ -3040,10 +3108,9 @@ void TMoverParameters::UpdatePipePressure(double dt)
|
||||
// if(EmergencyBrakeFlag)and(BrakeCtrlPosNo=0)then //ulepszony hamulec bezp.
|
||||
if ((EmergencyBrakeFlag) || (TestFlag(SecuritySystem.Status, s_SHPebrake)) ||
|
||||
(TestFlag(SecuritySystem.Status, s_CAebrake)) ||
|
||||
(s_CAtestebrake == true)) // ulepszony hamulec bezp.
|
||||
dpMainValve = dpMainValve / 1 +
|
||||
PF(0, PipePress, 0.15, 0.25) *
|
||||
dt; // Q: dodalem 4 paraMETR 0.25 bo wywalalo ze za malo parametrow
|
||||
(s_CAtestebrake == true) ||
|
||||
(TestFlag(EngDmgFlag, 32)) /* or (not Battery)*/) // ulepszony hamulec bezp.
|
||||
dpMainValve = dpMainValve + PF(0, PipePress, 0.15) * dt;
|
||||
// 0.2*Spg
|
||||
Pipe->Flow(-dpMainValve);
|
||||
Pipe->Flow(-(PipePress)*0.001 * dt);
|
||||
@@ -3066,14 +3133,14 @@ void TMoverParameters::UpdatePipePressure(double dt)
|
||||
LocBrakePress = LocHandle->GetCP();
|
||||
|
||||
//(Hamulec as TWest).SetLBP(LocBrakePress);
|
||||
static_cast<TWest *>(Hamulec)->SetLBP(LocBrakePress);
|
||||
Hamulec->SetLBP(LocBrakePress);
|
||||
}
|
||||
if (MBPM < 2)
|
||||
//(Hamulec as TWest).PLC(MaxBrakePress[LoadFlag])
|
||||
static_cast<TWest *>(Hamulec)->PLC(MaxBrakePress[LoadFlag]);
|
||||
Hamulec->PLC(MaxBrakePress[LoadFlag]);
|
||||
else
|
||||
//(Hamulec as TWest).PLC(TotalMass);
|
||||
static_cast<TWest *>(Hamulec)->PLC(TotalMass);
|
||||
Hamulec->PLC(TotalMass);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -3081,36 +3148,45 @@ void TMoverParameters::UpdatePipePressure(double dt)
|
||||
case EStED:
|
||||
{
|
||||
LocBrakePress = LocHandle->GetCP();
|
||||
for (int b = 0; b < 1; b++)
|
||||
if (((TrainType && (dt_ET41 || dt_ET42)) > 0) &&
|
||||
for (int b = 0; b < 2; b++)
|
||||
if (((TrainType & (dt_ET41 | dt_ET42)) != 0) &&
|
||||
(Couplers[b].Connected != NULL)) // nie podoba mi się to rozwiązanie, chyba trzeba
|
||||
// dodać jakiś wpis do fizyki na to
|
||||
if (((Couplers[b].Connected->TrainType && (dt_ET41 || dt_ET42)) > 0) &&
|
||||
if (((Couplers[b].Connected->TrainType & (dt_ET41 | dt_ET42)) != 0) &&
|
||||
((Couplers[b].CouplingFlag & 36) == 36))
|
||||
LocBrakePress = Max0R(Couplers[b].Connected->LocHandle->GetCP(), LocBrakePress);
|
||||
|
||||
if ((DynamicBrakeFlag) && (EngineType == ElectricInductionMotor))
|
||||
{
|
||||
if (Vel > 10)
|
||||
LocBrakePress = 0;
|
||||
else if (Vel > 5)
|
||||
LocBrakePress = (10 - Vel) / 5 * LocBrakePress;
|
||||
}
|
||||
//if ((DynamicBrakeFlag) && (EngineType == ElectricInductionMotor))
|
||||
//{
|
||||
// //if (Vel > 10)
|
||||
// // LocBrakePress = 0;
|
||||
// //else if (Vel > 5)
|
||||
// // LocBrakePress = (10 - Vel) / 5 * LocBrakePress;
|
||||
//}
|
||||
|
||||
//(Hamulec as TLSt).SetLBP(LocBrakePress);
|
||||
static_cast<TLSt *>(Hamulec)->SetLBP(LocBrakePress);
|
||||
break;
|
||||
Hamulec->SetLBP(LocBrakePress);
|
||||
if ((BrakeValve == EStED))
|
||||
if (MBPM < 2)
|
||||
Hamulec->PLC(MaxBrakePress[LoadFlag]);
|
||||
else
|
||||
Hamulec->PLC(TotalMass);
|
||||
break;
|
||||
}
|
||||
|
||||
case CV1_L_TR:
|
||||
{
|
||||
LocBrakePress = LocHandle->GetCP();
|
||||
//(Hamulec as TCV1L_TR).SetLBP(LocBrakePress);
|
||||
static_cast<TCV1L_TR *>(Hamulec)->SetLBP(LocBrakePress);
|
||||
Hamulec->SetLBP(LocBrakePress);
|
||||
break;
|
||||
}
|
||||
|
||||
// EP2: (Hamulec as TEStEP2).PLC(TotalMass);
|
||||
case EP2:
|
||||
{
|
||||
Hamulec->PLC(TotalMass);
|
||||
break;
|
||||
}
|
||||
case ESt3AL2:
|
||||
case NESt3:
|
||||
case ESt4:
|
||||
@@ -3118,26 +3194,26 @@ void TMoverParameters::UpdatePipePressure(double dt)
|
||||
{
|
||||
if (MBPM < 2)
|
||||
//(Hamulec as TNESt3).PLC(MaxBrakePress[LoadFlag])
|
||||
static_cast<TNESt3 *>(Hamulec)->PLC(MaxBrakePress[LoadFlag]);
|
||||
Hamulec->PLC(MaxBrakePress[LoadFlag]);
|
||||
else
|
||||
//(Hamulec as TNESt3).PLC(TotalMass);
|
||||
static_cast<TNESt3 *>(Hamulec)->PLC(TotalMass);
|
||||
Hamulec->PLC(TotalMass);
|
||||
LocBrakePress = LocHandle->GetCP();
|
||||
//(Hamulec as TNESt3).SetLBP(LocBrakePress);
|
||||
static_cast<TNESt3 *>(Hamulec)->SetLBP(LocBrakePress);
|
||||
Hamulec->SetLBP(LocBrakePress);
|
||||
break;
|
||||
}
|
||||
case KE:
|
||||
{
|
||||
LocBrakePress = LocHandle->GetCP();
|
||||
//(Hamulec as TKE).SetLBP(LocBrakePress);
|
||||
static_cast<TKE *>(Hamulec)->SetLBP(LocBrakePress);
|
||||
Hamulec->SetLBP(LocBrakePress);
|
||||
if (MBPM < 2)
|
||||
//(Hamulec as TKE).PLC(MaxBrakePress[LoadFlag])
|
||||
static_cast<TKE *>(Hamulec)->PLC(MaxBrakePress[LoadFlag]);
|
||||
Hamulec->PLC(MaxBrakePress[LoadFlag]);
|
||||
else
|
||||
//(Hamulec as TKE).PLC(TotalMass);
|
||||
static_cast<TKE *>(Hamulec)->PLC(TotalMass);
|
||||
Hamulec->PLC(TotalMass);
|
||||
break;
|
||||
}
|
||||
} // switch
|
||||
@@ -3147,7 +3223,7 @@ void TMoverParameters::UpdatePipePressure(double dt)
|
||||
if ((Battery) && (ActiveDir != 0) &&
|
||||
(EpFuse)) // tu powinien byc jeszcze bezpiecznik EP i baterie -
|
||||
// temp = (Handle as TFVel6).GetCP
|
||||
temp = static_cast<TFVel6 *>(Handle)->GetCP();
|
||||
temp = Handle->GetCP();
|
||||
else
|
||||
temp = 0;
|
||||
Hamulec->SetEPS(temp);
|
||||
@@ -3251,6 +3327,7 @@ void TMoverParameters::UpdateScndPipePressure(double dt)
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160715
|
||||
// oblicza i zwraca przepływ powietrza pomiędzy pojazdami
|
||||
// *************************************************************************************************
|
||||
double TMoverParameters::GetDVc(double dt)
|
||||
{
|
||||
@@ -3265,7 +3342,7 @@ double TMoverParameters::GetDVc(double dt)
|
||||
if (TestFlag(Couplers[0].CouplingFlag, ctrain_pneumatic))
|
||||
{ //*0.85
|
||||
c = Couplers[0].Connected; // skrot //0.08 //e/D * L/D = e/D^2 * L
|
||||
dv1 = 0.5 * dt * PF(PipePress, c->PipePress, (Spg) / (1 + 0.015 / Spg * Dim.L), 0.25);
|
||||
dv1 = 0.5 * dt * PF(PipePress, c->PipePress, (Spg) / (1 + 0.015 / Spg * Dim.L));
|
||||
if (dv1 * dv1 > 0.00000000000001)
|
||||
c->Physic_ReActivation();
|
||||
c->Pipe->Flow(-dv1);
|
||||
@@ -3275,21 +3352,21 @@ double TMoverParameters::GetDVc(double dt)
|
||||
if (TestFlag(Couplers[1].CouplingFlag, ctrain_pneumatic))
|
||||
{
|
||||
c = Couplers[1].Connected; // skrot
|
||||
dv2 = 0.5 * dt * PF(PipePress, c->PipePress, (Spg) / (1 + 0.015 / Spg * Dim.L), 0.25);
|
||||
dv2 = 0.5 * dt * PF(PipePress, c->PipePress, (Spg) / (1 + 0.015 / Spg * Dim.L));
|
||||
if (dv2 * dv2 > 0.00000000000001)
|
||||
c->Physic_ReActivation();
|
||||
c->Pipe->Flow(-dv2);
|
||||
}
|
||||
if ((Couplers[1].Connected != NULL) && (Couplers[0].Connected != NULL))
|
||||
if ((TestFlag(Couplers[0].CouplingFlag, ctrain_pneumatic)) &&
|
||||
(TestFlag(Couplers[1].CouplingFlag, ctrain_pneumatic)))
|
||||
{
|
||||
dV = 0.05 * dt * PF(Couplers[0].Connected->PipePress, Couplers[1].Connected->PipePress,
|
||||
(Spg * 0.85) / (1 + 0.03 * Dim.L), 0.25) *
|
||||
0;
|
||||
Couplers[0].Connected->Pipe->Flow(+dV);
|
||||
Couplers[1].Connected->Pipe->Flow(-dV);
|
||||
}
|
||||
//if ((Couplers[1].Connected != NULL) && (Couplers[0].Connected != NULL))
|
||||
// if ((TestFlag(Couplers[0].CouplingFlag, ctrain_pneumatic)) &&
|
||||
// (TestFlag(Couplers[1].CouplingFlag, ctrain_pneumatic)))
|
||||
// {
|
||||
// dV = 0.05 * dt * PF(Couplers[0].Connected->PipePress, Couplers[1].Connected->PipePress,
|
||||
// (Spg * 0.85) / (1 + 0.03 * Dim.L)) *
|
||||
// 0; // ktoś mi powie jaki jest sens tego bloku jeśli przepływ mnożony przez zero?
|
||||
// Couplers[0].Connected->Pipe->Flow(+dV);
|
||||
// Couplers[1].Connected->Pipe->Flow(-dV);
|
||||
// }
|
||||
// suma
|
||||
return dv2 + dv1;
|
||||
}
|
||||
|
||||
@@ -208,11 +208,11 @@ Knorr/West EP -
|
||||
//maksymalne cisnienie, promien, skok roboczy, pojemnosc ZP;
|
||||
//ilosc cylindrow, opoznienia hamulca, material klockow, osie hamowane, klocki na os;
|
||||
|
||||
virtual double GetFC(double Vel, double N); //wspolczynnik tarcia - hamulec wie lepiej
|
||||
double GetFC(double Vel, double N); //wspolczynnik tarcia - hamulec wie lepiej
|
||||
virtual double GetPF(double PP, double dt, double Vel); //przeplyw miedzy komora wstepna i PG
|
||||
double GetBCF(); //sila tlokowa z tloka
|
||||
virtual double GetHPFlow(double HP, double dt); //przeplyw - 8 bar
|
||||
virtual double GetBCP(); //cisnienie cylindrow hamulcowych
|
||||
double GetBCP(); //cisnienie cylindrow hamulcowych
|
||||
double GetBRP(); //cisnienie zbiornika pomocniczego
|
||||
double GetVRP(); //cisnienie komory wstepnej rozdzielacza
|
||||
virtual double GetCRP(); //cisnienie zbiornika sterujacego
|
||||
@@ -221,6 +221,8 @@ Knorr/West 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
|
||||
virtual void SetLBP(double P) {}; //cisnienie z hamulca pomocniczego
|
||||
virtual void PLC(double mass) {}; //wspolczynnik cisnienia przystawki wazacej
|
||||
void ASB(int state); //hamulec przeciwposlizgowy
|
||||
int GetStatus(); //flaga statusu, moze sie przydac do odglosow
|
||||
void SetASBP(double Press); //ustalenie cisnienia pp
|
||||
@@ -585,8 +587,8 @@ Knorr/West EP -
|
||||
virtual double GetCP();
|
||||
virtual void SetReductor(double nAdj);
|
||||
virtual double GetSound(int i);
|
||||
static double GetPos(int i);
|
||||
double GetEP(double pos);
|
||||
virtual double GetPos(int i);
|
||||
virtual double GetEP(double pos);
|
||||
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user