mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-18 01:59:19 +02:00
miscellaneous bug fixes.
This commit is contained in:
24
Driver.cpp
24
Driver.cpp
@@ -28,7 +28,7 @@ http://mozilla.org/MPL/2.0/.
|
||||
#include "McZapkie/MOVER.h"
|
||||
|
||||
#define LOGVELOCITY 0
|
||||
#define LOGORDERS 0
|
||||
#define LOGORDERS 1
|
||||
#define LOGSTOPS 1
|
||||
#define LOGBACKSCAN 0
|
||||
#define LOGPRESS 0
|
||||
@@ -2354,7 +2354,7 @@ bool TController::IncBrake()
|
||||
*/
|
||||
// dodane dla towarowego
|
||||
if (mvOccupied->BrakeDelayFlag == bdelay_G ?
|
||||
-AccDesired * 6.6 > Min0R(2, mvOccupied->BrakeCtrlPos) :
|
||||
-AccDesired * 6.6 > std::min(2, mvOccupied->BrakeCtrlPos) :
|
||||
true)
|
||||
{
|
||||
OK = mvOccupied->IncBrakeLevel();
|
||||
@@ -3254,6 +3254,7 @@ bool TController::UpdateSituation(double dt)
|
||||
{ // uruchamiać przynajmniej raz na sekundę
|
||||
if ((iDrivigFlags & movePrimary) == 0)
|
||||
return true; // pasywny nic nie robi
|
||||
|
||||
double AbsAccS;
|
||||
// double VelReduced; //o ile km/h może przekroczyć dozwoloną prędkość bez hamowania
|
||||
bool UpdateOK = false;
|
||||
@@ -3593,8 +3594,7 @@ bool TController::UpdateSituation(double dt)
|
||||
if ((mvControlling->MainCtrlPos > 0) ||
|
||||
(mvOccupied->BrakeSystem == ElectroPneumatic)) // jeśli jazda
|
||||
{
|
||||
// WriteLog("Odczepianie w kierunku
|
||||
// "+AnsiString(mvOccupied->DirAbsolute));
|
||||
WriteLog(mvOccupied->Name + " odczepianie w kierunku " + std::to_string(mvOccupied->DirAbsolute));
|
||||
TDynamicObject *p =
|
||||
pVehicle; // pojazd do odczepienia, w (pVehicle) siedzi AI
|
||||
int d; // numer sprzęgu, który sprawdzamy albo odczepiamy
|
||||
@@ -3629,14 +3629,14 @@ bool TController::UpdateSituation(double dt)
|
||||
else if (!p->Dettach(d)) // zwraca maskę bitową połączenia; usuwa
|
||||
// własność pojazdów
|
||||
{ // tylko jeśli odepnie
|
||||
// WriteLog("Odczepiony od strony ");
|
||||
WriteLog( mvOccupied->Name + " odczepiony." );
|
||||
iVehicleCount = -2;
|
||||
} // a jak nie, to dociskać dalej
|
||||
}
|
||||
if (iVehicleCount >= 0) // zmieni się po odczepieniu
|
||||
if (!mvOccupied->DecLocalBrakeLevel(1))
|
||||
{ // dociśnij sklad
|
||||
// WriteLog("Dociskanie");
|
||||
WriteLog( mvOccupied->Name + " dociskanie..." );
|
||||
// mvOccupied->BrakeReleaser(); //wyluzuj lokomotywę
|
||||
// Ready=true; //zamiast sprawdzenia odhamowania całego składu
|
||||
IncSpeed(); // dla (Ready)==false nie ruszy
|
||||
@@ -3665,7 +3665,7 @@ bool TController::UpdateSituation(double dt)
|
||||
mvOccupied->BrakeLevelSet(0); // wyłączenie EP, gdy wystarczy (może
|
||||
// nie być potrzebne, bo na początku
|
||||
// jest)
|
||||
// WriteLog("Luzowanie lokomotywy i zmiana kierunku");
|
||||
WriteLog("Luzowanie lokomotywy i zmiana kierunku");
|
||||
mvOccupied->BrakeReleaser(1); // wyluzuj lokomotywę; a ST45?
|
||||
mvOccupied->DecLocalBrakeLevel(10); // zwolnienie hamulca
|
||||
iDrivigFlags |= movePress; // następnie będzie dociskanie
|
||||
@@ -3683,7 +3683,7 @@ bool TController::UpdateSituation(double dt)
|
||||
SetVelocity(0, 0, stopJoin); // wyłączyć przyspieszanie
|
||||
if (!DecSpeed()) // jeśli już bardziej wyłączyć się nie da
|
||||
{ // ponowna zmiana kierunku
|
||||
// WriteLog("Ponowna zmiana kierunku");
|
||||
WriteLog( mvOccupied->Name + " ponowna zmiana kierunku" );
|
||||
DirectionForward(mvOccupied->ActiveDir <
|
||||
0); // zmiana kierunku jazdy na właściwy
|
||||
iDrivigFlags &= ~movePress; // koniec dociskania
|
||||
@@ -3752,6 +3752,7 @@ bool TController::UpdateSituation(double dt)
|
||||
fVelPlus = 2.0; // dopuszczalne przekroczenie prędkości na ograniczeniu bez hamowania
|
||||
fVelMinus = 5.0; // margines prędkości powodujący załączenie napędu
|
||||
} // switch
|
||||
|
||||
switch (OrderList[OrderPos])
|
||||
{ // co robi maszynista
|
||||
case Prepare_engine: // odpala silnik
|
||||
@@ -3771,7 +3772,7 @@ bool TController::UpdateSituation(double dt)
|
||||
}
|
||||
break;
|
||||
case Release_engine:
|
||||
if (ReleaseEngine()) // zdana maszyna?
|
||||
if( ReleaseEngine() ) // zdana maszyna?
|
||||
JumpToNextOrder();
|
||||
break;
|
||||
case Jump_to_first_order:
|
||||
@@ -5273,12 +5274,9 @@ void TController::TakeControl(bool yes)
|
||||
// gdy zgaszone światła, flaga podjeżdżania pod semafory pozostaje bez zmiany
|
||||
// conditional below disabled to get around the situation where the AI train does nothing ever
|
||||
// because it is waiting for orders which don't come until the engine is engaged, i.e. effectively never
|
||||
/*
|
||||
if (OrderCurrentGet()) // jeśli coś robi
|
||||
*/ PrepareEngine(); // niech sprawdzi stan silnika
|
||||
/*
|
||||
PrepareEngine(); // niech sprawdzi stan silnika
|
||||
else // jeśli nic nie robi
|
||||
*/
|
||||
if (pVehicle->iLights[mvOccupied->CabNo < 0 ? 1 : 0] &
|
||||
21) // któreś ze świateł zapalone?
|
||||
{ // od wersji 357 oczekujemy podania komend dla AI przez scenerię
|
||||
|
||||
@@ -66,8 +66,8 @@ bool TEventLauncher::Load(cParser *parser)
|
||||
*parser >> token;
|
||||
if (token != "none")
|
||||
{
|
||||
if (token.length() == 1)
|
||||
iKey = VkKeyScan(token[1]); // jeden znak jest konwertowany na kod klawisza
|
||||
if (token.size() == 1)
|
||||
iKey = VkKeyScan(token[0]); // jeden znak jest konwertowany na kod klawisza
|
||||
else
|
||||
iKey = stol_def(token,0); // a jak więcej, to jakby numer klawisza jest
|
||||
}
|
||||
|
||||
27
Ground.cpp
27
Ground.cpp
@@ -2653,26 +2653,29 @@ bool TGround::Init(std::string asFile, HDC hDC)
|
||||
TEvent *found = FindEvent(tmp->asName);
|
||||
if (found)
|
||||
{ // jeśli znaleziony duplikat
|
||||
int i = tmp->asName.length();
|
||||
if (tmp->asName[1] == '#') // zawsze jeden znak co najmniej jest
|
||||
auto const size = tmp->asName.size();
|
||||
if( tmp->asName[0] == '#' ) // zawsze jeden znak co najmniej jest
|
||||
{
|
||||
delete tmp;
|
||||
tmp = NULL;
|
||||
tmp = nullptr;
|
||||
} // utylizacja duplikatu z krzyżykiem
|
||||
else if (i > 8 ? tmp->asName.substr(0, 9) == "lineinfo:" :
|
||||
false) // tymczasowo wyjątki
|
||||
else if( ( size > 8 )
|
||||
&& ( tmp->asName.substr( 0, 9 ) == "lineinfo:" ))
|
||||
// tymczasowo wyjątki
|
||||
{
|
||||
delete tmp;
|
||||
tmp = NULL;
|
||||
tmp = nullptr;
|
||||
} // tymczasowa utylizacja duplikatów W5
|
||||
else if (i > 8 ? tmp->asName.substr(i - 7, 8) == "_warning" :
|
||||
false) // tymczasowo wyjątki
|
||||
else if( ( size > 8 )
|
||||
&& ( tmp->asName.substr( size - 8 ) == "_warning"))
|
||||
// tymczasowo wyjątki
|
||||
{
|
||||
delete tmp;
|
||||
tmp = NULL;
|
||||
tmp = nullptr;
|
||||
} // tymczasowa utylizacja duplikatu z trąbieniem
|
||||
else if (i > 4 ? tmp->asName.substr(i - 3, 4) == "_shp" :
|
||||
false) // nie podlegają logowaniu
|
||||
else if( ( size > 4 )
|
||||
&& ( tmp->asName.substr( size - 4 ) == "_shp" ))
|
||||
// nie podlegają logowaniu
|
||||
{
|
||||
delete tmp;
|
||||
tmp = NULL;
|
||||
@@ -2690,7 +2693,7 @@ bool TGround::Init(std::string asFile, HDC hDC)
|
||||
// zaśmiecać drzewka
|
||||
}
|
||||
}
|
||||
if (tmp)
|
||||
if ( nullptr != tmp )
|
||||
{ // jeśli nie duplikat
|
||||
tmp->evNext2 = RootEvent; // lista wszystkich eventów (m.in. do InitEvents)
|
||||
RootEvent = tmp;
|
||||
|
||||
@@ -1150,7 +1150,8 @@ private:
|
||||
extern double Distance(TLocation Loc1, TLocation Loc2, TDimension Dim1, TDimension Dim2);
|
||||
|
||||
template <typename _Type>
|
||||
bool getkeyval( _Type &Variable, std::string const &Key, std::string const &Input, std::string const &Default ) {
|
||||
bool
|
||||
extract_value( _Type &Variable, std::string const &Key, std::string const &Input, std::string const &Default ) {
|
||||
|
||||
auto value = extract_value( Key, Input );
|
||||
if( false == value.empty() ) {
|
||||
|
||||
@@ -2737,7 +2737,7 @@ bool TMoverParameters::BrakeDelaySwitch(int BDS)
|
||||
{
|
||||
BrakeDelayFlag = BDS;
|
||||
rBDS = true;
|
||||
BrakeStatus = (BrakeStatus & 191);
|
||||
BrakeStatus &= 191;
|
||||
// kopowanie nastawy hamulca do kolejnego czlonu - do przemyślenia
|
||||
if (CabNo != 0)
|
||||
SendCtrlToNext("BrakeDelay", BrakeDelayFlag, CabNo);
|
||||
@@ -3350,8 +3350,10 @@ void TMoverParameters::ComputeTotalForce(double dt, double dt1, bool FullVer)
|
||||
Vel = abs(V) * 3.6; // prędkość w km/h
|
||||
nrot = v2n(); // przeliczenie prędkości liniowej na obrotową
|
||||
|
||||
if (TestFlag(BrakeMethod, bp_MHS) && (PipePress < 3.0) && (Vel > 45) &&
|
||||
TestFlag(BrakeDelayFlag, bdelay_M)) // ustawione na sztywno na 3 bar
|
||||
if( (true == TestFlag(BrakeMethod, bp_MHS))
|
||||
&& (PipePress < 3.0)
|
||||
&& (Vel > 45)
|
||||
&& (true == TestFlag(BrakeDelayFlag, bdelay_M))) // ustawione na sztywno na 3 bar
|
||||
FStand += TrackBrakeForce; // doliczenie hamowania hamulcem szynowym
|
||||
// w charakterystykach jest wartość siły hamowania zamiast nacisku
|
||||
// if(FullVer=true) then
|
||||
@@ -3496,7 +3498,7 @@ double TMoverParameters::BrakeForce(const TTrackParam &Track)
|
||||
{
|
||||
if (Ntotal > 0) // nie luz
|
||||
K += Ntotal; // w kN
|
||||
K *= BrakeCylNo / (NBrakeAxles * NBpA); // w kN na os
|
||||
K *= static_cast<double>(BrakeCylNo) / (NBrakeAxles * static_cast<double>(NBpA)); // w kN na os
|
||||
}
|
||||
if ((BrakeSystem == Pneumatic) || (BrakeSystem == ElectroPneumatic))
|
||||
{
|
||||
@@ -6197,13 +6199,13 @@ bool TMoverParameters::LoadFIZ(std::string chkpath)
|
||||
|
||||
void TMoverParameters::LoadFIZ_Param( std::string const &line ) {
|
||||
|
||||
getkeyval( Mass, "M", line, "0" );
|
||||
getkeyval( Mred, "Mred", line, "0" );
|
||||
getkeyval( Vmax, "Vmax", line, "0" );
|
||||
getkeyval( Power, "PWR", line, "0" );
|
||||
getkeyval( SandCapacity, "SandCap", line, "0" );
|
||||
getkeyval( HeatingPower, "HeatingP", line, "0" );
|
||||
getkeyval( LightPower, "LightP", line, "0" );
|
||||
extract_value( Mass, "M", line, "0" );
|
||||
extract_value( Mred, "Mred", line, "0" );
|
||||
extract_value( Vmax, "Vmax", line, "0" );
|
||||
extract_value( Power, "PWR", line, "0" );
|
||||
extract_value( SandCapacity, "SandCap", line, "0" );
|
||||
extract_value( HeatingPower, "HeatingP", line, "0" );
|
||||
extract_value( LightPower, "LightP", line, "0" );
|
||||
|
||||
{
|
||||
std::map<std::string, int> categories{
|
||||
@@ -6213,7 +6215,7 @@ void TMoverParameters::LoadFIZ_Param( std::string const &line ) {
|
||||
{ "ship", 4 },
|
||||
{ "airplane,", 8 }
|
||||
};
|
||||
std::string category; getkeyval( category, "Category", line, "none" );
|
||||
std::string category; extract_value( category, "Category", line, "none" );
|
||||
auto lookup = categories.find( category );
|
||||
CategoryFlag = (
|
||||
lookup != categories.end() ?
|
||||
@@ -6237,7 +6239,7 @@ void TMoverParameters::LoadFIZ_Param( std::string const &line ) {
|
||||
{ "181", dt_181 },
|
||||
{ "182", dt_181 } // na razie tak
|
||||
};
|
||||
std::string type; getkeyval( type, "Type", line, "none" );
|
||||
std::string type; extract_value( type, "Type", line, "none" );
|
||||
auto lookup = types.find( ToLower( type ) );
|
||||
TrainType = (
|
||||
lookup != types.end() ?
|
||||
@@ -6255,24 +6257,25 @@ void TMoverParameters::LoadFIZ_Param( std::string const &line ) {
|
||||
|
||||
void TMoverParameters::LoadFIZ_Load( std::string const &line ) {
|
||||
|
||||
getkeyval( LoadAccepted, "LoadAccepted", line, "" );
|
||||
extract_value( LoadAccepted, "LoadAccepted", line, "" );
|
||||
if( true == LoadAccepted.empty() ) {
|
||||
return;
|
||||
}
|
||||
LoadAccepted = ToLower( LoadAccepted );
|
||||
|
||||
getkeyval( MaxLoad, "MaxLoad", line, "" );
|
||||
getkeyval( LoadQuantity, "LoadQ", line, "" );
|
||||
getkeyval( OverLoadFactor, "OverLoadFactor", line, "" );
|
||||
getkeyval( LoadSpeed, "LoadSpeed", line, "" );
|
||||
getkeyval( UnLoadSpeed, "UnLoadSpeed", line, "" );
|
||||
extract_value( MaxLoad, "MaxLoad", line, "" );
|
||||
extract_value( LoadQuantity, "LoadQ", line, "" );
|
||||
extract_value( OverLoadFactor, "OverLoadFactor", line, "" );
|
||||
extract_value( LoadSpeed, "LoadSpeed", line, "" );
|
||||
extract_value( UnLoadSpeed, "UnLoadSpeed", line, "" );
|
||||
}
|
||||
|
||||
void TMoverParameters::LoadFIZ_Dimensions( std::string const &line ) {
|
||||
|
||||
getkeyval( Dim.L, "L", line, "" );
|
||||
getkeyval( Dim.H, "H", line, "" );
|
||||
getkeyval( Dim.W, "W", line, "" );
|
||||
getkeyval( Cx, "Cx", line, "0.3" );
|
||||
extract_value( Dim.L, "L", line, "" );
|
||||
extract_value( Dim.H, "H", line, "" );
|
||||
extract_value( Dim.W, "W", line, "" );
|
||||
extract_value( Cx, "Cx", line, "0.3" );
|
||||
if( Dim.H <= 2.0 ) {
|
||||
//gdyby nie było parametru, lepsze to niż zero
|
||||
Floor = Dim.H;
|
||||
@@ -6281,22 +6284,22 @@ void TMoverParameters::LoadFIZ_Dimensions( std::string const &line ) {
|
||||
//zgodność wsteczna
|
||||
Floor = 0.0;
|
||||
}
|
||||
getkeyval( Floor, "Floor", line, "" );
|
||||
extract_value( Floor, "Floor", line, "" );
|
||||
}
|
||||
|
||||
void TMoverParameters::LoadFIZ_Wheels( std::string const &line ) {
|
||||
|
||||
getkeyval( WheelDiameter, "D", line, "" );
|
||||
extract_value( WheelDiameter, "D", line, "" );
|
||||
WheelDiameterL = WheelDiameter; //gdyby nie było parametru, lepsze to niż zero
|
||||
getkeyval( WheelDiameterL, "Dl", line, "" );
|
||||
extract_value( WheelDiameterL, "Dl", line, "" );
|
||||
WheelDiameterT = WheelDiameter; //gdyby nie było parametru, lepsze to niż zero
|
||||
getkeyval( WheelDiameterT, "Dt", line, "" );
|
||||
extract_value( WheelDiameterT, "Dt", line, "" );
|
||||
|
||||
getkeyval( TrackW, "Tw", line, "" );
|
||||
getkeyval( AxleInertialMoment, "AIM", line, "" );
|
||||
extract_value( TrackW, "Tw", line, "" );
|
||||
extract_value( AxleInertialMoment, "AIM", line, "" );
|
||||
if( AxleInertialMoment <= 0.0 ) { AxleInertialMoment = 1.0; }
|
||||
|
||||
getkeyval( AxleArangement, "Axle", line, "" );
|
||||
extract_value( AxleArangement, "Axle", line, "" );
|
||||
NPoweredAxles = s2NPW( AxleArangement );
|
||||
NAxles = NPoweredAxles + s2NNW( AxleArangement );
|
||||
|
||||
@@ -6305,8 +6308,8 @@ void TMoverParameters::LoadFIZ_Wheels( std::string const &line ) {
|
||||
1 :
|
||||
0;
|
||||
|
||||
getkeyval( ADist, "Ad", line, "" );
|
||||
getkeyval( BDist, "Bd", line, "" );
|
||||
extract_value( ADist, "Ad", line, "" );
|
||||
extract_value( BDist, "Bd", line, "" );
|
||||
}
|
||||
|
||||
void TMoverParameters::LoadFIZ_Brake( std::string const &line ) {
|
||||
@@ -6314,33 +6317,33 @@ void TMoverParameters::LoadFIZ_Brake( std::string const &line ) {
|
||||
BrakeValveDecode( extract_value( "BrakeValve", line ) );
|
||||
BrakeSubsystemDecode();
|
||||
|
||||
getkeyval( NBpA, "NBpA", line, "" );
|
||||
getkeyval( MaxBrakeForce, "MBF", line, "" );
|
||||
getkeyval( BrakeValveSize, "Size", line, "" );
|
||||
getkeyval( TrackBrakeForce, "TBF", line, "" ); TrackBrakeForce *= 1000.0;
|
||||
extract_value( NBpA, "NBpA", line, "" );
|
||||
extract_value( MaxBrakeForce, "MBF", line, "" );
|
||||
extract_value( BrakeValveSize, "Size", line, "" );
|
||||
extract_value( TrackBrakeForce, "TBF", line, "" ); TrackBrakeForce *= 1000.0;
|
||||
|
||||
getkeyval( MaxBrakePress[ 3 ], "MaxBP", line, "" );
|
||||
extract_value( MaxBrakePress[ 3 ], "MaxBP", line, "" );
|
||||
if( MaxBrakePress[ 3 ] > 0.0 ) {
|
||||
|
||||
getkeyval( BrakeCylNo, "BCN", line, "" );
|
||||
extract_value( BrakeCylNo, "BCN", line, "" );
|
||||
if( BrakeCylNo > 0 ) {
|
||||
|
||||
getkeyval( MaxBrakePress[ 0 ], "MaxLBP", line, "" );
|
||||
extract_value( MaxBrakePress[ 0 ], "MaxLBP", line, "" );
|
||||
if( MaxBrakePress[ 0 ] < 0.01 ) { MaxBrakePress[ 0 ] = MaxBrakePress[ 3 ]; }
|
||||
getkeyval( MaxBrakePress[ 1 ], "TareMaxBP", line, "" );
|
||||
getkeyval( MaxBrakePress[ 2 ], "MedMaxBP", line, "" );
|
||||
getkeyval( MaxBrakePress[ 4 ], "MaxASBP", line, "" );
|
||||
extract_value( MaxBrakePress[ 1 ], "TareMaxBP", line, "" );
|
||||
extract_value( MaxBrakePress[ 2 ], "MedMaxBP", line, "" );
|
||||
extract_value( MaxBrakePress[ 4 ], "MaxASBP", line, "" );
|
||||
if( MaxBrakePress[ 4 ] < 0.01 ) { MaxBrakePress[ 4 ] = 0.0; }
|
||||
|
||||
getkeyval( BrakeCylRadius, "BCR", line, "" );
|
||||
getkeyval( BrakeCylDist, "BCD", line, "" );
|
||||
getkeyval( BrakeCylSpring, "BCS", line, "" );
|
||||
getkeyval( BrakeSlckAdj, "BSA", line, "" );
|
||||
getkeyval( BrakeRigEff, "BRE", line, "1" );
|
||||
extract_value( BrakeCylRadius, "BCR", line, "" );
|
||||
extract_value( BrakeCylDist, "BCD", line, "" );
|
||||
extract_value( BrakeCylSpring, "BCS", line, "" );
|
||||
extract_value( BrakeSlckAdj, "BSA", line, "" );
|
||||
extract_value( BrakeRigEff, "BRE", line, "1" );
|
||||
|
||||
getkeyval( BrakeCylMult[ 0 ], "BCM", line, "" );
|
||||
getkeyval( BrakeCylMult[ 1 ], "BCMlo", line, "" );
|
||||
getkeyval( BrakeCylMult[ 2 ], "BCMHi", line, "" );
|
||||
extract_value( BrakeCylMult[ 0 ], "BCM", line, "" );
|
||||
extract_value( BrakeCylMult[ 1 ], "BCMlo", line, "" );
|
||||
extract_value( BrakeCylMult[ 2 ], "BCMHi", line, "" );
|
||||
|
||||
P2FTrans = 100 * M_PI * std::pow( BrakeCylRadius, 2 ); // w kN/bar
|
||||
|
||||
@@ -6348,7 +6351,7 @@ void TMoverParameters::LoadFIZ_Brake( std::string const &line ) {
|
||||
else { LoadFlag = 0; }
|
||||
|
||||
BrakeVolume = M_PI * std::pow( BrakeCylRadius, 2 ) * BrakeCylDist * BrakeCylNo;
|
||||
getkeyval( BrakeVVolume, "BVV", line, "" );
|
||||
extract_value( BrakeVVolume, "BVV", line, "" );
|
||||
|
||||
{
|
||||
std::map<std::string, int> brakemethods{
|
||||
@@ -6370,7 +6373,7 @@ void TMoverParameters::LoadFIZ_Brake( std::string const &line ) {
|
||||
0;
|
||||
}
|
||||
|
||||
getkeyval( RapidMult, "RM", line, "1" );
|
||||
extract_value( RapidMult, "RM", line, "1" );
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -6379,18 +6382,18 @@ void TMoverParameters::LoadFIZ_Brake( std::string const &line ) {
|
||||
}
|
||||
|
||||
CntrlPipePress = 5 + 0.001 * ( Random( 10 ) - Random( 10 ) ); //Ra 2014-07: trochę niedokładności
|
||||
getkeyval( CntrlPipePress, "HiPP", line, "" );
|
||||
extract_value( CntrlPipePress, "HiPP", line, "" );
|
||||
HighPipePress = CntrlPipePress;
|
||||
LowPipePress = std::min( HighPipePress, 3.5 );
|
||||
getkeyval( LowPipePress, "LoPP", line, "" );
|
||||
extract_value( LowPipePress, "LoPP", line, "" );
|
||||
DeltaPipePress = HighPipePress - LowPipePress;
|
||||
|
||||
getkeyval( VeselVolume, "Vv", line, "" );
|
||||
extract_value( VeselVolume, "Vv", line, "" );
|
||||
if( VeselVolume == 0.0 ) { VeselVolume = 0.01; }
|
||||
|
||||
getkeyval( MinCompressor, "MinCP", line, "" );
|
||||
getkeyval( MaxCompressor, "MaxCP", line, "" );
|
||||
getkeyval( CompressorSpeed, "CompressorSpeed", line, "" );
|
||||
extract_value( MinCompressor, "MinCP", line, "" );
|
||||
extract_value( MaxCompressor, "MaxCP", line, "" );
|
||||
extract_value( CompressorSpeed, "CompressorSpeed", line, "" );
|
||||
{
|
||||
std::map<std::string, int> compressorpowers{
|
||||
{ "Converter", 2 },
|
||||
@@ -6410,39 +6413,39 @@ void TMoverParameters::LoadFIZ_Brake( std::string const &line ) {
|
||||
void TMoverParameters::LoadFIZ_Doors( std::string const &line ) {
|
||||
|
||||
DoorOpenCtrl = 0;
|
||||
std::string openctrl; getkeyval( openctrl, "OpenCtrl", line, "" );
|
||||
std::string openctrl; extract_value( openctrl, "OpenCtrl", line, "" );
|
||||
if( openctrl == "DriverCtrl" ) { DoorOpenCtrl = 1; }
|
||||
|
||||
DoorCloseCtrl = 0;
|
||||
std::string closectrl; getkeyval( closectrl, "CloseCtrl", line, "" );
|
||||
std::string closectrl; extract_value( closectrl, "CloseCtrl", line, "" );
|
||||
if( closectrl == "DriverCtrl" ) { DoorCloseCtrl = 1; }
|
||||
else if( closectrl == "AutomaticCtrl" ) { DoorCloseCtrl = 2; }
|
||||
|
||||
if( DoorCloseCtrl == 2 ) { getkeyval( DoorStayOpen, "DoorStayOpen", line, "" ); }
|
||||
if( DoorCloseCtrl == 2 ) { extract_value( DoorStayOpen, "DoorStayOpen", line, "" ); }
|
||||
|
||||
getkeyval( DoorOpenSpeed, "OpenSpeed", line, "" );
|
||||
getkeyval( DoorCloseSpeed, "CloseSpeed", line, "" );
|
||||
getkeyval( DoorMaxShiftL, "DoorMaxShiftL", line, "" );
|
||||
getkeyval( DoorMaxShiftR, "DoorMaxShiftR", line, "" );
|
||||
extract_value( DoorOpenSpeed, "OpenSpeed", line, "" );
|
||||
extract_value( DoorCloseSpeed, "CloseSpeed", line, "" );
|
||||
extract_value( DoorMaxShiftL, "DoorMaxShiftL", line, "" );
|
||||
extract_value( DoorMaxShiftR, "DoorMaxShiftR", line, "" );
|
||||
|
||||
DoorOpenMethod = 2; //obrót, default
|
||||
std::string openmethod; getkeyval( openmethod, "DoorOpenMethod", line, "" );
|
||||
std::string openmethod; extract_value( openmethod, "DoorOpenMethod", line, "" );
|
||||
if( openmethod == "Shift" ) { DoorOpenMethod = 1; } //przesuw
|
||||
else if( openmethod == "Fold" ) { DoorOpenMethod = 3; } //3 submodele się obracają
|
||||
else if( openmethod == "Plug" ) { DoorOpenMethod = 4; } //odskokowo-przesuwne
|
||||
|
||||
std::string closurewarning; getkeyval( closurewarning, "DoorClosureWarning", line, "" );
|
||||
std::string closurewarning; extract_value( closurewarning, "DoorClosureWarning", line, "" );
|
||||
DoorClosureWarning = ( closurewarning == "Yes" );
|
||||
|
||||
std::string doorblocked; getkeyval( doorblocked, "DoorBlocked", line, "" );
|
||||
std::string doorblocked; extract_value( doorblocked, "DoorBlocked", line, "" );
|
||||
DoorBlocked = ( doorblocked == "Yes" );
|
||||
|
||||
getkeyval( DoorMaxPlugShift, "DoorMaxShiftPlug", line, "" );
|
||||
getkeyval( PlatformSpeed, "PlatformSpeed", line, "" );
|
||||
getkeyval( PlatformMaxShift, "PlatformMaxSpeed", line, "" );
|
||||
extract_value( DoorMaxPlugShift, "DoorMaxShiftPlug", line, "" );
|
||||
extract_value( PlatformSpeed, "PlatformSpeed", line, "" );
|
||||
extract_value( PlatformMaxShift, "PlatformMaxSpeed", line, "" );
|
||||
|
||||
PlatformOpenMethod = 2; // obrót, default
|
||||
std::string platformopenmethod; getkeyval( platformopenmethod, "PlatformOpenMethod", line, "" );
|
||||
std::string platformopenmethod; extract_value( platformopenmethod, "PlatformOpenMethod", line, "" );
|
||||
if( platformopenmethod == "Shift" ) { PlatformOpenMethod = 1; } // przesuw
|
||||
}
|
||||
|
||||
@@ -6465,14 +6468,14 @@ void TMoverParameters::LoadFIZ_BuffCoupl( std::string const &line, int const Ind
|
||||
lookup->second :
|
||||
NoCoupler );
|
||||
|
||||
getkeyval( coupler->SpringKC, "kC", line, "" );
|
||||
getkeyval( coupler->DmaxC, "DmaxC", line, "" );
|
||||
getkeyval( coupler->FmaxC, "FmaxC", line, "" );
|
||||
getkeyval( coupler->SpringKB, "kB", line, "" );
|
||||
getkeyval( coupler->DmaxB, "DmaxB", line, "" );
|
||||
getkeyval( coupler->FmaxB, "FmaxB", line, "" );
|
||||
getkeyval( coupler->beta, "beta", line, "" );
|
||||
getkeyval( coupler->AllowedFlag, "AllowedFlag", line, "" );
|
||||
extract_value( coupler->SpringKC, "kC", line, "" );
|
||||
extract_value( coupler->DmaxC, "DmaxC", line, "" );
|
||||
extract_value( coupler->FmaxC, "FmaxC", line, "" );
|
||||
extract_value( coupler->SpringKB, "kB", line, "" );
|
||||
extract_value( coupler->DmaxB, "DmaxB", line, "" );
|
||||
extract_value( coupler->FmaxB, "FmaxB", line, "" );
|
||||
extract_value( coupler->beta, "beta", line, "" );
|
||||
extract_value( coupler->AllowedFlag, "AllowedFlag", line, "" );
|
||||
|
||||
if( coupler->AllowedFlag < 0 ) {
|
||||
|
||||
@@ -6517,7 +6520,7 @@ void TMoverParameters::LoadFIZ_BuffCoupl( std::string const &line, int const Ind
|
||||
|
||||
void TMoverParameters::LoadFIZ_TurboPos( std::string const &Input ) {
|
||||
|
||||
getkeyval( TurboTest, "TurboPos", Input, "" );
|
||||
extract_value( TurboTest, "TurboPos", Input, "" );
|
||||
}
|
||||
|
||||
void TMoverParameters::LoadFIZ_Cntrl( std::string const &line ) {
|
||||
@@ -6535,10 +6538,10 @@ void TMoverParameters::LoadFIZ_Cntrl( std::string const &line ) {
|
||||
}
|
||||
if( BrakeSystem != Individual ) {
|
||||
|
||||
getkeyval( BrakeCtrlPosNo, "BCPN", line, "" );
|
||||
extract_value( BrakeCtrlPosNo, "BCPN", line, "" );
|
||||
for( int idx = 0; idx < 4; ++idx ) {
|
||||
|
||||
getkeyval( BrakeDelay[ idx ], "BDelay" + std::to_string( idx + 1 ), line, "" );
|
||||
extract_value( BrakeDelay[ idx ], "BDelay" + std::to_string( idx + 1 ), line, "" );
|
||||
}
|
||||
// brakedelays, brakedelayflag
|
||||
{
|
||||
@@ -6558,7 +6561,7 @@ void TMoverParameters::LoadFIZ_Cntrl( std::string const &line ) {
|
||||
{ "G", bdelay_G }
|
||||
};
|
||||
std::string brakedelay;
|
||||
getkeyval( brakedelay, "BrakeDelays", line, "" );
|
||||
extract_value( brakedelay, "BrakeDelays", line, "" );
|
||||
auto lookup = brakedelays.find( brakedelay );
|
||||
BrakeDelays =
|
||||
lookup != brakedelays.end() ?
|
||||
@@ -6573,7 +6576,7 @@ void TMoverParameters::LoadFIZ_Cntrl( std::string const &line ) {
|
||||
// brakeopmode
|
||||
{
|
||||
std::map<std::string, int> brakeopmodes{
|
||||
{ "PM", bom_PS + bom_PN },
|
||||
{ "PN", bom_PS + bom_PN },
|
||||
{ "PNEPMED", bom_PS + bom_PN + bom_EP + bom_MED }
|
||||
};
|
||||
auto lookup = brakeopmodes.find( extract_value( "BrakeOpModes", line ) );
|
||||
@@ -6616,12 +6619,12 @@ void TMoverParameters::LoadFIZ_Cntrl( std::string const &line ) {
|
||||
}
|
||||
|
||||
// mbpm
|
||||
getkeyval( MBPM, "MaxBPMass", line, "" );
|
||||
MBPM *= 1000;
|
||||
extract_value( MBPM, "MaxBPMass", line, "" );
|
||||
// MBPM *= 1000;
|
||||
|
||||
// asbtype
|
||||
std::string asb;
|
||||
getkeyval( asb, "ASB", line, "" );
|
||||
extract_value( asb, "ASB", line, "" );
|
||||
if( BrakeCtrlPosNo > 0 ) {
|
||||
|
||||
if( asb == "Manual" ) { ASBType = 1; }
|
||||
@@ -6663,12 +6666,12 @@ void TMoverParameters::LoadFIZ_Cntrl( std::string const &line ) {
|
||||
dbrake_none;
|
||||
}
|
||||
|
||||
getkeyval( MainCtrlPosNo, "MCPN", line, "" );
|
||||
getkeyval( ScndCtrlPosNo, "SCPN", line, "" );
|
||||
getkeyval( ScndInMain, "SCIM", line, "" );
|
||||
extract_value( MainCtrlPosNo, "MCPN", line, "" );
|
||||
extract_value( ScndCtrlPosNo, "SCPN", line, "" );
|
||||
extract_value( ScndInMain, "SCIM", line, "" );
|
||||
|
||||
std::string autorelay;
|
||||
getkeyval( autorelay, "AutoRelay", line, "" );
|
||||
extract_value( autorelay, "AutoRelay", line, "" );
|
||||
if( autorelay == "Optional" ) { AutoRelayType = 2; }
|
||||
else if( autorelay == "Yes" ) { AutoRelayType = 1; }
|
||||
else { AutoRelayType = 0; }
|
||||
@@ -6677,10 +6680,10 @@ void TMoverParameters::LoadFIZ_Cntrl( std::string const &line ) {
|
||||
|
||||
ScndS = ( extract_value( "ScndS", line ) == "Yes" ); // brak pozycji rownoleglej przy niskiej nastawie PSR
|
||||
|
||||
getkeyval( InitialCtrlDelay, "IniCDelay", line, "" );
|
||||
getkeyval( CtrlDelay, "SCDelay", line, "" );
|
||||
extract_value( InitialCtrlDelay, "IniCDelay", line, "" );
|
||||
extract_value( CtrlDelay, "SCDelay", line, "" );
|
||||
CtrlDownDelay = CtrlDelay; //hunter-101012: jesli nie ma SCDDelay;
|
||||
getkeyval( CtrlDownDelay, "SCDDelay", line, "" );
|
||||
extract_value( CtrlDownDelay, "SCDDelay", line, "" );
|
||||
|
||||
//hunter-111012: dla siodemek 303E
|
||||
FastSerialCircuit =
|
||||
@@ -6688,7 +6691,7 @@ void TMoverParameters::LoadFIZ_Cntrl( std::string const &line ) {
|
||||
1 :
|
||||
0;
|
||||
|
||||
getkeyval( StopBrakeDecc, "SBD", line, "" );
|
||||
extract_value( StopBrakeDecc, "SBD", line, "" );
|
||||
}
|
||||
|
||||
void TMoverParameters::LoadFIZ_Light( std::string const &line ) {
|
||||
@@ -6699,8 +6702,8 @@ void TMoverParameters::LoadFIZ_Light( std::string const &line ) {
|
||||
AlterLightPowerSource.SourceType = LoadFIZ_SourceDecode( extract_value( "AlterLight", line ) );
|
||||
LoadFIZ_PowerParamsDecode( AlterLightPowerSource, "AlterL", line );
|
||||
|
||||
getkeyval( NominalVoltage, "Volt", line, "" );
|
||||
getkeyval( BatteryVoltage, "LMaxVoltage", line, "" );
|
||||
extract_value( NominalVoltage, "Volt", line, "" );
|
||||
extract_value( BatteryVoltage, "LMaxVoltage", line, "" );
|
||||
NominalBatteryVoltage = BatteryVoltage;
|
||||
}
|
||||
|
||||
@@ -6714,11 +6717,11 @@ void TMoverParameters::LoadFIZ_Security( std::string const &line ) {
|
||||
SetFlag( SecuritySystem.SystemType, 2 );
|
||||
}
|
||||
|
||||
getkeyval( SecuritySystem.AwareDelay, "AwareDelay", line, "" );
|
||||
extract_value( SecuritySystem.AwareDelay, "AwareDelay", line, "" );
|
||||
SecuritySystem.AwareMinSpeed = 0.1 * Vmax; //domyślnie 10% Vmax
|
||||
getkeyval( SecuritySystem.AwareMinSpeed, "AwareMinSpeed", line, "" );
|
||||
getkeyval( SecuritySystem.SoundSignalDelay, "SoundSignalDelay", line, "" );
|
||||
getkeyval( SecuritySystem.EmergencyBrakeDelay, "EmergencyBrakeDelay", 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 );
|
||||
}
|
||||
|
||||
@@ -6775,34 +6778,34 @@ void TMoverParameters::LoadFIZ_Engine( std::string const &Input ) {
|
||||
|
||||
case ElectricSeriesMotor: {
|
||||
|
||||
getkeyval( NominalVoltage, "Volt", Input, "" );
|
||||
getkeyval( WindingRes, "WindingRes", Input, "" );
|
||||
extract_value( NominalVoltage, "Volt", Input, "" );
|
||||
extract_value( WindingRes, "WindingRes", Input, "" );
|
||||
if( WindingRes == 0.0 ) {
|
||||
|
||||
WindingRes = 0.01;
|
||||
}
|
||||
getkeyval( nmax, "nmax", Input, "" );
|
||||
extract_value( nmax, "nmax", Input, "" );
|
||||
nmax /= 60.0;
|
||||
break;
|
||||
}
|
||||
case WheelsDriven:
|
||||
case Dumb: {
|
||||
|
||||
getkeyval( Ftmax, "Ftmax", Input, "" );
|
||||
extract_value( Ftmax, "Ftmax", Input, "" );
|
||||
break;
|
||||
}
|
||||
case DieselEngine: {
|
||||
|
||||
getkeyval( dizel_nmin, "nmin", Input, "" );
|
||||
extract_value( dizel_nmin, "nmin", Input, "" );
|
||||
dizel_nmin /= 60.0;
|
||||
getkeyval( dizel_nmax, "nmax", Input, "" );
|
||||
extract_value( dizel_nmax, "nmax", Input, "" );
|
||||
dizel_nmax /= 60.0;
|
||||
nmax = dizel_nmax; // not sure if this is needed, but just in case
|
||||
getkeyval( dizel_nmax_cutoff, "nmax_cutoff", Input, "0.0" );
|
||||
extract_value( dizel_nmax_cutoff, "nmax_cutoff", Input, "0.0" );
|
||||
dizel_nmax_cutoff /= 60.0;
|
||||
getkeyval( dizel_AIM, "AIM", Input, "1.0" );
|
||||
extract_value( dizel_AIM, "AIM", Input, "1.0" );
|
||||
|
||||
if( true == getkeyval( AnPos, "ShuntMode", Input, "" ) ) {
|
||||
if( true == extract_value( AnPos, "ShuntMode", Input, "" ) ) {
|
||||
//dodatkowa przekładnia dla SM03 (2Ls150)
|
||||
ShuntModeAllow = true;
|
||||
ShuntMode = false;
|
||||
@@ -6815,14 +6818,14 @@ void TMoverParameters::LoadFIZ_Engine( std::string const &Input ) {
|
||||
}
|
||||
case DieselElectric: { //youBy
|
||||
|
||||
getkeyval( Ftmax, "Ftmax", Input, "" );
|
||||
extract_value( Ftmax, "Ftmax", Input, "" );
|
||||
Flat = ( extract_value( "Flat", Input ) == "1" );
|
||||
getkeyval( Vhyp, "Vhyp", Input, "" );
|
||||
extract_value( Vhyp, "Vhyp", Input, "" );
|
||||
Vhyp /= 3.6;
|
||||
getkeyval( Vadd, "Vadd", Input, "" );
|
||||
extract_value( Vadd, "Vadd", Input, "" );
|
||||
Vadd /= 3.6;
|
||||
getkeyval( PowerCorRatio, "Cr", Input, "" );
|
||||
getkeyval( RelayType, "RelayType", Input, "" );
|
||||
extract_value( PowerCorRatio, "Cr", Input, "" );
|
||||
extract_value( RelayType, "RelayType", Input, "" );
|
||||
if( extract_value( "ShuntMode", Input ) == "1" ) {
|
||||
|
||||
ShuntModeAllow = true;
|
||||
@@ -6836,29 +6839,29 @@ void TMoverParameters::LoadFIZ_Engine( std::string const &Input ) {
|
||||
case ElectricInductionMotor: {
|
||||
|
||||
RVentnmax = 1.0;
|
||||
getkeyval( NominalVoltage, "Volt", Input, "" );
|
||||
extract_value( NominalVoltage, "Volt", Input, "" );
|
||||
|
||||
getkeyval( eimc[ eimc_s_dfic ], "dfic", Input, "" );
|
||||
getkeyval( eimc[ eimc_s_dfmax ], "dfmax", Input, "" );
|
||||
getkeyval( eimc[ eimc_s_p ], "p", Input, "" );
|
||||
getkeyval( eimc[ eimc_s_cfu ], "cfu", Input, "" );
|
||||
getkeyval( eimc[ eimc_s_cim ], "cim", Input, "" );
|
||||
getkeyval( eimc[ eimc_s_icif ], "icif", Input, "" );
|
||||
getkeyval( eimc[ eimc_f_Uzmax ], "Uzmax", Input, "" );
|
||||
getkeyval( eimc[ eimc_f_Uzh ], "Uzh", Input, "" );
|
||||
getkeyval( eimc[ eimc_f_DU ], "DU", Input, "" );
|
||||
getkeyval( eimc[ eimc_f_I0 ], "I0", Input, "" );
|
||||
getkeyval( eimc[ eimc_f_cfu ], "fcfu", Input, "" );
|
||||
getkeyval( eimc[ eimc_p_F0 ], "F0", Input, "" );
|
||||
getkeyval( eimc[ eimc_p_a1 ], "a1", Input, "" );
|
||||
getkeyval( eimc[ eimc_p_Pmax ], "Pmax", Input, "" );
|
||||
getkeyval( eimc[ eimc_p_Fh ], "Fh", Input, "" );
|
||||
getkeyval( eimc[ eimc_p_Ph ], "Ph", Input, "" );
|
||||
getkeyval( eimc[ eimc_p_Vh0 ], "Vh0", Input, "" );
|
||||
getkeyval( eimc[ eimc_p_Vh1 ], "Vh1", Input, "" );
|
||||
getkeyval( eimc[ eimc_p_Imax ], "Imax", Input, "" );
|
||||
getkeyval( eimc[ eimc_p_abed ], "abed", Input, "" );
|
||||
getkeyval( eimc[ eimc_p_eped ], "edep", Input, "" );
|
||||
extract_value( eimc[ eimc_s_dfic ], "dfic", Input, "" );
|
||||
extract_value( eimc[ eimc_s_dfmax ], "dfmax", Input, "" );
|
||||
extract_value( eimc[ eimc_s_p ], "p", Input, "" );
|
||||
extract_value( eimc[ eimc_s_cfu ], "cfu", Input, "" );
|
||||
extract_value( eimc[ eimc_s_cim ], "cim", Input, "" );
|
||||
extract_value( eimc[ eimc_s_icif ], "icif", Input, "" );
|
||||
extract_value( eimc[ eimc_f_Uzmax ], "Uzmax", Input, "" );
|
||||
extract_value( eimc[ eimc_f_Uzh ], "Uzh", Input, "" );
|
||||
extract_value( eimc[ eimc_f_DU ], "DU", Input, "" );
|
||||
extract_value( eimc[ eimc_f_I0 ], "I0", Input, "" );
|
||||
extract_value( eimc[ eimc_f_cfu ], "fcfu", Input, "" );
|
||||
extract_value( eimc[ eimc_p_F0 ], "F0", Input, "" );
|
||||
extract_value( eimc[ eimc_p_a1 ], "a1", Input, "" );
|
||||
extract_value( eimc[ eimc_p_Pmax ], "Pmax", Input, "" );
|
||||
extract_value( eimc[ eimc_p_Fh ], "Fh", Input, "" );
|
||||
extract_value( eimc[ eimc_p_Ph ], "Ph", Input, "" );
|
||||
extract_value( eimc[ eimc_p_Vh0 ], "Vh0", Input, "" );
|
||||
extract_value( eimc[ eimc_p_Vh1 ], "Vh1", 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, "" );
|
||||
|
||||
Flat = ( extract_value( "Flat", Input ) == "1" );
|
||||
|
||||
@@ -6872,8 +6875,8 @@ void TMoverParameters::LoadFIZ_Engine( std::string const &Input ) {
|
||||
|
||||
void TMoverParameters::LoadFIZ_Switches( std::string const &Input ) {
|
||||
|
||||
getkeyval( PantSwitchType, "Pantograph", Input, "" );
|
||||
getkeyval( ConvSwitchType, "Converter", Input, "" );
|
||||
extract_value( PantSwitchType, "Pantograph", Input, "" );
|
||||
extract_value( ConvSwitchType, "Converter", Input, "" );
|
||||
}
|
||||
|
||||
void TMoverParameters::LoadFIZ_MotorParamTable( std::string const &Input ) {
|
||||
@@ -6882,10 +6885,10 @@ void TMoverParameters::LoadFIZ_MotorParamTable( std::string const &Input ) {
|
||||
|
||||
case DieselEngine: {
|
||||
|
||||
getkeyval( dizel_minVelfullengage, "minVelfullengage", Input, "" );
|
||||
getkeyval( dizel_engageDia, "engageDia", Input, "" );
|
||||
getkeyval( dizel_engageMaxForce, "engageMaxForce", Input, "" );
|
||||
getkeyval( dizel_engagefriction, "engagefriction", Input, "" );
|
||||
extract_value( dizel_minVelfullengage, "minVelfullengage", Input, "" );
|
||||
extract_value( dizel_engageDia, "engageDia", Input, "" );
|
||||
extract_value( dizel_engageMaxForce, "engageMaxForce", Input, "" );
|
||||
extract_value( dizel_engagefriction, "engagefriction", Input, "" );
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
@@ -6896,11 +6899,11 @@ void TMoverParameters::LoadFIZ_MotorParamTable( std::string const &Input ) {
|
||||
|
||||
void TMoverParameters::LoadFIZ_Circuit( std::string const &Input ) {
|
||||
|
||||
getkeyval( CircuitRes, "CircuitRes", Input, "" );
|
||||
getkeyval( IminLo, "IminLo", Input, "" );
|
||||
getkeyval( IminHi, "IminHi", Input, "" );
|
||||
getkeyval( ImaxLo, "ImaxLo", Input, "" );
|
||||
getkeyval( ImaxHi, "ImaxHi", Input, "" );
|
||||
extract_value( CircuitRes, "CircuitRes", Input, "" );
|
||||
extract_value( IminLo, "IminLo", Input, "" );
|
||||
extract_value( IminHi, "IminHi", Input, "" );
|
||||
extract_value( ImaxLo, "ImaxLo", Input, "" );
|
||||
extract_value( ImaxHi, "ImaxHi", Input, "" );
|
||||
Imin = IminLo;
|
||||
Imax = ImaxLo;
|
||||
}
|
||||
@@ -6922,27 +6925,27 @@ void TMoverParameters::LoadFIZ_RList( std::string const &Input ) {
|
||||
|
||||
if( RVentType > 0 ) {
|
||||
|
||||
getkeyval( RVentnmax, "RVentmax", Input, "" );
|
||||
extract_value( RVentnmax, "RVentmax", Input, "" );
|
||||
RVentnmax /= 60.0;
|
||||
getkeyval( RVentCutOff, "RVentCutOff", Input, "" );
|
||||
extract_value( RVentCutOff, "RVentCutOff", Input, "" );
|
||||
}
|
||||
}
|
||||
|
||||
void TMoverParameters::LoadFIZ_DList( std::string const &Input ) {
|
||||
|
||||
getkeyval( dizel_Mmax, "Mmax", Input, "" );
|
||||
getkeyval( dizel_nMmax, "nMmax", Input, "" );
|
||||
getkeyval( dizel_Mnmax, "Mnmax", Input, "" );
|
||||
getkeyval( dizel_nmax, "nmax", Input, "" );
|
||||
getkeyval( dizel_nominalfill, "nominalfill", Input, "" );
|
||||
getkeyval( dizel_Mstand, "Mstand", Input, "" );
|
||||
extract_value( dizel_Mmax, "Mmax", Input, "" );
|
||||
extract_value( dizel_nMmax, "nMmax", Input, "" );
|
||||
extract_value( dizel_Mnmax, "Mnmax", Input, "" );
|
||||
extract_value( dizel_nmax, "nmax", Input, "" );
|
||||
extract_value( dizel_nominalfill, "nominalfill", Input, "" );
|
||||
extract_value( dizel_Mstand, "Mstand", Input, "" );
|
||||
}
|
||||
|
||||
void TMoverParameters::LoadFIZ_LightsList( std::string const &Input ) {
|
||||
|
||||
getkeyval( LightsPosNo, "Size", Input, "" );
|
||||
getkeyval( LightsWrap, "Wrap", Input, "" );
|
||||
getkeyval( LightsDefPos, "Default", Input, "" );
|
||||
extract_value( LightsPosNo, "Size", Input, "" );
|
||||
extract_value( LightsWrap, "Wrap", Input, "" );
|
||||
extract_value( LightsDefPos, "Default", Input, "" );
|
||||
}
|
||||
|
||||
void TMoverParameters::LoadFIZ_PowerParamsDecode( TPowerParameters &Powerparameters, std::string const Prefix, std::string const &Line ) {
|
||||
@@ -6957,7 +6960,7 @@ void TMoverParameters::LoadFIZ_PowerParamsDecode( TPowerParameters &Powerparamet
|
||||
}
|
||||
case Transducer: {
|
||||
|
||||
getkeyval( Powerparameters.InputVoltage, Prefix + "TransducerInputV", Line, "" );
|
||||
extract_value( Powerparameters.InputVoltage, Prefix + "TransducerInputV", Line, "" );
|
||||
break;
|
||||
}
|
||||
case Generator: {
|
||||
@@ -6967,7 +6970,7 @@ void TMoverParameters::LoadFIZ_PowerParamsDecode( TPowerParameters &Powerparamet
|
||||
}
|
||||
case Accumulator: {
|
||||
|
||||
getkeyval( Powerparameters.RAccumulator.MaxCapacity, Prefix + "Cap", Line, "" );
|
||||
extract_value( Powerparameters.RAccumulator.MaxCapacity, Prefix + "Cap", Line, "" );
|
||||
Powerparameters.RAccumulator.RechargeSource = LoadFIZ_SourceDecode( extract_value( Prefix + "RS", Line ) );
|
||||
break;
|
||||
}
|
||||
@@ -6975,26 +6978,26 @@ void TMoverParameters::LoadFIZ_PowerParamsDecode( TPowerParameters &Powerparamet
|
||||
|
||||
auto &collectorparameters = Powerparameters.CollectorParameters;
|
||||
|
||||
getkeyval( collectorparameters.CollectorsNo, "CollectorsNo", Line, "" );
|
||||
getkeyval( collectorparameters.MinH, "MinH", Line, "" );
|
||||
getkeyval( collectorparameters.MaxH, "MaxH", Line, "" );
|
||||
getkeyval( collectorparameters.CSW, "CSW", Line, "" ); //szerokość części roboczej
|
||||
getkeyval( collectorparameters.MaxV, "MaxVoltage", Line, "" );
|
||||
extract_value( collectorparameters.CollectorsNo, "CollectorsNo", Line, "" );
|
||||
extract_value( collectorparameters.MinH, "MinH", Line, "" );
|
||||
extract_value( collectorparameters.MaxH, "MaxH", Line, "" );
|
||||
extract_value( collectorparameters.CSW, "CSW", Line, "" ); //szerokość części roboczej
|
||||
extract_value( collectorparameters.MaxV, "MaxVoltage", Line, "" );
|
||||
collectorparameters.OVP = //przekaźnik nadnapięciowy
|
||||
extract_value( "OverVoltProt", Line ) == "Yes" ?
|
||||
1 :
|
||||
0;
|
||||
//napięcie rozłączające WS
|
||||
collectorparameters.MinV = 0.5 * collectorparameters.MaxV; //gdyby parametr nie podany
|
||||
getkeyval( collectorparameters.MinV, "MinV", Line, "" );
|
||||
extract_value( collectorparameters.MinV, "MinV", Line, "" );
|
||||
//napięcie wymagane do załączenia WS
|
||||
collectorparameters.InsetV = 0.6 * collectorparameters.MaxV; //gdyby parametr nie podany
|
||||
getkeyval( collectorparameters.InsetV, "InsetV", Line, "" );
|
||||
extract_value( collectorparameters.InsetV, "InsetV", Line, "" );
|
||||
//ciśnienie rozłączające WS
|
||||
getkeyval( collectorparameters.MinPress, "MinPress", Line, "2.0" ); //domyślnie 2 bary do załączenia WS
|
||||
extract_value( collectorparameters.MinPress, "MinPress", Line, "2.0" ); //domyślnie 2 bary do załączenia WS
|
||||
//maksymalne ciśnienie za reduktorem
|
||||
collectorparameters.MaxPress = 5.0 + 0.001 * ( Random( 50 ) - Random( 50 ) );
|
||||
getkeyval( collectorparameters.MaxPress, "MaxPress", Line, "" );
|
||||
extract_value( collectorparameters.MaxPress, "MaxPress", Line, "" );
|
||||
break;
|
||||
}
|
||||
case PowerCable: {
|
||||
@@ -7002,7 +7005,7 @@ void TMoverParameters::LoadFIZ_PowerParamsDecode( TPowerParameters &Powerparamet
|
||||
Powerparameters.RPowerCable.PowerTrans = LoadFIZ_PowerDecode( extract_value( Prefix + "PowerTrans", Line ) );
|
||||
if( Powerparameters.RPowerCable.PowerTrans == SteamPower ) {
|
||||
|
||||
getkeyval( Powerparameters.RPowerCable.SteamPressure, Prefix + "SteamPress", Line, "" );
|
||||
extract_value( Powerparameters.RPowerCable.SteamPressure, Prefix + "SteamPress", Line, "" );
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -7018,9 +7021,9 @@ void TMoverParameters::LoadFIZ_PowerParamsDecode( TPowerParameters &Powerparamet
|
||||
&& ( Powerparameters.SourceType != InternalSource ) ) {
|
||||
|
||||
|
||||
getkeyval( Powerparameters.MaxVoltage, Prefix + "MaxVoltage", Line, "" );
|
||||
getkeyval( Powerparameters.MaxCurrent, Prefix + "MaxCurrent", Line, "" );
|
||||
getkeyval( Powerparameters.IntR, Prefix + "IntR", Line, "" );
|
||||
extract_value( Powerparameters.MaxVoltage, Prefix + "MaxVoltage", Line, "" );
|
||||
extract_value( Powerparameters.MaxCurrent, Prefix + "MaxCurrent", Line, "" );
|
||||
extract_value( Powerparameters.IntR, Prefix + "IntR", Line, "" );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7273,7 +7276,7 @@ bool TMoverParameters::CheckLocomotiveParameters(bool ReadyFlag, int Dir)
|
||||
ScndPipePress = CompressedVolume / VeselVolume;
|
||||
PipePress = CntrlPipePress;
|
||||
BrakePress = 0.0;
|
||||
LocalBrakePos = 0.0;
|
||||
LocalBrakePos = 0;
|
||||
if( CabNo == 0 )
|
||||
BrakeCtrlPos = static_cast<int>( Handle->GetPos( bh_NP ) );
|
||||
else
|
||||
|
||||
@@ -15,9 +15,9 @@ Copyright (C) 2007-2014 Maciej Cierniak
|
||||
#include "stdafx.h"
|
||||
#include "Oerlikon_ESt.h"
|
||||
|
||||
double d2A(double d)
|
||||
double d2A( double const d )
|
||||
{
|
||||
return (d * d) * 0.7854 * 1.0 / 1000;
|
||||
return (d * d) * 0.7854 / 1000.0;
|
||||
}
|
||||
|
||||
// ------ RURA ------
|
||||
@@ -42,7 +42,7 @@ void TPrzeciwposlizg::SetPoslizg(bool flag)
|
||||
|
||||
void TPrzeciwposlizg::Update(double dt)
|
||||
{
|
||||
if ((Poslizg))
|
||||
if (true == Poslizg)
|
||||
{
|
||||
BrakeRes->Flow(dVol);
|
||||
Next->Flow(PF(Next->P(), 0, d2A(10)) * dt);
|
||||
@@ -56,16 +56,14 @@ void TPrzeciwposlizg::Update(double dt)
|
||||
|
||||
void TPrzekladnik::Update(double dt)
|
||||
{
|
||||
double BCP;
|
||||
double BVP;
|
||||
double dV;
|
||||
|
||||
BCP = Next->P();
|
||||
BVP = BrakeRes->P();
|
||||
double BCP{ Next->P() };
|
||||
double BVP{ BrakeRes->P() };
|
||||
|
||||
if ((BCP > P()))
|
||||
if ( BCP > P() )
|
||||
dV = -PFVd(BCP, 0, d2A(10), P()) * dt;
|
||||
else if ((BCP < P()))
|
||||
else if ( BCP < P() )
|
||||
dV = PFVa(BVP, BCP, d2A(10), P()) * dt;
|
||||
else
|
||||
dV = 0;
|
||||
@@ -81,7 +79,7 @@ void TRapid::SetRapidParams(double mult, double size)
|
||||
{
|
||||
RapidMult = mult;
|
||||
RapidStatus = false;
|
||||
if ((size > 0.1)) // dopasowywanie srednicy przekladnika
|
||||
if (size > 0.1) // dopasowywanie srednicy przekladnika
|
||||
{
|
||||
DN = d2A(size * 0.4);
|
||||
DL = d2A(size * 0.4);
|
||||
@@ -100,26 +98,23 @@ void TRapid::SetRapidStatus(bool rs)
|
||||
|
||||
void TRapid::Update(double dt)
|
||||
{
|
||||
double BCP;
|
||||
double BVP;
|
||||
double dV;
|
||||
double BVP{ BrakeRes->P() };
|
||||
double BCP{ Next->P() };
|
||||
double ActMult;
|
||||
double dV;
|
||||
|
||||
BVP = BrakeRes->P();
|
||||
BCP = Next->P();
|
||||
|
||||
if ((RapidStatus))
|
||||
if ( true == RapidStatus )
|
||||
{
|
||||
ActMult = RapidMult;
|
||||
}
|
||||
else
|
||||
{
|
||||
ActMult = 1;
|
||||
ActMult = 1.0;
|
||||
}
|
||||
|
||||
if ((BCP * RapidMult > P() * ActMult))
|
||||
if ((BCP * RapidMult) > (P() * ActMult))
|
||||
dV = -PFVd(BCP, 0, DL, P() * ActMult / RapidMult) * dt;
|
||||
else if ((BCP * RapidMult < P() * ActMult))
|
||||
else if ((BCP * RapidMult) < (P() * ActMult))
|
||||
dV = PFVa(BVP, BCP, DN, P() * ActMult / RapidMult) * dt;
|
||||
else
|
||||
dV = 0;
|
||||
@@ -138,16 +133,13 @@ void TPrzekCiagly::SetMult(double m)
|
||||
|
||||
void TPrzekCiagly::Update(double dt)
|
||||
{
|
||||
double BCP;
|
||||
double BVP;
|
||||
double const BVP{ BrakeRes->P() };
|
||||
double const BCP{ Next->P() };
|
||||
double dV;
|
||||
|
||||
BVP = BrakeRes->P();
|
||||
BCP = Next->P();
|
||||
|
||||
if ((BCP > P() * mult))
|
||||
if ( BCP > (P() * mult))
|
||||
dV = -PFVd(BCP, 0, d2A(8), P() * mult) * dt;
|
||||
else if ((BCP < P() * mult))
|
||||
else if (BCP < (P() * mult))
|
||||
dV = PFVa(BVP, BCP, d2A(8), P() * mult) * dt;
|
||||
else
|
||||
dV = 0;
|
||||
@@ -166,19 +158,15 @@ void TPrzek_PZZ::SetLBP(double P)
|
||||
|
||||
void TPrzek_PZZ::Update(double dt)
|
||||
{
|
||||
double BCP;
|
||||
double BVP;
|
||||
|
||||
double const BVP{ BrakeRes->P() };
|
||||
double const BCP{ Next->P() };
|
||||
double const Pgr{ std::max( LBP, P() ) };
|
||||
double dV;
|
||||
double Pgr;
|
||||
|
||||
BVP = BrakeRes->P();
|
||||
BCP = Next->P();
|
||||
|
||||
Pgr = Max0R(LBP, P());
|
||||
|
||||
if ((BCP > Pgr))
|
||||
if (BCP > Pgr)
|
||||
dV = -PFVd(BCP, 0, d2A(8), Pgr) * dt;
|
||||
else if ((BCP < Pgr))
|
||||
else if (BCP < Pgr)
|
||||
dV = PFVa(BVP, BCP, d2A(8), Pgr) * dt;
|
||||
else
|
||||
dV = 0;
|
||||
@@ -209,28 +197,18 @@ void TPrzekED::Update(double dt)
|
||||
|
||||
// ------ OERLIKON EST NA BOGATO ------
|
||||
|
||||
double TNESt3::GetPF(double PP, double dt, double Vel) // przeplyw miedzy komora wstepna i PG
|
||||
double TNESt3::GetPF( double const PP, double const dt, double const Vel ) // przeplyw miedzy komora wstepna i PG
|
||||
{
|
||||
double dV;
|
||||
double dV1;
|
||||
double temp;
|
||||
double VVP;
|
||||
double BVP;
|
||||
double BCP;
|
||||
double CVP;
|
||||
double MPP;
|
||||
double nastG;
|
||||
unsigned char i;
|
||||
|
||||
BVP = BrakeRes->P();
|
||||
VVP = ValveRes->P();
|
||||
double const BVP{ BrakeRes->P() };
|
||||
double const VVP{ ValveRes->P() };
|
||||
// BCP:=BrakeCyl.P;
|
||||
BCP = Przekladniki[1]->P();
|
||||
CVP = CntrlRes->P();
|
||||
MPP = Miedzypoj->P();
|
||||
dV1 = 0;
|
||||
double const BCP{ Przekladniki[ 1 ]->P() };
|
||||
double const CVP{ CntrlRes->P() };
|
||||
double const MPP{ Miedzypoj->P() };
|
||||
double dV{ 0.0 };
|
||||
double dV1{ 0.0 };
|
||||
|
||||
nastG = static_cast<double>(BrakeDelayFlag & bdelay_G);
|
||||
double const nastG = static_cast<double>(BrakeDelayFlag & bdelay_G);
|
||||
|
||||
// sprawdzanie stanu
|
||||
CheckState(BCP, dV1);
|
||||
@@ -238,65 +216,62 @@ double TNESt3::GetPF(double PP, double dt, double Vel) // przeplyw miedzy komora
|
||||
|
||||
// luzowanie
|
||||
if ((BrakeStatus & b_hld) == b_off)
|
||||
dV = PF(0, BCP, Nozzles[dTO] * nastG + (1 - nastG) * Nozzles[dOO]) * dt *
|
||||
(0.1 + 4.9 * Min0R(0.2, BCP - ((CVP - 0.05 - VVP) * BVM + 0.1)));
|
||||
dV = PF(0, BCP, Nozzles[dTO] * nastG + (1.0 - nastG) * Nozzles[dOO]) * dt *
|
||||
(0.1 + 4.9 * std::min(0.2, BCP - ((CVP - 0.05 - VVP) * BVM + 0.1)));
|
||||
else
|
||||
dV = 0;
|
||||
// BrakeCyl.Flow(-dV);
|
||||
Przekladniki[1]->Flow(-dV);
|
||||
if (((BrakeStatus & b_on) == b_on) && (Przekladniki[1]->P() * HBG300 < MaxBP))
|
||||
dV = PF(BVP, BCP,
|
||||
Nozzles[dTN] * (nastG + 2 * short(BCP < Podskok)) + Nozzles[dON] * (1 - nastG)) *
|
||||
dt * (0.1 + 4.9 * Min0R(0.2, (CVP - 0.05 - VVP) * BVM - BCP));
|
||||
if ( ((BrakeStatus & b_on) == b_on) && (Przekladniki[1]->P() * HBG300 < MaxBP) )
|
||||
dV = PF( BVP, BCP, Nozzles[dTN] * (nastG + 2.0 * (BCP < Podskok ? 1.0 : 0.0)) + Nozzles[dON] * (1 - nastG) )
|
||||
* dt * (0.1 + 4.9 * std::min( 0.2, (CVP - 0.05 - VVP) * BVM - BCP ) );
|
||||
else
|
||||
dV = 0;
|
||||
// BrakeCyl.Flow(-dV);
|
||||
Przekladniki[1]->Flow(-dV);
|
||||
BrakeRes->Flow(dV);
|
||||
|
||||
for (int i = 1; i < 4; ++i)
|
||||
{
|
||||
for (i = 1; i < 4; ++i)
|
||||
Przekladniki[i]->Update(dt);
|
||||
if (typeid(*Przekladniki[i]) == typeid(TRapid))
|
||||
{
|
||||
Przekladniki[i]->Update(dt);
|
||||
if (typeid(*Przekladniki[i]) == typeid(TRapid))
|
||||
{
|
||||
RapidStatus =
|
||||
(((BrakeDelayFlag & bdelay_R) == bdelay_R) &&
|
||||
((abs(Vel) > 70) || ((RapidStatus) && (abs(Vel) > 50)) || (RapidStaly)));
|
||||
Przekladniki[i]->SetRapidStatus(RapidStatus);
|
||||
}
|
||||
else if (typeid(*Przekladniki[i]) == typeid(TPrzeciwposlizg))
|
||||
Przekladniki[i]->SetPoslizg((BrakeStatus & b_asb) == b_asb);
|
||||
else if (typeid(*Przekladniki[i]) == typeid(TPrzekED))
|
||||
if ((Vel < -15))
|
||||
Przekladniki[i]->SetP(0);
|
||||
else
|
||||
Przekladniki[i]->SetP(MaxBP * 3);
|
||||
else if (typeid(*Przekladniki[i]) == typeid(TPrzekCiagly))
|
||||
Przekladniki[i]->SetMult(LoadC);
|
||||
else if (typeid(*Przekladniki[i]) == typeid(TPrzek_PZZ))
|
||||
Przekladniki[i]->SetLBP(LBP);
|
||||
RapidStatus =
|
||||
(((BrakeDelayFlag & bdelay_R) == bdelay_R) &&
|
||||
((abs(Vel) > 70) || ((RapidStatus) && (abs(Vel) > 50)) || (RapidStaly)));
|
||||
Przekladniki[i]->SetRapidStatus(RapidStatus);
|
||||
}
|
||||
else if (typeid(*Przekladniki[i]) == typeid(TPrzeciwposlizg))
|
||||
Przekladniki[i]->SetPoslizg((BrakeStatus & b_asb) == b_asb);
|
||||
else if (typeid(*Przekladniki[i]) == typeid(TPrzekED))
|
||||
if (Vel < -15)
|
||||
Przekladniki[i]->SetP(0);
|
||||
else
|
||||
Przekladniki[i]->SetP(MaxBP * 3);
|
||||
else if (typeid(*Przekladniki[i]) == typeid(TPrzekCiagly))
|
||||
Przekladniki[i]->SetMult(LoadC);
|
||||
else if (typeid(*Przekladniki[i]) == typeid(TPrzek_PZZ))
|
||||
Przekladniki[i]->SetLBP(LBP);
|
||||
}
|
||||
|
||||
// przeplyw testowy miedzypojemnosci
|
||||
dV = PF(MPP, VVP, BVs(BCP)) + PF(MPP, CVP, CVs(BCP));
|
||||
if ((MPP - 0.05 > BVP))
|
||||
dV += PF(MPP - 0.05, BVP, Nozzles[dPT] * nastG + (1 - nastG) * Nozzles[dPO]);
|
||||
dV += PF(MPP - 0.05, BVP, Nozzles[dPT] * nastG + (1.0 - nastG) * Nozzles[dPO]);
|
||||
if (MPP > VVP)
|
||||
dV += PF(MPP, VVP, d2A(5));
|
||||
Miedzypoj->Flow(dV * dt * 0.15);
|
||||
|
||||
// przeplyw ZS <-> PG
|
||||
temp = CVs(BCP);
|
||||
double const temp = CVs(BCP);
|
||||
dV = PF(CVP, MPP, temp) * dt;
|
||||
CntrlRes->Flow(dV);
|
||||
ValveRes->Flow(-0.02 * dV);
|
||||
dV1 += 0.98 * dV;
|
||||
|
||||
// przeplyw ZP <-> MPJ
|
||||
if ((MPP - 0.05 > BVP))
|
||||
dV = PF(BVP, MPP - 0.05, Nozzles[dPT] * nastG + (1 - nastG) * Nozzles[dPO]) * dt;
|
||||
if (MPP - 0.05 > BVP)
|
||||
dV = PF(BVP, MPP - 0.05, Nozzles[dPT] * nastG + (1.0 - nastG) * Nozzles[dPO]) * dt;
|
||||
else
|
||||
dV = 0;
|
||||
BrakeRes->Flow(dV);
|
||||
@@ -317,11 +292,11 @@ double TNESt3::GetPF(double PP, double dt, double Vel) // przeplyw miedzy komora
|
||||
return dV - dV1;
|
||||
}
|
||||
|
||||
void TNESt3::EStParams(double i_crc) // parametry charakterystyczne dla ESt
|
||||
void TNESt3::EStParams( double const i_crc ) // parametry charakterystyczne dla ESt
|
||||
{
|
||||
}
|
||||
|
||||
void TNESt3::Init(double PP, double HPP, double LPP, double BP, int BDF)
|
||||
void TNESt3::Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )
|
||||
{
|
||||
TBrake::Init(PP, HPP, LPP, BP, BDF);
|
||||
ValveRes->CreatePress(PP);
|
||||
@@ -352,17 +327,12 @@ double TNESt3::GetCRP()
|
||||
// return Miedzypoj.P;
|
||||
}
|
||||
|
||||
void TNESt3::CheckState(double BCP, double &dV1) // glowny przyrzad rozrzadczy
|
||||
void TNESt3::CheckState(double const BCP, double &dV1) // glowny przyrzad rozrzadczy
|
||||
{
|
||||
double VVP;
|
||||
double BVP;
|
||||
double CVP;
|
||||
double MPP;
|
||||
|
||||
BVP = BrakeRes->P(); //-> tu ma byc komora rozprezna
|
||||
VVP = ValveRes->P();
|
||||
CVP = CntrlRes->P();
|
||||
MPP = Miedzypoj->P();
|
||||
double const BVP{ BrakeRes->P() }; //-> tu ma byc komora rozprezna
|
||||
double const VVP{ ValveRes->P() };
|
||||
double const CVP{ CntrlRes->P() };
|
||||
double const MPP{ Miedzypoj->P() };
|
||||
|
||||
if ((BCP < 0.25) && (VVP + 0.08 > CVP))
|
||||
Przys_blok = false;
|
||||
@@ -370,19 +340,19 @@ void TNESt3::CheckState(double BCP, double &dV1) // glowny przyrzad rozrzadczy
|
||||
// sprawdzanie stanu
|
||||
// if ((BrakeStatus and 1)=1)and(BCP>0.25)then
|
||||
if ((VVP + 0.01 + BCP / BVM < CVP - 0.05) && (Przys_blok))
|
||||
BrakeStatus |= 3; // hamowanie stopniowe;
|
||||
else if ((VVP - 0.01 + (BCP - 0.1) / BVM > CVP - 0.05))
|
||||
BrakeStatus &= 252; // luzowanie;
|
||||
else if ((VVP + BCP / BVM > CVP - 0.05))
|
||||
BrakeStatus &= 253; // zatrzymanie napelaniania;
|
||||
BrakeStatus |= ( b_on | b_hld ); // hamowanie stopniowe;
|
||||
else if (VVP - 0.01 + (BCP - 0.1) / BVM > CVP - 0.05)
|
||||
BrakeStatus &= ~( b_on | b_hld ); // luzowanie;
|
||||
else if (VVP + BCP / BVM > CVP - 0.05)
|
||||
BrakeStatus &= ~b_on; // zatrzymanie napelaniania;
|
||||
else if ((VVP + (BCP - 0.1) / BVM < CVP - 0.05) && (BCP > 0.25)) // zatrzymanie luzowania
|
||||
BrakeStatus |= 1;
|
||||
BrakeStatus |= b_hld;
|
||||
|
||||
if ((BrakeStatus & 1) == 0)
|
||||
if( ( BrakeStatus & b_hld ) == 0 )
|
||||
SoundFlag |= sf_CylU;
|
||||
|
||||
if ((VVP + 0.10 < CVP) && (BCP < 0.25)) // poczatek hamowania
|
||||
if ((!Przys_blok))
|
||||
if (false == Przys_blok)
|
||||
{
|
||||
ValveRes->CreatePress(0.1 * VVP);
|
||||
SoundFlag |= sf_Acc;
|
||||
@@ -390,59 +360,50 @@ void TNESt3::CheckState(double BCP, double &dV1) // glowny przyrzad rozrzadczy
|
||||
Przys_blok = true;
|
||||
}
|
||||
|
||||
if ((BCP > 0.5))
|
||||
if (BCP > 0.5)
|
||||
Zamykajacy = true;
|
||||
else if ((VVP - 0.6 < MPP))
|
||||
else if (VVP - 0.6 < MPP)
|
||||
Zamykajacy = false;
|
||||
}
|
||||
|
||||
void TNESt3::CheckReleaser(double dt) // odluzniacz
|
||||
void TNESt3::CheckReleaser(double const dt) // odluzniacz
|
||||
{
|
||||
double VVP;
|
||||
double CVP;
|
||||
|
||||
VVP = ValveRes->P();
|
||||
CVP = CntrlRes->P();
|
||||
double const VVP{ ValveRes->P() };
|
||||
double const CVP{ CntrlRes->P() };
|
||||
|
||||
// odluzniacz automatyczny
|
||||
if ((BrakeStatus & b_rls) == b_rls)
|
||||
{
|
||||
CntrlRes->Flow(PF(CVP, 0, 0.02) * dt);
|
||||
if ((CVP < VVP + 0.3) || (!autom))
|
||||
BrakeStatus &= 247;
|
||||
if ((CVP < VVP + 0.3) || (false == autom))
|
||||
BrakeStatus &= ~b_rls;
|
||||
}
|
||||
}
|
||||
|
||||
double TNESt3::CVs(double BP) // napelniacz sterujacego
|
||||
double TNESt3::CVs(double const BP) // napelniacz sterujacego
|
||||
{
|
||||
double CVP;
|
||||
double MPP;
|
||||
|
||||
CVP = CntrlRes->P();
|
||||
MPP = Miedzypoj->P();
|
||||
double const CVP{ CntrlRes->P() };
|
||||
double const MPP{ Miedzypoj->P() };
|
||||
|
||||
// przeplyw ZS <-> PG
|
||||
if ((MPP < CVP - 0.17))
|
||||
if (MPP < CVP - 0.17)
|
||||
return 0;
|
||||
else if ((MPP > CVP - 0.08))
|
||||
else if (MPP > CVP - 0.08)
|
||||
return Nozzles[dSd];
|
||||
else
|
||||
return Nozzles[dSm];
|
||||
}
|
||||
|
||||
double TNESt3::BVs(double BCP) // napelniacz pomocniczego
|
||||
double TNESt3::BVs(double const BCP) // napelniacz pomocniczego
|
||||
{
|
||||
double CVP;
|
||||
double MPP;
|
||||
|
||||
CVP = CntrlRes->P();
|
||||
MPP = Miedzypoj->P();
|
||||
double const CVP{ CntrlRes->P() };
|
||||
double const MPP{ Miedzypoj->P() };
|
||||
|
||||
// przeplyw ZP <-> rozdzielacz
|
||||
if ((MPP < CVP - 0.3))
|
||||
if (MPP < CVP - 0.3)
|
||||
return Nozzles[dP];
|
||||
else if ((BCP < 0.5))
|
||||
if ((Zamykajacy))
|
||||
else if (BCP < 0.5)
|
||||
if ( true == Zamykajacy)
|
||||
return Nozzles[dPm]; // 1.25
|
||||
else
|
||||
return Nozzles[dPd];
|
||||
@@ -450,11 +411,12 @@ double TNESt3::BVs(double BCP) // napelniacz pomocniczego
|
||||
return 0;
|
||||
}
|
||||
|
||||
void TNESt3::PLC(double mass)
|
||||
void TNESt3::PLC(double const mass)
|
||||
{
|
||||
LoadC = 1 +
|
||||
double(mass < LoadM) *
|
||||
((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1);
|
||||
LoadC = 1.0 +
|
||||
( mass < LoadM ?
|
||||
( (TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM) ) / MaxBP - 1.0 ) :
|
||||
0.0 );
|
||||
}
|
||||
|
||||
void TNESt3::ForceEmptiness()
|
||||
@@ -472,27 +434,25 @@ void TNESt3::ForceEmptiness()
|
||||
CntrlRes->Act();
|
||||
}
|
||||
|
||||
void TNESt3::SetLP(double TM, double LM, double TBP)
|
||||
void TNESt3::SetLP(double const TM, double const LM, double const TBP)
|
||||
{
|
||||
TareM = TM;
|
||||
LoadM = LM;
|
||||
TareBP = TBP;
|
||||
}
|
||||
|
||||
void TNESt3::SetLBP(double P)
|
||||
void TNESt3::SetLBP(double const P)
|
||||
{
|
||||
LBP = P;
|
||||
}
|
||||
|
||||
void TNESt3::SetSize(int size, std::string params) // ustawianie dysz (rozmiaru ZR)
|
||||
void TNESt3::SetSize( int const size, std::string const ¶ms ) // ustawianie dysz (rozmiaru ZR)
|
||||
{
|
||||
static double const dNO1l = 1.250;
|
||||
static double const dNT1l = 0.510;
|
||||
static double const dOO1l = 0.907;
|
||||
static double const dOT1l = 0.524;
|
||||
|
||||
int i;
|
||||
|
||||
if (params.find("ESt3") != std::string::npos)
|
||||
{
|
||||
Podskok = 0.7;
|
||||
@@ -590,7 +550,7 @@ void TNESt3::SetSize(int size, std::string params) // ustawianie dysz (rozmiaru
|
||||
case 200:
|
||||
{ // dON,dOO,dTN,dTO,dP,dS
|
||||
Nozzles[dON] = dNO1l;
|
||||
Nozzles[dOO] = dOO1l * 1.0 / 1.15;
|
||||
Nozzles[dOO] = dOO1l / 1.15;
|
||||
Nozzles[dTN] = dNT1l;
|
||||
Nozzles[dTO] = dOT1l;
|
||||
Nozzles[dP] = 7.4;
|
||||
@@ -603,7 +563,7 @@ void TNESt3::SetSize(int size, std::string params) // ustawianie dysz (rozmiaru
|
||||
case 375:
|
||||
{ // dON,dOO,dTN,dTO,dP,dS
|
||||
Nozzles[dON] = dNO1l;
|
||||
Nozzles[dOO] = dOO1l * 1.0 / 1.15;
|
||||
Nozzles[dOO] = dOO1l / 1.15;
|
||||
Nozzles[dTN] = dNT1l;
|
||||
Nozzles[dTO] = dOT1l;
|
||||
Nozzles[dP] = 13.0;
|
||||
@@ -655,11 +615,11 @@ void TNESt3::SetSize(int size, std::string params) // ustawianie dysz (rozmiaru
|
||||
Nozzles[dSm] = 0.9;
|
||||
|
||||
// przeliczanie z mm^2 na l/m
|
||||
for (i = 0; i < dMAX; ++i)
|
||||
for (int i = 0; i < dMAX; ++i)
|
||||
{
|
||||
Nozzles[i] = d2A(Nozzles[i]); //(/1000^2*pi/4*1000)
|
||||
}
|
||||
for (i = 1; i < 4; ++i)
|
||||
for (int i = 1; i < 4; ++i)
|
||||
{
|
||||
Przekladniki[i]->BrakeRes = BrakeRes;
|
||||
Przekladniki[i]->CreateCap(i);
|
||||
|
||||
@@ -190,11 +190,11 @@ class TNESt3 : public TBrake {
|
||||
double Nozzles[ dMAX ]; // dysze
|
||||
double BVM = 0.0; // przelozenie PG-CH
|
||||
// ValveFlag: byte; //polozenie roznych zaworkow
|
||||
bool Zamykajacy = false; // pamiec zaworka zamykajacego
|
||||
bool Zamykajacy = true; // pamiec zaworka zamykajacego
|
||||
// Przys_wlot: boolean; //wlot do komory przyspieszacza
|
||||
bool Przys_blok = false; // blokada przyspieszacza
|
||||
bool RapidStatus = false;
|
||||
bool RapidStaly = false;
|
||||
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
|
||||
@@ -202,29 +202,29 @@ class TNESt3 : public TBrake {
|
||||
double HBG300 = 0.0; // zawor ograniczajacy cisnienie
|
||||
double Podskok = 0.0; // podskok preznosci poczatkowej
|
||||
// HPBR: real; //zasilanie ZP z wysokiego cisnienia
|
||||
bool autom = false; // odluzniacz samoczynny
|
||||
bool autom = true; // odluzniacz samoczynny
|
||||
double LBP = 0.0; // cisnienie hamulca pomocniczego
|
||||
|
||||
public:
|
||||
inline TNESt3(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)
|
||||
{}
|
||||
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
|
||||
void Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF ) /*override*/;
|
||||
virtual double GetPF( double const PP, double const dt, double const Vel ) /*override*/; // przeplyw miedzy komora wstepna i PG
|
||||
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 params); // ustawianie dysz (rozmiaru ZR), przekladniki
|
||||
void PLC(double mass); // wspolczynnik cisnienia przystawki wazacej
|
||||
void SetLP(double TM, double LM, double TBP); // parametry przystawki wazacej
|
||||
void CheckState(double const BCP, double &dV1); // glowny przyrzad rozrzadczy
|
||||
void CheckReleaser(double const dt); // odluzniacz
|
||||
double CVs(double const BP); // napelniacz sterujacego
|
||||
double BVs(double const BCP); // napelniacz pomocniczego
|
||||
void SetSize( int const size, std::string const ¶ms ); // ustawianie dysz (rozmiaru ZR), przekladniki
|
||||
void PLC(double const mass); // wspolczynnik cisnienia przystawki wazacej
|
||||
void SetLP(double const TM, double const LM, double const TBP); // parametry przystawki wazacej
|
||||
virtual void ForceEmptiness() /*override*/; // wymuszenie bycia pustym
|
||||
void SetLBP(double P); // cisnienie z hamulca pomocniczego
|
||||
void SetLBP(double const P); // cisnienie z hamulca pomocniczego
|
||||
};
|
||||
|
||||
extern double d2A(double d);
|
||||
extern double d2A( double const d );
|
||||
|
||||
#endif // INCLUDED_OERLIKON_EST_H
|
||||
// END
|
||||
|
||||
@@ -49,23 +49,23 @@ double PF_old(double P1, double P2, double S)
|
||||
return (PH + 1) * 222 * S * (P2 - P1) / (1.13 * PH - PL);
|
||||
}
|
||||
|
||||
double PF(double P1, double P2, double S, double DP)
|
||||
double PF( double const P1, double const P2, double const S, double const DP )
|
||||
{
|
||||
double PH = std::max(P1, P2) + 1; // wyzsze cisnienie absolutne
|
||||
double PL = P1 + P2 - PH + 2; // nizsze cisnienie absolutne
|
||||
double sg = PL / PH; // bezwymiarowy stosunek cisnien
|
||||
double FM = PH * 197 * S * Sign(P2 - P1); // najwyzszy mozliwy przeplyw, wraz z kierunkiem
|
||||
if ((sg > 0.5)) // jesli ponizej stosunku krytycznego
|
||||
if (sg > 0.5) // jesli ponizej stosunku krytycznego
|
||||
if ((PH - PL) < DP) // niewielka roznica cisnien
|
||||
return (1 - sg) / DPL * FM * 2 * std::sqrt((DP) * (PH - DP));
|
||||
return (1.0 - sg) / DPL * FM * 2.0 * std::sqrt((DP) * (PH - DP));
|
||||
// return 1/DPL*(PH-PL)*fm*2*SQRT((sg)*(1-sg));
|
||||
else
|
||||
return FM * 2 * std::sqrt((sg) * (1 - sg));
|
||||
return FM * 2.0 * std::sqrt((sg) * (1.0 - sg));
|
||||
else // powyzej stosunku krytycznego
|
||||
return FM;
|
||||
}
|
||||
|
||||
double PF1(double P1, double P2, double S)
|
||||
double PF1( double const P1, double const P2, double const S )
|
||||
{
|
||||
static double const DPS = 0.001;
|
||||
|
||||
@@ -82,8 +82,8 @@ double PF1(double P1, double P2, double S)
|
||||
return FM;
|
||||
}
|
||||
|
||||
double PFVa(double PH, double PL, double S, double LIM,
|
||||
double DP) // zawor napelniajacy z PH do PL, PL do LIM
|
||||
double PFVa( double PH, double PL, double const S, double LIM, double const DP )
|
||||
// zawor napelniajacy z PH do PL, PL do LIM
|
||||
{
|
||||
if (LIM > PL)
|
||||
{
|
||||
@@ -106,8 +106,8 @@ double PFVa(double PH, double PL, double S, double LIM,
|
||||
return 0;
|
||||
}
|
||||
|
||||
double PFVd(double PH, double PL, double S, double LIM,
|
||||
double DP) // zawor wypuszczajacy z PH do PL, PH do LIM
|
||||
double PFVd( double PH, double PL, double const S, double LIM, double const DP )
|
||||
// zawor wypuszczajacy z PH do PL, PH do LIM
|
||||
{
|
||||
if (LIM < PH)
|
||||
{
|
||||
@@ -304,13 +304,13 @@ TBrake::TBrake(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn
|
||||
}
|
||||
|
||||
// inicjalizacja hamulca (stan poczatkowy)
|
||||
void TBrake::Init(double PP, double HPP, double LPP, double BP, int BDF)
|
||||
void TBrake::Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )
|
||||
{
|
||||
BrakeDelayFlag = BDF;
|
||||
}
|
||||
|
||||
// pobranie wspolczynnika tarcia materialu
|
||||
double TBrake::GetFC(double Vel, double N)
|
||||
double TBrake::GetFC( double const Vel, double const N )
|
||||
{
|
||||
return FM->GetFC(N, Vel);
|
||||
}
|
||||
@@ -346,7 +346,7 @@ double TBrake::GetCRP()
|
||||
}
|
||||
|
||||
// przeplyw z przewodu glowneg
|
||||
double TBrake::GetPF(double PP, double dt, double Vel)
|
||||
double TBrake::GetPF( double const PP, double const dt, double const Vel )
|
||||
{
|
||||
ValveRes->Act();
|
||||
BrakeCyl->Act();
|
||||
@@ -355,7 +355,7 @@ double TBrake::GetPF(double PP, double dt, double Vel)
|
||||
}
|
||||
|
||||
// przeplyw z przewodu zasilajacego
|
||||
double TBrake::GetHPFlow(double HP, double dt)
|
||||
double TBrake::GetHPFlow( double const HP, double const dt )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@@ -365,7 +365,7 @@ double TBrake::GetBCF()
|
||||
return BCA * 100 * BrakeCyl->P();
|
||||
}
|
||||
|
||||
bool TBrake::SetBDF(int nBDF)
|
||||
bool TBrake::SetBDF( int const nBDF )
|
||||
{
|
||||
if (((nBDF & BrakeDelays) == nBDF) && (nBDF != BrakeDelayFlag))
|
||||
{
|
||||
@@ -376,16 +376,16 @@ bool TBrake::SetBDF(int nBDF)
|
||||
return false;
|
||||
}
|
||||
|
||||
void TBrake::Releaser(int state)
|
||||
void TBrake::Releaser( int const state )
|
||||
{
|
||||
BrakeStatus = (BrakeStatus & ~b_rls) | ( state * b_rls );
|
||||
}
|
||||
|
||||
void TBrake::SetEPS(double nEPS)
|
||||
void TBrake::SetEPS( double const nEPS )
|
||||
{
|
||||
}
|
||||
|
||||
void TBrake::ASB(int state)
|
||||
void TBrake::ASB( int const state )
|
||||
{ // 255-b_asb(32)
|
||||
BrakeStatus = (BrakeStatus & ~b_asb) | ( state * b_asb );
|
||||
}
|
||||
@@ -402,7 +402,7 @@ int TBrake::GetSoundFlag()
|
||||
return result;
|
||||
}
|
||||
|
||||
void TBrake::SetASBP(double Press)
|
||||
void TBrake::SetASBP( double const Press )
|
||||
{
|
||||
ASBP = Press;
|
||||
}
|
||||
@@ -417,7 +417,7 @@ void TBrake::ForceEmptiness()
|
||||
|
||||
//---WESTINGHOUSE---
|
||||
|
||||
void TWest::Init(double PP, double HPP, double LPP, double BP, int BDF)
|
||||
void TWest::Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )
|
||||
{
|
||||
TBrake::Init(PP, HPP, LPP, BP, BDF);
|
||||
ValveRes->CreatePress(PP);
|
||||
@@ -426,7 +426,7 @@ void TWest::Init(double PP, double HPP, double LPP, double BP, int BDF)
|
||||
// BrakeStatus:=3*int(BP>0.1);
|
||||
}
|
||||
|
||||
double TWest::GetPF(double PP, double dt, double Vel)
|
||||
double TWest::GetPF( double const PP, double const dt, double const Vel )
|
||||
{
|
||||
double dv;
|
||||
double dV1;
|
||||
@@ -509,12 +509,12 @@ double TWest::GetPF(double PP, double dt, double Vel)
|
||||
return dv - dV1;
|
||||
}
|
||||
|
||||
double TWest::GetHPFlow(double HP, double dt)
|
||||
double TWest::GetHPFlow( double const HP, double const dt )
|
||||
{
|
||||
return dVP;
|
||||
}
|
||||
|
||||
void TWest::SetLBP(double P)
|
||||
void TWest::SetLBP( double const P )
|
||||
{
|
||||
LBP = P;
|
||||
if (P > BrakeCyl->P())
|
||||
@@ -525,7 +525,7 @@ void TWest::SetLBP(double P)
|
||||
// LBP:=P;
|
||||
}
|
||||
|
||||
void TWest::SetEPS(double nEPS)
|
||||
void TWest::SetEPS( double const nEPS )
|
||||
{
|
||||
double BCP;
|
||||
|
||||
@@ -545,14 +545,14 @@ void TWest::SetEPS(double nEPS)
|
||||
EPS = nEPS;
|
||||
}
|
||||
|
||||
void TWest::PLC(double mass)
|
||||
void TWest::PLC( double const mass )
|
||||
{
|
||||
LoadC = 1 +
|
||||
int(mass < LoadM) *
|
||||
((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1);
|
||||
}
|
||||
|
||||
void TWest::SetLP(double TM, double LM, double TBP)
|
||||
void TWest::SetLP( double const TM, double const LM, double const TBP )
|
||||
{
|
||||
TareM = TM;
|
||||
LoadM = LM;
|
||||
@@ -560,7 +560,7 @@ void TWest::SetLP(double TM, double LM, double TBP)
|
||||
}
|
||||
|
||||
//---OERLIKON EST4---
|
||||
void TESt::CheckReleaser(double dt)
|
||||
void TESt::CheckReleaser( double const dt )
|
||||
{
|
||||
double VVP = std::min(ValveRes->P(), BrakeRes->P() + 0.05);
|
||||
double CVP = CntrlRes->P() - 0.0;
|
||||
@@ -575,7 +575,7 @@ void TESt::CheckReleaser(double dt)
|
||||
}
|
||||
}
|
||||
|
||||
void TESt::CheckState(double BCP, double &dV1)
|
||||
void TESt::CheckState( double const BCP, double &dV1 )
|
||||
{
|
||||
double VVP;
|
||||
double BVP;
|
||||
@@ -618,7 +618,7 @@ void TESt::CheckState(double BCP, double &dV1)
|
||||
SoundFlag |= sf_CylU;
|
||||
}
|
||||
|
||||
double TESt::CVs(double BP)
|
||||
double TESt::CVs( double const BP )
|
||||
{
|
||||
double VVP;
|
||||
double BVP;
|
||||
@@ -642,7 +642,7 @@ double TESt::CVs(double BP)
|
||||
return 0.3;
|
||||
}
|
||||
|
||||
double TESt::BVs(double BCP)
|
||||
double TESt::BVs( double const BCP )
|
||||
{
|
||||
double VVP;
|
||||
double BVP;
|
||||
@@ -664,7 +664,7 @@ double TESt::BVs(double BCP)
|
||||
return 0;
|
||||
}
|
||||
|
||||
double TESt::GetPF(double PP, double dt, double Vel)
|
||||
double TESt::GetPF( double const PP, double const dt, double const Vel )
|
||||
{
|
||||
double dv;
|
||||
double dV1;
|
||||
@@ -731,7 +731,7 @@ double TESt::GetPF(double PP, double dt, double Vel)
|
||||
return dv - dV1;
|
||||
}
|
||||
|
||||
void TESt::Init(double PP, double HPP, double LPP, double BP, int BDF)
|
||||
void TESt::Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )
|
||||
{
|
||||
TBrake::Init(PP, HPP, LPP, BP, BDF);
|
||||
ValveRes->CreatePress(PP);
|
||||
@@ -746,7 +746,7 @@ void TESt::Init(double PP, double HPP, double LPP, double BP, int BDF)
|
||||
BrakeDelayFlag = BDF;
|
||||
}
|
||||
|
||||
void TESt::EStParams(double i_crc)
|
||||
void TESt::EStParams( double const i_crc )
|
||||
{
|
||||
}
|
||||
|
||||
@@ -757,7 +757,7 @@ double TESt::GetCRP()
|
||||
|
||||
//---EP2---
|
||||
|
||||
void TEStEP2::Init(double PP, double HPP, double LPP, double BP, int BDF)
|
||||
void TEStEP2::Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )
|
||||
{
|
||||
TLSt::Init(PP, HPP, LPP, BP, BDF);
|
||||
ImplsRes->CreateCap(1);
|
||||
@@ -769,7 +769,7 @@ void TEStEP2::Init(double PP, double HPP, double LPP, double BP, int BDF)
|
||||
BrakeDelays = bdelay_P;
|
||||
}
|
||||
|
||||
double TEStEP2::GetPF(double PP, double dt, double Vel)
|
||||
double TEStEP2::GetPF( double const PP, double const dt, double const Vel )
|
||||
{
|
||||
double result;
|
||||
double dv;
|
||||
@@ -880,21 +880,21 @@ double TEStEP2::GetPF(double PP, double dt, double Vel)
|
||||
return result;
|
||||
}
|
||||
|
||||
void TEStEP2::PLC(double mass)
|
||||
void TEStEP2::PLC( double const mass )
|
||||
{
|
||||
LoadC = 1 +
|
||||
int(mass < LoadM) *
|
||||
((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1);
|
||||
}
|
||||
|
||||
void TEStEP2::SetEPS(double nEPS)
|
||||
void TEStEP2::SetEPS( double const nEPS )
|
||||
{
|
||||
EPS = nEPS;
|
||||
if ((EPS > 0) && (LBP + 0.01 < BrakeCyl->P()))
|
||||
LBP = BrakeCyl->P();
|
||||
}
|
||||
|
||||
void TEStEP2::SetLP(double TM, double LM, double TBP)
|
||||
void TEStEP2::SetLP( double const TM, double const LM, double const TBP )
|
||||
{
|
||||
TareM = TM;
|
||||
LoadM = LM;
|
||||
@@ -903,23 +903,15 @@ void TEStEP2::SetLP(double TM, double LM, double TBP)
|
||||
|
||||
//---EST3--
|
||||
|
||||
double TESt3::GetPF(double PP, double dt, double Vel)
|
||||
double TESt3::GetPF( double const PP, double const dt, double const Vel )
|
||||
{
|
||||
double dv;
|
||||
double dV1;
|
||||
double temp;
|
||||
double VVP;
|
||||
double BVP;
|
||||
double BCP;
|
||||
double CVP;
|
||||
double BVP{ BrakeRes->P() };
|
||||
double VVP{ ValveRes->P() };
|
||||
double BCP{ BrakeCyl->P() };
|
||||
double CVP{ CntrlRes->P() - 0.0 };
|
||||
|
||||
BVP = BrakeRes->P();
|
||||
VVP = ValveRes->P();
|
||||
BCP = BrakeCyl->P();
|
||||
CVP = CntrlRes->P() - 0.0;
|
||||
|
||||
dv = 0;
|
||||
dV1 = 0;
|
||||
double dv{ 0.0 };
|
||||
double dV1{ 0.0 };
|
||||
|
||||
// sprawdzanie stanu
|
||||
CheckState(BCP, dV1);
|
||||
@@ -928,7 +920,7 @@ double TESt3::GetPF(double PP, double dt, double Vel)
|
||||
CVP = CntrlRes->P();
|
||||
VVP = ValveRes->P();
|
||||
// przeplyw ZS <-> PG
|
||||
temp = CVs(BCP);
|
||||
double temp = CVs(BCP);
|
||||
dv = PF(CVP, VVP, 0.0015 * temp) * dt;
|
||||
CntrlRes->Flow(+dv);
|
||||
ValveRes->Flow(-0.04 * dv);
|
||||
@@ -936,16 +928,19 @@ double TESt3::GetPF(double PP, double dt, double Vel)
|
||||
|
||||
// luzowanie
|
||||
if ((BrakeStatus & b_hld) == b_off)
|
||||
dv = PF(0, BCP, 0.0042 * (1.37 - int(BrakeDelayFlag == bdelay_G)) * SizeBC) * dt;
|
||||
dv = PF(0, BCP, 0.0042 * (1.37 - (BrakeDelayFlag == bdelay_G ? 1.0 : 0.0)) * SizeBC) * dt;
|
||||
else
|
||||
dv = 0;
|
||||
BrakeCyl->Flow(-dv);
|
||||
// przeplyw ZP <-> silowniki
|
||||
if ((BrakeStatus & b_on) == b_on)
|
||||
dv = PF(BVP, BCP,
|
||||
0.017 * (1 + int((BCP < 0.58) && (BrakeDelayFlag == bdelay_G))) *
|
||||
(1.13 - int((BCP > 0.6) && (BrakeDelayFlag == bdelay_G))) * SizeBC) *
|
||||
dt;
|
||||
dv = PF(
|
||||
BVP,
|
||||
BCP,
|
||||
0.017 *
|
||||
( 1.00 + ( ((BCP < 0.58) && (BrakeDelayFlag == bdelay_G)) ? 1.0 : 0.0 ) ) *
|
||||
( 1.13 - ( ((BCP > 0.60) && (BrakeDelayFlag == bdelay_G)) ? 1.0 : 0.0 ) ) * SizeBC
|
||||
) * dt;
|
||||
else
|
||||
dv = 0;
|
||||
BrakeRes->Flow(dv);
|
||||
@@ -957,7 +952,7 @@ double TESt3::GetPF(double PP, double dt, double Vel)
|
||||
else
|
||||
dv = 0;
|
||||
BrakeRes->Flow(dv);
|
||||
dV1 = dV1 + dv * 0.96;
|
||||
dV1 += dv * 0.96;
|
||||
ValveRes->Flow(-0.04 * dv);
|
||||
// przeplyw PG <-> rozdzielacz
|
||||
dv = PF(PP, VVP, 0.01) * dt;
|
||||
@@ -972,7 +967,7 @@ double TESt3::GetPF(double PP, double dt, double Vel)
|
||||
|
||||
//---EST4-RAPID---
|
||||
|
||||
double TESt4R::GetPF(double PP, double dt, double Vel)
|
||||
double TESt4R::GetPF( double const PP, double const dt, double const Vel )
|
||||
{
|
||||
double result;
|
||||
double dv;
|
||||
@@ -1032,7 +1027,9 @@ double TESt4R::GetPF(double PP, double dt, double Vel)
|
||||
|
||||
result = dv - dV1;
|
||||
|
||||
RapidStatus = (BrakeDelayFlag == bdelay_R) && (((Vel > 55) && (RapidStatus)) || (Vel > 70));
|
||||
RapidStatus = ( BrakeDelayFlag == bdelay_R )
|
||||
&& ( ( ( Vel > 55 ) && ( RapidStatus == true ) )
|
||||
|| ( Vel > 70 ) );
|
||||
|
||||
RapidTemp = RapidTemp + (0.9 * int(RapidStatus) - RapidTemp) * dt / 2;
|
||||
temp = 1.9 - RapidTemp;
|
||||
@@ -1066,7 +1063,7 @@ double TESt4R::GetPF(double PP, double dt, double Vel)
|
||||
return result;
|
||||
}
|
||||
|
||||
void TESt4R::Init(double PP, double HPP, double LPP, double BP, int BDF)
|
||||
void TESt4R::Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )
|
||||
{
|
||||
TESt::Init(PP, HPP, LPP, BP, BDF);
|
||||
ImplsRes->CreateCap(1);
|
||||
@@ -1077,7 +1074,7 @@ void TESt4R::Init(double PP, double HPP, double LPP, double BP, int BDF)
|
||||
|
||||
//---EST3/AL2---
|
||||
|
||||
double TESt3AL2::GetPF(double PP, double dt, double Vel)
|
||||
double TESt3AL2::GetPF( double const PP, double const dt, double const Vel )
|
||||
{
|
||||
double result;
|
||||
double dv;
|
||||
@@ -1161,21 +1158,21 @@ double TESt3AL2::GetPF(double PP, double dt, double Vel)
|
||||
return result;
|
||||
}
|
||||
|
||||
void TESt3AL2::PLC(double mass)
|
||||
void TESt3AL2::PLC( double const mass )
|
||||
{
|
||||
LoadC = 1 +
|
||||
int(mass < LoadM) *
|
||||
((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1);
|
||||
}
|
||||
|
||||
void TESt3AL2::SetLP(double TM, double LM, double TBP)
|
||||
void TESt3AL2::SetLP( double const TM, double const LM, double const TBP )
|
||||
{
|
||||
TareM = TM;
|
||||
LoadM = LM;
|
||||
TareBP = TBP;
|
||||
}
|
||||
|
||||
void TESt3AL2::Init(double PP, double HPP, double LPP, double BP, int BDF)
|
||||
void TESt3AL2::Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )
|
||||
{
|
||||
TESt::Init(PP, HPP, LPP, BP, BDF);
|
||||
ImplsRes->CreateCap(1);
|
||||
@@ -1184,7 +1181,7 @@ void TESt3AL2::Init(double PP, double HPP, double LPP, double BP, int BDF)
|
||||
|
||||
//---LSt---
|
||||
|
||||
double TLSt::GetPF(double PP, double dt, double Vel)
|
||||
double TLSt::GetPF( double const PP, double const dt, double const Vel )
|
||||
{
|
||||
double result;
|
||||
double dv;
|
||||
@@ -1298,7 +1295,7 @@ double TLSt::GetPF(double PP, double dt, double Vel)
|
||||
return result;
|
||||
}
|
||||
|
||||
void TLSt::Init(double PP, double HPP, double LPP, double BP, int BDF)
|
||||
void TLSt::Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )
|
||||
{
|
||||
TESt4R::Init(PP, HPP, LPP, BP, BDF);
|
||||
ValveRes->CreateCap(1);
|
||||
@@ -1312,7 +1309,7 @@ void TLSt::Init(double PP, double HPP, double LPP, double BP, int BDF)
|
||||
BrakeDelayFlag = BDF;
|
||||
}
|
||||
|
||||
void TLSt::SetLBP(double P)
|
||||
void TLSt::SetLBP( double const P )
|
||||
{
|
||||
LBP = P;
|
||||
}
|
||||
@@ -1327,17 +1324,17 @@ double TLSt::GetEDBCP()
|
||||
return (CVP - BCP) * BVM;
|
||||
}
|
||||
|
||||
void TLSt::SetED(double EDstate)
|
||||
void TLSt::SetED( double const EDstate )
|
||||
{
|
||||
EDFlag = EDstate;
|
||||
}
|
||||
|
||||
void TLSt::SetRM(double RMR)
|
||||
void TLSt::SetRM( double const RMR )
|
||||
{
|
||||
RM = 1 - RMR;
|
||||
}
|
||||
|
||||
double TLSt::GetHPFlow(double HP, double dt)
|
||||
double TLSt::GetHPFlow( double const HP, double const dt )
|
||||
{
|
||||
double dv;
|
||||
|
||||
@@ -1348,7 +1345,7 @@ double TLSt::GetHPFlow(double HP, double dt)
|
||||
|
||||
//---EStED---
|
||||
|
||||
double TEStED::GetPF(double PP, double dt, double Vel)
|
||||
double TEStED::GetPF( double const PP, double const dt, double const Vel )
|
||||
{
|
||||
double dv;
|
||||
double dV1;
|
||||
@@ -1496,7 +1493,7 @@ double TEStED::GetPF(double PP, double dt, double Vel)
|
||||
return dv - dV1;
|
||||
}
|
||||
|
||||
void TEStED::Init(double PP, double HPP, double LPP, double BP, int BDF)
|
||||
void TEStED::Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )
|
||||
{
|
||||
TLSt::Init(PP, HPP, LPP, BP, BDF);
|
||||
int i;
|
||||
@@ -1546,14 +1543,14 @@ double TEStED::GetEDBCP()
|
||||
return ImplsRes->P() * LoadC;
|
||||
}
|
||||
|
||||
void TEStED::PLC(double mass)
|
||||
void TEStED::PLC( double const mass )
|
||||
{
|
||||
LoadC = 1 +
|
||||
int(mass < LoadM) *
|
||||
((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1);
|
||||
}
|
||||
|
||||
void TEStED::SetLP(double TM, double LM, double TBP)
|
||||
void TEStED::SetLP( double const TM, double const LM, double const TBP )
|
||||
{
|
||||
TareM = TM;
|
||||
LoadM = LM;
|
||||
@@ -1562,7 +1559,7 @@ void TEStED::SetLP(double TM, double LM, double TBP)
|
||||
|
||||
//---DAKO CV1---
|
||||
|
||||
void TCV1::CheckState(double BCP, double &dV1)
|
||||
void TCV1::CheckState( double const BCP, double &dV1 )
|
||||
{
|
||||
double VVP;
|
||||
double BVP;
|
||||
@@ -1595,7 +1592,7 @@ void TCV1::CheckState(double BCP, double &dV1)
|
||||
BrakeStatus |= b_hld;
|
||||
}
|
||||
|
||||
double TCV1::CVs(double BP)
|
||||
double TCV1::CVs(double const BP)
|
||||
{
|
||||
// przeplyw ZS <-> PG
|
||||
if ((BP > 0.05))
|
||||
@@ -1604,7 +1601,7 @@ double TCV1::CVs(double BP)
|
||||
return 0.23;
|
||||
}
|
||||
|
||||
double TCV1::BVs(double BCP)
|
||||
double TCV1::BVs( double const BCP )
|
||||
{
|
||||
double VVP;
|
||||
double BVP;
|
||||
@@ -1623,7 +1620,7 @@ double TCV1::BVs(double BCP)
|
||||
return 0.2 * (1.5 - int(BVP > VVP));
|
||||
}
|
||||
|
||||
double TCV1::GetPF(double PP, double dt, double Vel)
|
||||
double TCV1::GetPF( double const PP, double const dt, double const Vel )
|
||||
{
|
||||
double dv;
|
||||
double dV1;
|
||||
@@ -1690,7 +1687,7 @@ double TCV1::GetPF(double PP, double dt, double Vel)
|
||||
return dv - dV1;
|
||||
}
|
||||
|
||||
void TCV1::Init(double PP, double HPP, double LPP, double BP, int BDF)
|
||||
void TCV1::Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )
|
||||
{
|
||||
TBrake::Init(PP, HPP, LPP, BP, BDF);
|
||||
ValveRes->CreatePress(PP);
|
||||
@@ -1712,12 +1709,12 @@ double TCV1::GetCRP()
|
||||
|
||||
//---CV1-L-TR---
|
||||
|
||||
void TCV1L_TR::SetLBP(double P)
|
||||
void TCV1L_TR::SetLBP( double const P )
|
||||
{
|
||||
LBP = P;
|
||||
}
|
||||
|
||||
double TCV1L_TR::GetHPFlow(double HP, double dt)
|
||||
double TCV1L_TR::GetHPFlow( double const HP, double const dt )
|
||||
{
|
||||
double dv;
|
||||
|
||||
@@ -1727,14 +1724,14 @@ double TCV1L_TR::GetHPFlow(double HP, double dt)
|
||||
return dv;
|
||||
}
|
||||
|
||||
void TCV1L_TR::Init(double PP, double HPP, double LPP, double BP, int BDF)
|
||||
void TCV1L_TR::Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )
|
||||
{
|
||||
TCV1::Init(PP, HPP, LPP, BP, BDF);
|
||||
ImplsRes->CreateCap(2.5);
|
||||
ImplsRes->CreatePress(BP);
|
||||
}
|
||||
|
||||
double TCV1L_TR::GetPF(double PP, double dt, double Vel)
|
||||
double TCV1L_TR::GetPF( double const PP, double const dt, double const Vel )
|
||||
{
|
||||
double result;
|
||||
double dv;
|
||||
@@ -1821,7 +1818,7 @@ double TCV1L_TR::GetPF(double PP, double dt, double Vel)
|
||||
}
|
||||
|
||||
//--- KNORR KE ---
|
||||
void TKE::CheckReleaser(double dt)
|
||||
void TKE::CheckReleaser( double const dt )
|
||||
{
|
||||
double VVP;
|
||||
double CVP;
|
||||
@@ -1837,7 +1834,7 @@ void TKE::CheckReleaser(double dt)
|
||||
CntrlRes->Flow(+PF(CVP, 0, 0.1) * dt);
|
||||
}
|
||||
|
||||
void TKE::CheckState(double BCP, double &dV1)
|
||||
void TKE::CheckState( double const BCP, double &dV1 )
|
||||
{
|
||||
double VVP;
|
||||
double BVP;
|
||||
@@ -1866,7 +1863,7 @@ void TKE::CheckState(double BCP, double &dV1)
|
||||
BrakeStatus |= b_hld;
|
||||
}
|
||||
|
||||
double TKE::CVs(double BP)
|
||||
double TKE::CVs( double const BP )
|
||||
{
|
||||
double VVP;
|
||||
double BVP;
|
||||
@@ -1885,7 +1882,7 @@ double TKE::CVs(double BP)
|
||||
return 0.23;
|
||||
}
|
||||
|
||||
double TKE::BVs(double BCP)
|
||||
double TKE::BVs( double const BCP )
|
||||
{
|
||||
double VVP;
|
||||
double BVP;
|
||||
@@ -1904,7 +1901,7 @@ double TKE::BVs(double BCP)
|
||||
return 0.13;
|
||||
}
|
||||
|
||||
double TKE::GetPF(double PP, double dt, double Vel)
|
||||
double TKE::GetPF( double const PP, double const dt, double const Vel )
|
||||
{
|
||||
double dv;
|
||||
double dV1;
|
||||
@@ -2020,7 +2017,7 @@ double TKE::GetPF(double PP, double dt, double Vel)
|
||||
return dv - dV1;
|
||||
}
|
||||
|
||||
void TKE::Init(double PP, double HPP, double LPP, double BP, int BDF)
|
||||
void TKE::Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )
|
||||
{
|
||||
TBrake::Init(PP, HPP, LPP, BP, BDF);
|
||||
ValveRes->CreatePress(PP);
|
||||
@@ -2045,7 +2042,7 @@ double TKE::GetCRP()
|
||||
return CntrlRes->P();
|
||||
}
|
||||
|
||||
double TKE::GetHPFlow(double HP, double dt)
|
||||
double TKE::GetHPFlow( double const HP, double const dt )
|
||||
{
|
||||
double dv;
|
||||
|
||||
@@ -2055,33 +2052,33 @@ double TKE::GetHPFlow(double HP, double dt)
|
||||
return dv;
|
||||
}
|
||||
|
||||
void TKE::PLC(double mass)
|
||||
void TKE::PLC( double const mass )
|
||||
{
|
||||
LoadC = 1 +
|
||||
int(mass < LoadM) *
|
||||
((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1);
|
||||
}
|
||||
|
||||
void TKE::SetLP(double TM, double LM, double TBP)
|
||||
void TKE::SetLP( double const TM, double const LM, double const TBP )
|
||||
{
|
||||
TareM = TM;
|
||||
LoadM = LM;
|
||||
TareBP = TBP;
|
||||
}
|
||||
|
||||
void TKE::SetRM(double RMR)
|
||||
void TKE::SetRM( double const RMR )
|
||||
{
|
||||
RM = 1.0 - RMR;
|
||||
}
|
||||
|
||||
void TKE::SetLBP(double P)
|
||||
void TKE::SetLBP( double const P )
|
||||
{
|
||||
LBP = P;
|
||||
}
|
||||
|
||||
//---KRANY---
|
||||
|
||||
double TDriverHandle::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
|
||||
double TDriverHandle::GetPF(double const i_bcp, double PP, double HP, double dt, double ep)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -191,30 +191,30 @@ class TBrake {
|
||||
public:
|
||||
TBrake(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);
|
||||
//maksymalne cisnienie, promien, skok roboczy, pojemnosc ZP, ilosc cylindrow, opoznienia hamulca, material klockow, osie hamowane, klocki na os;
|
||||
virtual void Init(double PP, double HPP, double LPP, double BP, int BDF); //inicjalizacja hamulca
|
||||
virtual void Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF ); //inicjalizacja hamulca
|
||||
|
||||
double GetFC(double Vel, double N); //wspolczynnik tarcia - hamulec wie lepiej
|
||||
virtual double GetPF(double PP, double dt, double Vel); //przeplyw miedzy komora wstepna i PG
|
||||
double GetFC( double const Vel, double const N ); //wspolczynnik tarcia - hamulec wie lepiej
|
||||
virtual double GetPF( double const PP, double const dt, double const Vel ); //przeplyw miedzy komora wstepna i PG
|
||||
double GetBCF(); //sila tlokowa z tloka
|
||||
virtual double GetHPFlow(double HP, double dt); //przeplyw - 8 bar
|
||||
virtual double GetHPFlow( double const HP, double const dt ); //przeplyw - 8 bar
|
||||
double GetBCP(); //cisnienie cylindrow hamulcowych
|
||||
virtual double GetEDBCP(); //cisnienie tylko z hamulca zasadniczego, uzywane do hamulca ED w EP09
|
||||
double GetBRP(); //cisnienie zbiornika pomocniczego
|
||||
double GetVRP(); //cisnienie komory wstepnej rozdzielacza
|
||||
virtual double GetCRP(); //cisnienie zbiornika sterujacego
|
||||
bool SetBDF(int nBDF); //nastawiacz GPRM
|
||||
void Releaser(int state); //odluzniacz
|
||||
virtual void SetEPS(double nEPS); //hamulec EP
|
||||
virtual void SetRM(double RMR) {}; //ustalenie przelozenia rapida
|
||||
virtual void SetLP(double TM, double LM, double TBP) {}; //parametry przystawki wazacej
|
||||
virtual void SetLBP(double P) {}; //cisnienie z hamulca pomocniczego
|
||||
virtual void PLC(double mass) {}; //wspolczynnik cisnienia przystawki wazacej
|
||||
bool SetBDF( int const nBDF ); //nastawiacz GPRM
|
||||
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 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
|
||||
void ASB(int state); //hamulec przeciwposlizgowy
|
||||
int GetStatus(); //flaga statusu, moze sie przydac do odglosow
|
||||
void SetASBP(double Press); //ustalenie cisnienia pp
|
||||
void SetASBP( double const Press ); //ustalenie cisnienia pp
|
||||
virtual void ForceEmptiness();
|
||||
int GetSoundFlag();
|
||||
virtual void SetED(double EDstate) {}; //stan hamulca ED do luzowania
|
||||
virtual void SetED( double const EDstate ) {}; //stan hamulca ED do luzowania
|
||||
};
|
||||
|
||||
class TWest : public TBrake {
|
||||
@@ -229,13 +229,13 @@ class TWest : public TBrake {
|
||||
double LoadC = 0.0; //wspolczynnik przystawki wazacej
|
||||
|
||||
public:
|
||||
void Init(double PP, double HPP, double LPP, double BP, int BDF)/*override*/;
|
||||
void SetLBP(double P); //cisnienie z hamulca pomocniczego
|
||||
double GetPF(double PP, double dt, double Vel)/*override*/; //przeplyw miedzy komora wstepna i PG
|
||||
double GetHPFlow(double HP, double dt)/*override*/;
|
||||
void PLC(double mass); //wspolczynnik cisnienia przystawki wazacej
|
||||
void SetEPS(double nEPS)/*override*/; //stan hamulca EP
|
||||
void SetLP(double TM, double LM, double TBP); //parametry przystawki wazacej
|
||||
void Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )/*override*/;
|
||||
void SetLBP(double const P); //cisnienie z hamulca pomocniczego
|
||||
double GetPF( double const PP, double const dt, double const Vel )/*override*/; //przeplyw miedzy komora wstepna i PG
|
||||
double GetHPFlow( double const HP, double const dt )/*override*/;
|
||||
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
|
||||
|
||||
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)
|
||||
@@ -251,8 +251,8 @@ class TESt : public TBrake {
|
||||
double BVM = 0.0; // przelozenie PG-CH
|
||||
|
||||
public:
|
||||
void Init(double PP, double HPP, double LPP, double BP, int BDF)/*override*/;
|
||||
double GetPF(double PP, double dt, double Vel)/*override*/; //przeplyw miedzy komora wstepna i PG
|
||||
void Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )/*override*/;
|
||||
double GetPF( double const PP, double const dt, double const Vel )/*override*/; //przeplyw miedzy komora wstepna i PG
|
||||
void EStParams(double i_crc); //parametry charakterystyczne dla ESt
|
||||
double GetCRP()/*override*/;
|
||||
void CheckState(double BCP, double & dV1); //glowny przyrzad rozrzadczy
|
||||
@@ -273,7 +273,7 @@ class TESt3 : public TESt {
|
||||
//double CylFlowSpeed[2][2]; //zmienna nie uzywana
|
||||
|
||||
public:
|
||||
double GetPF(double PP, double dt, double 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
|
||||
|
||||
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)
|
||||
@@ -290,10 +290,10 @@ class TESt3AL2 : public TESt3 {
|
||||
double LoadC = 0.0;
|
||||
|
||||
public:
|
||||
void Init(double PP, double HPP, double LPP, double BP, int BDF)/*override*/;
|
||||
double GetPF(double PP, double dt, double Vel)/*override*/; //przeplyw miedzy komora wstepna i PG
|
||||
void PLC(double mass); //wspolczynnik cisnienia przystawki wazacej
|
||||
void SetLP(double TM, double LM, double TBP); //parametry przystawki wazacej
|
||||
void Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )/*override*/;
|
||||
double GetPF( double const PP, double const dt, double const Vel )/*override*/; //przeplyw miedzy komora wstepna i PG
|
||||
void PLC(double const mass); //wspolczynnik cisnienia przystawki wazacej
|
||||
void SetLP(double const TM, double const LM, double const TBP); //parametry przystawki wazacej
|
||||
|
||||
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)
|
||||
@@ -312,8 +312,8 @@ class TESt4R : public TESt {
|
||||
double RapidTemp = 0.0; //aktualne, zmienne przelozenie
|
||||
|
||||
public:
|
||||
void Init(double PP, double HPP, double LPP, double BP, int BDF)/*override*/;
|
||||
double GetPF(double PP, double dt, double Vel)/*override*/; //przeplyw miedzy komora wstepna i PG
|
||||
void Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )/*override*/;
|
||||
double GetPF( double const PP, double const dt, double const Vel )/*override*/; //przeplyw miedzy komora wstepna i PG
|
||||
|
||||
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)
|
||||
@@ -333,13 +333,13 @@ class TLSt : public TESt4R {
|
||||
double EDFlag = 0.0; //luzowanie hamulca z powodu zalaczonego ED
|
||||
|
||||
public:
|
||||
void Init(double PP, double HPP, double LPP, double BP, int BDF)/*override*/;
|
||||
void SetLBP(double P); //cisnienie z hamulca pomocniczego
|
||||
void SetRM(double RMR); //ustalenie przelozenia rapida
|
||||
double GetPF(double PP, double dt, double Vel)/*override*/; //przeplyw miedzy komora wstepna i PG
|
||||
double GetHPFlow(double HP, double dt)/*override*/; //przeplyw - 8 bar
|
||||
void Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )/*override*/;
|
||||
void SetLBP(double const P); //cisnienie z hamulca pomocniczego
|
||||
void SetRM( double const RMR ); //ustalenie przelozenia rapida
|
||||
double GetPF( double const PP, double const dt, double const Vel )/*override*/; //przeplyw miedzy komora wstepna i PG
|
||||
double GetHPFlow( double const HP, double const dt )/*override*/; //przeplyw - 8 bar
|
||||
virtual double GetEDBCP(); //cisnienie tylko z hamulca zasadniczego, uzywane do hamulca ED w EP09
|
||||
virtual void SetED(double EDstate); //stan hamulca ED do luzowania
|
||||
virtual void SetED( double const EDstate ); //stan hamulca ED do luzowania
|
||||
|
||||
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)
|
||||
@@ -360,11 +360,11 @@ class TEStED : public TLSt { //zawor z EP09 - Est4 z oddzielnym przekladnikiem,
|
||||
|
||||
|
||||
public:
|
||||
void Init(double PP, double HPP, double LPP, double BP, int BDF)/*override*/;
|
||||
double GetPF(double PP, double dt, double Vel)/*override*/; //przeplyw miedzy komora wstepna i PG
|
||||
void Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )/*override*/;
|
||||
double GetPF( double const PP, double const dt, double const Vel )/*override*/; //przeplyw miedzy komora wstepna i PG
|
||||
double GetEDBCP()/*override*/; //cisnienie tylko z hamulca zasadniczego, uzywane do hamulca ED
|
||||
void PLC(double mass); //wspolczynnik cisnienia przystawki wazacej
|
||||
void SetLP(double TM, double LM, double TBP); //parametry przystawki wazacej
|
||||
void PLC(double const mass); //wspolczynnik cisnienia przystawki wazacej
|
||||
void SetLP( double const TM, double const LM, double const TBP ); //parametry przystawki wazacej
|
||||
|
||||
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)
|
||||
@@ -375,20 +375,19 @@ class TEStED : public TLSt { //zawor z EP09 - Est4 z oddzielnym przekladnikiem,
|
||||
|
||||
class TEStEP2 : public TLSt {
|
||||
|
||||
private:
|
||||
double TareM = 0.0; //masa proznego
|
||||
double LoadM = 0.0; //masa pelnego
|
||||
double TareBP = 0.0; //cisnienie dla proznego
|
||||
double LoadC = 0.0;
|
||||
double EPS = 0.0;
|
||||
private:
|
||||
double TareM = 0.0; //masa proznego
|
||||
double LoadM = 0.0; //masa pelnego
|
||||
double TareBP = 0.0; //cisnienie dla proznego
|
||||
double LoadC = 0.0;
|
||||
double EPS = 0.0;
|
||||
|
||||
|
||||
public:
|
||||
void Init(double PP, double HPP, double LPP, double BP, int BDF)/*override*/; //inicjalizacja
|
||||
double GetPF(double PP, double dt, double Vel)/*override*/; //przeplyw miedzy komora wstepna i PG
|
||||
void PLC(double mass); //wspolczynnik cisnienia przystawki wazacej
|
||||
void SetEPS(double nEPS)/*override*/; //stan hamulca EP
|
||||
void SetLP(double TM, double LM, double TBP); //parametry przystawki wazacej
|
||||
public:
|
||||
void Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )/*override*/; //inicjalizacja
|
||||
double GetPF( double const PP, double const dt, double const Vel )/*override*/; //przeplyw miedzy komora wstepna i PG
|
||||
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
|
||||
|
||||
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)
|
||||
@@ -397,19 +396,19 @@ class TEStEP2 : public TLSt {
|
||||
|
||||
class TCV1 : public TBrake {
|
||||
|
||||
private:
|
||||
double BVM = 0.0; //przelozenie PG-CH
|
||||
private:
|
||||
double BVM = 0.0; //przelozenie PG-CH
|
||||
|
||||
protected:
|
||||
std::shared_ptr<TReservoir> CntrlRes; // zbiornik sterujący
|
||||
protected:
|
||||
std::shared_ptr<TReservoir> CntrlRes; // zbiornik sterujący
|
||||
|
||||
public:
|
||||
void Init(double PP, double HPP, double LPP, double BP, int BDF)/*override*/;
|
||||
double GetPF(double PP, double dt, double Vel)/*override*/; //przeplyw miedzy komora wstepna i PG
|
||||
double GetCRP()/*override*/;
|
||||
void CheckState(double BCP, double & dV1);
|
||||
double CVs(double BP);
|
||||
double BVs(double BCP);
|
||||
public:
|
||||
void Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )/*override*/;
|
||||
double GetPF( double const PP, double const dt, double const Vel )/*override*/; //przeplyw miedzy komora wstepna i PG
|
||||
double GetCRP()/*override*/;
|
||||
void CheckState( double const BCP, double &dV1 );
|
||||
double CVs( double const BP );
|
||||
double BVs( double const BCP );
|
||||
|
||||
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)
|
||||
@@ -437,20 +436,20 @@ class TCV1 : public TBrake {
|
||||
|
||||
class TCV1L_TR : public TCV1 {
|
||||
|
||||
private:
|
||||
std::shared_ptr<TReservoir> ImplsRes; //komora impulsowa
|
||||
double LBP = 0.0; //cisnienie hamulca pomocniczego
|
||||
private:
|
||||
std::shared_ptr<TReservoir> ImplsRes; //komora impulsowa
|
||||
double LBP = 0.0; //cisnienie hamulca pomocniczego
|
||||
|
||||
public:
|
||||
void Init(double PP, double HPP, double LPP, double BP, int BDF)/*override*/;
|
||||
double GetPF(double PP, double dt, double Vel)/*override*/; //przeplyw miedzy komora wstepna i PG
|
||||
void SetLBP(double P); //cisnienie z hamulca pomocniczego
|
||||
double GetHPFlow(double HP, double dt)/*override*/; //przeplyw - 8 bar
|
||||
public:
|
||||
void Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )/*override*/;
|
||||
double GetPF( double const PP, double const dt, double const Vel )/*override*/; //przeplyw miedzy komora wstepna i PG
|
||||
void SetLBP( double const P ); //cisnienie z hamulca pomocniczego
|
||||
double GetHPFlow( double const HP, double const dt )/*override*/; //przeplyw - 8 bar
|
||||
|
||||
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)
|
||||
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)
|
||||
{
|
||||
ImplsRes = std::make_shared<TReservoir>();
|
||||
ImplsRes = std::make_shared<TReservoir>();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -470,18 +469,18 @@ class TKE : public TBrake { //Knorr Einheitsbauart — jeden do wszystkiego
|
||||
double LBP = 0.0; //cisnienie hamulca pomocniczego
|
||||
|
||||
public:
|
||||
void Init(double PP, double HPP, double LPP, double BP, int BDF)/*override*/;
|
||||
void SetRM(double RMR); //ustalenie przelozenia rapida
|
||||
double GetPF(double PP, double dt, double Vel)/*override*/; //przeplyw miedzy komora wstepna i PG
|
||||
double GetHPFlow(double HP, double dt)/*override*/; //przeplyw - 8 bar
|
||||
void Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )/*override*/;
|
||||
void SetRM( double const RMR ); //ustalenie przelozenia rapida
|
||||
double GetPF( double const PP, double const dt, double const Vel )/*override*/; //przeplyw miedzy komora wstepna i PG
|
||||
double GetHPFlow( double const HP, double const dt )/*override*/; //przeplyw - 8 bar
|
||||
double GetCRP()/*override*/;
|
||||
void CheckState(double BCP, double & dV1);
|
||||
void CheckReleaser(double dt); //odluzniacz
|
||||
double CVs(double BP); //napelniacz sterujacego
|
||||
double BVs(double BCP); //napelniacz pomocniczego
|
||||
void PLC(double mass); //wspolczynnik cisnienia przystawki wazacej
|
||||
void SetLP(double TM, double LM, double TBP); //parametry przystawki wazacej
|
||||
void SetLBP(double P); //cisnienie z hamulca pomocniczego
|
||||
void CheckState( double const BCP, double &dV1 );
|
||||
void CheckReleaser( double const dt ); //odluzniacz
|
||||
double CVs( double const BP ); //napelniacz sterujacego
|
||||
double BVs( double const BCP ); //napelniacz pomocniczego
|
||||
void PLC( double const mass ); //wspolczynnik cisnienia przystawki wazacej
|
||||
void SetLP( double const TM, double const LM, double const TBP ); //parametry przystawki wazacej
|
||||
void SetLBP( double const P ); //cisnienie z hamulca pomocniczego
|
||||
|
||||
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)
|
||||
@@ -742,8 +741,8 @@ class TFVel6 : public TDriverHandle {
|
||||
};
|
||||
|
||||
|
||||
extern double PF(double P1, double P2, double S, double DP = 0.25);
|
||||
extern double PF1(double P1, double P2, double S);
|
||||
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 );
|
||||
|
||||
extern double PFVa(double PH, double PL, double S, double LIM, double DP = 0.1); //zawor napelniajacy z PH do PL, PL do LIM
|
||||
extern double PFVd(double PH, double PL, double S, double LIM, double DP = 0.1); //zawor wypuszczajacy z PH do PL, PH do LIM
|
||||
extern double PFVa( double PH, double PL, double const S, double LIM, double const DP = 0.1 ); //zawor napelniajacy z PH do PL, PL do LIM
|
||||
extern double PFVd( double PH, double PL, double const S, double LIM, double const DP = 0.1 ); //zawor wypuszczajacy z PH do PL, PH do LIM
|
||||
|
||||
@@ -35,6 +35,8 @@ Obiekty sortowane wg nazw, można dodawać i usuwać komórki scenerii:
|
||||
|
||||
*/
|
||||
|
||||
#ifdef EU07_USE_OLD_TNAMES_CLASS
|
||||
|
||||
void ItemRecord::TreeAdd(ItemRecord *r, int c)
|
||||
{ // dodanie rekordu do drzewa - ustalenie w której gałęzi
|
||||
// zapisać w (iFlags) ile znaków jest zgodnych z nadrzędnym, żeby nie sprawdzać wszystkich od
|
||||
@@ -183,3 +185,5 @@ ItemRecord * TNames::FindRecord(const int t, const char *n)
|
||||
{ // poszukiwanie rekordu w celu np. zmiany wskaźnika
|
||||
return rTypes[t] ? rTypes[t]->TreeFindRecord(n) : NULL;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
5
Names.h
5
Names.h
@@ -11,6 +11,8 @@ http://mozilla.org/MPL/2.0/.
|
||||
#include <unordered_map>
|
||||
#include <string>
|
||||
|
||||
#ifndef EU07_USE_OLD_TNAMES_CLASS
|
||||
|
||||
template <typename _Pointer>
|
||||
class TNames {
|
||||
|
||||
@@ -65,7 +67,8 @@ private:
|
||||
pointermap_map m_maps; // list of pointer maps of types specified so far
|
||||
};
|
||||
|
||||
#ifdef EU07_USE_OLD_TNAMES_CLASS
|
||||
#else
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
class ItemRecord
|
||||
{ // rekord opisujący obiekt; raz utworzony nie przemieszcza się
|
||||
|
||||
103
Texture.cpp
103
Texture.cpp
@@ -303,7 +303,7 @@ TTexturesManager::AlphaValue TTexturesManager::LoadBMP(std::string const &fileNa
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR );
|
||||
if( true == GLEW_VERSION_1_4 ) {
|
||||
if( GLEW_VERSION_1_4 ) {
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE );
|
||||
}
|
||||
// This is specific to the binary format of the data read in.
|
||||
@@ -784,6 +784,15 @@ TTexturesManager::AlphaValue TTexturesManager::LoadDDS(std::string fileName, int
|
||||
data.width /= 2;
|
||||
data.height /= 2;
|
||||
};
|
||||
|
||||
if( ( data.numMipMaps == 1 )
|
||||
&& ( GLEW_VERSION_1_4 ) ) {
|
||||
// generate missing mipmaps for the updated render path
|
||||
// TODO, TBD: skip this for UI images
|
||||
glGenerateMipmap( GL_TEXTURE_2D );
|
||||
WriteLog( "Warning - generating missing mipmaps for " + fileName );
|
||||
}
|
||||
|
||||
delete[] data.pixels;
|
||||
return std::make_pair(id, data.components == 4);
|
||||
};
|
||||
@@ -823,39 +832,46 @@ void TTexturesManager::SetFiltering(int filter)
|
||||
void TTexturesManager::SetFiltering(bool alpha, bool hash)
|
||||
{
|
||||
|
||||
if (alpha || hash)
|
||||
{
|
||||
if (alpha) // przezroczystosc: nie wlaczac mipmapingu
|
||||
{
|
||||
if (hash) // #: calkowity brak filtracji - pikseloza
|
||||
{
|
||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||
}
|
||||
else
|
||||
{
|
||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
}
|
||||
}
|
||||
else // filtruj ale bez dalekich mipmap - robi artefakty
|
||||
{
|
||||
/*
|
||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
*/
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR );
|
||||
}
|
||||
}
|
||||
else // $: filtruj wszystko - brzydko się zlewa
|
||||
{
|
||||
/*
|
||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
|
||||
*/
|
||||
if( GLEW_VERSION_1_4 ) {
|
||||
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR );
|
||||
|
||||
if( true == hash ) {
|
||||
// #: sharpen more
|
||||
glTexEnvf( GL_TEXTURE_FILTER_CONTROL, GL_TEXTURE_LOD_BIAS, -2.0 );
|
||||
}
|
||||
else {
|
||||
// regular texture sharpening
|
||||
glTexEnvf( GL_TEXTURE_FILTER_CONTROL, GL_TEXTURE_LOD_BIAS, -1.0 );
|
||||
}
|
||||
}
|
||||
else {
|
||||
// legacy version, for ancient systems
|
||||
if( alpha || hash ) {
|
||||
if( alpha ) // przezroczystosc: nie wlaczac mipmapingu
|
||||
{
|
||||
if( hash ) // #: calkowity brak filtracji - pikseloza
|
||||
{
|
||||
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
|
||||
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
|
||||
}
|
||||
else {
|
||||
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
|
||||
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
|
||||
}
|
||||
}
|
||||
else // filtruj ale bez dalekich mipmap - robi artefakty
|
||||
{
|
||||
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
|
||||
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
|
||||
}
|
||||
}
|
||||
else // $: filtruj wszystko - brzydko się zlewa
|
||||
{
|
||||
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
|
||||
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR );
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -873,18 +889,25 @@ GLuint TTexturesManager::CreateTexture(GLubyte *buff, GLint bpp, int width, int
|
||||
SetFiltering(filter); // cyfra po % w nazwie
|
||||
else
|
||||
SetFiltering(bHasAlpha && bDollar, bHash); // znaki #, $ i kanał alfa w nazwie
|
||||
if( true == GLEW_VERSION_1_4 ) {
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE );
|
||||
}
|
||||
|
||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
|
||||
glPixelStorei(GL_UNPACK_SKIP_ROWS, 0);
|
||||
glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0);
|
||||
/* if (bHasAlpha || bHash || (filter == 0))
|
||||
*/ glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, bpp,
|
||||
GL_UNSIGNED_BYTE, buff);
|
||||
// else
|
||||
// gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, width, height, bpp, GL_UNSIGNED_BYTE, buff);
|
||||
|
||||
if( GLEW_VERSION_1_4 ) {
|
||||
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE );
|
||||
glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, bpp, GL_UNSIGNED_BYTE, buff );
|
||||
}
|
||||
else {
|
||||
// legacy version, for ancient systems
|
||||
if( bHasAlpha || bHash || ( filter == 0 ) )
|
||||
glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, bpp, GL_UNSIGNED_BYTE, buff );
|
||||
else
|
||||
gluBuild2DMipmaps( GL_TEXTURE_2D, GL_RGB, width, height, bpp, GL_UNSIGNED_BYTE, buff );
|
||||
}
|
||||
|
||||
return ID;
|
||||
}
|
||||
|
||||
|
||||
@@ -114,6 +114,7 @@
|
||||
<ClCompile Include="MemCell.cpp" />
|
||||
<ClCompile Include="Model3d.cpp" />
|
||||
<ClCompile Include="mtable.cpp" />
|
||||
<ClCompile Include="Names.cpp" />
|
||||
<ClCompile Include="opengl\ARB_Multisample.cpp" />
|
||||
<ClCompile Include="parser.cpp" />
|
||||
<ClCompile Include="PyInt.cpp" />
|
||||
@@ -205,6 +206,10 @@
|
||||
<ItemGroup>
|
||||
<Image Include="eu07.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="ClassDiagram.cd" />
|
||||
<None Include="ClassDiagram1.cd" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
|
||||
@@ -186,6 +186,9 @@
|
||||
<ClCompile Include="Console\MWD.cpp">
|
||||
<Filter>Source Files\console</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Names.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="opengl\glew.h">
|
||||
@@ -373,4 +376,8 @@
|
||||
<Filter>Resource Files</Filter>
|
||||
</Image>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="ClassDiagram.cd" />
|
||||
<None Include="ClassDiagram1.cd" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
Reference in New Issue
Block a user