mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 13:59:19 +02:00
Merge branch 'tmj-dev' into milek-dev
This commit is contained in:
@@ -140,7 +140,7 @@ static int const ctrain_depot = 128; //nie rozłączalny podczas zwykłyc
|
||||
// vehicle sides; exclusive
|
||||
enum end {
|
||||
front = 0,
|
||||
rear
|
||||
rear = 1
|
||||
};
|
||||
|
||||
enum side {
|
||||
@@ -369,7 +369,7 @@ enum class TBrakeSystem { Individual, Pneumatic, ElectroPneumatic };
|
||||
/*podtypy hamulcow zespolonych*/
|
||||
enum class TBrakeSubSystem { ss_None, ss_W, ss_K, ss_KK, ss_Hik, ss_ESt, ss_KE, ss_LSt, ss_MT, ss_Dako };
|
||||
enum class TBrakeValve { NoValve, W, W_Lu_VI, W_Lu_L, W_Lu_XR, K, Kg, Kp, Kss, Kkg, Kkp, Kks, Hikg1, Hikss, Hikp1, KE, SW, EStED, NESt3, ESt3, LSt, ESt4, ESt3AL2, EP1, EP2, M483, CV1_L_TR, CV1, CV1_R, Other };
|
||||
enum class TBrakeHandle { NoHandle, West, FV4a, M394, M254, FVel1, FVel6, D2, Knorr, FD1, BS2, testH, St113, MHZ_P, MHZ_T, MHZ_EN57, MHZ_K5P, MHZ_K8P };
|
||||
enum class TBrakeHandle { NoHandle, West, FV4a, M394, M254, FVE408, FVel6, D2, Knorr, FD1, BS2, testH, St113, MHZ_P, MHZ_T, MHZ_EN57, MHZ_K5P, MHZ_K8P };
|
||||
/*typy hamulcow indywidualnych*/
|
||||
enum class TLocalBrake { NoBrake, ManualBrake, PneumaticBrake, HydraulicBrake };
|
||||
/*dla osob/towar: opoznienie hamowania/odhamowania*/
|
||||
@@ -609,18 +609,16 @@ struct power_coupling {
|
||||
struct TCoupling {
|
||||
/*parametry*/
|
||||
double SpringKB = 1.0; /*stala sprezystosci zderzaka/sprzegu, %tlumiennosci */
|
||||
double SpringKC = 1.0;
|
||||
double beta = 0.0;
|
||||
double DmaxB = 0.1; /*tolerancja scisku/rozciagania, sila rozerwania*/
|
||||
double FmaxB = 1000.0;
|
||||
double SpringKC = 1.0;
|
||||
double DmaxC = 0.1;
|
||||
double FmaxC = 1000.0;
|
||||
TCouplerType CouplerType = TCouplerType::NoCoupler; /*typ sprzegu*/
|
||||
/*zmienne*/
|
||||
double beta = 0.0;
|
||||
TCouplerType CouplerType = TCouplerType::NoCoupler; /*typ sprzegu*/
|
||||
int AllowedFlag = 3; //Ra: maska dostępnych
|
||||
/*zmienne*/
|
||||
int CouplingFlag = 0; /*0 - wirtualnie, 1 - sprzegi, 2 - pneumatycznie, 4 - sterowanie, 8 - kabel mocy*/
|
||||
int AllowedFlag = 3; //Ra: znaczenie jak wyżej, maska dostępnych
|
||||
bool Render = false; /*ABu: czy rysowac jak zaczepiony sprzeg*/
|
||||
double CoupleDist = 0.0; /*ABu: optymalizacja - liczenie odleglosci raz na klatkę, bez iteracji*/
|
||||
class TMoverParameters *Connected = nullptr; /*co jest podlaczone*/
|
||||
int ConnectedNr = 0; //Ra: od której strony podłączony do (Connected): 0=przód, 1=tył
|
||||
double CForce = 0.0; /*sila z jaka dzialal*/
|
||||
@@ -628,16 +626,26 @@ struct TCoupling {
|
||||
bool CheckCollision = false; /*czy sprawdzac sile czy pedy*/
|
||||
|
||||
power_coupling power_high;
|
||||
power_coupling power_low; // TODO: implement this
|
||||
// power_coupling power_low; // TODO: implement this
|
||||
|
||||
int sounds { 0 }; // sounds emitted by the coupling devices
|
||||
bool Render = false; /*ABu: czy rysowac jak zaczepiony sprzeg*/
|
||||
};
|
||||
|
||||
class TDynamicObject;
|
||||
struct neighbour_data {
|
||||
TDynamicObject *vehicle { nullptr }; // detected obstacle
|
||||
int vehicle_end { -1 }; // facing end of the obstacle
|
||||
float distance { 10000.f }; // distance to the obstacle // NOTE: legacy value. TBD, TODO: use standard -1 instead?
|
||||
};
|
||||
|
||||
|
||||
|
||||
class TMoverParameters
|
||||
{ // Ra: wrapper na kod pascalowy, przejmujący jego funkcje Q: 20160824 - juz nie wrapper a klasa bazowa :)
|
||||
private:
|
||||
// types
|
||||
|
||||
/* TODO: implement
|
||||
// communication cable, exchanging control signals with adjacent vehicle
|
||||
struct jumper_cable {
|
||||
// types
|
||||
@@ -651,7 +659,7 @@ private:
|
||||
// integers
|
||||
// std::array<int, 1> values {};
|
||||
};
|
||||
|
||||
*/
|
||||
// basic approximation of a generic device
|
||||
// TBD: inheritance or composition?
|
||||
struct basic_device {
|
||||
@@ -716,6 +724,8 @@ private:
|
||||
bool is_closing { false }; // the door is currently closing
|
||||
bool is_opening { false }; // the door is currently opening
|
||||
bool is_open { false }; // the door is fully open
|
||||
bool step_folding { false }; // the doorstep is currently closing
|
||||
bool step_unfolding { false }; // the doorstep is currently opening
|
||||
};
|
||||
|
||||
struct door_data {
|
||||
@@ -741,6 +751,7 @@ private:
|
||||
std::vector<int> permit_presets; // permit presets selectable with preset switch
|
||||
// ld inputs
|
||||
bool lock_enabled { true };
|
||||
bool step_enabled { true };
|
||||
// internal data
|
||||
int permit_preset { -1 }; // curent position of preset selection switch
|
||||
// vehicle parts
|
||||
@@ -818,14 +829,12 @@ private:
|
||||
public:
|
||||
|
||||
double dMoveLen = 0.0;
|
||||
std::string filename;
|
||||
/*---opis lokomotywy, wagonu itp*/
|
||||
/*--opis serii--*/
|
||||
int CategoryFlag = 1; /*1 - pociag, 2 - samochod, 4 - statek, 8 - samolot*/
|
||||
/*--sekcja stalych typowych parametrow*/
|
||||
std::string TypeName; /*nazwa serii/typu*/
|
||||
//TrainType: string; {typ: EZT/elektrowoz - Winger 040304}
|
||||
int TrainType = 0; /*Ra: powinno być szybciej niż string*/
|
||||
int TrainType = 0; /*typ: EZT/elektrowoz - Winger 040304 Ra: powinno być szybciej niż string*/
|
||||
TEngineType EngineType = TEngineType::None; /*typ napedu*/
|
||||
TPowerParameters EnginePowerSource; /*zrodlo mocy dla silnikow*/
|
||||
TPowerParameters SystemPowerSource; /*zrodlo mocy dla systemow sterowania/przetwornic/sprezarek*/
|
||||
@@ -958,16 +967,23 @@ public:
|
||||
int DynamicBrakeType = 0; /*patrz dbrake_**/
|
||||
int DynamicBrakeAmpmeters = 2; /*liczba amperomierzy przy hamowaniu ED*/
|
||||
double DynamicBrakeRes = 5.8; /*rezystancja oporników przy hamowaniu ED*/
|
||||
double TUHEX_Sum = 750; /*nastawa sterownika hamowania ED*/
|
||||
double DynamicBrakeRes1 = 5.8; /*rezystancja oporników przy hamowaniu ED - 1 tryb*/
|
||||
double DynamicBrakeRes2 = 5.8; /*rezystancja oporników przy hamowaniu ED - 2 tryb*/
|
||||
double TUHEX_Sum = 750; /*nastawa sterownika hamowania ED - aktualna*/
|
||||
double TUHEX_Diff = 10; /*histereza działania sterownika hamowania ED*/
|
||||
double TUHEX_MinIw = 60; /*minimalny prąd wzbudzenia przy hamowaniu ED - wynika z chk silnika*/
|
||||
double TUHEX_MaxIw = 400; /*maksymalny prąd wzbudzenia przy hamowaniu ED - ograniczenie max siły*/
|
||||
|
||||
double TUHEX_Sum1 = 750; /*nastawa1 sterownika hamowania ED*/
|
||||
double TUHEX_Sum2 = 750; /*nastawa2 sterownika hamowania ED*/
|
||||
double TUHEX_Sum3 = 750; /*nastawa3 sterownika hamowania ED*/
|
||||
int TUHEX_Stages = 0; /*liczba stopni hamowania ED*/
|
||||
// TODO: wrap resistor fans variables and state into a device
|
||||
int RVentType = 0; /*0 - brak, 1 - jest, 2 - automatycznie wlaczany*/
|
||||
double RVentnmax = 1.0; /*maks. obroty wentylatorow oporow rozruchowych*/
|
||||
double RVentCutOff = 0.0; /*rezystancja wylaczania wentylatorow dla RVentType=2*/
|
||||
double RVentSpeed { 0.5 }; //rozpedzanie sie wentylatora obr/s^2}
|
||||
double RVentMinI { 50.0 }; //przy jakim pradzie sie wylaczaja}
|
||||
bool RVentForceOn { false }; // forced activation switch
|
||||
int CompressorPower = 1; // 0: main circuit, 1: z przetwornicy, reczne, 2: w przetwornicy, stale, 3: diesel engine, 4: converter of unit in front, 5: converter of unit behind
|
||||
int SmallCompressorPower = 0; /*Winger ZROBIC*/
|
||||
bool Trafo = false; /*pojazd wyposażony w transformator*/
|
||||
@@ -1041,6 +1057,12 @@ public:
|
||||
bool MED_EPVC = 0; // czy korekcja sily hamowania EP, gdy nie ma dostepnego ED
|
||||
double MED_EPVC_Time = 7; // czas korekcji sily hamowania EP, gdy nie ma dostepnego ED
|
||||
bool MED_Ncor = 0; // czy korekcja sily hamowania z uwzglednieniem nacisku
|
||||
|
||||
int DCEMUED_CC; //na którym sprzęgu sprawdzać działanie ED
|
||||
double DCEMUED_EP_max_Vel; //maksymalna prędkość, przy której działa EP przy włączonym ED w jednostce (dla tocznych)
|
||||
double DCEMUED_EP_min_Im; //minimalny prąd, przy którym EP nie działa przy włączonym ED w członie (dla silnikowych)
|
||||
double DCEMUED_EP_delay; //opóźnienie włączenia hamulca EP przy hamowaniu ED - zwłoka wstępna
|
||||
|
||||
/*-dla wagonow*/
|
||||
struct load_attributes {
|
||||
std::string name; // name of the cargo
|
||||
@@ -1077,6 +1099,7 @@ public:
|
||||
TRotation Rot { 0.0, 0.0, 0.0 };
|
||||
std::string Name; /*nazwa wlasna*/
|
||||
TCoupling Couplers[2]; //urzadzenia zderzno-sprzegowe, polaczenia miedzy wagonami
|
||||
std::array<neighbour_data, 2> Neighbours; // potential collision sources
|
||||
bool EventFlag = false; /*!o true jesli cos nietypowego sie wydarzy*/
|
||||
int SoundFlag = 0; /*!o patrz stale sound_ */
|
||||
double DistCounter = 0.0; /*! licznik kilometrow */
|
||||
@@ -1149,6 +1172,10 @@ public:
|
||||
int BrakeOpModeFlag = 0; /*nastawa trybu pracy PS/PN/EP/MED 1/2/4/8*/
|
||||
int BrakeOpModes = 0; /*nastawy mozliwe do uzyskania*/
|
||||
bool DynamicBrakeFlag = false; /*czy wlaczony hamulec elektrodymiczny*/
|
||||
bool DynamicBrakeEMUStatus = true; /*czy hamulec ED dziala w ezt*/
|
||||
int TUHEX_StageActual = 0; /*aktualny stopien tuhexa*/
|
||||
bool TUHEX_ResChange = false; /*czy zmiana rezystancji hamowania ED - odwzbudzanie*/
|
||||
bool TUHEX_Active = false; /*czy hamowanie ED wywołane z zewnątrz*/
|
||||
// NapUdWsp: integer;
|
||||
double LimPipePress = 0.0; /*stabilizator cisnienia*/
|
||||
double ActFlowSpeed = 0.0; /*szybkosc stabilizatora*/
|
||||
@@ -1255,9 +1282,14 @@ public:
|
||||
double hydro_R_n = 0.0; /*predkosc obrotowa retardera*/
|
||||
|
||||
/*- zmienne dla lokomotyw z silnikami indukcyjnymi -*/
|
||||
double eimic = 0; /*aktualna pozycja zintegrowanego sterowania jazda i hamowaniem*/
|
||||
double eimic_real = 0; /*faktycznie uzywana pozycja zintegrowanego sterowania jazda i hamowaniem*/
|
||||
int EIMCtrlType = 0; /*rodzaj wariantu zadajnika jazdy*/
|
||||
double eimv_pr = 0; /*realizowany procent dostepnej sily rozruchu/hamowania*/
|
||||
double eimv[21];
|
||||
static std::vector<std::string> const eimv_labels;
|
||||
double SpeedCtrlTimer = 0; /*zegar dzialania tempomatu z wybieralna predkoscia*/
|
||||
double eimicSpeedCtrl = 0; /*pozycja sugerowana przez tempomat*/
|
||||
double NewSpeed = 0; /*nowa predkosc do zadania*/
|
||||
double MED_EPVC_CurrentTime = 0; /*aktualny czas licznika czasu korekcji siły EP*/
|
||||
|
||||
@@ -1307,24 +1339,19 @@ public:
|
||||
double FrictConst2d= 0.0;
|
||||
double TotalMassxg = 0.0; /*TotalMass*g*/
|
||||
|
||||
Math3D::vector3 vCoulpler[2]; // powtórzenie współrzędnych sprzęgów z DynObj :/
|
||||
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ć
|
||||
int iLights[2]; // bity zapalonych świateł tutaj, żeby dało się liczyć pobór prądu
|
||||
private:
|
||||
double CouplerDist(int Coupler);
|
||||
|
||||
public:
|
||||
TMoverParameters(double VelInitial, std::string TypeNameInit, std::string NameInit, int Cab);
|
||||
// obsługa sprzęgów
|
||||
double Distance(const TLocation &Loc1, const TLocation &Loc2, const TDimension &Dim1, const TDimension &Dim2);
|
||||
/* double Distance(const vector3 &Loc1, const vector3 &Loc2, const vector3 &Dim1, const vector3 &Dim2);
|
||||
*/ //bool AttachA(int ConnectNo, int ConnectToNr, TMoverParameters *ConnectTo, int CouplingType, bool Forced = false);
|
||||
static double CouplerDist( TMoverParameters const *Left, TMoverParameters const *Right );
|
||||
static double Distance(const TLocation &Loc1, const TLocation &Loc2, const TDimension &Dim1, const TDimension &Dim2);
|
||||
bool Attach(int ConnectNo, int ConnectToNr, TMoverParameters *ConnectTo, int CouplingType, bool Forced = false, bool Audible = true);
|
||||
int DettachStatus(int ConnectNo);
|
||||
bool Dettach(int ConnectNo);
|
||||
void SetCoupleDist();
|
||||
bool DirectionForward();
|
||||
void BrakeLevelSet(double b);
|
||||
bool BrakeLevelAdd(double b);
|
||||
@@ -1340,7 +1367,7 @@ public:
|
||||
|
||||
// Q *******************************************************************************************
|
||||
double GetTrainsetVoltage(void);
|
||||
bool Physic_ReActivation(void);
|
||||
bool switch_physics(bool const State);
|
||||
double LocalBrakeRatio(void);
|
||||
double ManualBrakeRatio(void);
|
||||
double PipeRatio(void);/*ile napelniac*/
|
||||
@@ -1412,17 +1439,17 @@ public:
|
||||
/*funkcje obliczajace sily*/
|
||||
void ComputeConstans(void);//ABu: wczesniejsze wyznaczenie stalych dla liczenia sil
|
||||
double ComputeMass(void);
|
||||
void ComputeTotalForce(double dt, double dt1, bool FullVer);
|
||||
void ComputeTotalForce(double dt);
|
||||
double Adhesive(double staticfriction) const;
|
||||
double TractionForce(double dt);
|
||||
double FrictionForce(double R, int TDamage);
|
||||
double BrakeForceR(double ratio, double velocity);
|
||||
double BrakeForceP(double press, double velocity);
|
||||
double BrakeForce(const TTrackParam &Track);
|
||||
double CouplerForce(int CouplerN, double dt);
|
||||
double CouplerForce(int const End, double dt);
|
||||
void CollisionDetect(int CouplerN, double dt);
|
||||
/*obrot kol uwzgledniajacy poslizg*/
|
||||
double ComputeRotatingWheel(double WForce, double dt, double n);
|
||||
double ComputeRotatingWheel(double WForce, double dt, double n) const;
|
||||
|
||||
/*--funkcje dla lokomotyw*/
|
||||
bool DirectionBackward(void);/*! kierunek ruchu*/
|
||||
@@ -1476,6 +1503,9 @@ public:
|
||||
bool PantFront( bool const State, range_t const Notify = range_t::consist ); //obsluga pantografou przedniego
|
||||
bool PantRear( bool const State, range_t const Notify = range_t::consist ); //obsluga pantografu tylnego
|
||||
|
||||
void CheckEIMIC(double dt); //sprawdzenie i zmiana nastawy zintegrowanego nastawnika jazdy/hamowania
|
||||
void CheckSpeedCtrl();
|
||||
|
||||
/*-funkcje typowe dla lokomotywy spalinowej z przekladnia mechaniczna*/
|
||||
bool dizel_EngageSwitch(double state);
|
||||
bool dizel_EngageChange(double dt);
|
||||
@@ -1492,6 +1522,7 @@ public:
|
||||
bool LoadingDone(double LSpeed, std::string const &Loadname);
|
||||
bool PermitDoors( side const Door, bool const State = true, range_t const Notify = range_t::consist );
|
||||
bool ChangeDoorPermitPreset( int const Change, range_t const Notify = range_t::consist );
|
||||
bool PermitDoorStep( bool const State, range_t const Notify = range_t::consist );
|
||||
bool OperateDoors( side const Door, bool const State, range_t const Notify = range_t::consist );
|
||||
bool LockDoors( bool const State, range_t const Notify = range_t::consist );
|
||||
bool signal_departure( bool const State, range_t const Notify = range_t::consist ); // toggles departure warning
|
||||
@@ -1515,6 +1546,7 @@ private:
|
||||
void LoadFIZ_TurboPos( std::string const &line );
|
||||
void LoadFIZ_Cntrl( std::string const &line );
|
||||
void LoadFIZ_Blending(std::string const &line);
|
||||
void LoadFIZ_DCEMUED(std::string const &line);
|
||||
void LoadFIZ_Light( std::string const &line );
|
||||
void LoadFIZ_Security( std::string const &line );
|
||||
void LoadFIZ_Clima( std::string const &line );
|
||||
|
||||
1032
McZapkie/Mover.cpp
1032
McZapkie/Mover.cpp
File diff suppressed because it is too large
Load Diff
@@ -31,6 +31,7 @@ double const TSt113::BPT_K[6][2] = {{10, 0}, {4, 1}, {0, 1}, {4, 0}, {4, -1}, {1
|
||||
double const TSt113::BEP_K[7] = {0, -1, 1, 0, 0, 0, 0};
|
||||
double const TSt113::pos_table[11] = {-1, 5, -1, 0, 2, 3, 4, 5, 0, 0, 1};
|
||||
double const TFVel6::pos_table[11] = {-1, 6, -1, 0, 6, 4, 4.7, 5, -1, 0, 1};
|
||||
double const TFVE408::pos_table[11] = { 0, 10, 0, 0, 10, 7, 8, 9, 0, 1, 5 };
|
||||
|
||||
double PR(double P1, double P2)
|
||||
{
|
||||
@@ -133,6 +134,11 @@ double PFVd( double PH, double PL, double const S, double LIM, double const DP )
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool is_EQ(double pos, double i_pos)
|
||||
{
|
||||
return (pos <= i_pos + 0.5) && (pos > i_pos - 0.5);
|
||||
}
|
||||
|
||||
//---ZBIORNIKI---
|
||||
|
||||
double TReservoir::pa()
|
||||
@@ -863,10 +869,7 @@ double TEStEP2::GetPF( double const PP, double const dt, double const Vel )
|
||||
dV1 = dV1 - 0.96 * dv;
|
||||
|
||||
// hamulec EP
|
||||
temp = BVP * int(EPS > 0);
|
||||
dv = PF(temp, LBP, 0.00053 + 0.00060 * int(EPS < 0)) * dt * EPS * EPS *
|
||||
int(LBP * EPS < MaxBP * LoadC);
|
||||
LBP = LBP - dv;
|
||||
EPCalc(dt);
|
||||
|
||||
// luzowanie KI
|
||||
if ((BrakeStatus & b_hld) == b_off)
|
||||
@@ -936,6 +939,24 @@ void TEStEP2::SetLP( double const TM, double const LM, double const TBP )
|
||||
TareBP = TBP;
|
||||
}
|
||||
|
||||
void TEStEP2::EPCalc(double dt)
|
||||
{
|
||||
double temp = BrakeRes->P() * int(EPS > 0);
|
||||
double dv = PF(temp, LBP, 0.00053 + 0.00060 * int(EPS < 0)) * dt * EPS * EPS *
|
||||
int(LBP * EPS < MaxBP * LoadC);
|
||||
LBP = LBP - dv;
|
||||
}
|
||||
|
||||
|
||||
void TEStEP1::EPCalc(double dt)
|
||||
{
|
||||
double temp = EPS - std::floor(EPS); //część ułamkowa jest hamulcem EP
|
||||
double LBPLim = Min0R(MaxBP * LoadC * temp, BrakeRes->P()); //do czego dążymy
|
||||
double S = 10 * clamp(LBPLim - LBP, -0.1, 0.1); //przymykanie zaworku
|
||||
double dv = PF(( S > 0 ? BrakeRes->P() : 0 ), LBP, abs(S)*(0.00053 + 0.00060 * int(S < 0))) * dt; //przepływ
|
||||
LBP = LBP - dv;
|
||||
}
|
||||
|
||||
//---EST3--
|
||||
|
||||
double TESt3::GetPF( double const PP, double const dt, double const Vel )
|
||||
@@ -3133,4 +3154,71 @@ void TFVel6::Init(double Press)
|
||||
TimeEP = true;
|
||||
}
|
||||
|
||||
//---FVE408---
|
||||
|
||||
double TFVE408::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
|
||||
{
|
||||
static int const LBDelay = 100;
|
||||
|
||||
double LimPP;
|
||||
double dpMainValve;
|
||||
double ActFlowSpeed;
|
||||
|
||||
LimPP = Min0R(5 * int(i_bcp < 6.5), HP);
|
||||
if ((i_bcp >= 6.5) && ((i_bcp < 7.5) || (i_bcp > 9.5)))
|
||||
ActFlowSpeed = 0;
|
||||
else if ((i_bcp > 7.5) && (i_bcp < 8.5))
|
||||
ActFlowSpeed = 2; // konsultacje wawa1 - bylo 8;
|
||||
else if ((i_bcp < 6.5))
|
||||
ActFlowSpeed = 2;
|
||||
else
|
||||
ActFlowSpeed = 4;
|
||||
dpMainValve = PF(LimPP, PP, ActFlowSpeed / LBDelay) * dt;
|
||||
|
||||
Sounds[s_fv4a_e] = 0;
|
||||
Sounds[s_fv4a_u] = 0;
|
||||
Sounds[s_fv4a_b] = 0;
|
||||
if ((i_bcp < 6.5))
|
||||
Sounds[s_fv4a_u] = -dpMainValve;
|
||||
else if ((i_bcp < 8.5))
|
||||
Sounds[s_fv4a_b] = dpMainValve;
|
||||
else if ((i_bcp < 9.5))
|
||||
Sounds[s_fv4a_e] = dpMainValve;
|
||||
|
||||
if (is_EQ(i_bcp, 1)) EPS = 1.15; else
|
||||
if (is_EQ(i_bcp, 2)) EPS = 1.40; else
|
||||
if (is_EQ(i_bcp, 3)) EPS = 2.64; else
|
||||
if (is_EQ(i_bcp, 4)) EPS = 3.84; else
|
||||
if (is_EQ(i_bcp, 5)) EPS = 3.99; else
|
||||
EPS = 0;
|
||||
|
||||
return dpMainValve;
|
||||
}
|
||||
|
||||
double TFVE408::GetCP()
|
||||
{
|
||||
return EPS;
|
||||
}
|
||||
|
||||
double TFVE408::GetPos(int i)
|
||||
{
|
||||
return pos_table[i];
|
||||
}
|
||||
|
||||
double TFVE408::GetSound(int i)
|
||||
{
|
||||
if (i > 2)
|
||||
return 0;
|
||||
else
|
||||
return Sounds[i];
|
||||
}
|
||||
|
||||
void TFVE408::Init(double Press)
|
||||
{
|
||||
Time = true;
|
||||
TimeEP = false;
|
||||
}
|
||||
|
||||
// END
|
||||
|
||||
|
||||
|
||||
@@ -381,7 +381,7 @@ class TEStED : public TLSt { //zawor z EP09 - Est4 z oddzielnym przekladnikiem,
|
||||
|
||||
class TEStEP2 : public TLSt {
|
||||
|
||||
private:
|
||||
protected:
|
||||
double TareM = 0.0; //masa proznego
|
||||
double LoadM = 0.0; //masa pelnego
|
||||
double TareBP = 0.0; //cisnienie dla proznego
|
||||
@@ -394,12 +394,23 @@ public:
|
||||
void PLC( double const mass ); //wspolczynnik cisnienia przystawki wazacej
|
||||
void SetEPS( double const nEPS )/*override*/; //stan hamulca EP
|
||||
void SetLP( double const TM, double const LM, double const TBP ); //parametry przystawki wazacej
|
||||
void virtual EPCalc(double dt);
|
||||
|
||||
inline TEStEP2(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)
|
||||
{}
|
||||
};
|
||||
|
||||
class TEStEP1 : public TEStEP2 {
|
||||
|
||||
public:
|
||||
void EPCalc(double dt);
|
||||
|
||||
inline TEStEP1(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) :
|
||||
TEStEP2(i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
|
||||
{}
|
||||
};
|
||||
|
||||
class TCV1 : public TBrake {
|
||||
|
||||
private:
|
||||
@@ -775,6 +786,24 @@ class TFVel6 : public TDriverHandle {
|
||||
{}
|
||||
};
|
||||
|
||||
class TFVE408 : public TDriverHandle {
|
||||
|
||||
private:
|
||||
double EPS = 0.0;
|
||||
static double const pos_table[11]; // = {-1, 6, -1, 0, 6, 4, 4.7, 5, -1, 0, 1};
|
||||
|
||||
public:
|
||||
double GetPF(double i_bcp, double PP, double HP, double dt, double ep)/*override*/;
|
||||
double GetCP()/*override*/;
|
||||
double GetPos(int i)/*override*/;
|
||||
double GetSound(int i)/*override*/;
|
||||
void Init(double Press)/*override*/;
|
||||
|
||||
inline TFVE408(void) :
|
||||
TDriverHandle()
|
||||
{}
|
||||
};
|
||||
|
||||
|
||||
extern double PF( double const P1, double const P2, double const S, double const DP = 0.25 );
|
||||
extern double PF1( double const P1, double const P2, double const S );
|
||||
|
||||
Reference in New Issue
Block a user