#pragma once #ifndef INCLUDED_OERLIKON_EST_H #define INCLUDED_OERLIKON_EST_H /*fizyka hamulcow Oerlikon ESt dla symulatora*/ /* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* MaSzyna EU07 - SPKS Brakes. Oerlikon ESt. Copyright (C) 2007-2014 Maciej Cierniak */ #include #include "hamulce.h" // Pascal unit #include "friction.h" // Pascal unit /* (C) youBy Co jest: - glowny przyrzad rozrzadczy - napelniacz zbiornika pomocniczego - napelniacz zbiornika sterujacego - zawor podskoku - nibyprzyspieszacz - tylko 16",14",12",10" - nieprzekladnik rura - przekladnik 1:1 - przekladniki AL2 - przeciwposlizgi - rapid REL2 - HGB300 - inne srednice Co brakuje: - dobry przyspieszacz - mozliwosc zasilania z wysokiego cisnienia ESt4 - ep: EP1 i EP2 - samoczynne ep - PZZ dla dodatkowego */ static constexpr int dMAX = 11; // dysze static constexpr int dON = 0; // osobowy napelnianie (+ZP) static constexpr int dOO = 1; // osobowy oproznianie static constexpr int dTN = 2; // towarowy napelnianie (+ZP) static constexpr int dTO = 3; // towarowy oproznianie static constexpr int dP = 4; // zbiornik pomocniczy static constexpr int dSd = 5; // zbiornik sterujacy static constexpr int dSm = 6; // zbiornik sterujacy static constexpr int dPd = 7; // duzy przelot zamykajcego static constexpr int dPm = 8; // maly przelot zamykajacego static constexpr int dPO = 9; // zasilanie pomocniczego O static constexpr int dPT = 10; // zasilanie pomocniczego T // przekladniki static constexpr int p_none = 0; static constexpr int p_rapid = 1; static constexpr int p_pp = 2; static constexpr int p_al2 = 3; static constexpr int p_ppz = 4; static constexpr int P_ed = 5; class TPrzekladnik : public TReservoir // przekladnik (powtarzacz) { private: public: std::shared_ptr BrakeRes; std::shared_ptr Next; TPrzekladnik() : TReservoir() {}; virtual void Update(double dt); virtual void SetPoslizg(bool flag) {}; virtual void SetP(double P) {}; virtual void SetMult(double m) {}; virtual void SetLBP(double P) {}; virtual void SetRapidParams(double mult, double size) {}; virtual void SetRapidStatus(bool rs) {}; }; class TRura : public TPrzekladnik // nieprzekladnik, rura laczaca { private: public: TRura() : TPrzekladnik() {}; virtual double P(void) /*override*/; virtual void Update(double dt) /*override*/; }; class TPrzeciwposlizg : public TRura // przy napelnianiu - rura, przy poslizgu - upust { private: bool Poslizg; public: void SetPoslizg(bool flag); void Update(double dt) /*override*/; TPrzeciwposlizg() : TRura() { Poslizg = false; } }; // przekladnik dwustopniowy class TRapid : public TPrzekladnik { private: bool RapidStatus = false; // status rapidu double RapidMult = 0.0; // przelozenie (w dol) // Komora2: real; double DN = 0.0; double DL = 0.0; // srednice dysz napelniania i luzowania public: void SetRapidParams(double mult, double size); void SetRapidStatus(bool rs); void Update(double dt) /*override*/; TRapid() : TPrzekladnik() {} }; // AL2 class TPrzekCiagly : public TPrzekladnik { private: double Mult = 0.0; public: void SetMult(double m); void Update(double dt) /*override*/; TPrzekCiagly() : TPrzekladnik() {} }; // podwojny zawor zwrotny class TPrzek_PZZ : public TPrzekladnik { private: double LBP = 0.0; public: void SetLBP(double P); void Update(double dt) /*override*/; TPrzek_PZZ() : TPrzekladnik() {} }; class TPrzekZalamany : public TPrzekladnik // Knicksventil { private: public: TPrzekZalamany() : TPrzekladnik() {} }; // przy napelnianiu - rura, przy hamowaniu - upust class TPrzekED : public TRura { private: double MaxP = 0.0; public: void SetP(double P); void Update(double dt) /*override*/; TPrzekED() : TRura() {} }; class TNESt3 : public TBrake { private: std::shared_ptr CntrlRes; // zbiornik sterujacy std::shared_ptr Miedzypoj; // pojemnosc posrednia (urojona) do napelniania ZP i ZS std::shared_ptr Przekladniki[ 4 ]; double Nozzles[ dMAX ]; // dysze double BVM = 0.0; // przelozenie PG-CH // ValveFlag: byte; //polozenie roznych zaworkow bool Zamykajacy = true; // pamiec zaworka zamykajacego // Przys_wlot: boolean; //wlot do komory przyspieszacza bool Przys_blok = true; // blokada przyspieszacza bool RapidStatus = true; bool RapidStaly = true; double LoadC = 0.0; double TareM = 0.0; // masa proznego double LoadM = 0.0; // masa pelnego double TareBP = 0.0; // cisnienie dla proznego double HBG300 = 0.0; // zawor ograniczajacy cisnienie double Podskok = 0.0; // podskok preznosci poczatkowej // HPBR: real; //zasilanie ZP z wysokiego cisnienia bool autom = true; // odluzniacz samoczynny double LBP = 0.0; // cisnienie hamulca pomocniczego public: TNESt3(const double i_mbp, const double i_bcr, const double i_bcd, const double i_brc, const int i_bcn, const int i_BD, const int i_mat, const int i_ba, const int i_nbpa) : TBrake( i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa) {} void Init( double PP, double HPP, double LPP, double BP, int BDF ) /*override*/; virtual double GetPF( double PP, double dt, double Vel ) /*override*/; // przeplyw miedzy komora wstepna i PG static void EStParams(double i_crc); // parametry charakterystyczne dla ESt virtual double GetCRP() /*override*/; void CheckState(double BCP, double &dV1); // glowny przyrzad rozrzadczy void CheckReleaser(double dt); // odluzniacz double CVs(double BP); // napelniacz sterujacego double BVs(double BCP); // napelniacz pomocniczego void SetSize( int size, std::string const ¶ms ); // ustawianie dysz (rozmiaru ZR), przekladniki void PLC(double mass); // wspolczynnik cisnienia przystawki wazacej void SetLP(double TM, double LM, double TBP); // parametry przystawki wazacej virtual void ForceEmptiness() /*override*/; // wymuszenie bycia pustym void SetLBP(double P); // cisnienie z hamulca pomocniczego }; extern double d2A( double d ); #endif // INCLUDED_OERLIKON_EST_H // END