control for overload relays, wheelspin brakes and sander, horns, radio, pantograph compressor. added basic air leaks for braking system

This commit is contained in:
tmj-fstate
2017-04-22 15:48:02 +02:00
parent 62520bd4e8
commit c43ac777f4
9 changed files with 723 additions and 197 deletions

View File

@@ -87,6 +87,10 @@ bool TGauge::Load(cParser &Parser, TModel3d *md1, TModel3d *md2, double mul)
>> val5;
val3 *= mul;
TSubModel *sm = md1->GetFromName( str1.c_str() );
if( val3 == 0.0 ) {
ErrorLog( "Scale of 0.0 defined for sub-model \"" + str1 + "\" in 3d model \"" + md1->NameGet() + "\". Forcing scale of 1.0 to prevent division by 0" );
val3 = 1.0;
}
if (sm) // jeśli nie znaleziony
md2 = NULL; // informacja, że znaleziony
else if (md2) // a jest podany drugi model (np. zewnętrzny)

View File

@@ -21,7 +21,7 @@ char endstring[10] = "\n";
std::string filename_date() {
::SYSTEMTIME st;
::GetSystemTime( &st );
::GetLocalTime( &st );
char buffer[ 256 ];
sprintf( buffer,
"%d%02d%02d_%02d%02d",

View File

@@ -2843,6 +2843,9 @@ void TMoverParameters::UpdateBrakePressure(double dt)
// *************************************************************************************************
void TMoverParameters::CompressorCheck(double dt)
{
// TODO: expose leak rate as a parameter to the .fiz file
CompressedVolume = std::max( 0.0, CompressedVolume - dt * 0.001 ); // nieszczelności: 0.001=1l/s
// if (CompressorSpeed>0.0) then //ten warunek został sprawdzony przy wywołaniu funkcji
if (VeselVolume > 0)
{
@@ -2965,6 +2968,9 @@ void TMoverParameters::CompressorCheck(double dt)
// *************************************************************************************************
void TMoverParameters::UpdatePipePressure(double dt)
{
// TODO: expose leak rate as a parameter to the .fiz file
PipePress = std::max( 0.0, PipePress - dt * 0.001 ); // nieszczelności: 0.001=1l/s
const double LBDelay = 100;
const double kL = 0.5;
//double dV;
@@ -3139,7 +3145,7 @@ void TMoverParameters::UpdatePipePressure(double dt)
// temp = (Handle as TFVel6).GetCP
temp = Handle->GetCP();
else
temp = 0;
temp = 0.0;
Hamulec->SetEPS(temp);
SendCtrlToNext("Brake", temp,
CabNo); // Ra 2014-11: na tym się wysypuje, ale nie wiem, w jakich warunkach
@@ -3148,9 +3154,9 @@ void TMoverParameters::UpdatePipePressure(double dt)
Pipe->Act();
PipePress = Pipe->P();
if ((BrakeStatus & 128) == 128) // jesli hamulec wyłączony
temp = 0; // odetnij
temp = 0.0; // odetnij
else
temp = 1; // połącz
temp = 1.0; // połącz
Pipe->Flow(temp * Hamulec->GetPF(temp * PipePress, dt, Vel) + GetDVc(dt));
if (ASBType == 128)
@@ -3162,17 +3168,17 @@ void TMoverParameters::UpdatePipePressure(double dt)
Pipe->Act();
PipePress = Pipe->P();
dpMainValve = dpMainValve / (100 * dt); // normalizacja po czasie do syczenia;
dpMainValve = dpMainValve / (100.0 * dt); // normalizacja po czasie do syczenia;
if (PipePress < -1)
if (PipePress < -1.0)
{
PipePress = -1;
Pipe->CreatePress(-1);
PipePress = -1.0;
Pipe->CreatePress(-1.0);
Pipe->Act();
}
if (CompressedVolume < 0)
CompressedVolume = 0;
if (CompressedVolume < 0.0)
CompressedVolume = 0.0;
}
// *************************************************************************************************
@@ -3181,6 +3187,9 @@ void TMoverParameters::UpdatePipePressure(double dt)
// *************************************************************************************************
void TMoverParameters::UpdateScndPipePressure(double dt)
{
// TODO: expose leak rate as a parameter to the .fiz file
ScndPipePress = std::max( 0.0, ScndPipePress - dt * 0.001 ); // nieszczelności: 0.001=0.1l/s
const double Spz = 0.5067;
TMoverParameters *c;
double dv1, dv2, dV;

748
Train.cpp

File diff suppressed because it is too large Load Diff

17
Train.h
View File

@@ -120,6 +120,7 @@ class TTrain
static void OnCommand_secondcontrollerdecrease( TTrain *Train, command_data const &Command );
static void OnCommand_secondcontrollerdecreasefast( TTrain *Train, command_data const &Command );
static void OnCommand_notchingrelaytoggle( TTrain *Train, command_data const &Command );
static void OnCommand_mucurrentindicatorsourcetoggle( TTrain *Train, command_data const &Command );
static void OnCommand_independentbrakeincrease( TTrain *Train, command_data const &Command );
static void OnCommand_independentbrakeincreasefast( TTrain *Train, command_data const &Command );
static void OnCommand_independentbrakedecrease( TTrain *Train, command_data const &Command );
@@ -133,21 +134,28 @@ class TTrain
static void OnCommand_trainbrakeservice( TTrain *Train, command_data const &Command );
static void OnCommand_trainbrakefullservice( TTrain *Train, command_data const &Command );
static void OnCommand_trainbrakeemergency( TTrain *Train, command_data const &Command );
static void OnCommand_wheelspinbrakeactivate( TTrain *Train, command_data const &Command );
static void OnCommand_sandboxactivate( TTrain *Train, command_data const &Command );
static void OnCommand_epbrakecontroltoggle( TTrain *Train, command_data const &Command );
static void OnCommand_brakeactingspeedincrease( TTrain *Train, command_data const &Command );
static void OnCommand_brakeactingspeeddecrease( TTrain *Train, command_data const &Command );
static void OnCommand_mubrakingindicatortoggle( TTrain *Train, command_data const &Command );
static void OnCommand_reverserincrease( TTrain *Train, command_data const &Command );
static void OnCommand_reverserdecrease( TTrain *Train, command_data const &Command );
static void OnCommand_alerteracknowledge( TTrain *Train, command_data const &Command );
static void OnCommand_batterytoggle( TTrain *Train, command_data const &Command );
static void OnCommand_pantographcompressorvalvetoggle( TTrain *Train, command_data const &Command );
static void OnCommand_pantographcompressoractivate( TTrain *Train, command_data const &Command );
static void OnCommand_pantographtogglefront( TTrain *Train, command_data const &Command );
static void OnCommand_pantographtogglerear( TTrain *Train, command_data const &Command );
static void OnCommand_pantographlowerall( TTrain *Train, command_data const &Command );
static void OnCommand_linebreakertoggle( TTrain *Train, command_data const &Command );
static void OnCommand_convertertoggle( TTrain *Train, command_data const &Command );
static void OnCommand_converteroverloadrelayreset( TTrain *Train, command_data const &Command );
static void OnCommand_compressortoggle( TTrain *Train, command_data const &Command );
static void OnCommand_motorconnectorsopen( TTrain *Train, command_data const &Command );
static void OnCommand_motoroverloadrelaythresholdtoggle( TTrain *Train, command_data const &Command );
static void OnCommand_motoroverloadrelayreset( TTrain *Train, command_data const &Command );
static void OnCommand_heatingtoggle( TTrain *Train, command_data const &Command );
static void OnCommand_headlighttoggleleft( TTrain *Train, command_data const &Command );
static void OnCommand_headlighttoggleright( TTrain *Train, command_data const &Command );
@@ -159,13 +167,17 @@ class TTrain
static void OnCommand_headlighttogglerearupper( TTrain *Train, command_data const &Command );
static void OnCommand_redmarkertogglerearleft( TTrain *Train, command_data const &Command );
static void OnCommand_redmarkertogglerearright( TTrain *Train, command_data const &Command );
static void OnCommand_headlightsdimtoggle( TTrain *Train, command_data const &Command );
static void OnCommand_interiorlighttoggle( TTrain *Train, command_data const &Command );
static void OnCommand_interiorlightdimtoggle( TTrain *Train, command_data const &Command );
static void OnCommand_instrumentlighttoggle( TTrain *Train, command_data const &Command );
static void OnCommand_doorlocktoggle( TTrain *Train, command_data const &Command );
static void OnCommand_doortoggleleft( TTrain *Train, command_data const &Command );
static void OnCommand_doortoggleright( TTrain *Train, command_data const &Command );
static void OnCommand_departureannounce( TTrain *Train, command_data const &Command );
static void OnCommand_doorlocktoggle( TTrain *Train, command_data const &Command );
static void OnCommand_hornlowactivate( TTrain *Train, command_data const &Command );
static void OnCommand_hornhighactivate( TTrain *Train, command_data const &Command );
static void OnCommand_radiotoggle( TTrain *Train, command_data const &Command );
// members
TDynamicObject *DynamicObject; // przestawia zmiana pojazdu [F5]
@@ -222,8 +234,7 @@ public: // reszta może by?publiczna
TGauge ggSandButton; // guzik piasecznicy
TGauge ggAntiSlipButton;
TGauge ggFuseButton;
TGauge ggConverterFuseButton; // hunter-261211: przycisk odblokowania
// nadmiarowego przetwornic i ogrzewania
TGauge ggConverterFuseButton; // hunter-261211: przycisk odblokowania nadmiarowego przetwornic i ogrzewania
TGauge ggStLinOffButton;
TGauge ggRadioButton;
TGauge ggUpperLightButton;

View File

@@ -27,6 +27,7 @@ commanddescription_sequence Commands_descriptions = {
{ "secondcontrollerincreasefast", command_target::vehicle },
{ "secondcontrollerdecrease", command_target::vehicle },
{ "secondcontrollerdecreasefast", command_target::vehicle },
{ "mucurrentindicatorsourcetoggle", command_target::vehicle },
{ "independentbrakeincrease", command_target::vehicle },
{ "independentbrakeincreasefast", command_target::vehicle },
{ "independentbrakedecrease", command_target::vehicle },
@@ -40,30 +41,26 @@ commanddescription_sequence Commands_descriptions = {
{ "trainbrakeservice", command_target::vehicle },
{ "trainbrakefullservice", command_target::vehicle },
{ "trainbrakeemergency", command_target::vehicle },
/*
const int k_AntiSlipping = 21;
const int k_Sand = 22;
*/
{ "wheelspinbrakeactivate", command_target::vehicle },
{ "sandboxactivate", command_target::vehicle },
{ "reverserincrease", command_target::vehicle },
{ "reverserdecrease", command_target::vehicle },
{ "linebreakertoggle", command_target::vehicle },
/*
const int k_Fuse = 26;
*/
{ "convertertoggle", command_target::vehicle },
{ "converteroverloadrelayreset", command_target::vehicle },
{ "compressortoggle", command_target::vehicle },
{ "motoroverloadrelaythresholdtoggle", command_target::vehicle },
{ "motoroverloadrelayreset", command_target::vehicle },
{ "notchingrelaytoggle", command_target::vehicle },
{ "epbrakecontroltoggle", command_target::vehicle },
{ "brakeactingspeedincrease", command_target::vehicle },
{ "brakeactingspeeddecrease", command_target::vehicle },
/*
const int k_BrakeProfile = 31;
*/
{ "mubrakingindicatortoggle", command_target::vehicle },
{ "alerteracknowledge", command_target::vehicle },
{ "hornlowactivate", command_target::vehicle },
{ "hornhighctivate", command_target::vehicle },
{ "radiotoggle", command_target::vehicle },
/*
const int k_Horn = 33;
const int k_Horn2 = 34;
const int k_FailedEngineCutOff = 35;
*/
{ "viewturn", command_target::entity },
@@ -93,6 +90,8 @@ const int k_ProgramHelp = 48;
{ "doortoggleright", command_target::vehicle },
{ "departureannounce", command_target::vehicle },
{ "doorlocktoggle", command_target::vehicle },
{ "pantographcompressorvalvetoggle", command_target::vehicle },
{ "pantographcompressoractivate", command_target::vehicle },
{ "pantographtogglefront", command_target::vehicle },
{ "pantographtogglerear", command_target::vehicle },
{ "pantographlowerall", command_target::vehicle },
@@ -110,13 +109,8 @@ const int k_ProgramHelp = 48;
{ "headlighttogglerearupper", command_target::vehicle },
{ "redmarkertogglerearleft", command_target::vehicle },
{ "redmarkertogglerearright", command_target::vehicle },
/*
const int k_SmallCompressor = 63;
*/
{ "headlightsdimtoggle", command_target::vehicle },
{ "motorconnectorsopen", command_target::vehicle },
/*
const int k_CurrentNext = 65;
*/
{ "interiorlighttoggle", command_target::vehicle },
{ "interiorlightdimtoggle", command_target::vehicle },
{ "instrumentlighttoggle", command_target::vehicle },
@@ -131,7 +125,6 @@ const int k_Active = 71;
{ "batterytoggle", command_target::vehicle }
/*
const int k_WalkMode = 73;
int const k_DimHeadlights = 74;
*/
};
@@ -192,7 +185,23 @@ command_relay::post( user_command const Command, std::uint64_t const Param1, std
if( Action != GLFW_RELEASE ) {
// key was pressed or is still held
if( false == command.name.empty() ) {
WriteLog( "Command issued: " + command.name );
if( false == (
( Command == user_command::moveleft )
|| ( Command == user_command::moveleftfast )
|| ( Command == user_command::moveright )
|| ( Command == user_command::moverightfast )
|| ( Command == user_command::moveforward )
|| ( Command == user_command::moveforwardfast )
|| ( Command == user_command::moveback )
|| ( Command == user_command::movebackfast )
|| ( Command == user_command::moveup )
|| ( Command == user_command::moveupfast )
|| ( Command == user_command::movedown )
|| ( Command == user_command::movedownfast )
|| ( Command == user_command::movevector )
|| ( Command == user_command::viewturn ) ) ) {
WriteLog( "Command issued: " + command.name );
}
}
}
/*

View File

@@ -22,6 +22,7 @@ enum class user_command {
secondcontrollerincreasefast,
secondcontrollerdecrease,
secondcontrollerdecreasefast,
mucurrentindicatorsourcetoggle,
independentbrakeincrease,
independentbrakeincreasefast,
independentbrakedecrease,
@@ -35,27 +36,26 @@ enum class user_command {
trainbrakeservice,
trainbrakefullservice,
trainbrakeemergency,
/*
const int k_AntiSlipping = 21;
const int k_Sand = 22;
*/
wheelspinbrakeactivate,
sandboxactivate,
reverserincrease,
reverserdecrease,
linebreakertoggle,
/*
const int k_Fuse = 26;
*/
convertertoggle,
converteroverloadrelayreset,
compressortoggle,
motoroverloadrelaythresholdtoggle,
motoroverloadrelayreset,
notchingrelaytoggle,
epbrakecontroltoggle,
brakeactingspeedincrease,
brakeactingspeeddecrease,
mubrakingindicatortoggle,
alerteracknowledge,
hornlowactivate,
hornhighactivate,
radiotoggle,
/*
const int k_Horn = 33;
const int k_Horn2 = 34;
const int k_FailedEngineCutOff = 35;
*/
viewturn,
@@ -85,6 +85,8 @@ const int k_ProgramHelp = 48;
doortoggleright,
departureannounce,
doorlocktoggle,
pantographcompressorvalvetoggle,
pantographcompressoractivate,
pantographtogglefront,
pantographtogglerear,
pantographlowerall,
@@ -102,13 +104,8 @@ const int k_ProgramHelp = 48;
headlighttogglerearupper,
redmarkertogglerearleft,
redmarkertogglerearright,
/*
const int k_SmallCompressor = 63;
*/
headlightsdimtoggle,
motorconnectorsopen,
/*
const int k_CurrentNext = 65;
*/
interiorlighttoggle,
interiorlightdimtoggle,
instrumentlighttoggle,
@@ -123,7 +120,6 @@ const int k_Active = 71;
batterytoggle
/*
const int k_WalkMode = 73;
int const k_DimHeadlights = 74;
*/
};

View File

@@ -108,6 +108,8 @@ keyboard_input::default_bindings() {
{ GLFW_KEY_KP_MULTIPLY },
// secondcontrollerdecreasefast
{ GLFW_KEY_KP_MULTIPLY | keymodifier::shift },
// mucurrentindicatorsourcetoggle
{ GLFW_KEY_Z | keymodifier::shift },
// independentbrakeincrease
{ GLFW_KEY_KP_1 },
// independentbrakeincreasefast
@@ -134,25 +136,26 @@ keyboard_input::default_bindings() {
{ GLFW_KEY_KP_2 },
// trainbrakeemergency
{ GLFW_KEY_KP_0 },
/*
const int k_AntiSlipping = 21;
const int k_Sand = 22;
*/
// wheelspinbrakeactivate,
{ GLFW_KEY_KP_ENTER },
// sandboxactivate,
{ GLFW_KEY_S },
// reverserincrease
{ GLFW_KEY_D },
// reverserdecrease
{ GLFW_KEY_R },
// linebreakertoggle
{ GLFW_KEY_M },
/*
const int k_Fuse = 26;
*/
// convertertoggle
{ GLFW_KEY_X },
// converteroverloadrelayreset
{ GLFW_KEY_N | keymodifier::control },
// compressortoggle
{ GLFW_KEY_C },
// motoroverloadrelaythresholdtoggle
{ GLFW_KEY_F },
// motoroverloadrelayreset
{ GLFW_KEY_N },
// notchingrelaytoggle
{ GLFW_KEY_G },
// epbrakecontroltoggle
@@ -161,14 +164,17 @@ const int k_Fuse = 26;
{ GLFW_KEY_B | keymodifier::shift },
// brakeactingspeeddecrease
{ GLFW_KEY_B },
/*
const int k_BrakeProfile = 31;
*/
// brakingindicatortoggle
{ GLFW_KEY_L | keymodifier::shift },
// alerteracknowledge
{ GLFW_KEY_SPACE },
// hornlowactivate
{ GLFW_KEY_A },
// hornhighactivate
{ GLFW_KEY_A | keymodifier::shift },
// radiotoggle
{ GLFW_KEY_R | keymodifier::control },
/*
const int k_Horn = 33;
const int k_Horn2 = 34;
const int k_FailedEngineCutOff = 35;
*/
// viewturn
@@ -216,6 +222,10 @@ const int k_ProgramHelp = 48;
{ GLFW_KEY_SLASH },
// doorlocktoggle
{ GLFW_KEY_S | keymodifier::shift },
// pantographcompressorvalvetoggle
{ GLFW_KEY_V | keymodifier::control },
// pantographcompressoractivate
{ GLFW_KEY_V | keymodifier::shift },
// pantographtogglefront
{ GLFW_KEY_P },
// pantographtogglerear
@@ -247,14 +257,10 @@ const int k_ProgramHelp = 48;
{ GLFW_KEY_Y | keymodifier::control | keymodifier::shift },
// redmarkertogglerearright
{ GLFW_KEY_I | keymodifier::control | keymodifier::shift },
/*
const int k_SmallCompressor = 63;
*/
// headlightsdimtoggle
{ GLFW_KEY_L | keymodifier::control },
// motorconnectorsopen
{ GLFW_KEY_L },
/*
const int k_CurrentNext = 65;
*/
// interiorlighttoggle
{ GLFW_KEY_APOSTROPHE },
// interiorlightdimtoggle
@@ -273,7 +279,6 @@ const int k_Active = 71;
{ GLFW_KEY_J }
/*
const int k_WalkMode = 73;
int const k_DimHeadlights = 74;
*/
};

View File

@@ -18,7 +18,7 @@ LONG CALLBACK unhandled_handler(::EXCEPTION_POINTERS* e)
{
auto nameEnd = name + ::GetModuleFileNameA(::GetModuleHandleA(0), name, MAX_PATH);
::SYSTEMTIME t;
::GetSystemTime(&t);
::GetLocalTime(&t);
wsprintfA(nameEnd - strlen(".exe"),
"_crashdump_%4d%02d%02d_%02d%02d%02d.dmp",
t.wYear, t.wMonth, t.wDay, t.wHour, t.wMinute, t.wSecond);