|
|
|
|
@@ -290,13 +290,13 @@ class TBrakeCyl : public TReservoir
|
|
|
|
|
/// Returns absolute pressure inside the brake cylinder (P() * 0.1).
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>Absolute cylinder pressure.</returns>
|
|
|
|
|
virtual double pa() /*override*/;
|
|
|
|
|
double pa() override;
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Returns gauge pressure inside the brake cylinder, modelling the
|
|
|
|
|
/// piston-stroke pressure curve (dead volume, linear stroke, fully extended).
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>Cylinder pressure in bar.</returns>
|
|
|
|
|
virtual double P() /*override*/;
|
|
|
|
|
double P() override;
|
|
|
|
|
/// <summary>Default constructor.</summary>
|
|
|
|
|
TBrakeCyl() : TReservoir() {};
|
|
|
|
|
};
|
|
|
|
|
@@ -537,23 +537,23 @@ class TWest : public TBrake
|
|
|
|
|
/// <param name="LPP">Low pressure.</param>
|
|
|
|
|
/// <param name="BP">Initial cylinder pressure.</param>
|
|
|
|
|
/// <param name="BDF">Initial brake delay flag.</param>
|
|
|
|
|
void Init(double const PP, double const HPP, double const LPP, double const BP, int const BDF) /*override*/;
|
|
|
|
|
void Init(double const PP, double const HPP, double const LPP, double const BP, int const BDF) override;
|
|
|
|
|
/// <summary>Sets the auxiliary brake target pressure and engages the DCV when above cylinder.</summary>
|
|
|
|
|
/// <param name="P">Pressure [bar].</param>
|
|
|
|
|
void SetLBP(double const P); // cisnienie z hamulca pomocniczego
|
|
|
|
|
void SetLBP(double const P) override; // cisnienie z hamulca pomocniczego
|
|
|
|
|
/// <summary>One-step distributor advance (Westinghouse logic).</summary>
|
|
|
|
|
/// <returns>Net flow exchanged with the brake pipe.</returns>
|
|
|
|
|
double GetPF(double const PP, double const dt, double const Vel) /*override*/; // przeplyw miedzy komora wstepna i PG
|
|
|
|
|
double GetPF(double const PP, double const dt, double const Vel) override; // przeplyw miedzy komora wstepna i PG
|
|
|
|
|
/// <summary>Returns the high-pressure flow drawn during the last GetPF step.</summary>
|
|
|
|
|
double GetHPFlow(double const HP, double const dt) /*override*/;
|
|
|
|
|
double GetHPFlow(double const HP, double const dt) override;
|
|
|
|
|
/// <summary>Recomputes the load-weighing pressure coefficient for the current mass.</summary>
|
|
|
|
|
/// <param name="mass">Vehicle mass.</param>
|
|
|
|
|
void PLC(double const mass); // wspolczynnik cisnienia przystawki wazacej
|
|
|
|
|
void PLC(double const mass) override; // wspolczynnik cisnienia przystawki wazacej
|
|
|
|
|
/// <summary>Sets the EP brake state and toggles the DCV / latches LBP from cylinder pressure on release.</summary>
|
|
|
|
|
/// <param name="nEPS">New EP intensity.</param>
|
|
|
|
|
void SetEPS(double const nEPS) /*override*/; // stan hamulca EP
|
|
|
|
|
void SetEPS(double const nEPS) override; // stan hamulca EP
|
|
|
|
|
/// <summary>Stores the load-weighing parameters (TareM, LoadM, TareBP).</summary>
|
|
|
|
|
void SetLP(double const TM, double const LM, double const TBP); // parametry przystawki wazacej
|
|
|
|
|
void SetLP(double const TM, double const LM, double const TBP) override; // parametry przystawki wazacej
|
|
|
|
|
|
|
|
|
|
/// <summary>Constructs the distributor by forwarding all parameters to TBrake.</summary>
|
|
|
|
|
inline TWest(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) : TBrake(i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa) {}
|
|
|
|
|
@@ -576,15 +576,15 @@ class TESt : public TBrake
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
/// <summary>Initialises the ESt distributor; sizes the control reservoir (15 l) and computes BVM.</summary>
|
|
|
|
|
void Init(double const PP, double const HPP, double const LPP, double const BP, int const BDF) /*override*/;
|
|
|
|
|
void Init(double const PP, double const HPP, double const LPP, double const BP, int const BDF) override;
|
|
|
|
|
/// <summary>One-step distributor advance for the ESt baseline.</summary>
|
|
|
|
|
/// <returns>Net flow exchanged with the brake pipe.</returns>
|
|
|
|
|
double GetPF(double const PP, double const dt, double const Vel) /*override*/; // przeplyw miedzy komora wstepna i PG
|
|
|
|
|
double GetPF(double const PP, double const dt, double const Vel) override; // przeplyw miedzy komora wstepna i PG
|
|
|
|
|
/// <summary>Sets ESt-specific characteristic parameters (placeholder; used by some variants).</summary>
|
|
|
|
|
/// <param name="i_crc">Characteristic value.</param>
|
|
|
|
|
void EStParams(double i_crc); // parametry charakterystyczne dla ESt
|
|
|
|
|
/// <summary>Returns the control reservoir (ZS) pressure.</summary>
|
|
|
|
|
double GetCRP() /*override*/;
|
|
|
|
|
double GetCRP() override;
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Updates BrakeStatus (b_on/b_hld) according to the relations between
|
|
|
|
|
/// pre-chamber, cylinder and control reservoir pressures (the main slide valve).
|
|
|
|
|
@@ -611,7 +611,7 @@ class TESt : public TBrake
|
|
|
|
|
/// <returns>Dimensionless opening coefficient.</returns>
|
|
|
|
|
double BVs(double BCP); // napelniacz pomocniczego
|
|
|
|
|
/// <summary>Vents the valve, brake and control reservoirs to zero.</summary>
|
|
|
|
|
void ForceEmptiness() /*override*/; // wymuszenie bycia pustym
|
|
|
|
|
void ForceEmptiness() override; // wymuszenie bycia pustym
|
|
|
|
|
|
|
|
|
|
/// <summary>Constructs the ESt distributor and creates the control reservoir.</summary>
|
|
|
|
|
inline TESt(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) : TBrake(i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
|
|
|
|
|
@@ -633,7 +633,7 @@ class TESt3 : public TESt
|
|
|
|
|
public:
|
|
|
|
|
/// <summary>One-step distributor advance for ESt3 (G/P-dependent fill/release curves).</summary>
|
|
|
|
|
/// <returns>Net flow exchanged with the brake pipe.</returns>
|
|
|
|
|
double GetPF(double const PP, double const dt, double const Vel) /*override*/; // przeplyw miedzy komora wstepna i PG
|
|
|
|
|
double GetPF(double const PP, double const dt, double const Vel) override; // przeplyw miedzy komora wstepna i PG
|
|
|
|
|
|
|
|
|
|
/// <summary>Constructs the ESt3 distributor.</summary>
|
|
|
|
|
inline TESt3(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) : TESt(i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa) {}
|
|
|
|
|
@@ -660,13 +660,13 @@ class TESt3AL2 : public TESt3
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
/// <summary>Initialises the impulse chamber on top of the ESt initialisation.</summary>
|
|
|
|
|
void Init(double const PP, double const HPP, double const LPP, double const BP, int const BDF) /*override*/;
|
|
|
|
|
void Init(double const PP, double const HPP, double const LPP, double const BP, int const BDF) override;
|
|
|
|
|
/// <summary>One-step distributor advance for ESt3/AL2 with load-weighing relay.</summary>
|
|
|
|
|
double GetPF(double const PP, double const dt, double const Vel) /*override*/; // przeplyw miedzy komora wstepna i PG
|
|
|
|
|
double GetPF(double const PP, double const dt, double const Vel) override; // przeplyw miedzy komora wstepna i PG
|
|
|
|
|
/// <summary>Recomputes LoadC for the current vehicle mass.</summary>
|
|
|
|
|
void PLC(double const mass); // wspolczynnik cisnienia przystawki wazacej
|
|
|
|
|
void PLC(double const mass) override; // wspolczynnik cisnienia przystawki wazacej
|
|
|
|
|
/// <summary>Stores the load-weighing parameters.</summary>
|
|
|
|
|
void SetLP(double const TM, double const LM, double const TBP); // parametry przystawki wazacej
|
|
|
|
|
void SetLP(double const TM, double const LM, double const TBP) override; // parametry przystawki wazacej
|
|
|
|
|
|
|
|
|
|
/// <summary>Constructs the distributor and creates the impulse chamber.</summary>
|
|
|
|
|
inline TESt3AL2(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) : TESt3(i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
|
|
|
|
|
@@ -695,9 +695,9 @@ class TESt4R : public TESt
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
/// <summary>Initialises the ESt4R; sizes the impulse chamber and selects the R delay.</summary>
|
|
|
|
|
void Init(double const PP, double const HPP, double const LPP, double const BP, int const BDF) /*override*/;
|
|
|
|
|
void Init(double const PP, double const HPP, double const LPP, double const BP, int const BDF) override;
|
|
|
|
|
/// <summary>One-step distributor advance for ESt4R (rapid step active above velocity threshold).</summary>
|
|
|
|
|
double GetPF(double const PP, double const dt, double const Vel) /*override*/; // przeplyw miedzy komora wstepna i PG
|
|
|
|
|
double GetPF(double const PP, double const dt, double const Vel) override; // przeplyw miedzy komora wstepna i PG
|
|
|
|
|
|
|
|
|
|
/// <summary>Constructs the distributor and creates the impulse chamber.</summary>
|
|
|
|
|
inline TESt4R(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) : TESt(i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
|
|
|
|
|
@@ -726,21 +726,21 @@ class TLSt : public TESt4R
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
/// <summary>Initialises the LSt; resizes the valve and impulse reservoirs and presets pressures.</summary>
|
|
|
|
|
void Init(double const PP, double const HPP, double const LPP, double const BP, int const BDF) /*override*/;
|
|
|
|
|
void Init(double const PP, double const HPP, double const LPP, double const BP, int const BDF) override;
|
|
|
|
|
/// <summary>Sets the auxiliary brake target pressure for the DCV.</summary>
|
|
|
|
|
void SetLBP(double const P); // cisnienie z hamulca pomocniczego
|
|
|
|
|
void SetLBP(double const P) override; // cisnienie z hamulca pomocniczego
|
|
|
|
|
/// <summary>Sets the rapid step ratio (RM = 1 - RMR).</summary>
|
|
|
|
|
/// <param name="RMR">Reduction ratio (0 disables rapid, > 0 enables).</param>
|
|
|
|
|
void SetRM(double const RMR); // ustalenie przelozenia rapida
|
|
|
|
|
void SetRM(double const RMR) override; // ustalenie przelozenia rapida
|
|
|
|
|
/// <summary>One-step distributor advance for LSt (DCV + rapid + ED release).</summary>
|
|
|
|
|
double GetPF(double const PP, double const dt, double const Vel) /*override*/; // przeplyw miedzy komora wstepna i PG
|
|
|
|
|
double GetPF(double const PP, double const dt, double const Vel) override; // przeplyw miedzy komora wstepna i PG
|
|
|
|
|
/// <summary>Computes the high-pressure inflow (replenishes the auxiliary reservoir from the main line).</summary>
|
|
|
|
|
double GetHPFlow(double const HP, double const dt) /*override*/; // przeplyw - 8 bar
|
|
|
|
|
double GetHPFlow(double const HP, double const dt) override; // przeplyw - 8 bar
|
|
|
|
|
/// <summary>Returns the brake-cylinder reference pressure used by the ED brake controller (CVP-BCP * BVM).</summary>
|
|
|
|
|
virtual double GetEDBCP(); // cisnienie tylko z hamulca zasadniczego, uzywane do hamulca ED w EP09
|
|
|
|
|
double GetEDBCP() override; // cisnienie tylko z hamulca zasadniczego, uzywane do hamulca ED w EP09
|
|
|
|
|
/// <summary>Sets the ED brake state used to relax the pneumatic brake.</summary>
|
|
|
|
|
/// <param name="EDstate">ED intensity (0..1).</param>
|
|
|
|
|
virtual void SetED(double const EDstate); // stan hamulca ED do luzowania
|
|
|
|
|
void SetED(double const EDstate) override; // stan hamulca ED do luzowania
|
|
|
|
|
|
|
|
|
|
/// <summary>Constructs the LSt distributor.</summary>
|
|
|
|
|
inline TLSt(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) : TESt4R(i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa) {}
|
|
|
|
|
@@ -774,15 +774,15 @@ class TEStED : public TLSt
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
/// <summary>Initialises the EStED — sets up Miedzypoj, ImplsRes and the nozzle characteristics.</summary>
|
|
|
|
|
void Init(double const PP, double const HPP, double const LPP, double const BP, int const BDF) /*override*/;
|
|
|
|
|
void Init(double const PP, double const HPP, double const LPP, double const BP, int const BDF) override;
|
|
|
|
|
/// <summary>One-step distributor advance for EStED (full EP09 logic with intermediate reservoir).</summary>
|
|
|
|
|
double GetPF(double const PP, double const dt, double const Vel) /*override*/; // przeplyw miedzy komora wstepna i PG
|
|
|
|
|
double GetPF(double const PP, double const dt, double const Vel) override; // przeplyw miedzy komora wstepna i PG
|
|
|
|
|
/// <summary>Returns ED-brake reference pressure (ImplsRes pressure scaled by load coefficient).</summary>
|
|
|
|
|
double GetEDBCP() /*override*/; // cisnienie tylko z hamulca zasadniczego, uzywane do hamulca ED
|
|
|
|
|
double GetEDBCP() override; // cisnienie tylko z hamulca zasadniczego, uzywane do hamulca ED
|
|
|
|
|
/// <summary>Recomputes LoadC for the current vehicle mass.</summary>
|
|
|
|
|
void PLC(double const mass); // wspolczynnik cisnienia przystawki wazacej
|
|
|
|
|
void PLC(double const mass) override; // wspolczynnik cisnienia przystawki wazacej
|
|
|
|
|
/// <summary>Stores the load-weighing parameters.</summary>
|
|
|
|
|
void SetLP(double const TM, double const LM, double const TBP); // parametry przystawki wazacej
|
|
|
|
|
void SetLP(double const TM, double const LM, double const TBP) override; // parametry przystawki wazacej
|
|
|
|
|
|
|
|
|
|
/// <summary>Constructs the distributor and creates the intermediate reservoir.</summary>
|
|
|
|
|
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)
|
|
|
|
|
@@ -812,15 +812,15 @@ class TEStEP2 : public TLSt
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
/// <summary>Initialises the EP2-equipped distributor (impulse chamber, P delay).</summary>
|
|
|
|
|
void Init(double const PP, double const HPP, double const LPP, double const BP, int const BDF) /*override*/; // inicjalizacja
|
|
|
|
|
void Init(double const PP, double const HPP, double const LPP, double const BP, int const BDF) override; // inicjalizacja
|
|
|
|
|
/// <summary>One-step distributor advance with EP2 EP brake logic.</summary>
|
|
|
|
|
double GetPF(double const PP, double const dt, double const Vel) /*override*/; // przeplyw miedzy komora wstepna i PG
|
|
|
|
|
double GetPF(double const PP, double const dt, double const Vel) override; // przeplyw miedzy komora wstepna i PG
|
|
|
|
|
/// <summary>Recomputes LoadC for the current vehicle mass.</summary>
|
|
|
|
|
void PLC(double const mass); // wspolczynnik cisnienia przystawki wazacej
|
|
|
|
|
void PLC(double const mass) override; // wspolczynnik cisnienia przystawki wazacej
|
|
|
|
|
/// <summary>Sets EP intensity; if EP is active and LBP < cylinder pressure, latches LBP from cylinder.</summary>
|
|
|
|
|
void SetEPS(double const nEPS) /*override*/; // stan hamulca EP
|
|
|
|
|
void SetEPS(double const nEPS) override; // stan hamulca EP
|
|
|
|
|
/// <summary>Stores the load-weighing parameters.</summary>
|
|
|
|
|
void SetLP(double const TM, double const LM, double const TBP); // parametry przystawki wazacej
|
|
|
|
|
void SetLP(double const TM, double const LM, double const TBP) override; // parametry przystawki wazacej
|
|
|
|
|
/// <summary>EP brake flow integration step. Override in EP1 for proportional control.</summary>
|
|
|
|
|
/// <param name="dt">Time step [s].</param>
|
|
|
|
|
void virtual EPCalc(double dt);
|
|
|
|
|
@@ -839,7 +839,7 @@ class TEStEP1 : public TEStEP2
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
/// <summary>Proportional EP flow integration step (uses fractional part of EPS as the EP target).</summary>
|
|
|
|
|
void EPCalc(double dt);
|
|
|
|
|
void EPCalc(double dt) override;
|
|
|
|
|
/// <summary>Stores the EP intensity.</summary>
|
|
|
|
|
/// <param name="nEPS">Target EP value (integer part = direction, fractional part = magnitude).</param>
|
|
|
|
|
void SetEPS(double const nEPS) override; // stan hamulca EP
|
|
|
|
|
@@ -867,11 +867,11 @@ class TCV1 : public TBrake
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
/// <summary>Initialises the CV1 distributor (sizes ZS, sets pressures, computes BVM).</summary>
|
|
|
|
|
void Init(double const PP, double const HPP, double const LPP, double const BP, int const BDF) /*override*/;
|
|
|
|
|
void Init(double const PP, double const HPP, double const LPP, double const BP, int const BDF) override;
|
|
|
|
|
/// <summary>One-step distributor advance for the CV1 baseline.</summary>
|
|
|
|
|
double GetPF(double const PP, double const dt, double const Vel) /*override*/; // przeplyw miedzy komora wstepna i PG
|
|
|
|
|
double GetPF(double const PP, double const dt, double const Vel) override; // przeplyw miedzy komora wstepna i PG
|
|
|
|
|
/// <summary>Returns the control reservoir (ZS) pressure.</summary>
|
|
|
|
|
double GetCRP() /*override*/;
|
|
|
|
|
double GetCRP() override;
|
|
|
|
|
/// <summary>Updates BrakeStatus based on pre-chamber/cylinder/control reservoir relations and the releaser.</summary>
|
|
|
|
|
/// <param name="BCP">Cylinder (or impulse) pressure.</param>
|
|
|
|
|
/// <param name="dV1">In/out brake pipe flow correction.</param>
|
|
|
|
|
@@ -881,7 +881,7 @@ class TCV1 : public TBrake
|
|
|
|
|
/// <summary>Returns the ZP-filling slide valve opening factor for the given cylinder pressure.</summary>
|
|
|
|
|
double BVs(double const BCP);
|
|
|
|
|
/// <summary>Vents valve, brake and control reservoirs to zero.</summary>
|
|
|
|
|
void ForceEmptiness() /*override*/; // wymuszenie bycia pustym
|
|
|
|
|
void ForceEmptiness() override; // wymuszenie bycia pustym
|
|
|
|
|
|
|
|
|
|
/// <summary>Constructs the CV1 distributor and creates the control reservoir.</summary>
|
|
|
|
|
inline TCV1(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) : TBrake(i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
|
|
|
|
|
@@ -922,13 +922,13 @@ class TCV1L_TR : public TCV1
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
/// <summary>Initialises the CV1-L-TR (sizes the impulse chamber on top of CV1::Init).</summary>
|
|
|
|
|
void Init(double const PP, double const HPP, double const LPP, double const BP, int const BDF) /*override*/;
|
|
|
|
|
void Init(double const PP, double const HPP, double const LPP, double const BP, int const BDF) override;
|
|
|
|
|
/// <summary>One-step distributor advance for CV1-L-TR (impulse chamber + DCV).</summary>
|
|
|
|
|
double GetPF(double const PP, double const dt, double const Vel) /*override*/; // przeplyw miedzy komora wstepna i PG
|
|
|
|
|
double GetPF(double const PP, double const dt, double const Vel) override; // przeplyw miedzy komora wstepna i PG
|
|
|
|
|
/// <summary>Sets the auxiliary brake target pressure for the DCV.</summary>
|
|
|
|
|
void SetLBP(double const P); // cisnienie z hamulca pomocniczego
|
|
|
|
|
void SetLBP(double const P) override; // cisnienie z hamulca pomocniczego
|
|
|
|
|
/// <summary>Computes the high-pressure (8 bar) inflow used to replenish the auxiliary reservoir.</summary>
|
|
|
|
|
double GetHPFlow(double const HP, double const dt) /*override*/; // przeplyw - 8 bar
|
|
|
|
|
double GetHPFlow(double const HP, double const dt) override; // przeplyw - 8 bar
|
|
|
|
|
|
|
|
|
|
/// <summary>Constructs the CV1-L-TR and creates the impulse chamber.</summary>
|
|
|
|
|
inline TCV1L_TR(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) : TCV1(i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
|
|
|
|
|
@@ -971,15 +971,15 @@ class TKE : public TBrake
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
/// <summary>Initialises the KE distributor (control / impulse / auxiliary reservoirs and BVM).</summary>
|
|
|
|
|
void Init(double const PP, double const HPP, double const LPP, double const BP, int const BDF) /*override*/;
|
|
|
|
|
void Init(double const PP, double const HPP, double const LPP, double const BP, int const BDF) override;
|
|
|
|
|
/// <summary>Sets the rapid step ratio (RM = 1 - RMR).</summary>
|
|
|
|
|
void SetRM(double const RMR); // ustalenie przelozenia rapida
|
|
|
|
|
void SetRM(double const RMR) override; // ustalenie przelozenia rapida
|
|
|
|
|
/// <summary>One-step distributor advance for the KE distributor.</summary>
|
|
|
|
|
double GetPF(double const PP, double const dt, double const Vel) /*override*/; // przeplyw miedzy komora wstepna i PG
|
|
|
|
|
double GetPF(double const PP, double const dt, double const Vel) override; // przeplyw miedzy komora wstepna i PG
|
|
|
|
|
/// <summary>Computes the high-pressure (8 bar) inflow used to replenish the auxiliary reservoir.</summary>
|
|
|
|
|
double GetHPFlow(double const HP, double const dt) /*override*/; // przeplyw - 8 bar
|
|
|
|
|
double GetHPFlow(double const HP, double const dt) override; // przeplyw - 8 bar
|
|
|
|
|
/// <summary>Returns the control reservoir (ZS) pressure.</summary>
|
|
|
|
|
double GetCRP() /*override*/;
|
|
|
|
|
double GetCRP() override;
|
|
|
|
|
/// <summary>Updates BrakeStatus from cylinder/pre-chamber/control reservoir pressures (KE-specific thresholds).</summary>
|
|
|
|
|
void CheckState(double const BCP, double &dV1);
|
|
|
|
|
/// <summary>Drives the releaser logic for KE — bleeds the control reservoir while engaged.</summary>
|
|
|
|
|
@@ -989,13 +989,13 @@ class TKE : public TBrake
|
|
|
|
|
/// <summary>ZP-filling slide valve opening factor for the given cylinder pressure.</summary>
|
|
|
|
|
double BVs(double const BCP); // napelniacz pomocniczego
|
|
|
|
|
/// <summary>Recomputes LoadC for the current vehicle mass.</summary>
|
|
|
|
|
void PLC(double const mass); // wspolczynnik cisnienia przystawki wazacej
|
|
|
|
|
void PLC(double const mass) override; // wspolczynnik cisnienia przystawki wazacej
|
|
|
|
|
/// <summary>Stores the load-weighing parameters.</summary>
|
|
|
|
|
void SetLP(double const TM, double const LM, double const TBP); // parametry przystawki wazacej
|
|
|
|
|
void SetLP(double const TM, double const LM, double const TBP) override; // parametry przystawki wazacej
|
|
|
|
|
/// <summary>Sets the auxiliary brake target pressure for the DCV.</summary>
|
|
|
|
|
void SetLBP(double const P); // cisnienie z hamulca pomocniczego
|
|
|
|
|
void SetLBP(double const P) override; // cisnienie z hamulca pomocniczego
|
|
|
|
|
/// <summary>Vents valve, brake, control, impulse and secondary auxiliary reservoirs to zero.</summary>
|
|
|
|
|
void ForceEmptiness() /*override*/; // wymuszenie bycia pustym
|
|
|
|
|
void ForceEmptiness() override; // wymuszenie bycia pustym
|
|
|
|
|
|
|
|
|
|
/// <summary>Constructs the KE distributor and creates the control / impulse / secondary reservoirs.</summary>
|
|
|
|
|
inline TKE(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) : TBrake(i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
|
|
|
|
|
@@ -1107,9 +1107,9 @@ class TFV4a : public TDriverHandle
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
/// <summary>Computes brake pipe flow for the FV4a handle (uses BPT[] table).</summary>
|
|
|
|
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) /*override*/;
|
|
|
|
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) override;
|
|
|
|
|
/// <summary>Initialises CP and RP to the supplied pressure.</summary>
|
|
|
|
|
void Init(double Press) /*override*/;
|
|
|
|
|
void Init(double Press) override;
|
|
|
|
|
|
|
|
|
|
/// <summary>Default constructor.</summary>
|
|
|
|
|
inline TFV4a() : TDriverHandle() {}
|
|
|
|
|
@@ -1149,19 +1149,19 @@ class TFV4aM : public TDriverHandle
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
/// <summary>Computes brake pipe flow for the FV4a/M handle (interpolated BPT, wave modelling, accelerator).</summary>
|
|
|
|
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) /*override*/;
|
|
|
|
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) override;
|
|
|
|
|
/// <summary>Initialises CP and RP.</summary>
|
|
|
|
|
void Init(double Press) /*override*/;
|
|
|
|
|
void Init(double Press) override;
|
|
|
|
|
/// <summary>Sets the reductor adjustment offset.</summary>
|
|
|
|
|
void SetReductor(double nAdj) /*override*/;
|
|
|
|
|
void SetReductor(double nAdj) override;
|
|
|
|
|
/// <summary>Returns Sounds[i] (or 0 if i > 4).</summary>
|
|
|
|
|
double GetSound(int i) /*override*/;
|
|
|
|
|
double GetSound(int i) override;
|
|
|
|
|
/// <summary>Returns pos_table[i].</summary>
|
|
|
|
|
double GetPos(int i) /*override*/;
|
|
|
|
|
double GetPos(int i) override;
|
|
|
|
|
/// <summary>Returns the time chamber pressure (TP).</summary>
|
|
|
|
|
double GetCP();
|
|
|
|
|
double GetCP() override;
|
|
|
|
|
/// <summary>Returns the regulator pressure (5 + TP*0.08 + RedAdj).</summary>
|
|
|
|
|
double GetRP();
|
|
|
|
|
double GetRP() override;
|
|
|
|
|
/// <summary>Default constructor.</summary>
|
|
|
|
|
inline TFV4aM() : TDriverHandle() {}
|
|
|
|
|
};
|
|
|
|
|
@@ -1199,23 +1199,23 @@ class TMHZ_EN57 : public TDriverHandle
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
/// <summary>Computes brake pipe flow for MHZ_EN57 (covers handle positions -1..10 with EP/pneumatic mix).</summary>
|
|
|
|
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) /*override*/;
|
|
|
|
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) override;
|
|
|
|
|
/// <summary>Initialises CP.</summary>
|
|
|
|
|
void Init(double Press) /*override*/;
|
|
|
|
|
void Init(double Press) override;
|
|
|
|
|
/// <summary>Sets the reductor adjustment offset.</summary>
|
|
|
|
|
void SetReductor(double nAdj) /*override*/;
|
|
|
|
|
void SetReductor(double nAdj) override;
|
|
|
|
|
/// <summary>Returns Sounds[i] (or 0 if i > 4).</summary>
|
|
|
|
|
double GetSound(int i) /*override*/;
|
|
|
|
|
double GetSound(int i) override;
|
|
|
|
|
/// <summary>Returns pos_table[i].</summary>
|
|
|
|
|
double GetPos(int i) /*override*/;
|
|
|
|
|
double GetPos(int i) override;
|
|
|
|
|
/// <summary>Returns the regulator pressure (RP).</summary>
|
|
|
|
|
double GetCP() /*override*/;
|
|
|
|
|
double GetCP() override;
|
|
|
|
|
/// <summary>Returns the regulator target (5 + RedAdj).</summary>
|
|
|
|
|
double GetRP() /*override*/;
|
|
|
|
|
double GetRP() override;
|
|
|
|
|
/// <summary>Returns EP brake intensity for the given handle position.</summary>
|
|
|
|
|
double GetEP(double pos);
|
|
|
|
|
double GetEP(double pos) override;
|
|
|
|
|
/// <summary>Configures handle parameters (auto/manual overcharge, over-pressure, overcharge dynamics).</summary>
|
|
|
|
|
void SetParams(bool AO, bool MO, double OverP, double, double OMP, double OPD);
|
|
|
|
|
void SetParams(bool AO, bool MO, double OverP, double, double OMP, double OPD) override;
|
|
|
|
|
/// <summary>Default constructor.</summary>
|
|
|
|
|
inline TMHZ_EN57(void) : TDriverHandle() {}
|
|
|
|
|
};
|
|
|
|
|
@@ -1253,21 +1253,21 @@ class TMHZ_K5P : public TDriverHandle
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
/// <summary>Computes brake pipe flow for the K5P 5-position handle (release / cut-off / brake / emergency).</summary>
|
|
|
|
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) /*override*/;
|
|
|
|
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) override;
|
|
|
|
|
/// <summary>Initialises CP and enables the time chambers.</summary>
|
|
|
|
|
void Init(double Press) /*override*/;
|
|
|
|
|
void Init(double Press) override;
|
|
|
|
|
/// <summary>Sets the reductor adjustment offset.</summary>
|
|
|
|
|
void SetReductor(double nAdj) /*override*/;
|
|
|
|
|
void SetReductor(double nAdj) override;
|
|
|
|
|
/// <summary>Returns Sounds[i] (or 0 if i > 4).</summary>
|
|
|
|
|
double GetSound(int i) /*override*/;
|
|
|
|
|
double GetSound(int i) override;
|
|
|
|
|
/// <summary>Returns pos_table[i].</summary>
|
|
|
|
|
double GetPos(int i) /*override*/;
|
|
|
|
|
double GetPos(int i) override;
|
|
|
|
|
/// <summary>Returns CP.</summary>
|
|
|
|
|
double GetCP() /*override*/;
|
|
|
|
|
double GetCP() override;
|
|
|
|
|
/// <summary>Returns the regulator target (5 + TP + RedAdj).</summary>
|
|
|
|
|
double GetRP() /*override*/;
|
|
|
|
|
double GetRP() override;
|
|
|
|
|
/// <summary>Configures handle parameters (auto/manual overcharge, over-pressure, filling-stroke factor, overcharge dynamics).</summary>
|
|
|
|
|
void SetParams(bool AO, bool MO, double, double, double OMP, double OPD); /*ovveride*/
|
|
|
|
|
void SetParams(bool AO, bool MO, double, double, double OMP, double OPD) override;
|
|
|
|
|
|
|
|
|
|
/// <summary>Default constructor.</summary>
|
|
|
|
|
inline TMHZ_K5P(void) : TDriverHandle() {}
|
|
|
|
|
@@ -1306,21 +1306,21 @@ class TMHZ_6P : public TDriverHandle
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
/// <summary>Computes brake pipe flow for the 6P handle.</summary>
|
|
|
|
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) /*override*/;
|
|
|
|
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) override;
|
|
|
|
|
/// <summary>Initialises CP and enables the time chambers.</summary>
|
|
|
|
|
void Init(double Press) /*override*/;
|
|
|
|
|
void Init(double Press) override;
|
|
|
|
|
/// <summary>Sets the reductor adjustment offset.</summary>
|
|
|
|
|
void SetReductor(double nAdj) /*override*/;
|
|
|
|
|
void SetReductor(double nAdj) override;
|
|
|
|
|
/// <summary>Returns Sounds[i] (or 0 if i > 4).</summary>
|
|
|
|
|
double GetSound(int i) /*override*/;
|
|
|
|
|
double GetSound(int i) override;
|
|
|
|
|
/// <summary>Returns pos_table[i].</summary>
|
|
|
|
|
double GetPos(int i) /*override*/;
|
|
|
|
|
double GetPos(int i) override;
|
|
|
|
|
/// <summary>Returns CP.</summary>
|
|
|
|
|
double GetCP() /*override*/;
|
|
|
|
|
double GetCP() override;
|
|
|
|
|
/// <summary>Returns the regulator target (5 + TP + RedAdj).</summary>
|
|
|
|
|
double GetRP() /*override*/;
|
|
|
|
|
double GetRP() override;
|
|
|
|
|
/// <summary>Configures handle parameters (auto/manual overcharge, over-pressure, filling-stroke factor, overcharge dynamics).</summary>
|
|
|
|
|
void SetParams(bool AO, bool MO, double, double, double OMP, double OPD); /*ovveride*/
|
|
|
|
|
void SetParams(bool AO, bool MO, double, double, double OMP, double OPD) override;
|
|
|
|
|
|
|
|
|
|
/// <summary>Default constructor.</summary>
|
|
|
|
|
inline TMHZ_6P(void) : TDriverHandle() {}
|
|
|
|
|
@@ -1372,17 +1372,17 @@ class TM394 : public TDriverHandle
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
/// <summary>Computes brake pipe flow for the M394 handle (uses BPT_394).</summary>
|
|
|
|
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) /*override*/;
|
|
|
|
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) override;
|
|
|
|
|
/// <summary>Initialises CP and enables the time chamber.</summary>
|
|
|
|
|
void Init(double Press) /*override*/;
|
|
|
|
|
void Init(double Press) override;
|
|
|
|
|
/// <summary>Sets the reductor adjustment offset.</summary>
|
|
|
|
|
void SetReductor(double nAdj) /*override*/;
|
|
|
|
|
void SetReductor(double nAdj) override;
|
|
|
|
|
/// <summary>Returns CP.</summary>
|
|
|
|
|
double GetCP() /*override*/;
|
|
|
|
|
double GetCP() override;
|
|
|
|
|
/// <summary>Returns max(5, CP) + RedAdj.</summary>
|
|
|
|
|
double GetRP() /*override*/;
|
|
|
|
|
double GetRP() override;
|
|
|
|
|
/// <summary>Returns pos_table[i].</summary>
|
|
|
|
|
double GetPos(int i) /*override*/;
|
|
|
|
|
double GetPos(int i) override;
|
|
|
|
|
|
|
|
|
|
/// <summary>Default constructor — sets the maximum handle position to 5.</summary>
|
|
|
|
|
inline TM394(void) : TDriverHandle()
|
|
|
|
|
@@ -1411,17 +1411,17 @@ class TH14K1 : public TDriverHandle
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
/// <summary>Computes brake pipe flow for the H14K1 handle.</summary>
|
|
|
|
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) /*override*/;
|
|
|
|
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) override;
|
|
|
|
|
/// <summary>Initialises CP and enables the time chambers.</summary>
|
|
|
|
|
void Init(double Press) /*override*/;
|
|
|
|
|
void Init(double Press) override;
|
|
|
|
|
/// <summary>Sets the reductor adjustment offset.</summary>
|
|
|
|
|
void SetReductor(double nAdj) /*override*/;
|
|
|
|
|
void SetReductor(double nAdj) override;
|
|
|
|
|
/// <summary>Returns CP.</summary>
|
|
|
|
|
double GetCP() /*override*/;
|
|
|
|
|
double GetCP() override;
|
|
|
|
|
/// <summary>Returns the regulator target (5 + RedAdj).</summary>
|
|
|
|
|
double GetRP() /*override*/;
|
|
|
|
|
double GetRP() override;
|
|
|
|
|
/// <summary>Returns pos_table[i].</summary>
|
|
|
|
|
double GetPos(int i) /*override*/;
|
|
|
|
|
double GetPos(int i) override;
|
|
|
|
|
|
|
|
|
|
/// <summary>Default constructor — sets the maximum handle position to 4.</summary>
|
|
|
|
|
inline TH14K1(void) : TDriverHandle()
|
|
|
|
|
@@ -1450,17 +1450,17 @@ class TSt113 : public TH14K1
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
/// <summary>Computes brake pipe flow for the St113 handle (with EP).</summary>
|
|
|
|
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) /*override*/;
|
|
|
|
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) override;
|
|
|
|
|
/// <summary>Returns CP.</summary>
|
|
|
|
|
double GetCP() /*override*/;
|
|
|
|
|
double GetCP() override;
|
|
|
|
|
/// <summary>Returns the regulator target (5 + RedAdj).</summary>
|
|
|
|
|
double GetRP() /*override*/;
|
|
|
|
|
double GetRP() override;
|
|
|
|
|
/// <summary>Returns the current EP intensity.</summary>
|
|
|
|
|
double GetEP() /*override*/;
|
|
|
|
|
double GetEP() override;
|
|
|
|
|
/// <summary>Returns pos_table[i].</summary>
|
|
|
|
|
double GetPos(int i) /*override*/;
|
|
|
|
|
double GetPos(int i) override;
|
|
|
|
|
/// <summary>Enables the time chambers (no pressure init).</summary>
|
|
|
|
|
void Init(double Press) /*override*/;
|
|
|
|
|
void Init(double Press) override;
|
|
|
|
|
|
|
|
|
|
/// <summary>Default constructor.</summary>
|
|
|
|
|
inline TSt113(void) : TH14K1() {}
|
|
|
|
|
@@ -1479,9 +1479,9 @@ class Ttest : public TDriverHandle
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
/// <summary>Computes brake pipe flow using the FV4a-style BPT table for testing.</summary>
|
|
|
|
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) /*override*/;
|
|
|
|
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) override;
|
|
|
|
|
/// <summary>Initialises CP.</summary>
|
|
|
|
|
void Init(double Press) /*override*/;
|
|
|
|
|
void Init(double Press) override;
|
|
|
|
|
|
|
|
|
|
/// <summary>Default constructor.</summary>
|
|
|
|
|
inline Ttest(void) : TDriverHandle() {}
|
|
|
|
|
@@ -1505,11 +1505,11 @@ class TFD1 : public TDriverHandle
|
|
|
|
|
double Speed = 0.0; // szybkosc dzialania
|
|
|
|
|
|
|
|
|
|
/// <summary>Computes the auxiliary brake outflow for this step.</summary>
|
|
|
|
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) /*override*/;
|
|
|
|
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) override;
|
|
|
|
|
/// <summary>Initialises MaxBP and the action speed.</summary>
|
|
|
|
|
void Init(double Press) /*override*/;
|
|
|
|
|
void Init(double Press) override;
|
|
|
|
|
/// <summary>Returns the currently commanded cylinder pressure (BP).</summary>
|
|
|
|
|
double GetCP() /*override*/;
|
|
|
|
|
double GetCP() override;
|
|
|
|
|
/// <summary>Sets the action speed multiplier.</summary>
|
|
|
|
|
void SetSpeed(double nSpeed);
|
|
|
|
|
// procedure Init(press: real; MaxBP: real); overload;
|
|
|
|
|
@@ -1532,11 +1532,11 @@ class TH1405 : public TDriverHandle
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
/// <summary>Computes the auxiliary brake outflow for this step (proportional to handle deflection).</summary>
|
|
|
|
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) /*override*/;
|
|
|
|
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) override;
|
|
|
|
|
/// <summary>Initialises MaxBP and enables the time chamber.</summary>
|
|
|
|
|
void Init(double Press) /*override*/;
|
|
|
|
|
void Init(double Press) override;
|
|
|
|
|
/// <summary>Returns the currently commanded cylinder pressure (BP).</summary>
|
|
|
|
|
double GetCP() /*override*/;
|
|
|
|
|
double GetCP() override;
|
|
|
|
|
// procedure Init(press: real; MaxBP: real); overload;
|
|
|
|
|
|
|
|
|
|
/// <summary>Default constructor.</summary>
|
|
|
|
|
@@ -1559,19 +1559,19 @@ class TFVel6 : public TDriverHandle
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
/// <summary>Computes brake pipe flow for FVel6 (continuous EP brake plus pneumatic emergency).</summary>
|
|
|
|
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) /*override*/;
|
|
|
|
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) override;
|
|
|
|
|
/// <summary>Returns CP.</summary>
|
|
|
|
|
double GetCP() /*override*/;
|
|
|
|
|
double GetCP() override;
|
|
|
|
|
/// <summary>Returns the regulator target (constant 5 bar).</summary>
|
|
|
|
|
double GetRP() /*override*/;
|
|
|
|
|
double GetRP() override;
|
|
|
|
|
/// <summary>Returns the current EP intensity.</summary>
|
|
|
|
|
double GetEP() /*override*/;
|
|
|
|
|
double GetEP() override;
|
|
|
|
|
/// <summary>Returns pos_table[i].</summary>
|
|
|
|
|
double GetPos(int i) /*override*/;
|
|
|
|
|
double GetPos(int i) override;
|
|
|
|
|
/// <summary>Returns Sounds[i] (or 0 if i > 2).</summary>
|
|
|
|
|
double GetSound(int i) /*override*/;
|
|
|
|
|
double GetSound(int i) override;
|
|
|
|
|
/// <summary>Enables the time chambers.</summary>
|
|
|
|
|
void Init(double Press) /*override*/;
|
|
|
|
|
void Init(double Press) override;
|
|
|
|
|
|
|
|
|
|
/// <summary>Default constructor.</summary>
|
|
|
|
|
inline TFVel6(void) : TDriverHandle() {}
|
|
|
|
|
@@ -1594,19 +1594,19 @@ class TFVE408 : public TDriverHandle
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
/// <summary>Computes brake pipe flow for the FVE408 handle.</summary>
|
|
|
|
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) /*override*/;
|
|
|
|
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) override;
|
|
|
|
|
/// <summary>Returns CP.</summary>
|
|
|
|
|
double GetCP() /*override*/;
|
|
|
|
|
double GetCP() override;
|
|
|
|
|
/// <summary>Returns the current EP intensity.</summary>
|
|
|
|
|
double GetEP() /*override*/;
|
|
|
|
|
double GetEP() override;
|
|
|
|
|
/// <summary>Returns the regulator target (constant 5 bar).</summary>
|
|
|
|
|
double GetRP() /*override*/;
|
|
|
|
|
double GetRP() override;
|
|
|
|
|
/// <summary>Returns pos_table[i].</summary>
|
|
|
|
|
double GetPos(int i) /*override*/;
|
|
|
|
|
double GetPos(int i) override;
|
|
|
|
|
/// <summary>Returns Sounds[i] (or 0 if i > 2).</summary>
|
|
|
|
|
double GetSound(int i) /*override*/;
|
|
|
|
|
double GetSound(int i) override;
|
|
|
|
|
/// <summary>Enables the time chamber, disables the EP-time chamber.</summary>
|
|
|
|
|
void Init(double Press) /*override*/;
|
|
|
|
|
void Init(double Press) override;
|
|
|
|
|
|
|
|
|
|
/// <summary>Default constructor.</summary>
|
|
|
|
|
inline TFVE408(void) : TDriverHandle() {}
|
|
|
|
|
|