mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-09-01 12:49:18 +02:00
Merge branch 'tmj-dev' into milek-dev
This commit is contained in:
@@ -637,6 +637,7 @@ struct oil_pump {
|
||||
start start_type { start::manual };
|
||||
float resource_amount { 1.f };
|
||||
float pressure_minimum { 0.f }; // lowest acceptable working pressure
|
||||
float pressure_maximum { 0.65f }; // oil pressure at maximum engine revolutions
|
||||
float pressure_target { 0.f };
|
||||
float pressure_present { 0.f };
|
||||
};
|
||||
@@ -806,6 +807,7 @@ public:
|
||||
double BrakeSlckAdj = 0.0; /*opor nastawiacza skoku tloka, kN*/
|
||||
double BrakeRigEff = 0.0; /*sprawnosc przekladni dzwigniowej*/
|
||||
double RapidMult = 1.0; /*przelozenie rapidu*/
|
||||
double RapidVel = 55.0; /*szybkosc przelaczania rapidu*/
|
||||
int BrakeValveSize = 0;
|
||||
std::string BrakeValveParams;
|
||||
double Spg = 0.0;
|
||||
@@ -943,9 +945,11 @@ public:
|
||||
double DoorOpenSpeed = 1.0; double DoorCloseSpeed = 1.0; /*predkosc otwierania i zamykania w j.u. */
|
||||
double DoorMaxShiftL = 0.5; double DoorMaxShiftR = 0.5; double DoorMaxPlugShift = 0.1;/*szerokosc otwarcia lub kat*/
|
||||
int DoorOpenMethod = 2; /*sposob otwarcia - 1: przesuwne, 2: obrotowe, 3: trójelementowe*/
|
||||
double PlatformSpeed = 0.25; /*szybkosc stopnia*/
|
||||
double PlatformMaxShift = 0.5; /*wysuniecie stopnia*/
|
||||
int PlatformOpenMethod = 1; /*sposob animacji stopnia*/
|
||||
float DoorCloseDelay { 0.f }; // delay (in seconds) before the door begin closing, once conditions to close are met
|
||||
double PlatformSpeed = 0.5; /*szybkosc stopnia*/
|
||||
double PlatformMaxShift { 45.0 }; /*wysuniecie stopnia*/
|
||||
int PlatformOpenMethod { 2 }; /*sposob animacji stopnia*/
|
||||
double MirrorMaxShift { 90.0 };
|
||||
bool ScndS = false; /*Czy jest bocznikowanie na szeregowej*/
|
||||
double SpeedCtrlDelay = 2; /*opoznienie dzialania tempomatu z wybieralna predkoscia*/
|
||||
/*--sekcja zmiennych*/
|
||||
@@ -1064,7 +1068,7 @@ public:
|
||||
int DirAbsolute = 0; //zadany kierunek jazdy względem sprzęgów (1=w strone 0,-1=w stronę 1)
|
||||
int ActiveCab = 0; //numer kabiny, w ktorej jest obsada (zwykle jedna na skład)
|
||||
double LastSwitchingTime = 0.0; /*czas ostatniego przelaczania czegos*/
|
||||
//WarningSignal: byte; {0: nie trabi, 1,2: trabi}
|
||||
int WarningSignal = 0; // 0: nie trabi, 1,2,4: trabi
|
||||
bool DepartureSignal = false; /*sygnal odjazdu*/
|
||||
bool InsideConsist = false;
|
||||
/*-zmienne dla lokomotywy elektrycznej*/
|
||||
@@ -1183,7 +1187,6 @@ public:
|
||||
double TotalMassxg = 0.0; /*TotalMass*g*/
|
||||
|
||||
Math3D::vector3 vCoulpler[2]; // powtórzenie współrzędnych sprzęgów z DynObj :/
|
||||
int WarningSignal = 0; // tymczasowo 8bit, ze względu na funkcje w MTools
|
||||
double fBrakeCtrlPos = -2.0; // płynna nastawa hamulca zespolonego
|
||||
bool bPantKurek3 = true; // kurek trójdrogowy (pantografu): true=połączenie z ZG, false=połączenie z małą sprężarką // domyślnie zbiornik pantografu połączony jest ze zbiornikiem głównym
|
||||
int iProblem = 0; // flagi problemów z taborem, aby AI nie musiało porównywać; 0=może jechać
|
||||
|
||||
@@ -1589,8 +1589,8 @@ void TMoverParameters::FuelPumpCheck( double const Timestep ) {
|
||||
FuelPump.is_enabled = ( dizel_startup || Mains );
|
||||
}
|
||||
FuelPump.is_active = (
|
||||
( true == FuelPump.is_enabled )
|
||||
&& ( true == Battery ) );
|
||||
( true == Battery )
|
||||
&& ( true == FuelPump.is_enabled ) );
|
||||
}
|
||||
|
||||
// oil pump status update
|
||||
@@ -1611,10 +1611,9 @@ void TMoverParameters::OilPumpCheck( double const Timestep ) {
|
||||
OilPump.pressure_minimum > 0.f ?
|
||||
OilPump.pressure_minimum :
|
||||
0.15f }; // arbitrary fallback value
|
||||
auto const maxpressure { 0.65f }; // arbitrary value
|
||||
|
||||
OilPump.pressure_target = (
|
||||
enrot > 0.1 ? interpolate( minpressure, maxpressure, static_cast<float>( clamp( enrot / maxrevolutions, 0.0, 1.0 ) ) ) * OilPump.resource_amount :
|
||||
enrot > 0.1 ? interpolate( minpressure, OilPump.pressure_maximum, static_cast<float>( clamp( enrot / maxrevolutions, 0.0, 1.0 ) ) ) * OilPump.resource_amount :
|
||||
true == OilPump.is_active ? minpressure :
|
||||
0.f );
|
||||
|
||||
@@ -6318,6 +6317,8 @@ void TMoverParameters::dizel_Heat( double const dt ) {
|
||||
auto const gwmin2 { 400.0 };
|
||||
auto const gwmax2 { 4000.0 };
|
||||
|
||||
dizel_heat.Te = Global.AirTemperature;
|
||||
|
||||
auto const engineon { ( Mains ? 1 : 0 ) };
|
||||
auto const engineoff { ( Mains ? 0 : 1 ) };
|
||||
auto const rpm { enrot * 60 };
|
||||
@@ -6376,7 +6377,7 @@ void TMoverParameters::dizel_Heat( double const dt ) {
|
||||
// olej oddaje cieplo do wody gdy krazy przez wymiennik ciepla == wlaczona pompka lub silnik
|
||||
auto const dTo { (
|
||||
dizel_heat.auxiliary_water_circuit ?
|
||||
( ( dizel_heat.kfo * ( dizel_heat.Ts - dizel_heat.To ) ) - ( dizel_heat.kfs * ( 0.3 ) * ( dizel_heat.To - dizel_heat.Tsr2 ) ) ) / ( gwO * Co ) :
|
||||
( ( dizel_heat.kfo * ( dizel_heat.Ts - dizel_heat.To ) ) - ( dizel_heat.kfo2 * ( dizel_heat.To - dizel_heat.Tsr2 ) ) ) / ( gwO * Co ) :
|
||||
( ( dizel_heat.kfo * ( dizel_heat.Ts - dizel_heat.To ) ) - ( dizel_heat.kfo2 * ( dizel_heat.To - dizel_heat.Tsr ) ) ) / ( gwO * Co ) ) };
|
||||
dizel_heat.To += ( dTo * dt );
|
||||
|
||||
@@ -6395,12 +6396,12 @@ void TMoverParameters::dizel_Heat( double const dt ) {
|
||||
dizel_heat.water_aux.is_warm = (
|
||||
( true == dizel_heat.cooling )
|
||||
|| ( ( true == Mains )
|
||||
&& ( BatteryVoltage > 70 ) /* && !bezpompy && !awaria_chlodzenia && !WS10 */
|
||||
&& ( BatteryVoltage > ( 0.75 * NominalBatteryVoltage ) ) /* && !bezpompy && !awaria_chlodzenia && !WS10 */
|
||||
&& ( dizel_heat.water_aux.config.temp_cooling > 0 )
|
||||
&& ( dizel_heat.temperatura2 > dizel_heat.water_aux.config.temp_cooling - ( dizel_heat.water_aux.is_warm ? 8 : 0 ) ) ) );
|
||||
auto const PTC2 { ( dizel_heat.water_aux.is_warm /*or PTC2p*/ ? 1 : 0 ) };
|
||||
dizel_heat.rpmwz2 = PTC2 * 80 * rpm / ( ( 0.5 * rpm ) + 500 );
|
||||
dizel_heat.zaluzje2 = ( dizel_heat.water_aux.config.shutters ? PTC2 : true ); // no shutters is an equivalent to having them open
|
||||
dizel_heat.zaluzje2 = ( dizel_heat.water_aux.config.shutters ? ( PTC2 == 1 ) : true ); // no shutters is an equivalent to having them open
|
||||
auto const zaluzje2 { ( dizel_heat.zaluzje2 ? 1 : 0 ) };
|
||||
// auxiliary water circuit heat transfer values
|
||||
auto const kf2 { kurek07 * ( ( dizel_heat.kw * ( 0.3 + 0.7 * zaluzje2 ) ) * dizel_heat.rpmw2 + ( dizel_heat.kv * ( 0.3 + 0.7 * zaluzje2 ) * Vel / 3.6 ) ) + 2 };
|
||||
@@ -6423,12 +6424,12 @@ void TMoverParameters::dizel_Heat( double const dt ) {
|
||||
dizel_heat.water.is_warm = (
|
||||
( true == dizel_heat.cooling )
|
||||
|| ( ( true == Mains )
|
||||
&& ( BatteryVoltage > 70 ) /* && !bezpompy && !awaria_chlodzenia && !WS10 */
|
||||
&& ( BatteryVoltage > ( 0.75 * NominalBatteryVoltage ) ) /* && !bezpompy && !awaria_chlodzenia && !WS10 */
|
||||
&& ( dizel_heat.water.config.temp_cooling > 0 )
|
||||
&& ( dizel_heat.temperatura1 > dizel_heat.water.config.temp_cooling - ( dizel_heat.water.is_warm ? 8 : 0 ) ) ) );
|
||||
auto const PTC1 { ( dizel_heat.water.is_warm /*or PTC1p*/ ? 1 : 0 ) };
|
||||
dizel_heat.rpmwz = PTC1 * 80 * rpm / ( ( 0.5 * rpm ) + 500 );
|
||||
dizel_heat.zaluzje1 = ( dizel_heat.water.config.shutters ? PTC1 : true ); // no shutters is an equivalent to having them open
|
||||
dizel_heat.zaluzje1 = ( dizel_heat.water.config.shutters ? ( PTC1 == 1 ) : true ); // no shutters is an equivalent to having them open
|
||||
auto const zaluzje1 { ( dizel_heat.zaluzje1 ? 1 : 0 ) };
|
||||
// primary water circuit heat transfer values
|
||||
auto const kf { obieg * kurek07 * ( ( dizel_heat.kw * ( 0.3 + 0.7 * zaluzje1 ) ) * dizel_heat.rpmw + ( dizel_heat.kv * ( 0.3 + 0.7 * zaluzje1 ) * Vel / 3.6 ) + 3 ) + 2 };
|
||||
@@ -6707,14 +6708,14 @@ TMoverParameters::update_autonomous_doors( double const Deltatime ) {
|
||||
// the door are closed if their timer goes below 0, or if the vehicle is moving at > 5 km/h
|
||||
// NOTE: timer value of 0 is 'special' as it means the door will stay open until vehicle is moving
|
||||
if( true == DoorLeftOpened ) {
|
||||
if( ( DoorLeftOpenTimer < 0.0 )
|
||||
if( ( ( DoorStayOpen > 0.0 ) && ( DoorLeftOpenTimer < 0.0 ) )
|
||||
|| ( Vel > 5.0 ) ) {
|
||||
// close the door and set the timer to expired state (closing may happen sooner if vehicle starts moving)
|
||||
DoorLeft( false, range::local );
|
||||
}
|
||||
}
|
||||
if( true == DoorRightOpened ) {
|
||||
if( ( DoorRightOpenTimer < 0.0 )
|
||||
if( ( ( DoorStayOpen > 0.0 ) && ( DoorRightOpenTimer < 0.0 ) )
|
||||
|| ( Vel > 5.0 ) ) {
|
||||
// close the door and set the timer to expired state (closing may happen sooner if vehicle starts moving)
|
||||
DoorRight( false, range::local );
|
||||
@@ -7786,6 +7787,7 @@ void TMoverParameters::LoadFIZ_Brake( std::string const &line ) {
|
||||
}
|
||||
|
||||
extract_value( RapidMult, "RM", line, "1" );
|
||||
extract_value( RapidVel, "RV", line, "55" );
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -7859,10 +7861,11 @@ void TMoverParameters::LoadFIZ_Doors( std::string const &line ) {
|
||||
|
||||
extract_value( DoorOpenSpeed, "OpenSpeed", line, "" );
|
||||
extract_value( DoorCloseSpeed, "CloseSpeed", line, "" );
|
||||
extract_value( DoorCloseDelay, "DoorCloseDelay", line, "" );
|
||||
extract_value( DoorMaxShiftL, "DoorMaxShiftL", line, "" );
|
||||
extract_value( DoorMaxShiftR, "DoorMaxShiftR", line, "" );
|
||||
extract_value( DoorMaxPlugShift, "DoorMaxShiftPlug", line, "" );
|
||||
|
||||
DoorOpenMethod = 2; //obrót, default
|
||||
std::string openmethod; extract_value( openmethod, "DoorOpenMethod", line, "" );
|
||||
if( openmethod == "Shift" ) { DoorOpenMethod = 1; } //przesuw
|
||||
else if( openmethod == "Fold" ) { DoorOpenMethod = 3; } //3 submodele się obracają
|
||||
@@ -7874,11 +7877,11 @@ void TMoverParameters::LoadFIZ_Doors( std::string const &line ) {
|
||||
std::string doorblocked; extract_value( doorblocked, "DoorBlocked", line, "" );
|
||||
DoorBlocked = ( doorblocked == "Yes" );
|
||||
|
||||
extract_value( DoorMaxPlugShift, "DoorMaxShiftPlug", line, "" );
|
||||
extract_value( PlatformSpeed, "PlatformSpeed", line, "" );
|
||||
extract_value( PlatformMaxShift, "PlatformMaxSpeed", line, "" );
|
||||
extract_value( PlatformMaxShift, "PlatformMaxShift", line, "" );
|
||||
|
||||
extract_value( MirrorMaxShift, "MirrorMaxShift", line, "" );
|
||||
|
||||
PlatformOpenMethod = 2; // obrót, default
|
||||
std::string platformopenmethod; extract_value( platformopenmethod, "PlatformOpenMethod", line, "" );
|
||||
if( platformopenmethod == "Shift" ) { PlatformOpenMethod = 1; } // przesuw
|
||||
}
|
||||
@@ -8113,9 +8116,9 @@ void TMoverParameters::LoadFIZ_Cntrl( std::string const &line ) {
|
||||
else if( autorelay == "Yes" ) { AutoRelayType = 1; }
|
||||
else { AutoRelayType = 0; }
|
||||
|
||||
CoupledCtrl = ( extract_value( "CoupledCtrl", line ) == "Yes" );
|
||||
extract_value( CoupledCtrl, "CoupledCtrl", line, "" );
|
||||
|
||||
ScndS = ( extract_value( "ScndS", line ) == "Yes" ); // brak pozycji rownoleglej przy niskiej nastawie PSR
|
||||
extract_value( ScndS, "ScndS", line, "" ); // brak pozycji rownoleglej przy niskiej nastawie PSR
|
||||
|
||||
extract_value( InitialCtrlDelay, "IniCDelay", line, "" );
|
||||
extract_value( CtrlDelay, "SCDelay", line, "" );
|
||||
@@ -8207,8 +8210,8 @@ void TMoverParameters::LoadFIZ_Blending(std::string const &line) {
|
||||
extract_value(MED_Vmin, "MED_Vmin", line, "0");
|
||||
extract_value(MED_Vref, "MED_Vref", line, to_string(Vmax));
|
||||
extract_value(MED_amax, "MED_amax", line, "9.81");
|
||||
MED_EPVC = (extract_value("MED_EPVC", line).find("Yes") != std::string::npos);
|
||||
MED_Ncor = (extract_value("MED_Ncor", line).find("Yes") != std::string::npos);
|
||||
extract_value(MED_EPVC, "MED_EPVC", line, "");
|
||||
extract_value(MED_Ncor, "MED_Ncor", line, "");
|
||||
|
||||
}
|
||||
void TMoverParameters::LoadFIZ_Light( std::string const &line ) {
|
||||
@@ -8239,7 +8242,7 @@ void TMoverParameters::LoadFIZ_Security( std::string const &line ) {
|
||||
extract_value( SecuritySystem.AwareMinSpeed, "AwareMinSpeed", line, "" );
|
||||
extract_value( SecuritySystem.SoundSignalDelay, "SoundSignalDelay", line, "" );
|
||||
extract_value( SecuritySystem.EmergencyBrakeDelay, "EmergencyBrakeDelay", line, "" );
|
||||
SecuritySystem.RadioStop = ( extract_value( "RadioStop", line ).find( "Yes" ) != std::string::npos );
|
||||
extract_value( SecuritySystem.RadioStop, "RadioStop", line, "" );
|
||||
}
|
||||
|
||||
void TMoverParameters::LoadFIZ_Clima( std::string const &line ) {
|
||||
@@ -8318,7 +8321,6 @@ void TMoverParameters::LoadFIZ_Engine( std::string const &Input ) {
|
||||
// TODO: unify naming scheme and sort out which diesel engine params are used where and how
|
||||
extract_value( nmax, "nmax", Input, "" );
|
||||
nmax /= 60.0;
|
||||
// nmax = dizel_nmax; // not sure if this is needed, but just in case
|
||||
extract_value( dizel_nmax_cutoff, "nmax_cutoff", Input, "0.0" );
|
||||
dizel_nmax_cutoff /= 60.0;
|
||||
extract_value( dizel_AIM, "AIM", Input, "1.0" );
|
||||
@@ -8336,7 +8338,7 @@ void TMoverParameters::LoadFIZ_Engine( std::string const &Input ) {
|
||||
}
|
||||
|
||||
}
|
||||
hydro_TC = (extract_value("IsTC", Input) == "Yes");
|
||||
extract_value(hydro_TC, "IsTC", Input, "");
|
||||
if (true == hydro_TC) {
|
||||
extract_value(hydro_TC_TMMax, "TC_TMMax", Input, "");
|
||||
extract_value(hydro_TC_CouplingPoint, "TC_CP", Input, "");
|
||||
@@ -8351,7 +8353,7 @@ void TMoverParameters::LoadFIZ_Engine( std::string const &Input ) {
|
||||
extract_value(hydro_TC_LockupSpeed, "TC_LS", Input, "");
|
||||
extract_value(hydro_TC_UnlockSpeed, "TC_ULS", Input, "");
|
||||
|
||||
hydro_R = (extract_value("IsRetarder", Input) == "Yes");
|
||||
extract_value(hydro_R, "IsRetarder", Input, "");
|
||||
if (true == hydro_R) {
|
||||
extract_value(hydro_R_Placement, "R_Place", Input, "");
|
||||
extract_value(hydro_R_TorqueInIn, "R_TII", Input, "");
|
||||
@@ -8362,7 +8364,6 @@ void TMoverParameters::LoadFIZ_Engine( std::string const &Input ) {
|
||||
extract_value(hydro_R_MinVel, "R_MinVel", Input, "");
|
||||
}
|
||||
}
|
||||
extract_value( OilPump.pressure_minimum, "MinOilPressure", Input, "" );
|
||||
break;
|
||||
}
|
||||
case DieselElectric: { //youBy
|
||||
@@ -8383,7 +8384,6 @@ void TMoverParameters::LoadFIZ_Engine( std::string const &Input ) {
|
||||
ImaxHi = 2;
|
||||
ImaxLo = 1;
|
||||
}
|
||||
extract_value( OilPump.pressure_minimum, "OilMinPressure", Input, "" );
|
||||
break;
|
||||
}
|
||||
case ElectricInductionMotor: {
|
||||
@@ -8412,7 +8412,7 @@ void TMoverParameters::LoadFIZ_Engine( std::string const &Input ) {
|
||||
extract_value( eimc[ eimc_p_Imax ], "Imax", Input, "" );
|
||||
extract_value( eimc[ eimc_p_abed ], "abed", Input, "" );
|
||||
extract_value( eimc[ eimc_p_eped ], "edep", Input, "" );
|
||||
EIMCLogForce = ( extract_value( "eimclf", Input ) == "Yes" );
|
||||
extract_value( EIMCLogForce, "eimclf", Input, "" );
|
||||
|
||||
Flat = ( extract_value( "Flat", Input ) == "1" );
|
||||
|
||||
@@ -8423,29 +8423,36 @@ void TMoverParameters::LoadFIZ_Engine( std::string const &Input ) {
|
||||
}
|
||||
} // engine type
|
||||
|
||||
// engine cooling factore
|
||||
extract_value( dizel_heat.kw, "HeatKW", Input, "" );
|
||||
extract_value( dizel_heat.kv, "HeatKV", Input, "" );
|
||||
extract_value( dizel_heat.kfe, "HeatKFE", Input, "" );
|
||||
extract_value( dizel_heat.kfs, "HeatKFS", Input, "" );
|
||||
extract_value( dizel_heat.kfo, "HeatKFO", Input, "" );
|
||||
extract_value( dizel_heat.kfo2, "HeatKFO2", Input, "" );
|
||||
// engine cooling systems
|
||||
extract_value( dizel_heat.water.config.temp_min, "WaterMinTemperature", Input, "" );
|
||||
extract_value( dizel_heat.water.config.temp_max, "WaterMaxTemperature", Input, "" );
|
||||
extract_value( dizel_heat.water.config.temp_flow, "WaterFlowTemperature", Input, "" );
|
||||
extract_value( dizel_heat.water.config.temp_cooling, "WaterCoolingTemperature", Input, "" );
|
||||
extract_value( dizel_heat.water.config.shutters, "WaterShutters", Input, "" );
|
||||
extract_value( dizel_heat.auxiliary_water_circuit, "WaterAuxCircuit", Input, "" );
|
||||
extract_value( dizel_heat.water_aux.config.temp_min, "WaterAuxMinTemperature", Input, "" );
|
||||
extract_value( dizel_heat.water_aux.config.temp_max, "WaterAuxMaxTemperature", Input, "" );
|
||||
extract_value( dizel_heat.water_aux.config.temp_cooling, "WaterAuxCoolingTemperature", Input, "" );
|
||||
extract_value( dizel_heat.water_aux.config.shutters, "WaterAuxShutters", Input, "" );
|
||||
extract_value( dizel_heat.oil.config.temp_min, "OilMinTemperature", Input, "" );
|
||||
extract_value( dizel_heat.oil.config.temp_max, "OilMaxTemperature", Input, "" );
|
||||
// water heater
|
||||
extract_value( WaterHeater.config.temp_min, "HeaterMinTemperature", Input, "" );
|
||||
extract_value( WaterHeater.config.temp_max, "HeaterMaxTemperature", Input, "" );
|
||||
// NOTE: elements shared by both diesel engine variants; crude but, eh
|
||||
if( ( EngineType == DieselEngine )
|
||||
|| ( EngineType == DieselElectric ) ) {
|
||||
// oil pump
|
||||
extract_value( OilPump.pressure_minimum, "OilMinPressure", Input, "" );
|
||||
extract_value( OilPump.pressure_maximum, "OilMaxPressure", Input, "" );
|
||||
// engine cooling factore
|
||||
extract_value( dizel_heat.kw, "HeatKW", Input, "" );
|
||||
extract_value( dizel_heat.kv, "HeatKV", Input, "" );
|
||||
extract_value( dizel_heat.kfe, "HeatKFE", Input, "" );
|
||||
extract_value( dizel_heat.kfs, "HeatKFS", Input, "" );
|
||||
extract_value( dizel_heat.kfo, "HeatKFO", Input, "" );
|
||||
extract_value( dizel_heat.kfo2, "HeatKFO2", Input, "" );
|
||||
// engine cooling systems
|
||||
extract_value( dizel_heat.water.config.temp_min, "WaterMinTemperature", Input, "" );
|
||||
extract_value( dizel_heat.water.config.temp_max, "WaterMaxTemperature", Input, "" );
|
||||
extract_value( dizel_heat.water.config.temp_flow, "WaterFlowTemperature", Input, "" );
|
||||
extract_value( dizel_heat.water.config.temp_cooling, "WaterCoolingTemperature", Input, "" );
|
||||
extract_value( dizel_heat.water.config.shutters, "WaterShutters", Input, "" );
|
||||
extract_value( dizel_heat.auxiliary_water_circuit, "WaterAuxCircuit", Input, "" );
|
||||
extract_value( dizel_heat.water_aux.config.temp_min, "WaterAuxMinTemperature", Input, "" );
|
||||
extract_value( dizel_heat.water_aux.config.temp_max, "WaterAuxMaxTemperature", Input, "" );
|
||||
extract_value( dizel_heat.water_aux.config.temp_cooling, "WaterAuxCoolingTemperature", Input, "" );
|
||||
extract_value( dizel_heat.water_aux.config.shutters, "WaterAuxShutters", Input, "" );
|
||||
extract_value( dizel_heat.oil.config.temp_min, "OilMinTemperature", Input, "" );
|
||||
extract_value( dizel_heat.oil.config.temp_max, "OilMaxTemperature", Input, "" );
|
||||
// water heater
|
||||
extract_value( WaterHeater.config.temp_min, "HeaterMinTemperature", Input, "" );
|
||||
extract_value( WaterHeater.config.temp_max, "HeaterMaxTemperature", Input, "" );
|
||||
}
|
||||
}
|
||||
|
||||
void TMoverParameters::LoadFIZ_Switches( std::string const &Input ) {
|
||||
@@ -8771,6 +8778,7 @@ bool TMoverParameters::CheckLocomotiveParameters(bool ReadyFlag, int Dir)
|
||||
WriteLog( "XBT EStED" );
|
||||
Hamulec = std::make_shared<TEStED>( MaxBrakePress[ 3 ], BrakeCylRadius, BrakeCylDist, BrakeVVolume, BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA );
|
||||
Hamulec->SetRM( RapidMult );
|
||||
Hamulec->SetRV( RapidVel );
|
||||
if( MBPM < 2 ) {
|
||||
//jesli przystawka wazaca
|
||||
Hamulec->SetLP( 0, MaxBrakePress[ 3 ], 0 );
|
||||
@@ -9298,9 +9306,9 @@ bool TMoverParameters::RunCommand( std::string Command, double CValue1, double C
|
||||
}
|
||||
else if (Command == "DoorOpen") /*NBMX*/
|
||||
{ // Ra: uwzględnić trzeba jeszcze zgodność sprzęgów
|
||||
if( ( DoorCloseCtrl == control::conductor )
|
||||
|| ( DoorCloseCtrl == control::driver )
|
||||
|| ( DoorCloseCtrl == control::mixed ) ) {
|
||||
if( ( DoorOpenCtrl == control::conductor )
|
||||
|| ( DoorOpenCtrl == control::driver )
|
||||
|| ( DoorOpenCtrl == control::mixed ) ) {
|
||||
// ignore remote command if the door is only operated locally
|
||||
if( CValue2 > 0 ) {
|
||||
// normalne ustawienie pojazdu
|
||||
|
||||
@@ -1514,7 +1514,7 @@ double TEStED::GetPF( double const PP, double const dt, double const Vel )
|
||||
Miedzypoj->Flow(dv * dt * 0.15);
|
||||
|
||||
RapidTemp =
|
||||
RapidTemp + (RM * int((Vel > 55) && (BrakeDelayFlag == bdelay_R)) - RapidTemp) * dt / 2;
|
||||
RapidTemp + (RM * int((Vel > RV) && (BrakeDelayFlag == bdelay_R)) - RapidTemp) * dt / 2;
|
||||
temp = Max0R(1 - RapidTemp, 0.001);
|
||||
// if EDFlag then temp:=1000;
|
||||
// temp:=temp/(1-);
|
||||
@@ -1636,6 +1636,11 @@ void TEStED::SetLP( double const TM, double const LM, double const TBP )
|
||||
TareBP = TBP;
|
||||
}
|
||||
|
||||
void TEStED::SetRV(double const RVR)
|
||||
{
|
||||
RV = RVR;
|
||||
}
|
||||
|
||||
//---DAKO CV1---
|
||||
|
||||
void TCV1::CheckState( double const BCP, double &dV1 )
|
||||
|
||||
@@ -204,6 +204,7 @@ class TBrake {
|
||||
void Releaser( int const state ); //odluzniacz
|
||||
virtual void SetEPS( double const nEPS ); //hamulec EP
|
||||
virtual void SetRM( double const RMR ) {}; //ustalenie przelozenia rapida
|
||||
virtual void SetRV( double const RVR) {}; //ustalenie przelozenia rapida
|
||||
virtual void SetLP(double const TM, double const LM, double const TBP) {}; //parametry przystawki wazacej
|
||||
virtual void SetLBP(double const P) {}; //cisnienie z hamulca pomocniczego
|
||||
virtual void PLC(double const mass) {}; //wspolczynnik cisnienia przystawki wazacej
|
||||
@@ -333,6 +334,7 @@ class TLSt : public TESt4R {
|
||||
protected:
|
||||
double LBP = 0.0; //cisnienie hamulca pomocniczego
|
||||
double RM = 0.0; //przelozenie rapida
|
||||
double RV = 0.0;
|
||||
double EDFlag = 0.0; //luzowanie hamulca z powodu zalaczonego ED
|
||||
|
||||
public:
|
||||
@@ -368,6 +370,7 @@ class TEStED : public TLSt { //zawor z EP09 - Est4 z oddzielnym przekladnikiem,
|
||||
double GetEDBCP()/*override*/; //cisnienie tylko z hamulca zasadniczego, uzywane do hamulca ED
|
||||
void PLC(double const mass); //wspolczynnik cisnienia przystawki wazacej
|
||||
void SetLP( double const TM, double const LM, double const TBP ); //parametry przystawki wazacej
|
||||
void SetRV(double const RVR); //ustalenie predkosci przelaczenia rapida
|
||||
|
||||
inline TEStED(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) :
|
||||
TLSt( i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
|
||||
|
||||
Reference in New Issue
Block a user