mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 20:59:19 +02:00
Poprawka na parsowanie wpisu hamulca. Formatowanie plików.
This commit is contained in:
4
.gitignore
vendored
4
.gitignore
vendored
@@ -64,3 +64,7 @@ MaSzyna.sln
|
|||||||
MaSzyna.vcxproj
|
MaSzyna.vcxproj
|
||||||
MaSzyna.vcxproj.filters
|
MaSzyna.vcxproj.filters
|
||||||
*.suo
|
*.suo
|
||||||
|
EU07.tds
|
||||||
|
MaSzyna.VC.VC.opendb
|
||||||
|
MaSzyna.VC.db
|
||||||
|
.vs/
|
||||||
|
|||||||
@@ -1763,10 +1763,10 @@ TDynamicObject::Init(string Name, // nazwa pojazdu, np. "EU07-424"
|
|||||||
// kropkę na koniec
|
// kropkę na koniec
|
||||||
int kropka = MoreParams.find("."); // znajdź kropke
|
int kropka = MoreParams.find("."); // znajdź kropke
|
||||||
string ActPar; // na parametry
|
string ActPar; // na parametry
|
||||||
while (kropka > 0) // jesli sa kropki jeszcze
|
while (kropka != std::string::npos) // jesli sa kropki jeszcze
|
||||||
{
|
{
|
||||||
int dlugosc = MoreParams.length();
|
int dlugosc = MoreParams.length();
|
||||||
ActPar = ToUpper(MoreParams.substr(0, kropka - 1)); // pierwszy parametr;
|
ActPar = ToUpper(MoreParams.substr(0, kropka)); // pierwszy parametr;
|
||||||
MoreParams = MoreParams.substr(kropka + 1, dlugosc - kropka); // reszta do dalszej
|
MoreParams = MoreParams.substr(kropka + 1, dlugosc - kropka); // reszta do dalszej
|
||||||
// obrobki
|
// obrobki
|
||||||
kropka = MoreParams.find(".");
|
kropka = MoreParams.find(".");
|
||||||
|
|||||||
13
EU07.bpr
13
EU07.bpr
@@ -41,8 +41,7 @@
|
|||||||
<OPTIONS>
|
<OPTIONS>
|
||||||
<IDLCFLAGS value="-src_suffix cpp -DGLEW_STATIC -D_DEBUG -IConsole -Iopengl -IMcZapkie
|
<IDLCFLAGS value="-src_suffix cpp -DGLEW_STATIC -D_DEBUG -IConsole -Iopengl -IMcZapkie
|
||||||
-I$(BCB)\include -I$(BCB)\include\vcl -Ipython\include -boa"/>
|
-I$(BCB)\include -I$(BCB)\include\vcl -Ipython\include -boa"/>
|
||||||
<CFLAG1 value="-Od -H=$(BCB)\lib\vcl50.csm -Hc -w- -Vx -Ve -X- -r- -a1 -6 -b- -k -y -v
|
<CFLAG1 value="-Od -w- -Vx -Ve -X- -r- -a1 -6 -b- -k -y -v -vi- -c -tW -tWM"/>
|
||||||
-vi- -c -tW -tWM"/>
|
|
||||||
<PFLAGS value="-$Y+ -$W -$O- -v -JPHNE -M"/>
|
<PFLAGS value="-$Y+ -$W -$O- -v -JPHNE -M"/>
|
||||||
<RFLAGS value=""/>
|
<RFLAGS value=""/>
|
||||||
<AFLAGS value="/mx /w2 /zi"/>
|
<AFLAGS value="/mx /w2 /zi"/>
|
||||||
@@ -58,9 +57,9 @@
|
|||||||
IncludeVerInfo=1
|
IncludeVerInfo=1
|
||||||
AutoIncBuild=0
|
AutoIncBuild=0
|
||||||
MajorVer=16
|
MajorVer=16
|
||||||
MinorVer=0
|
MinorVer=1
|
||||||
Release=1173
|
Release=1174
|
||||||
Build=481
|
Build=483
|
||||||
Debug=1
|
Debug=1
|
||||||
PreRelease=0
|
PreRelease=0
|
||||||
Special=0
|
Special=0
|
||||||
@@ -72,13 +71,13 @@ CodePage=1250
|
|||||||
[Version Info Keys]
|
[Version Info Keys]
|
||||||
CompanyName=EU07 Team
|
CompanyName=EU07 Team
|
||||||
FileDescription=MaSzyna EU07-424
|
FileDescription=MaSzyna EU07-424
|
||||||
FileVersion=16.0.1173.481
|
FileVersion=16.1.1174.483
|
||||||
InternalName=DP+SPKS+asynch+python
|
InternalName=DP+SPKS+asynch+python
|
||||||
LegalCopyright=
|
LegalCopyright=
|
||||||
LegalTrademarks=
|
LegalTrademarks=
|
||||||
OriginalFilename=eu07.exe
|
OriginalFilename=eu07.exe
|
||||||
ProductName=MaSzyna EU07-424
|
ProductName=MaSzyna EU07-424
|
||||||
ProductVersion=16.0
|
ProductVersion=16.1
|
||||||
Comments=
|
Comments=
|
||||||
|
|
||||||
[Excluded Packages]
|
[Excluded Packages]
|
||||||
|
|||||||
@@ -54,9 +54,9 @@ double Global::fLuminance = 1.0; // jasno
|
|||||||
int Global::iReCompile = 0; // zwiêkszany, gdy trzeba odœwie¿yæ siatki
|
int Global::iReCompile = 0; // zwiêkszany, gdy trzeba odœwie¿yæ siatki
|
||||||
HWND Global::hWnd = NULL; // uchwyt okna
|
HWND Global::hWnd = NULL; // uchwyt okna
|
||||||
int Global::iCameraLast = -1;
|
int Global::iCameraLast = -1;
|
||||||
std::string Global::asRelease = "16.0.1172.481";
|
std::string Global::asRelease = "16.1.1174.483";
|
||||||
std::string Global::asVersion =
|
std::string Global::asVersion =
|
||||||
"Compilation 2016-08-24, release " + Global::asRelease + "."; // tutaj, bo wysy³any
|
"Compilation 2017-01-13, release " + Global::asRelease + "."; // tutaj, bo wysy³any
|
||||||
int Global::iViewMode = 0; // co aktualnie widaæ: 0-kabina, 1-latanie, 2-sprzêgi, 3-dokumenty
|
int Global::iViewMode = 0; // co aktualnie widaæ: 0-kabina, 1-latanie, 2-sprzêgi, 3-dokumenty
|
||||||
int Global::iTextMode = 0; // tryb pracy wyœwietlacza tekstowego
|
int Global::iTextMode = 0; // tryb pracy wyœwietlacza tekstowego
|
||||||
int Global::iScreenMode[12] = {0, 0, 0, 0, 0, 0,
|
int Global::iScreenMode[12] = {0, 0, 0, 0, 0, 0,
|
||||||
|
|||||||
@@ -1809,7 +1809,7 @@ TGroundNode * TGround::AddGroundNode(cParser *parser)
|
|||||||
if (int2 != string::npos) // yB: jesli znalazl kropke, to ja przetwarza jako parametry
|
if (int2 != string::npos) // yB: jesli znalazl kropke, to ja przetwarza jako parametry
|
||||||
{
|
{
|
||||||
int dlugosc = str4.length();
|
int dlugosc = str4.length();
|
||||||
int1 = atoi(str4.substr(0, int2 - 1).c_str()); // niech sprzegiem bedzie do kropki cos
|
int1 = atoi(str4.substr(0, int2).c_str()); // niech sprzegiem bedzie do kropki cos
|
||||||
str4 = str4.substr(int2 + 1, dlugosc - int2);
|
str4 = str4.substr(int2 + 1, dlugosc - int2);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
394
McZapkie/MOVER.h
394
McZapkie/MOVER.h
@@ -10,12 +10,13 @@ http://mozilla.org/MPL/2.0/.
|
|||||||
#ifndef MoverH
|
#ifndef MoverH
|
||||||
#define MoverH
|
#define MoverH
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
//#include "Mover.hpp" //Q: 20160805 - odlaczenie pliku fizyki .pas od kompilacji
|
//#include "Mover.hpp" //Q: 20160805 -
|
||||||
|
//odlaczenie pliku fizyki .pas od kompilacji
|
||||||
#include "Oerlikon_ESt.h"
|
#include "Oerlikon_ESt.h"
|
||||||
#include "hamulce.h"
|
#include "hamulce.h"
|
||||||
#include <string>
|
|
||||||
#include "mctools.h"
|
#include "mctools.h"
|
||||||
#include <map>
|
#include <map>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
MaSzyna EU07 locomotive simulator
|
MaSzyna EU07 locomotive simulator
|
||||||
@@ -23,7 +24,6 @@ Copyright (C) 2001-2004 Maciej Czapkiewicz and others
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
(C) McZapkie v.2004.02
|
(C) McZapkie v.2004.02
|
||||||
Co brakuje:
|
Co brakuje:
|
||||||
@@ -62,9 +62,12 @@ zwiekszenie nacisku przy duzych predkosciach w hamulcach Oerlikona
|
|||||||
20. poprawione hamulce elektropneumatyczne
|
20. poprawione hamulce elektropneumatyczne
|
||||||
21. poprawione hamowanie przeciwposlizgowe i odluzniacz
|
21. poprawione hamowanie przeciwposlizgowe i odluzniacz
|
||||||
22. dodany model mechanicznego napedu recznego (drezyna)
|
22. dodany model mechanicznego napedu recznego (drezyna)
|
||||||
23. poprawiona szybkosc hamowania pomocniczego i przeciwposlizgowego, odlaczanie silnikow, odlaczanie bocznikow
|
23. poprawiona szybkosc hamowania pomocniczego i przeciwposlizgowego, odlaczanie silnikow,
|
||||||
24. wprowadzone systemy zabezpieczenia: SHP, Czuwak, sygnalizacja kabinowa (nie dzialaja w DebugMode).
|
odlaczanie bocznikow
|
||||||
25. poprawiona predkosc propagacji fali cisnienia (normalizacja przez kwadrat dlugosci) //to jest zdeka liniowe
|
24. wprowadzone systemy zabezpieczenia: SHP, Czuwak, sygnalizacja kabinowa (nie dzialaja w
|
||||||
|
DebugMode).
|
||||||
|
25. poprawiona predkosc propagacji fali cisnienia (normalizacja przez kwadrat dlugosci) //to jest
|
||||||
|
zdeka liniowe
|
||||||
26. uwzgledniona masa ladunku, przesuniecie w/m toru ruchu
|
26. uwzgledniona masa ladunku, przesuniecie w/m toru ruchu
|
||||||
27. lampy/sygnaly przednie/tylne
|
27. lampy/sygnaly przednie/tylne
|
||||||
28. wprowadzona pozycja odciecia hamulca (yB: tja, ale oerlikona....)
|
28. wprowadzona pozycja odciecia hamulca (yB: tja, ale oerlikona....)
|
||||||
@@ -143,7 +146,8 @@ static int const ctrain_power = 8; //przewody zasilaj
|
|||||||
static int const ctrain_passenger = 16; // mostek przejściowy
|
static int const ctrain_passenger = 16; // mostek przejściowy
|
||||||
static int const ctrain_scndpneumatic = 32; // przewody 8 atm (żółte; zasilanie powietrzem)
|
static int const ctrain_scndpneumatic = 32; // przewody 8 atm (żółte; zasilanie powietrzem)
|
||||||
static int const ctrain_heating = 64; // przewody ogrzewania WN
|
static int const ctrain_heating = 64; // przewody ogrzewania WN
|
||||||
static int const ctrain_depot = 128; //nie rozłączalny podczas zwykłych manewrów (międzyczłonowy), we wpisie wartość ujemna
|
static int const ctrain_depot =
|
||||||
|
128; // nie rozłączalny podczas zwykłych manewrów (międzyczłonowy), we wpisie wartość ujemna
|
||||||
|
|
||||||
/*typ hamulca elektrodynamicznego*/
|
/*typ hamulca elektrodynamicznego*/
|
||||||
static int const dbrake_none = 0;
|
static int const dbrake_none = 0;
|
||||||
@@ -252,7 +256,8 @@ struct TLocation
|
|||||||
double X;
|
double X;
|
||||||
double Y;
|
double Y;
|
||||||
double Z; /*lokacja*/
|
double Z; /*lokacja*/
|
||||||
inline TLocation() {
|
inline TLocation()
|
||||||
|
{
|
||||||
X, Y, Z = 0.0;
|
X, Y, Z = 0.0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -261,7 +266,8 @@ struct TRotation
|
|||||||
double Rx;
|
double Rx;
|
||||||
double Ry;
|
double Ry;
|
||||||
double Rz; /*rotacja*/
|
double Rz; /*rotacja*/
|
||||||
inline TRotation() {
|
inline TRotation()
|
||||||
|
{
|
||||||
Rx, Ry, Rz = 0.0;
|
Rx, Ry, Rz = 0.0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -284,7 +290,8 @@ struct TCommand
|
|||||||
double Value1;
|
double Value1;
|
||||||
double Value2; /*argumenty komendy*/
|
double Value2; /*argumenty komendy*/
|
||||||
TLocation Location;
|
TLocation Location;
|
||||||
inline TCommand() {
|
inline TCommand()
|
||||||
|
{
|
||||||
Command = "";
|
Command = "";
|
||||||
Value1, Value2 = 0.0;
|
Value1, Value2 = 0.0;
|
||||||
Location = TLocation();
|
Location = TLocation();
|
||||||
@@ -298,7 +305,8 @@ struct TTrackShape
|
|||||||
double Len;
|
double Len;
|
||||||
double dHtrack;
|
double dHtrack;
|
||||||
double dHrail;
|
double dHrail;
|
||||||
inline TTrackShape() {
|
inline TTrackShape()
|
||||||
|
{
|
||||||
R, Len, dHrail, dHtrack = 0.0;
|
R, Len, dHrail, dHtrack = 0.0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -311,7 +319,8 @@ struct TTrackParam
|
|||||||
int QualityFlag;
|
int QualityFlag;
|
||||||
int DamageFlag;
|
int DamageFlag;
|
||||||
double Velmax; /*dla uzytku maszynisty w ai_driver*/
|
double Velmax; /*dla uzytku maszynisty w ai_driver*/
|
||||||
inline TTrackParam() {
|
inline TTrackParam()
|
||||||
|
{
|
||||||
Width, friction, Velmax = 0.0;
|
Width, friction, Velmax = 0.0;
|
||||||
CategoryFlag, QualityFlag, DamageFlag = 0;
|
CategoryFlag, QualityFlag, DamageFlag = 0;
|
||||||
}
|
}
|
||||||
@@ -323,7 +332,8 @@ struct TTractionParam
|
|||||||
double TractionFreq; /*czestotliwosc*/
|
double TractionFreq; /*czestotliwosc*/
|
||||||
double TractionMaxCurrent; /*obciazalnosc*/
|
double TractionMaxCurrent; /*obciazalnosc*/
|
||||||
double TractionResistivity; /*rezystancja styku*/
|
double TractionResistivity; /*rezystancja styku*/
|
||||||
inline TTractionParam() {
|
inline TTractionParam()
|
||||||
|
{
|
||||||
TractionVoltage, TractionFreq = 0.0;
|
TractionVoltage, TractionFreq = 0.0;
|
||||||
TractionMaxCurrent, TractionResistivity = 0.0;
|
TractionMaxCurrent, TractionResistivity = 0.0;
|
||||||
}
|
}
|
||||||
@@ -331,13 +341,86 @@ struct TTractionParam
|
|||||||
/*powyzsze parametry zwiazane sa z torem po ktorym aktualnie pojazd jedzie*/
|
/*powyzsze parametry zwiazane sa z torem po ktorym aktualnie pojazd jedzie*/
|
||||||
|
|
||||||
/*typy hamulcow zespolonych*/
|
/*typy hamulcow zespolonych*/
|
||||||
enum TBrakeSystem { Individual, Pneumatic, ElectroPneumatic };
|
enum TBrakeSystem
|
||||||
|
{
|
||||||
|
Individual,
|
||||||
|
Pneumatic,
|
||||||
|
ElectroPneumatic
|
||||||
|
};
|
||||||
/*podtypy hamulcow zespolonych*/
|
/*podtypy hamulcow zespolonych*/
|
||||||
enum TBrakeSubSystem { ss_None, ss_W, ss_K, ss_KK, ss_Hik, ss_ESt, ss_KE, ss_LSt, ss_MT, ss_Dako };
|
enum TBrakeSubSystem
|
||||||
enum TBrakeValve { NoValve, W, W_Lu_VI, W_Lu_L, W_Lu_XR, K, Kg, Kp, Kss, Kkg, Kkp, Kks, Hikg1, Hikss, Hikp1, KE, SW, EStED, NESt3, ESt3, LSt, ESt4, ESt3AL2, EP1, EP2, M483, CV1_L_TR, CV1, CV1_R, Other };
|
{
|
||||||
enum TBrakeHandle { NoHandle, West, FV4a, M394, M254, FVel1, FVel6, D2, Knorr, FD1, BS2, testH, St113, MHZ_P, MHZ_T, MHZ_EN57 };
|
ss_None,
|
||||||
|
ss_W,
|
||||||
|
ss_K,
|
||||||
|
ss_KK,
|
||||||
|
ss_Hik,
|
||||||
|
ss_ESt,
|
||||||
|
ss_KE,
|
||||||
|
ss_LSt,
|
||||||
|
ss_MT,
|
||||||
|
ss_Dako
|
||||||
|
};
|
||||||
|
enum TBrakeValve
|
||||||
|
{
|
||||||
|
NoValve,
|
||||||
|
W,
|
||||||
|
W_Lu_VI,
|
||||||
|
W_Lu_L,
|
||||||
|
W_Lu_XR,
|
||||||
|
K,
|
||||||
|
Kg,
|
||||||
|
Kp,
|
||||||
|
Kss,
|
||||||
|
Kkg,
|
||||||
|
Kkp,
|
||||||
|
Kks,
|
||||||
|
Hikg1,
|
||||||
|
Hikss,
|
||||||
|
Hikp1,
|
||||||
|
KE,
|
||||||
|
SW,
|
||||||
|
EStED,
|
||||||
|
NESt3,
|
||||||
|
ESt3,
|
||||||
|
LSt,
|
||||||
|
ESt4,
|
||||||
|
ESt3AL2,
|
||||||
|
EP1,
|
||||||
|
EP2,
|
||||||
|
M483,
|
||||||
|
CV1_L_TR,
|
||||||
|
CV1,
|
||||||
|
CV1_R,
|
||||||
|
Other
|
||||||
|
};
|
||||||
|
enum TBrakeHandle
|
||||||
|
{
|
||||||
|
NoHandle,
|
||||||
|
West,
|
||||||
|
FV4a,
|
||||||
|
M394,
|
||||||
|
M254,
|
||||||
|
FVel1,
|
||||||
|
FVel6,
|
||||||
|
D2,
|
||||||
|
Knorr,
|
||||||
|
FD1,
|
||||||
|
BS2,
|
||||||
|
testH,
|
||||||
|
St113,
|
||||||
|
MHZ_P,
|
||||||
|
MHZ_T,
|
||||||
|
MHZ_EN57
|
||||||
|
};
|
||||||
/*typy hamulcow indywidualnych*/
|
/*typy hamulcow indywidualnych*/
|
||||||
enum TLocalBrake { NoBrake, ManualBrake, PneumaticBrake, HydraulicBrake };
|
enum TLocalBrake
|
||||||
|
{
|
||||||
|
NoBrake,
|
||||||
|
ManualBrake,
|
||||||
|
PneumaticBrake,
|
||||||
|
HydraulicBrake
|
||||||
|
};
|
||||||
/*dla osob/towar: opoznienie hamowania/odhamowania*/
|
/*dla osob/towar: opoznienie hamowania/odhamowania*/
|
||||||
typedef double TBrakeDelayTable[4];
|
typedef double TBrakeDelayTable[4];
|
||||||
|
|
||||||
@@ -347,7 +430,8 @@ struct TBrakePressure
|
|||||||
double BrakePressureVal;
|
double BrakePressureVal;
|
||||||
double FlowSpeedVal;
|
double FlowSpeedVal;
|
||||||
TBrakeSystem BrakeType;
|
TBrakeSystem BrakeType;
|
||||||
inline TBrakePressure() {
|
inline TBrakePressure()
|
||||||
|
{
|
||||||
BrakeType = Pneumatic;
|
BrakeType = Pneumatic;
|
||||||
PipePressureVal, BrakePressureVal, FlowSpeedVal = 0.0;
|
PipePressureVal, BrakePressureVal, FlowSpeedVal = 0.0;
|
||||||
}
|
}
|
||||||
@@ -355,15 +439,37 @@ struct TBrakePressure
|
|||||||
|
|
||||||
typedef std::map<int, TBrakePressure> TBrakePressureTable;
|
typedef std::map<int, TBrakePressure> TBrakePressureTable;
|
||||||
|
|
||||||
|
|
||||||
/*typy napedow*/
|
/*typy napedow*/
|
||||||
enum TEngineTypes { None, Dumb, WheelsDriven, ElectricSeriesMotor, ElectricInductionMotor, DieselEngine, SteamEngine, DieselElectric };
|
enum TEngineTypes
|
||||||
|
{
|
||||||
|
None,
|
||||||
|
Dumb,
|
||||||
|
WheelsDriven,
|
||||||
|
ElectricSeriesMotor,
|
||||||
|
ElectricInductionMotor,
|
||||||
|
DieselEngine,
|
||||||
|
SteamEngine,
|
||||||
|
DieselElectric
|
||||||
|
};
|
||||||
/*postac dostarczanej energii*/
|
/*postac dostarczanej energii*/
|
||||||
enum TPowerType { NoPower, BioPower, MechPower, ElectricPower, SteamPower };
|
enum TPowerType
|
||||||
|
{
|
||||||
|
NoPower,
|
||||||
|
BioPower,
|
||||||
|
MechPower,
|
||||||
|
ElectricPower,
|
||||||
|
SteamPower
|
||||||
|
};
|
||||||
/*rodzaj paliwa*/
|
/*rodzaj paliwa*/
|
||||||
enum TFuelType { Undefined, Coal, Oil };
|
enum TFuelType
|
||||||
|
{
|
||||||
|
Undefined,
|
||||||
|
Coal,
|
||||||
|
Oil
|
||||||
|
};
|
||||||
/*rodzaj rusztu*/
|
/*rodzaj rusztu*/
|
||||||
struct TGrateType {
|
struct TGrateType
|
||||||
|
{
|
||||||
TFuelType FuelType;
|
TFuelType FuelType;
|
||||||
double GrateSurface;
|
double GrateSurface;
|
||||||
double FuelTransportSpeed;
|
double FuelTransportSpeed;
|
||||||
@@ -378,11 +484,13 @@ struct TGrateType {
|
|||||||
//}
|
//}
|
||||||
};
|
};
|
||||||
/*rodzaj kotla*/
|
/*rodzaj kotla*/
|
||||||
struct TBoilerType {
|
struct TBoilerType
|
||||||
|
{
|
||||||
double BoilerVolume;
|
double BoilerVolume;
|
||||||
double BoilerHeatSurface;
|
double BoilerHeatSurface;
|
||||||
double SuperHeaterSurface;
|
double SuperHeaterSurface;
|
||||||
double MaxWaterVolume; double MinWaterVolume;
|
double MaxWaterVolume;
|
||||||
|
double MinWaterVolume;
|
||||||
double MaxPressure;
|
double MaxPressure;
|
||||||
// inline TBoilerType() {
|
// inline TBoilerType() {
|
||||||
// BoilerVolume = 0.0;
|
// BoilerVolume = 0.0;
|
||||||
@@ -394,11 +502,14 @@ struct TBoilerType {
|
|||||||
//}
|
//}
|
||||||
};
|
};
|
||||||
/*rodzaj odbieraka pradu*/
|
/*rodzaj odbieraka pradu*/
|
||||||
struct TCurrentCollector {
|
struct TCurrentCollector
|
||||||
|
{
|
||||||
long CollectorsNo; // musi być tu, bo inaczej się kopie
|
long CollectorsNo; // musi być tu, bo inaczej się kopie
|
||||||
double MinH; double MaxH; //zakres ruchu pantografu, nigdzie nie używany
|
double MinH;
|
||||||
|
double MaxH; // zakres ruchu pantografu, nigdzie nie używany
|
||||||
double CSW; // szerokość części roboczej (styku) ślizgacza
|
double CSW; // szerokość części roboczej (styku) ślizgacza
|
||||||
double MinV; double MaxV; //minimalne i maksymalne akceptowane napięcie
|
double MinV;
|
||||||
|
double MaxV; // minimalne i maksymalne akceptowane napięcie
|
||||||
double OVP; // czy jest przekaznik nadnapieciowy
|
double OVP; // czy jest przekaznik nadnapieciowy
|
||||||
double InsetV; // minimalne napięcie wymagane do załączenia
|
double InsetV; // minimalne napięcie wymagane do załączenia
|
||||||
double MinPress; // minimalne ciśnienie do załączenia WS
|
double MinPress; // minimalne ciśnienie do załączenia WS
|
||||||
@@ -410,8 +521,17 @@ struct TCurrentCollector {
|
|||||||
//}
|
//}
|
||||||
};
|
};
|
||||||
/*typy źródeł mocy*/
|
/*typy źródeł mocy*/
|
||||||
enum TPowerSource { NotDefined, InternalSource, Transducer, Generator, Accumulator, CurrentCollector, PowerCable, Heater };
|
enum TPowerSource
|
||||||
|
{
|
||||||
|
NotDefined,
|
||||||
|
InternalSource,
|
||||||
|
Transducer,
|
||||||
|
Generator,
|
||||||
|
Accumulator,
|
||||||
|
CurrentCollector,
|
||||||
|
PowerCable,
|
||||||
|
Heater
|
||||||
|
};
|
||||||
|
|
||||||
struct _mover__1
|
struct _mover__1
|
||||||
{
|
{
|
||||||
@@ -446,44 +566,35 @@ struct TPowerParameters
|
|||||||
double MaxCurrent;
|
double MaxCurrent;
|
||||||
double IntR;
|
double IntR;
|
||||||
TPowerSource SourceType;
|
TPowerSource SourceType;
|
||||||
union
|
union {
|
||||||
{
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
_mover__3 RHeater;
|
_mover__3 RHeater;
|
||||||
|
|
||||||
};
|
};
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
_mover__2 RPowerCable;
|
_mover__2 RPowerCable;
|
||||||
|
|
||||||
};
|
};
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
TCurrentCollector CollectorParameters;
|
TCurrentCollector CollectorParameters;
|
||||||
|
|
||||||
};
|
};
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
_mover__1 RAccumulator;
|
_mover__1 RAccumulator;
|
||||||
|
|
||||||
};
|
};
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
TEngineTypes GeneratorEngine;
|
TEngineTypes GeneratorEngine;
|
||||||
|
|
||||||
};
|
};
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
double InputVoltage;
|
double InputVoltage;
|
||||||
|
|
||||||
};
|
};
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
TPowerType PowerType;
|
TPowerType PowerType;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
inline TPowerParameters()
|
inline TPowerParameters()
|
||||||
{
|
{
|
||||||
@@ -548,7 +659,8 @@ struct TMotorParameters
|
|||||||
double Isat;
|
double Isat;
|
||||||
double fi0; // aproksymacja E(n)=fi*n} {dla dizla fi, mfi: predkosci przelozenia biegu <->
|
double fi0; // aproksymacja E(n)=fi*n} {dla dizla fi, mfi: predkosci przelozenia biegu <->
|
||||||
bool AutoSwitch;
|
bool AutoSwitch;
|
||||||
TMotorParameters() {
|
TMotorParameters()
|
||||||
|
{
|
||||||
mfi = 0.0;
|
mfi = 0.0;
|
||||||
mIsat = 0.0;
|
mIsat = 0.0;
|
||||||
mfi0 = 0.0;
|
mfi0 = 0.0;
|
||||||
@@ -583,23 +695,38 @@ struct TTransmision
|
|||||||
int NToothM;
|
int NToothM;
|
||||||
int NToothW;
|
int NToothW;
|
||||||
double Ratio;
|
double Ratio;
|
||||||
TTransmision() {
|
TTransmision()
|
||||||
|
{
|
||||||
NToothM, NToothW = 0;
|
NToothM, NToothW = 0;
|
||||||
Ratio = 1.0;
|
Ratio = 1.0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
enum TCouplerType { NoCoupler, Articulated, Bare, Chain, Screw, Automatic };
|
enum TCouplerType
|
||||||
|
{
|
||||||
|
NoCoupler,
|
||||||
|
Articulated,
|
||||||
|
Bare,
|
||||||
|
Chain,
|
||||||
|
Screw,
|
||||||
|
Automatic
|
||||||
|
};
|
||||||
|
|
||||||
class TMoverParameters; // wyforwardowanie klasy coby typ byl widoczny w ponizszej strukturze
|
class TMoverParameters; // wyforwardowanie klasy coby typ byl widoczny w ponizszej strukturze
|
||||||
struct TCoupling {
|
struct TCoupling
|
||||||
|
{
|
||||||
/*parametry*/
|
/*parametry*/
|
||||||
double SpringKB; double SpringKC; double beta; /*stala sprezystosci zderzaka/sprzegu, %tlumiennosci */
|
double SpringKB;
|
||||||
double DmaxB; double FmaxB; double DmaxC; double FmaxC; /*tolerancja scisku/rozciagania, sila rozerwania*/
|
double SpringKC;
|
||||||
|
double beta; /*stala sprezystosci zderzaka/sprzegu, %tlumiennosci */
|
||||||
|
double DmaxB;
|
||||||
|
double FmaxB;
|
||||||
|
double DmaxC;
|
||||||
|
double FmaxC; /*tolerancja scisku/rozciagania, sila rozerwania*/
|
||||||
TCouplerType CouplerType; /*typ sprzegu*/
|
TCouplerType CouplerType; /*typ sprzegu*/
|
||||||
/*zmienne*/
|
/*zmienne*/
|
||||||
int CouplingFlag; /*0 - wirtualnie, 1 - sprzegi, 2 - pneumatycznie, 4 - sterowanie, 8 - kabel mocy*/
|
int CouplingFlag; /*0 - wirtualnie, 1 - sprzegi, 2 - pneumatycznie, 4 - sterowanie, 8 - kabel
|
||||||
|
mocy*/
|
||||||
int AllowedFlag; // Ra: znaczenie jak wyżej, maska dostępnych
|
int AllowedFlag; // Ra: znaczenie jak wyżej, maska dostępnych
|
||||||
bool Render; /*ABu: czy rysowac jak zaczepiony sprzeg*/
|
bool Render; /*ABu: czy rysowac jak zaczepiony sprzeg*/
|
||||||
double CoupleDist; /*ABu: optymalizacja - liczenie odleglosci raz na klatkę, bez iteracji*/
|
double CoupleDist; /*ABu: optymalizacja - liczenie odleglosci raz na klatkę, bez iteracji*/
|
||||||
@@ -611,9 +738,9 @@ struct TCoupling {
|
|||||||
};
|
};
|
||||||
|
|
||||||
class TMoverParameters
|
class TMoverParameters
|
||||||
{ // Ra: wrapper na kod pascalowy, przejmujący jego funkcje Q: 20160824 - juz nie wrapper a klasa bazowa :)
|
{ // Ra: wrapper na kod pascalowy, przejmujący jego funkcje Q: 20160824 - juz nie wrapper a klasa
|
||||||
|
// bazowa :)
|
||||||
public:
|
public:
|
||||||
|
|
||||||
double dMoveLen;
|
double dMoveLen;
|
||||||
std::string filename;
|
std::string filename;
|
||||||
/*---opis lokomotywy, wagonu itp*/
|
/*---opis lokomotywy, wagonu itp*/
|
||||||
@@ -625,15 +752,19 @@ public:
|
|||||||
int TrainType; /*Ra: powinno być szybciej niż string*/
|
int TrainType; /*Ra: powinno być szybciej niż string*/
|
||||||
TEngineTypes EngineType; /*typ napedu*/
|
TEngineTypes EngineType; /*typ napedu*/
|
||||||
TPowerParameters EnginePowerSource; /*zrodlo mocy dla silnikow*/
|
TPowerParameters EnginePowerSource; /*zrodlo mocy dla silnikow*/
|
||||||
TPowerParameters SystemPowerSource; /*zrodlo mocy dla systemow sterowania/przetwornic/sprezarek*/
|
TPowerParameters
|
||||||
|
SystemPowerSource; /*zrodlo mocy dla systemow sterowania/przetwornic/sprezarek*/
|
||||||
TPowerParameters HeatingPowerSource; /*zrodlo mocy dla ogrzewania*/
|
TPowerParameters HeatingPowerSource; /*zrodlo mocy dla ogrzewania*/
|
||||||
TPowerParameters AlterHeatPowerSource; /*alternatywne zrodlo mocy dla ogrzewania*/
|
TPowerParameters AlterHeatPowerSource; /*alternatywne zrodlo mocy dla ogrzewania*/
|
||||||
TPowerParameters LightPowerSource; /*zrodlo mocy dla oswietlenia*/
|
TPowerParameters LightPowerSource; /*zrodlo mocy dla oswietlenia*/
|
||||||
TPowerParameters AlterLightPowerSource; /*alternatywne mocy dla oswietlenia*/
|
TPowerParameters AlterLightPowerSource; /*alternatywne mocy dla oswietlenia*/
|
||||||
double Vmax; double Mass; double Power; /*max. predkosc kontrukcyjna, masa wlasna, moc*/
|
double Vmax;
|
||||||
|
double Mass;
|
||||||
|
double Power; /*max. predkosc kontrukcyjna, masa wlasna, moc*/
|
||||||
double Mred; /*Ra: zredukowane masy wirujące; potrzebne do obliczeń hamowania*/
|
double Mred; /*Ra: zredukowane masy wirujące; potrzebne do obliczeń hamowania*/
|
||||||
double TotalMass; /*wyliczane przez ComputeMass*/
|
double TotalMass; /*wyliczane przez ComputeMass*/
|
||||||
double HeatingPower; double LightPower; /*moc pobierana na ogrzewanie/oswietlenie*/
|
double HeatingPower;
|
||||||
|
double LightPower; /*moc pobierana na ogrzewanie/oswietlenie*/
|
||||||
double BatteryVoltage; /*Winger - baterie w elektrykach*/
|
double BatteryVoltage; /*Winger - baterie w elektrykach*/
|
||||||
bool Battery; /*Czy sa zalavzone baterie*/
|
bool Battery; /*Czy sa zalavzone baterie*/
|
||||||
bool EpFuse; /*Czy sa zalavzone baterie*/
|
bool EpFuse; /*Czy sa zalavzone baterie*/
|
||||||
@@ -653,7 +784,8 @@ public:
|
|||||||
int NPoweredAxles; /*ilosc osi napednych liczona z powyzszego*/
|
int NPoweredAxles; /*ilosc osi napednych liczona z powyzszego*/
|
||||||
int NAxles; /*ilosc wszystkich osi j.w.*/
|
int NAxles; /*ilosc wszystkich osi j.w.*/
|
||||||
int BearingType; /*lozyska: 0 - slizgowe, 1 - toczne*/
|
int BearingType; /*lozyska: 0 - slizgowe, 1 - toczne*/
|
||||||
double ADist; double BDist; /*odlegosc osi oraz czopow skretu*/
|
double ADist;
|
||||||
|
double BDist; /*odlegosc osi oraz czopow skretu*/
|
||||||
/*hamulce:*/
|
/*hamulce:*/
|
||||||
int NBpA; /*ilosc el. ciernych na os: 0 1 2 lub 4*/
|
int NBpA; /*ilosc el. ciernych na os: 0 1 2 lub 4*/
|
||||||
int SandCapacity; /*zasobnik piasku [kg]*/
|
int SandCapacity; /*zasobnik piasku [kg]*/
|
||||||
@@ -667,7 +799,8 @@ public:
|
|||||||
TBrake *Hamulec;
|
TBrake *Hamulec;
|
||||||
TDriverHandle *Handle;
|
TDriverHandle *Handle;
|
||||||
TDriverHandle *LocHandle;
|
TDriverHandle *LocHandle;
|
||||||
TReservoir *Pipe; TReservoir *Pipe2;
|
TReservoir *Pipe;
|
||||||
|
TReservoir *Pipe2;
|
||||||
|
|
||||||
TLocalBrake LocalBrake; /*rodzaj hamulca indywidualnego*/
|
TLocalBrake LocalBrake; /*rodzaj hamulca indywidualnego*/
|
||||||
TBrakePressureTable BrakePressureTable; /*wyszczegolnienie cisnien w rurze*/
|
TBrakePressureTable BrakePressureTable; /*wyszczegolnienie cisnien w rurze*/
|
||||||
@@ -680,13 +813,18 @@ public:
|
|||||||
double TrackBrakeForce; /*sila nacisku hamulca szynowego*/
|
double TrackBrakeForce; /*sila nacisku hamulca szynowego*/
|
||||||
int BrakeMethod; /*flaga rodzaju hamulca*/
|
int BrakeMethod; /*flaga rodzaju hamulca*/
|
||||||
/*max. cisnienie w cyl. ham., stala proporcjonalnosci p-K*/
|
/*max. cisnienie w cyl. ham., stala proporcjonalnosci p-K*/
|
||||||
double HighPipePress; double LowPipePress; double DeltaPipePress;
|
double HighPipePress;
|
||||||
|
double LowPipePress;
|
||||||
|
double DeltaPipePress;
|
||||||
/*max. i min. robocze cisnienie w przewodzie glownym oraz roznica miedzy nimi*/
|
/*max. i min. robocze cisnienie w przewodzie glownym oraz roznica miedzy nimi*/
|
||||||
double CntrlPipePress; // ciśnienie z zbiorniku sterującym
|
double CntrlPipePress; // ciśnienie z zbiorniku sterującym
|
||||||
double BrakeVolume; double BrakeVVolume; double VeselVolume;
|
double BrakeVolume;
|
||||||
|
double BrakeVVolume;
|
||||||
|
double VeselVolume;
|
||||||
/*pojemnosc powietrza w ukladzie hamulcowym, w ukladzie glownej sprezarki [m^3] */
|
/*pojemnosc powietrza w ukladzie hamulcowym, w ukladzie glownej sprezarki [m^3] */
|
||||||
int BrakeCylNo; /*ilosc cylindrow ham.*/
|
int BrakeCylNo; /*ilosc cylindrow ham.*/
|
||||||
double BrakeCylRadius; double BrakeCylDist;
|
double BrakeCylRadius;
|
||||||
|
double BrakeCylDist;
|
||||||
double BrakeCylMult[3];
|
double BrakeCylMult[3];
|
||||||
int LoadFlag;
|
int LoadFlag;
|
||||||
/*promien cylindra, skok cylindra, przekladnia hamulcowa*/
|
/*promien cylindra, skok cylindra, przekladnia hamulcowa*/
|
||||||
@@ -697,14 +835,17 @@ public:
|
|||||||
int BrakeValveSize;
|
int BrakeValveSize;
|
||||||
std::string BrakeValveParams;
|
std::string BrakeValveParams;
|
||||||
double Spg;
|
double Spg;
|
||||||
double MinCompressor; double MaxCompressor; double CompressorSpeed;
|
double MinCompressor;
|
||||||
|
double MaxCompressor;
|
||||||
|
double CompressorSpeed;
|
||||||
/*cisnienie wlaczania, zalaczania sprezarki, wydajnosc sprezarki*/
|
/*cisnienie wlaczania, zalaczania sprezarki, wydajnosc sprezarki*/
|
||||||
TBrakeDelayTable BrakeDelay; /*opoznienie hamowania/odhamowania t/o*/
|
TBrakeDelayTable BrakeDelay; /*opoznienie hamowania/odhamowania t/o*/
|
||||||
int BrakeCtrlPosNo; /*ilosc pozycji hamulca*/
|
int BrakeCtrlPosNo; /*ilosc pozycji hamulca*/
|
||||||
/*nastawniki:*/
|
/*nastawniki:*/
|
||||||
int MainCtrlPosNo; /*ilosc pozycji nastawnika*/
|
int MainCtrlPosNo; /*ilosc pozycji nastawnika*/
|
||||||
int ScndCtrlPosNo;
|
int ScndCtrlPosNo;
|
||||||
int LightsPosNo; int LightsDefPos;
|
int LightsPosNo;
|
||||||
|
int LightsDefPos;
|
||||||
bool LightsWrap;
|
bool LightsWrap;
|
||||||
int Lights[2][17]; // pozycje świateł, przód - tył, 1 .. 16
|
int Lights[2][17]; // pozycje świateł, przód - tył, 1 .. 16
|
||||||
bool ScndInMain; /*zaleznosc bocznika od nastawnika*/
|
bool ScndInMain; /*zaleznosc bocznika od nastawnika*/
|
||||||
@@ -713,7 +854,8 @@ public:
|
|||||||
TSecuritySystem SecuritySystem;
|
TSecuritySystem SecuritySystem;
|
||||||
|
|
||||||
/*-sekcja parametrow dla lokomotywy elektrycznej*/
|
/*-sekcja parametrow dla lokomotywy elektrycznej*/
|
||||||
TSchemeTable RList; /*lista rezystorow rozruchowych i polaczen silnikow, dla dizla: napelnienia*/
|
TSchemeTable
|
||||||
|
RList; /*lista rezystorow rozruchowych i polaczen silnikow, dla dizla: napelnienia*/
|
||||||
int RlistSize;
|
int RlistSize;
|
||||||
TMotorParameters MotorParam[MotorParametersArraySize + 1];
|
TMotorParameters MotorParam[MotorParametersArraySize + 1];
|
||||||
/*rozne parametry silnika przy bocznikowaniach*/
|
/*rozne parametry silnika przy bocznikowaniach*/
|
||||||
@@ -725,14 +867,19 @@ public:
|
|||||||
// end;
|
// end;
|
||||||
double NominalVoltage; /*nominalne napiecie silnika*/
|
double NominalVoltage; /*nominalne napiecie silnika*/
|
||||||
double WindingRes;
|
double WindingRes;
|
||||||
double u; //wspolczynnik tarcia yB wywalic!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
double u; // wspolczynnik tarcia yB
|
||||||
|
// wywalic!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
double CircuitRes; /*rezystancje silnika i obwodu*/
|
double CircuitRes; /*rezystancje silnika i obwodu*/
|
||||||
int IminLo; int IminHi; /*prady przelacznika automatycznego rozruchu, uzywane tez przez ai_driver*/
|
int IminLo;
|
||||||
int ImaxLo; int ImaxHi; /*maksymalny prad niskiego i wysokiego rozruchu*/
|
int IminHi; /*prady przelacznika automatycznego rozruchu, uzywane tez przez ai_driver*/
|
||||||
|
int ImaxLo;
|
||||||
|
int ImaxHi; /*maksymalny prad niskiego i wysokiego rozruchu*/
|
||||||
double nmax; /*maksymalna dop. ilosc obrotow /s*/
|
double nmax; /*maksymalna dop. ilosc obrotow /s*/
|
||||||
double InitialCtrlDelay; double CtrlDelay; /* -//- -//- miedzy kolejnymi poz.*/
|
double InitialCtrlDelay;
|
||||||
|
double CtrlDelay; /* -//- -//- miedzy kolejnymi poz.*/
|
||||||
double CtrlDownDelay; /* -//- -//- przy schodzeniu z poz.*/ /*hunter-101012*/
|
double CtrlDownDelay; /* -//- -//- przy schodzeniu z poz.*/ /*hunter-101012*/
|
||||||
int FastSerialCircuit;/*0 - po kolei zamyka styczniki az do osiagniecia szeregowej, 1 - natychmiastowe wejscie na szeregowa*/ /*hunter-111012*/
|
int FastSerialCircuit;
|
||||||
|
/*0 - po kolei zamyka styczniki az do osiagniecia szeregowej, 1 - natychmiastowe wejscie na szeregowa*/ /*hunter-111012*/
|
||||||
int AutoRelayType; /*0 -brak, 1 - jest, 2 - opcja*/
|
int AutoRelayType; /*0 -brak, 1 - jest, 2 - opcja*/
|
||||||
bool CoupledCtrl; /*czy mainctrl i scndctrl sa sprzezone*/
|
bool CoupledCtrl; /*czy mainctrl i scndctrl sa sprzezone*/
|
||||||
// CouplerNr: TCouplerNr; {ABu: nr sprzegu podlaczonego w drugim obiekcie}
|
// CouplerNr: TCouplerNr; {ABu: nr sprzegu podlaczonego w drugim obiekcie}
|
||||||
@@ -741,20 +888,28 @@ public:
|
|||||||
int RVentType; /*0 - brak, 1 - jest, 2 - automatycznie wlaczany*/
|
int RVentType; /*0 - brak, 1 - jest, 2 - automatycznie wlaczany*/
|
||||||
double RVentnmax; /*maks. obroty wentylatorow oporow rozruchowych*/
|
double RVentnmax; /*maks. obroty wentylatorow oporow rozruchowych*/
|
||||||
double RVentCutOff; /*rezystancja wylaczania wentylatorow dla RVentType=2*/
|
double RVentCutOff; /*rezystancja wylaczania wentylatorow dla RVentType=2*/
|
||||||
int CompressorPower; /*0: bezp. z obwodow silnika, 1: z przetwornicy, reczne, 2: w przetwornicy, stale, 5: z silnikowego*/
|
int CompressorPower; /*0: bezp. z obwodow silnika, 1: z przetwornicy, reczne, 2: w przetwornicy,
|
||||||
|
stale, 5: z silnikowego*/
|
||||||
int SmallCompressorPower; /*Winger ZROBIC*/
|
int SmallCompressorPower; /*Winger ZROBIC*/
|
||||||
bool Trafo; /*pojazd wyposażony w transformator*/
|
bool Trafo; /*pojazd wyposażony w transformator*/
|
||||||
|
|
||||||
/*-sekcja parametrow dla lokomotywy spalinowej z przekladnia mechaniczna*/
|
/*-sekcja parametrow dla lokomotywy spalinowej z przekladnia mechaniczna*/
|
||||||
double dizel_Mmax; double dizel_nMmax; double dizel_Mnmax; double dizel_nmax; double dizel_nominalfill;
|
double dizel_Mmax;
|
||||||
|
double dizel_nMmax;
|
||||||
|
double dizel_Mnmax;
|
||||||
|
double dizel_nmax;
|
||||||
|
double dizel_nominalfill;
|
||||||
/*parametry aproksymacji silnika spalinowego*/
|
/*parametry aproksymacji silnika spalinowego*/
|
||||||
double dizel_Mstand; /*moment oporow ruchu silnika dla enrot=0*/
|
double dizel_Mstand; /*moment oporow ruchu silnika dla enrot=0*/
|
||||||
/* dizel_auto_min, dizel_auto_max: real; {predkosc obrotowa przelaczania automatycznej skrzyni biegow*/
|
/* dizel_auto_min, dizel_auto_max: real; {predkosc obrotowa przelaczania
|
||||||
|
* automatycznej skrzyni biegow*/
|
||||||
double dizel_nmax_cutoff; /*predkosc obrotowa zadzialania ogranicznika predkosci*/
|
double dizel_nmax_cutoff; /*predkosc obrotowa zadzialania ogranicznika predkosci*/
|
||||||
double dizel_nmin; /*najmniejsza dopuszczalna predkosc obrotowa*/
|
double dizel_nmin; /*najmniejsza dopuszczalna predkosc obrotowa*/
|
||||||
double dizel_minVelfullengage; /*najmniejsza predkosc przy jezdzie ze sprzeglem bez poslizgu*/
|
double dizel_minVelfullengage; /*najmniejsza predkosc przy jezdzie ze sprzeglem bez poslizgu*/
|
||||||
double dizel_AIM; /*moment bezwladnosci walu itp*/
|
double dizel_AIM; /*moment bezwladnosci walu itp*/
|
||||||
double dizel_engageDia; double dizel_engageMaxForce; double dizel_engagefriction; /*parametry sprzegla*/
|
double dizel_engageDia;
|
||||||
|
double dizel_engageMaxForce;
|
||||||
|
double dizel_engagefriction; /*parametry sprzegla*/
|
||||||
|
|
||||||
/*- dla lokomotyw spalinowo-elektrycznych -*/
|
/*- dla lokomotyw spalinowo-elektrycznych -*/
|
||||||
double AnPos; // pozycja sterowania dokladnego (analogowego)
|
double AnPos; // pozycja sterowania dokladnego (analogowego)
|
||||||
@@ -772,7 +927,6 @@ public:
|
|||||||
TShuntSchemeTable SST;
|
TShuntSchemeTable SST;
|
||||||
double PowerCorRatio; // Wspolczynnik korekcyjny
|
double PowerCorRatio; // Wspolczynnik korekcyjny
|
||||||
|
|
||||||
|
|
||||||
/*- dla uproszczonego modelu silnika (dumb) oraz dla drezyny*/
|
/*- dla uproszczonego modelu silnika (dumb) oraz dla drezyny*/
|
||||||
double Ftmax;
|
double Ftmax;
|
||||||
|
|
||||||
@@ -781,14 +935,20 @@ public:
|
|||||||
|
|
||||||
/*-dla wagonow*/
|
/*-dla wagonow*/
|
||||||
long MaxLoad; /*masa w T lub ilosc w sztukach - ladownosc*/
|
long MaxLoad; /*masa w T lub ilosc w sztukach - ladownosc*/
|
||||||
std::string LoadAccepted; std::string LoadQuantity; /*co moze byc zaladowane, jednostki miary*/
|
std::string LoadAccepted;
|
||||||
|
std::string LoadQuantity; /*co moze byc zaladowane, jednostki miary*/
|
||||||
double OverLoadFactor; /*ile razy moze byc przekroczona ladownosc*/
|
double OverLoadFactor; /*ile razy moze byc przekroczona ladownosc*/
|
||||||
double LoadSpeed; double UnLoadSpeed;/*szybkosc na- i rozladunku jednostki/s*/
|
double LoadSpeed;
|
||||||
int DoorOpenCtrl; int DoorCloseCtrl; /*0: przez pasazera, 1: przez maszyniste, 2: samoczynne (zamykanie)*/
|
double UnLoadSpeed; /*szybkosc na- i rozladunku jednostki/s*/
|
||||||
|
int DoorOpenCtrl;
|
||||||
|
int DoorCloseCtrl; /*0: przez pasazera, 1: przez maszyniste, 2: samoczynne (zamykanie)*/
|
||||||
double DoorStayOpen; /*jak dlugo otwarte w przypadku DoorCloseCtrl=2*/
|
double DoorStayOpen; /*jak dlugo otwarte w przypadku DoorCloseCtrl=2*/
|
||||||
bool DoorClosureWarning; /*czy jest ostrzeganie przed zamknieciem*/
|
bool DoorClosureWarning; /*czy jest ostrzeganie przed zamknieciem*/
|
||||||
double DoorOpenSpeed; double DoorCloseSpeed; /*predkosc otwierania i zamykania w j.u. */
|
double DoorOpenSpeed;
|
||||||
double DoorMaxShiftL; double DoorMaxShiftR; double DoorMaxPlugShift;/*szerokosc otwarcia lub kat*/
|
double DoorCloseSpeed; /*predkosc otwierania i zamykania w j.u. */
|
||||||
|
double DoorMaxShiftL;
|
||||||
|
double DoorMaxShiftR;
|
||||||
|
double DoorMaxPlugShift; /*szerokosc otwarcia lub kat*/
|
||||||
int DoorOpenMethod; /*sposob otwarcia - 1: przesuwne, 2: obrotowe, 3: trójelementowe*/
|
int DoorOpenMethod; /*sposob otwarcia - 1: przesuwne, 2: obrotowe, 3: trójelementowe*/
|
||||||
double PlatformSpeed; /*szybkosc stopnia*/
|
double PlatformSpeed; /*szybkosc stopnia*/
|
||||||
double PlatformMaxShift; /*wysuniecie stopnia*/
|
double PlatformMaxShift; /*wysuniecie stopnia*/
|
||||||
@@ -814,15 +974,22 @@ public:
|
|||||||
double nrot;
|
double nrot;
|
||||||
/*! rotacja kol [obr/s]*/
|
/*! rotacja kol [obr/s]*/
|
||||||
double EnginePower; /*! chwilowa moc silnikow*/
|
double EnginePower; /*! chwilowa moc silnikow*/
|
||||||
double dL; double Fb; double Ff; /*przesuniecie, sila hamowania i tarcia*/
|
double dL;
|
||||||
double FTrain; double FStand; /*! sila pociagowa i oporow ruchu*/
|
double Fb;
|
||||||
|
double Ff; /*przesuniecie, sila hamowania i tarcia*/
|
||||||
|
double FTrain;
|
||||||
|
double FStand; /*! sila pociagowa i oporow ruchu*/
|
||||||
double FTotal; /*! calkowita sila dzialajaca na pojazd*/
|
double FTotal; /*! calkowita sila dzialajaca na pojazd*/
|
||||||
double UnitBrakeForce; /*!s siła hamowania przypadająca na jeden element*/
|
double UnitBrakeForce; /*!s siła hamowania przypadająca na jeden element*/
|
||||||
double Ntotal; /*!s siła nacisku klockow*/
|
double Ntotal; /*!s siła nacisku klockow*/
|
||||||
bool SlippingWheels; bool SandDose; /*! poslizg kol, sypanie piasku*/
|
bool SlippingWheels;
|
||||||
|
bool SandDose; /*! poslizg kol, sypanie piasku*/
|
||||||
double Sand; /*ilosc piasku*/
|
double Sand; /*ilosc piasku*/
|
||||||
double BrakeSlippingTimer; /*pomocnicza zmienna do wylaczania przeciwposlizgu*/
|
double BrakeSlippingTimer; /*pomocnicza zmienna do wylaczania przeciwposlizgu*/
|
||||||
double dpBrake; double dpPipe; double dpMainValve; double dpLocalValve;
|
double dpBrake;
|
||||||
|
double dpPipe;
|
||||||
|
double dpMainValve;
|
||||||
|
double dpLocalValve;
|
||||||
/*! przyrosty cisnienia w kroku czasowym*/
|
/*! przyrosty cisnienia w kroku czasowym*/
|
||||||
double ScndPipePress; /*cisnienie w przewodzie zasilajacym*/
|
double ScndPipePress; /*cisnienie w przewodzie zasilajacym*/
|
||||||
double BrakePress; /*!o cisnienie w cylindrach hamulcowych*/
|
double BrakePress; /*!o cisnienie w cylindrach hamulcowych*/
|
||||||
@@ -845,7 +1012,8 @@ public:
|
|||||||
int LocalBrakePos; /*nastawa hamulca indywidualnego*/
|
int LocalBrakePos; /*nastawa hamulca indywidualnego*/
|
||||||
int ManualBrakePos; /*nastawa hamulca recznego*/
|
int ManualBrakePos; /*nastawa hamulca recznego*/
|
||||||
double LocalBrakePosA;
|
double LocalBrakePosA;
|
||||||
int BrakeStatus; /*0 - odham, 1 - ham., 2 - uszk., 4 - odluzniacz, 8 - antyposlizg, 16 - uzyte EP, 32 - pozycja R, 64 - powrot z R*/
|
int BrakeStatus; /*0 - odham, 1 - ham., 2 - uszk., 4 - odluzniacz, 8 - antyposlizg, 16 - uzyte
|
||||||
|
EP, 32 - pozycja R, 64 - powrot z R*/
|
||||||
bool EmergencyBrakeFlag; /*hamowanie nagle*/
|
bool EmergencyBrakeFlag; /*hamowanie nagle*/
|
||||||
int BrakeDelayFlag; /*nastawa opoznienia ham. osob/towar/posp/exp 0/1/2/4*/
|
int BrakeDelayFlag; /*nastawa opoznienia ham. osob/towar/posp/exp 0/1/2/4*/
|
||||||
int BrakeDelays; /*nastawy mozliwe do uzyskania*/
|
int BrakeDelays; /*nastawy mozliwe do uzyskania*/
|
||||||
@@ -856,12 +1024,12 @@ public:
|
|||||||
double LimPipePress; /*stabilizator cisnienia*/
|
double LimPipePress; /*stabilizator cisnienia*/
|
||||||
double ActFlowSpeed; /*szybkosc stabilizatora*/
|
double ActFlowSpeed; /*szybkosc stabilizatora*/
|
||||||
|
|
||||||
|
|
||||||
int DamageFlag; // kombinacja bitowa stalych dtrain_* }
|
int DamageFlag; // kombinacja bitowa stalych dtrain_* }
|
||||||
int EngDmgFlag; // kombinacja bitowa stalych usterek}
|
int EngDmgFlag; // kombinacja bitowa stalych usterek}
|
||||||
int DerailReason; // przyczyna wykolejenia
|
int DerailReason; // przyczyna wykolejenia
|
||||||
|
|
||||||
//EndSignalsFlag: byte; {ABu 060205: zmiany - koncowki: 1/16 - swiatla prz/tyl, 2/31 - blachy prz/tyl}
|
// EndSignalsFlag: byte; {ABu 060205: zmiany - koncowki: 1/16 - swiatla prz/tyl, 2/31 - blachy
|
||||||
|
// prz/tyl}
|
||||||
// HeadSignalsFlag: byte; {ABu 060205: zmiany - swiatla: 1/2/4 - przod, 16/32/63 - tyl}
|
// HeadSignalsFlag: byte; {ABu 060205: zmiany - swiatla: 1/2/4 - przod, 16/32/63 - tyl}
|
||||||
TCommand CommandIn;
|
TCommand CommandIn;
|
||||||
/*komenda przekazywana przez PutCommand*/
|
/*komenda przekazywana przez PutCommand*/
|
||||||
@@ -872,7 +1040,8 @@ public:
|
|||||||
|
|
||||||
TTrackShape RunningShape; /*geometria toru po ktorym jedzie pojazd*/
|
TTrackShape RunningShape; /*geometria toru po ktorym jedzie pojazd*/
|
||||||
TTrackParam RunningTrack; /*parametry toru po ktorym jedzie pojazd*/
|
TTrackParam RunningTrack; /*parametry toru po ktorym jedzie pojazd*/
|
||||||
double OffsetTrackH; double OffsetTrackV; /*przesuniecie poz. i pion. w/m osi toru*/
|
double OffsetTrackH;
|
||||||
|
double OffsetTrackV; /*przesuniecie poz. i pion. w/m osi toru*/
|
||||||
|
|
||||||
/*-zmienne dla lokomotyw*/
|
/*-zmienne dla lokomotyw*/
|
||||||
bool Mains; /*polozenie glownego wylacznika*/
|
bool Mains; /*polozenie glownego wylacznika*/
|
||||||
@@ -881,7 +1050,8 @@ public:
|
|||||||
int LightsPos;
|
int LightsPos;
|
||||||
int ActiveDir; // czy lok. jest wlaczona i w ktorym kierunku:
|
int ActiveDir; // czy lok. jest wlaczona i w ktorym kierunku:
|
||||||
// względem wybranej kabiny: -1 - do tylu, +1 - do przodu, 0 - wylaczona
|
// względem wybranej kabiny: -1 - do tylu, +1 - do przodu, 0 - wylaczona
|
||||||
int CabNo; //numer kabiny, z której jest sterowanie: 1 lub -1; w przeciwnym razie brak sterowania - rozrzad
|
int CabNo; // numer kabiny, z której jest sterowanie: 1 lub -1; w przeciwnym razie brak
|
||||||
|
// sterowania - rozrzad
|
||||||
int DirAbsolute; // zadany kierunek jazdy względem sprzęgów (1=w strone 0,-1=w stronę 1)
|
int DirAbsolute; // zadany kierunek jazdy względem sprzęgów (1=w strone 0,-1=w stronę 1)
|
||||||
int ActiveCab; // numer kabiny, w ktorej jest obsada (zwykle jedna na skład)
|
int ActiveCab; // numer kabiny, w ktorej jest obsada (zwykle jedna na skład)
|
||||||
double LastSwitchingTime; /*czas ostatniego przelaczania czegos*/
|
double LastSwitchingTime; /*czas ostatniego przelaczania czegos*/
|
||||||
@@ -890,12 +1060,22 @@ public:
|
|||||||
bool InsideConsist;
|
bool InsideConsist;
|
||||||
/*-zmienne dla lokomotywy elektrycznej*/
|
/*-zmienne dla lokomotywy elektrycznej*/
|
||||||
TTractionParam RunningTraction; /*parametry sieci trakcyjnej najblizej lokomotywy*/
|
TTractionParam RunningTraction; /*parametry sieci trakcyjnej najblizej lokomotywy*/
|
||||||
double enrot; double Im; double Itot; double IHeating; double ITraction; double TotalCurrent; double Mm; double Mw; double Fw; double Ft;
|
double enrot;
|
||||||
|
double Im;
|
||||||
|
double Itot;
|
||||||
|
double IHeating;
|
||||||
|
double ITraction;
|
||||||
|
double TotalCurrent;
|
||||||
|
double Mm;
|
||||||
|
double Mw;
|
||||||
|
double Fw;
|
||||||
|
double Ft;
|
||||||
/*ilosc obrotow, prad silnika i calkowity, momenty, sily napedne*/
|
/*ilosc obrotow, prad silnika i calkowity, momenty, sily napedne*/
|
||||||
// Ra: Im jest ujemny, jeśli lok jedzie w stronę sprzęgu 1
|
// Ra: Im jest ujemny, jeśli lok jedzie w stronę sprzęgu 1
|
||||||
// a ujemne powinien być przy odwróconej polaryzacji sieci...
|
// a ujemne powinien być przy odwróconej polaryzacji sieci...
|
||||||
// w wielu miejscach jest używane abs(Im)
|
// w wielu miejscach jest używane abs(Im)
|
||||||
int Imin; int Imax; /*prad przelaczania automatycznego rozruchu, prad bezpiecznika*/
|
int Imin;
|
||||||
|
int Imax; /*prad przelaczania automatycznego rozruchu, prad bezpiecznika*/
|
||||||
double Voltage; /*aktualne napiecie sieci zasilajacej*/
|
double Voltage; /*aktualne napiecie sieci zasilajacej*/
|
||||||
int MainCtrlActualPos; /*wskaznik RList*/
|
int MainCtrlActualPos; /*wskaznik RList*/
|
||||||
int ScndCtrlActualPos; /*wskaznik MotorParam*/
|
int ScndCtrlActualPos; /*wskaznik MotorParam*/
|
||||||
@@ -911,10 +1091,10 @@ public:
|
|||||||
double PantPress; /*Cisnienie w zbiornikach pantografow*/
|
double PantPress; /*Cisnienie w zbiornikach pantografow*/
|
||||||
bool s_CAtestebrake; // hunter-091012: zmienna dla testu ca
|
bool s_CAtestebrake; // hunter-091012: zmienna dla testu ca
|
||||||
|
|
||||||
|
|
||||||
/*-zmienne dla lokomotywy spalinowej z przekladnia mechaniczna*/
|
/*-zmienne dla lokomotywy spalinowej z przekladnia mechaniczna*/
|
||||||
double dizel_fill; /*napelnienie*/
|
double dizel_fill; /*napelnienie*/
|
||||||
double dizel_engagestate; /*sprzeglo skrzyni biegow: 0 - luz, 1 - wlaczone, 0.5 - wlaczone 50% (z poslizgiem)*/
|
double dizel_engagestate; /*sprzeglo skrzyni biegow: 0 - luz, 1 - wlaczone, 0.5 - wlaczone 50%
|
||||||
|
(z poslizgiem)*/
|
||||||
double dizel_engage; /*sprzeglo skrzyni biegow: aktualny docisk*/
|
double dizel_engage; /*sprzeglo skrzyni biegow: aktualny docisk*/
|
||||||
double dizel_automaticgearstatus; /*0 - bez zmiany, -1 zmiana na nizszy +1 zmiana na wyzszy*/
|
double dizel_automaticgearstatus; /*0 - bez zmiany, -1 zmiana na nizszy +1 zmiana na wyzszy*/
|
||||||
bool dizel_enginestart; /*czy trwa rozruch silnika*/
|
bool dizel_enginestart; /*czy trwa rozruch silnika*/
|
||||||
@@ -967,19 +1147,25 @@ public:
|
|||||||
// int WarningSignal; //0: nie trabi, 1,2: trabi syreną o podanym numerze
|
// int WarningSignal; //0: nie trabi, 1,2: trabi syreną o podanym numerze
|
||||||
int WarningSignal; // tymczasowo 8bit, ze względu na funkcje w MTools
|
int WarningSignal; // tymczasowo 8bit, ze względu na funkcje w MTools
|
||||||
double fBrakeCtrlPos; // płynna nastawa hamulca zespolonego
|
double fBrakeCtrlPos; // płynna nastawa hamulca zespolonego
|
||||||
bool bPantKurek3; // kurek trójdrogowy (pantografu): true=połączenie z ZG, false=połączenie z małą sprężarką
|
bool bPantKurek3; // kurek trójdrogowy (pantografu): true=połączenie z ZG, false=połączenie z
|
||||||
|
// małą sprężarką
|
||||||
int iProblem; // flagi problemów z taborem, aby AI nie musiało porównywać; 0=może jechać
|
int iProblem; // flagi problemów z taborem, aby AI nie musiało porównywać; 0=może jechać
|
||||||
int iLights[2]; // bity zapalonych świateł tutaj, żeby dało się liczyć pobór prądu
|
int iLights[2]; // bity zapalonych świateł tutaj, żeby dało się liczyć pobór prądu
|
||||||
private:
|
private:
|
||||||
double CouplerDist(int Coupler);
|
double CouplerDist(int Coupler);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TMoverParameters(double VelInitial, std::string TypeNameInit, std::string NameInit, int LoadInitial, std::string LoadTypeInitial, int Cab);
|
TMoverParameters(double VelInitial, std::string TypeNameInit, std::string NameInit,
|
||||||
|
int LoadInitial, std::string LoadTypeInitial, int Cab);
|
||||||
// obsługa sprzęgów
|
// obsługa sprzęgów
|
||||||
double Distance(const TLocation &Loc1, const TLocation &Loc2, const TDimension &Dim1, const TDimension &Dim2);
|
double Distance(const TLocation &Loc1, const TLocation &Loc2, const TDimension &Dim1,
|
||||||
double Distance(const vector3 &Loc1, const vector3 &Loc2, const vector3 &Dim1, const vector3 &Dim2);
|
const TDimension &Dim2);
|
||||||
//bool AttachA(int ConnectNo, int ConnectToNr, TMoverParameters *ConnectTo, int CouplingType, bool Forced = false);
|
double Distance(const vector3 &Loc1, const vector3 &Loc2, const vector3 &Dim1,
|
||||||
bool Attach(int ConnectNo, int ConnectToNr, TMoverParameters *ConnectTo, int CouplingType, bool Forced = false);
|
const vector3 &Dim2);
|
||||||
|
// bool AttachA(int ConnectNo, int ConnectToNr, TMoverParameters *ConnectTo, int CouplingType,
|
||||||
|
// bool Forced = false);
|
||||||
|
bool Attach(int ConnectNo, int ConnectToNr, TMoverParameters *ConnectTo, int CouplingType,
|
||||||
|
bool Forced = false);
|
||||||
int DettachStatus(int ConnectNo);
|
int DettachStatus(int ConnectNo);
|
||||||
bool Dettach(int ConnectNo);
|
bool Dettach(int ConnectNo);
|
||||||
void SetCoupleDist();
|
void SetCoupleDist();
|
||||||
@@ -991,8 +1177,13 @@ public:
|
|||||||
bool ChangeCab(int direction);
|
bool ChangeCab(int direction);
|
||||||
bool CurrentSwitch(int direction);
|
bool CurrentSwitch(int direction);
|
||||||
void UpdateBatteryVoltage(double dt);
|
void UpdateBatteryVoltage(double dt);
|
||||||
double ComputeMovement(double dt, double dt1, const TTrackShape &Shape, TTrackParam &Track, TTractionParam &ElectricTraction, const TLocation &NewLoc, TRotation &NewRot); //oblicza przesuniecie pojazdu
|
double ComputeMovement(double dt, double dt1, const TTrackShape &Shape, TTrackParam &Track,
|
||||||
double FastComputeMovement(double dt, const TTrackShape &Shape, TTrackParam &Track, const TLocation &NewLoc, TRotation &NewRot); //oblicza przesuniecie pojazdu - wersja zoptymalizowana
|
TTractionParam &ElectricTraction, const TLocation &NewLoc,
|
||||||
|
TRotation &NewRot); // oblicza przesuniecie pojazdu
|
||||||
|
double
|
||||||
|
FastComputeMovement(double dt, const TTrackShape &Shape, TTrackParam &Track,
|
||||||
|
const TLocation &NewLoc,
|
||||||
|
TRotation &NewRot); // oblicza przesuniecie pojazdu - wersja zoptymalizowana
|
||||||
double ShowEngineRotation(int VehN);
|
double ShowEngineRotation(int VehN);
|
||||||
|
|
||||||
// Q *******************************************************************************************
|
// Q *******************************************************************************************
|
||||||
@@ -1011,7 +1202,8 @@ public:
|
|||||||
double GetExternalCommand(std::string &Command);
|
double GetExternalCommand(std::string &Command);
|
||||||
bool RunCommand(std::string Command, double CValue1, double CValue2);
|
bool RunCommand(std::string Command, double CValue1, double CValue2);
|
||||||
bool RunInternalCommand(void);
|
bool RunInternalCommand(void);
|
||||||
void PutCommand(std::string NewCommand, double NewValue1, double NewValue2, const TLocation &NewLocation);
|
void PutCommand(std::string NewCommand, double NewValue1, double NewValue2,
|
||||||
|
const TLocation &NewLocation);
|
||||||
bool CabActivisation(void);
|
bool CabActivisation(void);
|
||||||
bool CabDeactivisation(void);
|
bool CabDeactivisation(void);
|
||||||
|
|
||||||
@@ -1023,7 +1215,6 @@ public:
|
|||||||
bool IncScndCtrl(int CtrlSpeed);
|
bool IncScndCtrl(int CtrlSpeed);
|
||||||
bool DecScndCtrl(int CtrlSpeed);
|
bool DecScndCtrl(int CtrlSpeed);
|
||||||
|
|
||||||
|
|
||||||
bool AddPulseForce(int Multipler); /*dla drezyny*/
|
bool AddPulseForce(int Multipler); /*dla drezyny*/
|
||||||
|
|
||||||
bool SandDoseOn(void); /*wlacza/wylacza sypanie piasku*/
|
bool SandDoseOn(void); /*wlacza/wylacza sypanie piasku*/
|
||||||
@@ -1137,7 +1328,8 @@ public:
|
|||||||
bool readBPT(int ln, std::string line); // Q 20160721
|
bool readBPT(int ln, std::string line); // Q 20160721
|
||||||
void BrakeValveDecode(std::string s); // Q 20160719
|
void BrakeValveDecode(std::string s); // Q 20160719
|
||||||
void BrakeSubsystemDecode(); // Q 20160719
|
void BrakeSubsystemDecode(); // Q 20160719
|
||||||
void PowerParamDecode(std::string lines, std::string prefix, TPowerParameters &PowerParamDecode); //Q 20160719
|
void PowerParamDecode(std::string lines, std::string prefix,
|
||||||
|
TPowerParameters &PowerParamDecode); // Q 20160719
|
||||||
TPowerSource PowerSourceDecode(std::string s); // Q 20160719
|
TPowerSource PowerSourceDecode(std::string s); // Q 20160719
|
||||||
TPowerType PowerDecode(std::string s); // Q 20160719
|
TPowerType PowerDecode(std::string s); // Q 20160719
|
||||||
TEngineTypes EngineDecode(std::string s); // Q 20160721
|
TEngineTypes EngineDecode(std::string s); // Q 20160721
|
||||||
|
|||||||
@@ -7,26 +7,26 @@ obtain one at
|
|||||||
http://mozilla.org/MPL/2.0/.
|
http://mozilla.org/MPL/2.0/.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <MATH.H>
|
|
||||||
#include <FLOAT.H>
|
#include <FLOAT.H>
|
||||||
#include <typeinfo>
|
#include <MATH.H>
|
||||||
#include <fstream> // std::ifstream
|
|
||||||
#include <sstream>
|
|
||||||
#include <istream>
|
|
||||||
#include <iostream>
|
|
||||||
#include <stdio.h> // sprintf()
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <math.h>
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
#include <fstream> // std::ifstream
|
||||||
|
#include <iostream>
|
||||||
|
#include <istream>
|
||||||
|
#include <math.h>
|
||||||
|
#include <sstream>
|
||||||
|
#include <stdio.h> // sprintf()
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <typeinfo>
|
||||||
|
|
||||||
#include "Mover.h"
|
|
||||||
#include "../globals.h"
|
#include "../globals.h"
|
||||||
|
#include "Mover.h"
|
||||||
//#include "../qutils.h"
|
//#include "../qutils.h"
|
||||||
#include "mctools.h"
|
|
||||||
#include "../logs.h"
|
#include "../logs.h"
|
||||||
#include "hamulce.h"
|
|
||||||
#include "Oerlikon_ESt.h"
|
#include "Oerlikon_ESt.h"
|
||||||
|
#include "hamulce.h"
|
||||||
|
#include "mctools.h"
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
#pragma package(smart_init)
|
#pragma package(smart_init)
|
||||||
|
|
||||||
@@ -200,8 +200,8 @@ double TMoverParameters::current(double n, double U)
|
|||||||
if ((DynamicBrakeType == dbrake_switch) && (TrainType == dt_ET42))
|
if ((DynamicBrakeType == dbrake_switch) && (TrainType == dt_ET42))
|
||||||
{ // z Megapacka
|
{ // z Megapacka
|
||||||
Rz = WindingRes + R;
|
Rz = WindingRes + R;
|
||||||
MotorCurrent =
|
MotorCurrent = -MotorParam[SP].fi * n /
|
||||||
-MotorParam[SP].fi * n / Rz; //{hamowanie silnikiem na oporach rozruchowych}
|
Rz; //{hamowanie silnikiem na oporach rozruchowych}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -285,8 +285,7 @@ TMoverParameters::TMoverParameters(double VelInitial, std::string TypeNameInit,
|
|||||||
// NameInit, LoadInitial, LoadTypeInitial, Cab)
|
// NameInit, LoadInitial, LoadTypeInitial, Cab)
|
||||||
{
|
{
|
||||||
int b, k;
|
int b, k;
|
||||||
WriteLog(
|
WriteLog("------------------------------------------------------");
|
||||||
"------------------------------------------------------");
|
|
||||||
WriteLog("init default physic values for " + NameInit + ", [" + TypeNameInit + "], [" +
|
WriteLog("init default physic values for " + NameInit + ", [" + TypeNameInit + "], [" +
|
||||||
LoadTypeInitial + "]");
|
LoadTypeInitial + "]");
|
||||||
Dim = TDimension();
|
Dim = TDimension();
|
||||||
@@ -384,7 +383,6 @@ TMoverParameters::TMoverParameters(double VelInitial, std::string TypeNameInit,
|
|||||||
nmax = 0.0;
|
nmax = 0.0;
|
||||||
Voltage = 0.0;
|
Voltage = 0.0;
|
||||||
|
|
||||||
|
|
||||||
HeatingPowerSource = TPowerParameters();
|
HeatingPowerSource = TPowerParameters();
|
||||||
// HeatingPowerSource.MaxVoltage = 0.0;
|
// HeatingPowerSource.MaxVoltage = 0.0;
|
||||||
// HeatingPowerSource.MaxCurrent = 0.0;
|
// HeatingPowerSource.MaxCurrent = 0.0;
|
||||||
@@ -1377,7 +1375,8 @@ double TMoverParameters::ComputeMovement(double dt, double dt1, const TTrackShap
|
|||||||
(((Couplers[b].CouplingFlag & ctrain_heating) == ctrain_heating) && (Heating)))
|
(((Couplers[b].CouplingFlag & ctrain_heating) == ctrain_heating) && (Heating)))
|
||||||
{
|
{
|
||||||
HVCouplers[1 - b][1] =
|
HVCouplers[1 - b][1] =
|
||||||
Max0R(abs(hvc), Couplers[b].Connected->HVCouplers[Couplers[b].ConnectedNr][1] -
|
Max0R(abs(hvc),
|
||||||
|
Couplers[b].Connected->HVCouplers[Couplers[b].ConnectedNr][1] -
|
||||||
HVCouplers[b][0] * 0.02);
|
HVCouplers[b][0] * 0.02);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -1408,12 +1407,10 @@ double TMoverParameters::ComputeMovement(double dt, double dt1, const TTrackShap
|
|||||||
{
|
{
|
||||||
if (((Couplers[0].CouplingFlag & ctrain_power) == ctrain_power) ||
|
if (((Couplers[0].CouplingFlag & ctrain_power) == ctrain_power) ||
|
||||||
(((Couplers[0].CouplingFlag & ctrain_heating) == ctrain_heating) && (Heating)))
|
(((Couplers[0].CouplingFlag & ctrain_heating) == ctrain_heating) && (Heating)))
|
||||||
TotalCurrent +=
|
TotalCurrent += Couplers[0].Connected->HVCouplers[1 - Couplers[0].ConnectedNr][0];
|
||||||
Couplers[0].Connected->HVCouplers[1 - Couplers[0].ConnectedNr][0];
|
|
||||||
if (((Couplers[1].CouplingFlag & ctrain_power) == ctrain_power) ||
|
if (((Couplers[1].CouplingFlag & ctrain_power) == ctrain_power) ||
|
||||||
(((Couplers[1].CouplingFlag & ctrain_heating) == ctrain_heating) && (Heating)))
|
(((Couplers[1].CouplingFlag & ctrain_heating) == ctrain_heating) && (Heating)))
|
||||||
TotalCurrent +=
|
TotalCurrent += Couplers[1].Connected->HVCouplers[1 - Couplers[1].ConnectedNr][0];
|
||||||
Couplers[1].Connected->HVCouplers[1 - Couplers[1].ConnectedNr][0];
|
|
||||||
HVCouplers[0][0] = 0;
|
HVCouplers[0][0] = 0;
|
||||||
HVCouplers[1][0] = 0;
|
HVCouplers[1][0] = 0;
|
||||||
}
|
}
|
||||||
@@ -3156,10 +3153,11 @@ void TMoverParameters::CompressorCheck(double dt)
|
|||||||
(DElist[MainCtrlPos].RPM / DElist[MainCtrlPosNo].RPM);
|
(DElist[MainCtrlPos].RPM / DElist[MainCtrlPosNo].RPM);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CompressedVolume +=
|
CompressedVolume += dt * CompressorSpeed *
|
||||||
dt * CompressorSpeed * (2.0 * MaxCompressor - Compressor) / MaxCompressor;
|
(2.0 * MaxCompressor - Compressor) / MaxCompressor;
|
||||||
TotalCurrent += 0.0015
|
TotalCurrent +=
|
||||||
* Voltage; // tymczasowo tylko obciążenie sprężarki, tak z 5A na sprężarkę
|
0.0015 *
|
||||||
|
Voltage; // tymczasowo tylko obciążenie sprężarki, tak z 5A na sprężarkę
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -3192,8 +3190,8 @@ void TMoverParameters::CompressorCheck(double dt)
|
|||||||
CompressorFlag = false; // bez tamtego członu nie zadziała
|
CompressorFlag = false; // bez tamtego członu nie zadziała
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
CompressorFlag = (CompressorAllow) &&
|
CompressorFlag =
|
||||||
((ConverterFlag) || (CompressorPower == 0)) && (Mains);
|
(CompressorAllow) && ((ConverterFlag) || (CompressorPower == 0)) && (Mains);
|
||||||
if (Compressor >
|
if (Compressor >
|
||||||
MaxCompressor) // wyłącznik ciśnieniowy jest niezależny od sposobu zasilania
|
MaxCompressor) // wyłącznik ciśnieniowy jest niezależny od sposobu zasilania
|
||||||
CompressorFlag = false;
|
CompressorFlag = false;
|
||||||
@@ -3221,8 +3219,8 @@ void TMoverParameters::CompressorCheck(double dt)
|
|||||||
CompressorFlag = false; // bez tamtego członu nie zadziała
|
CompressorFlag = false; // bez tamtego członu nie zadziała
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
CompressorFlag = (CompressorAllow) &&
|
CompressorFlag =
|
||||||
((ConverterFlag) || (CompressorPower == 0)) && (Mains);
|
(CompressorAllow) && ((ConverterFlag) || (CompressorPower == 0)) && (Mains);
|
||||||
if (CompressorFlag) // jeśli została załączona
|
if (CompressorFlag) // jeśli została załączona
|
||||||
LastSwitchingTime = 0; // to trzeba ograniczyć ponowne włączenie
|
LastSwitchingTime = 0; // to trzeba ograniczyć ponowne włączenie
|
||||||
}
|
}
|
||||||
@@ -3250,7 +3248,8 @@ void TMoverParameters::CompressorCheck(double dt)
|
|||||||
// sprężarki, tak z 5A na
|
// sprężarki, tak z 5A na
|
||||||
// sprężarkę
|
// sprężarkę
|
||||||
else
|
else
|
||||||
TotalCurrent += 0.0015 *
|
TotalCurrent +=
|
||||||
|
0.0015 *
|
||||||
Voltage; // tymczasowo tylko obciążenie sprężarki, tak z 5A na sprężarkę
|
Voltage; // tymczasowo tylko obciążenie sprężarki, tak z 5A na sprężarkę
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3279,8 +3278,7 @@ void TMoverParameters::UpdatePipePressure(double dt)
|
|||||||
// with BrakePressureTable[BrakeCtrlPos] do
|
// with BrakePressureTable[BrakeCtrlPos] do
|
||||||
{
|
{
|
||||||
if ((EngineType != ElectricInductionMotor))
|
if ((EngineType != ElectricInductionMotor))
|
||||||
dpLocalValve =
|
dpLocalValve = LocHandle->GetPF(Max0R(LocalBrakePos / LocalBrakePosNo, LocalBrakePosA),
|
||||||
LocHandle->GetPF(Max0R(LocalBrakePos / LocalBrakePosNo, LocalBrakePosA),
|
|
||||||
Hamulec->GetBCP(), ScndPipePress, dt, 0);
|
Hamulec->GetBCP(), ScndPipePress, dt, 0);
|
||||||
else
|
else
|
||||||
dpLocalValve =
|
dpLocalValve =
|
||||||
@@ -3312,8 +3310,7 @@ void TMoverParameters::UpdatePipePressure(double dt)
|
|||||||
|
|
||||||
// if(EmergencyBrakeFlag)and(BrakeCtrlPosNo=0)then //ulepszony hamulec bezp.
|
// if(EmergencyBrakeFlag)and(BrakeCtrlPosNo=0)then //ulepszony hamulec bezp.
|
||||||
if ((EmergencyBrakeFlag) || (TestFlag(SecuritySystem.Status, s_SHPebrake)) ||
|
if ((EmergencyBrakeFlag) || (TestFlag(SecuritySystem.Status, s_SHPebrake)) ||
|
||||||
(TestFlag(SecuritySystem.Status, s_CAebrake)) ||
|
(TestFlag(SecuritySystem.Status, s_CAebrake)) || (s_CAtestebrake == true) ||
|
||||||
(s_CAtestebrake == true) ||
|
|
||||||
(TestFlag(EngDmgFlag, 32)) /* or (not Battery)*/) // ulepszony hamulec bezp.
|
(TestFlag(EngDmgFlag, 32)) /* or (not Battery)*/) // ulepszony hamulec bezp.
|
||||||
dpMainValve = dpMainValve + PF(0, PipePress, 0.15) * dt;
|
dpMainValve = dpMainValve + PF(0, PipePress, 0.15) * dt;
|
||||||
// 0.2*Spg
|
// 0.2*Spg
|
||||||
@@ -3566,7 +3563,8 @@ double TMoverParameters::GetDVc(double dt)
|
|||||||
// if ((TestFlag(Couplers[0].CouplingFlag, ctrain_pneumatic)) &&
|
// if ((TestFlag(Couplers[0].CouplingFlag, ctrain_pneumatic)) &&
|
||||||
// (TestFlag(Couplers[1].CouplingFlag, ctrain_pneumatic)))
|
// (TestFlag(Couplers[1].CouplingFlag, ctrain_pneumatic)))
|
||||||
// {
|
// {
|
||||||
// dV = 0.05 * dt * PF(Couplers[0].Connected->PipePress, Couplers[1].Connected->PipePress,
|
// dV = 0.05 * dt * PF(Couplers[0].Connected->PipePress,
|
||||||
|
// Couplers[1].Connected->PipePress,
|
||||||
// (Spg * 0.85) / (1 + 0.03 * Dim.L)) *
|
// (Spg * 0.85) / (1 + 0.03 * Dim.L)) *
|
||||||
// 0; // ktoś mi powie jaki jest sens tego bloku jeśli przepływ mnożony przez zero?
|
// 0; // ktoś mi powie jaki jest sens tego bloku jeśli przepływ mnożony przez zero?
|
||||||
// Couplers[0].Connected->Pipe->Flow(+dV);
|
// Couplers[0].Connected->Pipe->Flow(+dV);
|
||||||
@@ -3734,8 +3732,7 @@ void TMoverParameters::ComputeTotalForce(double dt, double dt1, bool FullVer)
|
|||||||
Couplers[b].CForce = 0;
|
Couplers[b].CForce = 0;
|
||||||
// FStand:=Fb+FrictionForce(RunningShape.R,RunningTrack.DamageFlag);
|
// FStand:=Fb+FrictionForce(RunningShape.R,RunningTrack.DamageFlag);
|
||||||
FStand += Fb;
|
FStand += Fb;
|
||||||
FTrain +=
|
FTrain += TotalMassxg * RunningShape.dHtrack; // doliczenie składowej stycznej grawitacji
|
||||||
TotalMassxg * RunningShape.dHtrack; // doliczenie składowej stycznej grawitacji
|
|
||||||
//! niejawne przypisanie zmiennej!
|
//! niejawne przypisanie zmiennej!
|
||||||
FTotal = FTrain - Sign(V) * FStand;
|
FTotal = FTrain - Sign(V) * FStand;
|
||||||
}
|
}
|
||||||
@@ -4488,7 +4485,8 @@ double TMoverParameters::TractionForce(double dt)
|
|||||||
else if (((dtrans < 0.25) && (LocHandle->GetCP() < 0.25) && (AnPos < 0.01)) ||
|
else if (((dtrans < 0.25) && (LocHandle->GetCP() < 0.25) && (AnPos < 0.01)) ||
|
||||||
((dtrans < 0.25) && (ShuntModeAllow) && (LocalBrakePos == 0)))
|
((dtrans < 0.25) && (ShuntModeAllow) && (LocalBrakePos == 0)))
|
||||||
DynamicBrakeFlag = false;
|
DynamicBrakeFlag = false;
|
||||||
else if ((((BrakePress > 0.25) && (dtrans > 0.25) || (LocHandle->GetCP() > 0.25))) ||
|
else if ((((BrakePress > 0.25) && (dtrans > 0.25) ||
|
||||||
|
(LocHandle->GetCP() > 0.25))) ||
|
||||||
(AnPos > 0.02))
|
(AnPos > 0.02))
|
||||||
DynamicBrakeFlag = true;
|
DynamicBrakeFlag = true;
|
||||||
dtrans = Hamulec->GetEDBCP() * eimc[eimc_p_abed]; // stala napedu
|
dtrans = Hamulec->GetEDBCP() * eimc[eimc_p_abed]; // stala napedu
|
||||||
@@ -4510,7 +4508,8 @@ double TMoverParameters::TractionForce(double dt)
|
|||||||
Hamulec->SetED(Max0R(0.0, Min0R(PosRatio, 1)));
|
Hamulec->SetED(Max0R(0.0, Min0R(PosRatio, 1)));
|
||||||
// (Hamulec as TLSt).SetLBP(LocBrakePress*(1-PosRatio));
|
// (Hamulec as TLSt).SetLBP(LocBrakePress*(1-PosRatio));
|
||||||
PosRatio = -Max0R(Min0R(dtrans * 1.0 / MaxBrakePress[0], 1), AnPos) *
|
PosRatio = -Max0R(Min0R(dtrans * 1.0 / MaxBrakePress[0], 1), AnPos) *
|
||||||
Max0R(0, Min0R(1, (Vel - eimc[eimc_p_Vh0]) /
|
Max0R(0, Min0R(1,
|
||||||
|
(Vel - eimc[eimc_p_Vh0]) /
|
||||||
(eimc[eimc_p_Vh1] - eimc[eimc_p_Vh0])));
|
(eimc[eimc_p_Vh1] - eimc[eimc_p_Vh0])));
|
||||||
eimv[eimv_Fzad] = -Max0R(LocalBrakeRatio(), dtrans / MaxBrakePress[0]);
|
eimv[eimv_Fzad] = -Max0R(LocalBrakeRatio(), dtrans / MaxBrakePress[0]);
|
||||||
tmp = 5;
|
tmp = 5;
|
||||||
@@ -4527,7 +4526,8 @@ double TMoverParameters::TractionForce(double dt)
|
|||||||
else
|
else
|
||||||
PosRatio =
|
PosRatio =
|
||||||
Min0R(PosRatio, Max0R(-1, 0.5 * (ScndCtrlActualPos * 2 - Vel)));
|
Min0R(PosRatio, Max0R(-1, 0.5 * (ScndCtrlActualPos * 2 - Vel)));
|
||||||
// PosRatio = 1.0 * (PosRatio * 0 + 1) * PosRatio; // 1 * 1 * PosRatio = PosRatio
|
// PosRatio = 1.0 * (PosRatio * 0 + 1) * PosRatio; // 1 * 1 * PosRatio =
|
||||||
|
// PosRatio
|
||||||
Hamulec->SetED(0);
|
Hamulec->SetED(0);
|
||||||
// (Hamulec as TLSt).SetLBP(LocBrakePress);
|
// (Hamulec as TLSt).SetLBP(LocBrakePress);
|
||||||
if ((PosRatio > dizel_fill))
|
if ((PosRatio > dizel_fill))
|
||||||
@@ -4620,18 +4620,16 @@ double TMoverParameters::TractionForce(double dt)
|
|||||||
if ((abs(eimv[eimv_fp]) <= eimv[eimv_fkr]))
|
if ((abs(eimv[eimv_fp]) <= eimv[eimv_fkr]))
|
||||||
eimv[eimv_pole] = eimc[eimc_f_cfu] / eimc[eimc_s_cfu];
|
eimv[eimv_pole] = eimc[eimc_f_cfu] / eimc[eimc_s_cfu];
|
||||||
else
|
else
|
||||||
eimv[eimv_pole] =
|
eimv[eimv_pole] = eimv[eimv_Uzsmax] / eimc[eimc_s_cfu] / abs(eimv[eimv_fp]);
|
||||||
eimv[eimv_Uzsmax] / eimc[eimc_s_cfu] / abs(eimv[eimv_fp]);
|
|
||||||
eimv[eimv_U] = eimv[eimv_pole] * eimv[eimv_fp] * eimc[eimc_s_cfu];
|
eimv[eimv_U] = eimv[eimv_pole] * eimv[eimv_fp] * eimc[eimc_s_cfu];
|
||||||
eimv[eimv_Ic] = (eimv[eimv_fp] - DirAbsolute * enrot * eimc[eimc_s_p]) *
|
eimv[eimv_Ic] = (eimv[eimv_fp] - DirAbsolute * enrot * eimc[eimc_s_p]) *
|
||||||
eimc[eimc_s_dfic] * eimv[eimv_pole];
|
eimc[eimc_s_dfic] * eimv[eimv_pole];
|
||||||
eimv[eimv_If] = eimv[eimv_Ic] * eimc[eimc_s_icif];
|
eimv[eimv_If] = eimv[eimv_Ic] * eimc[eimc_s_icif];
|
||||||
eimv[eimv_M] = eimv[eimv_pole] * eimv[eimv_Ic] * eimc[eimc_s_cim];
|
eimv[eimv_M] = eimv[eimv_pole] * eimv[eimv_Ic] * eimc[eimc_s_cim];
|
||||||
eimv[eimv_Ipoj] = (eimv[eimv_Ic] * NPoweredAxles * eimv[eimv_U]) /
|
eimv[eimv_Ipoj] =
|
||||||
(Voltage - eimc[eimc_f_DU]) +
|
(eimv[eimv_Ic] * NPoweredAxles * eimv[eimv_U]) / (Voltage - eimc[eimc_f_DU]) +
|
||||||
eimc[eimc_f_I0];
|
eimc[eimc_f_I0];
|
||||||
eimv[eimv_Pm] =
|
eimv[eimv_Pm] = ActiveDir * eimv[eimv_M] * NPoweredAxles * enrot * Pirazy2 / 1000;
|
||||||
ActiveDir * eimv[eimv_M] * NPoweredAxles * enrot * Pirazy2 / 1000;
|
|
||||||
eimv[eimv_Pe] = eimv[eimv_Ipoj] * Voltage / 1000;
|
eimv[eimv_Pe] = eimv[eimv_Ipoj] * Voltage / 1000;
|
||||||
eimv[eimv_eta] = eimv[eimv_Pm] / eimv[eimv_Pe];
|
eimv[eimv_eta] = eimv[eimv_Pm] / eimv[eimv_Pe];
|
||||||
|
|
||||||
@@ -4653,8 +4651,7 @@ double TMoverParameters::TractionForce(double dt)
|
|||||||
i = 0;
|
i = 0;
|
||||||
while ((i < RlistSize - 1) && (DElist[i + 1].RPM < abs(tmpV)))
|
while ((i < RlistSize - 1) && (DElist[i + 1].RPM < abs(tmpV)))
|
||||||
i++;
|
i++;
|
||||||
RventRot = (abs(tmpV) - DElist[i].RPM) /
|
RventRot = (abs(tmpV) - DElist[i].RPM) / (DElist[i + 1].RPM - DElist[i].RPM) *
|
||||||
(DElist[i + 1].RPM - DElist[i].RPM) *
|
|
||||||
(DElist[i + 1].GenPower - DElist[i].GenPower) +
|
(DElist[i + 1].GenPower - DElist[i].GenPower) +
|
||||||
DElist[i].GenPower;
|
DElist[i].GenPower;
|
||||||
}
|
}
|
||||||
@@ -6080,7 +6077,8 @@ bool TMoverParameters::readBPT(int ln, std::string line)
|
|||||||
BrakePressureTable[k].BrakeType = Individual;
|
BrakePressureTable[k].BrakeType = Individual;
|
||||||
|
|
||||||
// WriteLog("BPTx: " + p0 + "," + p1 + "," + p2 + "," + p3 + "," + p4);
|
// WriteLog("BPTx: " + p0 + "," + p1 + "," + p2 + "," + p3 + "," + p4);
|
||||||
//WriteLog("BPTk: " + to_string(k) + "," + to_string(BrakePressureTable[k].PipePressureVal) +
|
// WriteLog("BPTk: " + to_string(k) + "," + to_string(BrakePressureTable[k].PipePressureVal)
|
||||||
|
// +
|
||||||
// "," + to_string(BrakePressureTable[k].BrakePressureVal) + "," +
|
// "," + to_string(BrakePressureTable[k].BrakePressureVal) + "," +
|
||||||
// to_string(BrakePressureTable[k].FlowSpeedVal) + "," + p4);
|
// to_string(BrakePressureTable[k].FlowSpeedVal) + "," + p4);
|
||||||
|
|
||||||
@@ -6370,10 +6368,10 @@ bool TMoverParameters::LoadFIZ(std::string chkpath)
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool secBPT = false, secMotorParamTable0 = false, secPower = false, secEngine = false,
|
bool secBPT = false, secMotorParamTable0 = false, secPower = false, secEngine = false,
|
||||||
secParam = false, secLoad = false, secDimensions = false,
|
secParam = false, secLoad = false, secDimensions = false, secWheels = false,
|
||||||
secWheels = false, secBrake = false, secBuffCoupl = false, secCntrl = false,
|
secBrake = false, secBuffCoupl = false, secCntrl = false, secSecurity = false,
|
||||||
secSecurity = false, secLight = false, secCircuit = false, secRList = false,
|
secLight = false, secCircuit = false, secRList = false, secDList = false,
|
||||||
secDList = false, secWWList = false, secffList = false, secTurboPos = false;
|
secWWList = false, secffList = false, secTurboPos = false;
|
||||||
|
|
||||||
ConversionError = 0;
|
ConversionError = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ http://mozilla.org/MPL/2.0/.
|
|||||||
Copyright (C) 2007-2014 Maciej Cierniak
|
Copyright (C) 2007-2014 Maciej Cierniak
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
(C) youBy
|
(C) youBy
|
||||||
Co brakuje:
|
Co brakuje:
|
||||||
@@ -39,8 +38,6 @@ Knorr/West EP -
|
|||||||
#include "mctools.h" // Pascal unit
|
#include "mctools.h" // Pascal unit
|
||||||
//#include <array>
|
//#include <array>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int const LocalBrakePosNo = 10; /*ilosc nastaw hamulca recznego lub pomocniczego*/
|
static int const LocalBrakePosNo = 10; /*ilosc nastaw hamulca recznego lub pomocniczego*/
|
||||||
static int const MainBrakeMaxPos = 10; /*max. ilosc nastaw hamulca zasadniczego*/
|
static int const MainBrakeMaxPos = 10; /*max. ilosc nastaw hamulca zasadniczego*/
|
||||||
|
|
||||||
@@ -51,7 +48,6 @@ Knorr/West EP -
|
|||||||
static int const bdelay_M = 8; // Mg
|
static int const bdelay_M = 8; // Mg
|
||||||
static int const bdelay_GR = 128; // G-R
|
static int const bdelay_GR = 128; // G-R
|
||||||
|
|
||||||
|
|
||||||
/*stan hamulca*/
|
/*stan hamulca*/
|
||||||
static int const b_off = 0; // luzowanie
|
static int const b_off = 0; // luzowanie
|
||||||
static int const b_hld = 1; // trzymanie
|
static int const b_hld = 1; // trzymanie
|
||||||
@@ -116,10 +112,10 @@ Knorr/West EP -
|
|||||||
static int const bh_FB = 6; // pelne
|
static int const bh_FB = 6; // pelne
|
||||||
static int const bh_EB = 7; // nagle
|
static int const bh_EB = 7; // nagle
|
||||||
static int const bh_EPR = 8; // ep - luzowanie //pelny luz dla ep k¹towego
|
static int const bh_EPR = 8; // ep - luzowanie //pelny luz dla ep k¹towego
|
||||||
static int const bh_EPN = 9; //ep - utrzymanie //jesli rowne luzowaniu, wtedy sterowanie przyciskiem
|
static int const bh_EPN = 9; // ep - utrzymanie //jesli rowne luzowaniu, wtedy sterowanie
|
||||||
|
// przyciskiem
|
||||||
static int const bh_EPB = 10; // ep - hamowanie //pelne hamowanie dla ep k¹towego
|
static int const bh_EPB = 10; // ep - hamowanie //pelne hamowanie dla ep k¹towego
|
||||||
|
|
||||||
|
|
||||||
static double const SpgD = 0.7917;
|
static double const SpgD = 0.7917;
|
||||||
static double const SpO = 0.5067; // przekroj przewodu 1" w l/m
|
static double const SpO = 0.5067; // przekroj przewodu 1" w l/m
|
||||||
// wyj: jednostka dosyc dziwna, ale wszystkie obliczenia
|
// wyj: jednostka dosyc dziwna, ale wszystkie obliczenia
|
||||||
@@ -127,20 +123,25 @@ Knorr/West EP -
|
|||||||
// zas dlugosc pojazdow jest podana w metrach
|
// zas dlugosc pojazdow jest podana w metrach
|
||||||
// a predkosc przeplywu w m/s //3.5
|
// a predkosc przeplywu w m/s //3.5
|
||||||
// 7//1.5
|
// 7//1.5
|
||||||
// BPT: array[-2..6] of array [0..1] of real= ((0, 5.0), (14, 5.4), (9, 5.0), (6, 4.6), (9, 4.5), (9, 4.0), (9, 3.5), (9, 2.8), (34, 2.8));
|
// BPT: array[-2..6] of array [0..1] of real= ((0, 5.0), (14, 5.4), (9, 5.0), (6, 4.6), (9, 4.5),
|
||||||
// BPT: array[-2..6] of array [0..1] of real= ((0, 5.0), (7, 5.0), (2.0, 5.0), (4.5, 4.6), (4.5, 4.2), (4.5, 3.8), (4.5, 3.4), (4.5, 2.8), (8, 2.8));
|
// (9, 4.0), (9, 3.5), (9, 2.8), (34, 2.8));
|
||||||
static double BPT[9][2] = { {0 , 5.0} , {7 , 5.0} , {2.0 , 5.0} , {4.5 , 4.6} , {4.5 , 4.2} , {4.5 , 3.8} , {4.5 , 3.4} , {4.5 , 2.8} , {8 , 2.8} };
|
// BPT: array[-2..6] of array [0..1] of real= ((0, 5.0), (7, 5.0), (2.0, 5.0), (4.5, 4.6), (4.5,
|
||||||
static double BPT_394[7][2] = { {13 , 10.0} , {5 , 5.0} , {0 , -1} , {5 , -1} , {5 , 0.0} , {5 , 0.0} , {18 , 0.0} };
|
// 4.2), (4.5, 3.8), (4.5, 3.4), (4.5, 2.8), (8, 2.8));
|
||||||
|
static double BPT[9][2] = {{0, 5.0}, {7, 5.0}, {2.0, 5.0}, {4.5, 4.6}, {4.5, 4.2},
|
||||||
|
{4.5, 3.8}, {4.5, 3.4}, {4.5, 2.8}, {8, 2.8}};
|
||||||
|
static double BPT_394[7][2] = {{13, 10.0}, {5, 5.0}, {0, -1}, {5, -1},
|
||||||
|
{5, 0.0}, {5, 0.0}, {18, 0.0}};
|
||||||
// double *BPT = zero_based_BPT[2]; //tablica pozycji hamulca dla zakresu -2..6
|
// double *BPT = zero_based_BPT[2]; //tablica pozycji hamulca dla zakresu -2..6
|
||||||
// double *BPT_394 = zero_based_BPT_394[1]; //tablica pozycji hamulca dla zakresu -1..5
|
// double *BPT_394 = zero_based_BPT_394[1]; //tablica pozycji hamulca dla zakresu -1..5
|
||||||
// BPT: array[-2..6] of array [0..1] of real= ((0, 5.0), (12, 5.4), (9, 5.0), (9, 4.6), (9, 4.2), (9, 3.8), (9, 3.4), (9, 2.8), (34, 2.8));
|
// BPT: array[-2..6] of array [0..1] of real= ((0, 5.0), (12, 5.4), (9, 5.0), (9, 4.6), (9, 4.2),
|
||||||
// BPT: array[-2..6] of array [0..1] of real= ((0, 0),(0, 0),(0, 0),(0, 0),(0, 0),(0, 0),(0, 0),(0, 0),(0, 0));
|
// (9, 3.8), (9, 3.4), (9, 2.8), (34, 2.8));
|
||||||
|
// BPT: array[-2..6] of array [0..1] of real= ((0, 0),(0, 0),(0, 0),(0, 0),(0, 0),(0, 0),(0,
|
||||||
|
// 0),(0, 0),(0, 0));
|
||||||
static int const i_bcpno = 6;
|
static int const i_bcpno = 6;
|
||||||
// static double const pi = 3.141592653589793; //definicja w mctools
|
// static double const pi = 3.141592653589793; //definicja w mctools
|
||||||
|
|
||||||
// klasa obejmujaca pojedyncze zbiorniki
|
// klasa obejmujaca pojedyncze zbiorniki
|
||||||
|
|
||||||
|
|
||||||
class TReservoir
|
class TReservoir
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
@@ -156,13 +157,10 @@ Knorr/West EP -
|
|||||||
virtual double P();
|
virtual double P();
|
||||||
void Flow(double dv);
|
void Flow(double dv);
|
||||||
void Act();
|
void Act();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
typedef TReservoir *PReservoir;
|
typedef TReservoir *PReservoir;
|
||||||
|
|
||||||
|
|
||||||
class TBrakeCyl : public TReservoir
|
class TBrakeCyl : public TReservoir
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -172,10 +170,8 @@ Knorr/West EP -
|
|||||||
TBrakeCyl() : TReservoir(){};
|
TBrakeCyl() : TReservoir(){};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// klasa obejmujaca uklad hamulca zespolonego pojazdu
|
// klasa obejmujaca uklad hamulca zespolonego pojazdu
|
||||||
|
|
||||||
|
|
||||||
class TBrake
|
class TBrake
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
@@ -199,20 +195,21 @@ Knorr/West EP -
|
|||||||
int BrakeStatus; // flaga stanu
|
int BrakeStatus; // flaga stanu
|
||||||
int SoundFlag;
|
int SoundFlag;
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TBrake(double i_mbp, double i_bcr, double i_bcd, double i_brc,
|
TBrake(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD, int i_mat,
|
||||||
int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa);
|
int i_ba, int i_nbpa);
|
||||||
// maksymalne cisnienie, promien, skok roboczy, pojemnosc ZP;
|
// maksymalne cisnienie, promien, skok roboczy, pojemnosc ZP;
|
||||||
// ilosc cylindrow, opoznienia hamulca, material klockow, osie hamowane, klocki na os;
|
// 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 PP, double HPP, double LPP, double BP,
|
||||||
|
int BDF); // inicjalizacja hamulca
|
||||||
|
|
||||||
double GetFC(double Vel, double N); // wspolczynnik tarcia - hamulec wie lepiej
|
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
|
virtual double GetPF(double PP, double dt, double Vel); // przeplyw miedzy komora wstepna i PG
|
||||||
double GetBCF(); // sila tlokowa z tloka
|
double GetBCF(); // sila tlokowa z tloka
|
||||||
virtual double GetHPFlow(double HP, double dt); // przeplyw - 8 bar
|
virtual double GetHPFlow(double HP, double dt); // przeplyw - 8 bar
|
||||||
double GetBCP(); // cisnienie cylindrow hamulcowych
|
double GetBCP(); // cisnienie cylindrow hamulcowych
|
||||||
virtual double GetEDBCP(); //cisnienie tylko z hamulca zasadniczego, uzywane do hamulca ED w EP09
|
virtual double
|
||||||
|
GetEDBCP(); // cisnienie tylko z hamulca zasadniczego, uzywane do hamulca ED w EP09
|
||||||
double GetBRP(); // cisnienie zbiornika pomocniczego
|
double GetBRP(); // cisnienie zbiornika pomocniczego
|
||||||
double GetVRP(); // cisnienie komory wstepnej rozdzielacza
|
double GetVRP(); // cisnienie komory wstepnej rozdzielacza
|
||||||
virtual double GetCRP(); // cisnienie zbiornika sterujacego
|
virtual double GetCRP(); // cisnienie zbiornika sterujacego
|
||||||
@@ -231,11 +228,8 @@ Knorr/West EP -
|
|||||||
virtual void SetED(double EDstate){}; // stan hamulca ED do luzowania
|
virtual void SetED(double EDstate){}; // stan hamulca ED do luzowania
|
||||||
|
|
||||||
// procedure
|
// procedure
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TWest : public TBrake
|
class TWest : public TBrake
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -243,41 +237,41 @@ Knorr/West EP -
|
|||||||
double LBP; // cisnienie hamulca pomocniczego
|
double LBP; // cisnienie hamulca pomocniczego
|
||||||
double dVP; // pobor powietrza wysokiego cisnienia
|
double dVP; // pobor powietrza wysokiego cisnienia
|
||||||
double EPS; // stan elektropneumatyka
|
double EPS; // stan elektropneumatyka
|
||||||
double TareM; double LoadM; //masa proznego i pelnego
|
double TareM;
|
||||||
|
double LoadM; // masa proznego i pelnego
|
||||||
double TareBP; // cisnienie dla proznego
|
double TareBP; // cisnienie dla proznego
|
||||||
double LoadC; // wspolczynnik przystawki wazacej
|
double LoadC; // wspolczynnik przystawki wazacej
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void Init(double PP, double HPP, double LPP, double BP, int BDF) /*override*/;
|
void Init(double PP, double HPP, double LPP, double BP, int BDF) /*override*/;
|
||||||
void SetLBP(double P); // cisnienie z hamulca pomocniczego
|
void SetLBP(double P); // cisnienie z hamulca pomocniczego
|
||||||
double GetPF(double PP, double dt, double Vel)/*override*/; //przeplyw miedzy komora wstepna i PG
|
double GetPF(double PP, double dt,
|
||||||
|
double Vel) /*override*/; // przeplyw miedzy komora wstepna i PG
|
||||||
double GetHPFlow(double HP, double dt) /*override*/;
|
double GetHPFlow(double HP, double dt) /*override*/;
|
||||||
void PLC(double mass); // wspolczynnik cisnienia przystawki wazacej
|
void PLC(double mass); // wspolczynnik cisnienia przystawki wazacej
|
||||||
void SetEPS(double nEPS) /*override*/; // stan hamulca EP
|
void SetEPS(double nEPS) /*override*/; // stan hamulca EP
|
||||||
void SetLP(double TM, double LM, double TBP); // parametry przystawki wazacej
|
void SetLP(double TM, double LM, double TBP); // parametry przystawki wazacej
|
||||||
|
|
||||||
inline TWest(double i_mbp, double i_bcr, double i_bcd, double i_brc,
|
inline TWest(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD,
|
||||||
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
|
int i_mat, int i_ba, int i_nbpa)
|
||||||
, i_BD, i_mat, i_ba, i_nbpa)
|
: TBrake(i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
|
||||||
{
|
{
|
||||||
LBP, dVP, EPS, TareM, TareBP, LoadM, LoadC = 0.0;
|
LBP, dVP, EPS, TareM, TareBP, LoadM, LoadC = 0.0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TESt : public TBrake
|
class TESt : public TBrake
|
||||||
|
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
TReservoir *CntrlRes; // zbiornik steruj¹cy
|
TReservoir *CntrlRes; // zbiornik steruj¹cy
|
||||||
double BVM; // przelozenie PG-CH
|
double BVM; // przelozenie PG-CH
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void Init(double PP, double HPP, double LPP, double BP, int BDF) /*override*/;
|
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 GetPF(double PP, double dt,
|
||||||
|
double Vel) /*override*/; // przeplyw miedzy komora wstepna i PG
|
||||||
void EStParams(double i_crc); // parametry charakterystyczne dla ESt
|
void EStParams(double i_crc); // parametry charakterystyczne dla ESt
|
||||||
double GetCRP() /*override*/;
|
double GetCRP() /*override*/;
|
||||||
void CheckState(double BCP, double &dV1); // glowny przyrzad rozrzadczy
|
void CheckState(double BCP, double &dV1); // glowny przyrzad rozrzadczy
|
||||||
@@ -285,16 +279,14 @@ Knorr/West EP -
|
|||||||
double CVs(double BP); // napelniacz sterujacego
|
double CVs(double BP); // napelniacz sterujacego
|
||||||
double BVs(double BCP); // napelniacz pomocniczego
|
double BVs(double BCP); // napelniacz pomocniczego
|
||||||
|
|
||||||
inline TESt(double i_mbp, double i_bcr, double i_bcd, double i_brc,
|
inline TESt(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD,
|
||||||
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
|
int i_mat, int i_ba, int i_nbpa)
|
||||||
, i_BD, i_mat, i_ba, i_nbpa)
|
: TBrake(i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
|
||||||
{
|
{
|
||||||
CntrlRes = new TReservoir();
|
CntrlRes = new TReservoir();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TESt3 : public TESt
|
class TESt3 : public TESt
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -302,41 +294,41 @@ Knorr/West EP -
|
|||||||
// double CylFlowSpeed[2][2]; //zmienna nie uzywana
|
// double CylFlowSpeed[2][2]; //zmienna nie uzywana
|
||||||
|
|
||||||
public:
|
public:
|
||||||
double GetPF(double PP, double dt, double Vel)/*override*/; //przeplyw miedzy komora wstepna i PG
|
double GetPF(double PP, double dt,
|
||||||
|
double Vel) /*override*/; // przeplyw miedzy komora wstepna i PG
|
||||||
|
|
||||||
inline TESt3(double i_mbp, double i_bcr, double i_bcd, double i_brc,
|
inline TESt3(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD,
|
||||||
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
|
int i_mat, int i_ba, int i_nbpa)
|
||||||
, i_BD, i_mat, i_ba, i_nbpa) { }
|
: TESt(i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
|
||||||
|
{
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TESt3AL2 : public TESt3
|
class TESt3AL2 : public TESt3
|
||||||
|
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
double TareM; double LoadM; //masa proznego i pelnego
|
double TareM;
|
||||||
|
double LoadM; // masa proznego i pelnego
|
||||||
double TareBP; // cisnienie dla proznego
|
double TareBP; // cisnienie dla proznego
|
||||||
double LoadC;
|
double LoadC;
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TReservoir *ImplsRes; // komora impulsowa
|
TReservoir *ImplsRes; // komora impulsowa
|
||||||
void Init(double PP, double HPP, double LPP, double BP, int BDF) /*override*/;
|
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 GetPF(double PP, double dt,
|
||||||
|
double Vel) /*override*/; // przeplyw miedzy komora wstepna i PG
|
||||||
void PLC(double mass); // wspolczynnik cisnienia przystawki wazacej
|
void PLC(double mass); // wspolczynnik cisnienia przystawki wazacej
|
||||||
void SetLP(double TM, double LM, double TBP); // parametry przystawki wazacej
|
void SetLP(double TM, double LM, double TBP); // parametry przystawki wazacej
|
||||||
|
|
||||||
inline TESt3AL2(double i_mbp, double i_bcr, double i_bcd, double i_brc
|
inline TESt3AL2(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD,
|
||||||
, 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
|
int i_mat, int i_ba, int i_nbpa)
|
||||||
, i_BD, i_mat, i_ba, i_nbpa)
|
: TESt3(i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
|
||||||
{
|
{
|
||||||
TareM, TareBP, LoadM, LoadC = 0.0;
|
TareM, TareBP, LoadM, LoadC = 0.0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TESt4R : public TESt
|
class TESt4R : public TESt
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -349,19 +341,18 @@ Knorr/West EP -
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
void Init(double PP, double HPP, double LPP, double BP, int BDF) /*override*/;
|
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 GetPF(double PP, double dt,
|
||||||
|
double Vel) /*override*/; // przeplyw miedzy komora wstepna i PG
|
||||||
|
|
||||||
inline TESt4R(double i_mbp, double i_bcr, double i_bcd, double i_brc
|
inline TESt4R(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD,
|
||||||
, 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
|
int i_mat, int i_ba, int i_nbpa)
|
||||||
, i_BD, i_mat, i_ba, i_nbpa)
|
: TESt(i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
|
||||||
{
|
{
|
||||||
RapidTemp = 0.0;
|
RapidTemp = 0.0;
|
||||||
ImplsRes = new TReservoir();
|
ImplsRes = new TReservoir();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TLSt : public TESt4R
|
class TLSt : public TESt4R
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -377,21 +368,22 @@ Knorr/West EP -
|
|||||||
void Init(double PP, double HPP, double LPP, double BP, int BDF) /*override*/;
|
void Init(double PP, double HPP, double LPP, double BP, int BDF) /*override*/;
|
||||||
void SetLBP(double P); // cisnienie z hamulca pomocniczego
|
void SetLBP(double P); // cisnienie z hamulca pomocniczego
|
||||||
void SetRM(double RMR); // ustalenie przelozenia rapida
|
void SetRM(double RMR); // ustalenie przelozenia rapida
|
||||||
double GetPF(double PP, double dt, double Vel)/*override*/; //przeplyw miedzy komora wstepna i PG
|
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
|
double GetHPFlow(double HP, double dt) /*override*/; // przeplyw - 8 bar
|
||||||
virtual double GetEDBCP(); //cisnienie tylko z hamulca zasadniczego, uzywane do hamulca ED w EP09
|
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 EDstate); // stan hamulca ED do luzowania
|
||||||
|
|
||||||
inline TLSt(double i_mbp, double i_bcr, double i_bcd, double i_brc,
|
inline TLSt(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD,
|
||||||
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
|
int i_mat, int i_ba, int i_nbpa)
|
||||||
, i_BD, i_mat, i_ba, i_nbpa)
|
: TESt4R(i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class TEStED
|
||||||
|
: public TLSt // zawor z EP09 - Est4 z oddzielnym przekladnikiem, kontrola rapidu i takie tam
|
||||||
class TEStED : public TLSt //zawor z EP09 - Est4 z oddzielnym przekladnikiem, kontrola rapidu i takie tam
|
|
||||||
|
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
@@ -399,21 +391,22 @@ Knorr/West EP -
|
|||||||
bool Zamykajacy; // pamiec zaworka zamykajacego
|
bool Zamykajacy; // pamiec zaworka zamykajacego
|
||||||
bool Przys_blok; // blokada przyspieszacza
|
bool Przys_blok; // blokada przyspieszacza
|
||||||
TReservoir *Miedzypoj; // pojemnosc posrednia (urojona) do napelniania ZP i ZS
|
TReservoir *Miedzypoj; // pojemnosc posrednia (urojona) do napelniania ZP i ZS
|
||||||
double TareM; double LoadM; //masa proznego i pelnego
|
double TareM;
|
||||||
|
double LoadM; // masa proznego i pelnego
|
||||||
double TareBP; // cisnienie dla proznego
|
double TareBP; // cisnienie dla proznego
|
||||||
double LoadC;
|
double LoadC;
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void Init(double PP, double HPP, double LPP, double BP, int BDF) /*override*/;
|
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 GetPF(double PP, double dt,
|
||||||
|
double Vel) /*override*/; // przeplyw miedzy komora wstepna i PG
|
||||||
double GetEDBCP() /*override*/; // cisnienie tylko z hamulca zasadniczego, uzywane do hamulca ED
|
double GetEDBCP() /*override*/; // cisnienie tylko z hamulca zasadniczego, uzywane do hamulca ED
|
||||||
void PLC(double mass); // wspolczynnik cisnienia przystawki wazacej
|
void PLC(double mass); // wspolczynnik cisnienia przystawki wazacej
|
||||||
void SetLP(double TM, double LM, double TBP); // parametry przystawki wazacej
|
void SetLP(double TM, double LM, double TBP); // parametry przystawki wazacej
|
||||||
|
|
||||||
inline TEStED(double i_mbp, double i_bcr, double i_bcd, double i_brc
|
inline TEStED(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD,
|
||||||
, 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
|
int i_mat, int i_ba, int i_nbpa)
|
||||||
, i_BD, i_mat, i_ba, i_nbpa)
|
: TLSt(i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
|
||||||
{
|
{
|
||||||
Przys_blok = false;
|
Przys_blok = false;
|
||||||
TareM, TareBP, LoadM, LoadC = 0.0;
|
TareM, TareBP, LoadM, LoadC = 0.0;
|
||||||
@@ -421,63 +414,58 @@ Knorr/West EP -
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TEStEP2 : public TLSt
|
class TEStEP2 : public TLSt
|
||||||
|
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
double TareM; double LoadM; //masa proznego i pelnego
|
double TareM;
|
||||||
|
double LoadM; // masa proznego i pelnego
|
||||||
double TareBP; // cisnienie dla proznego
|
double TareBP; // cisnienie dla proznego
|
||||||
double LoadC;
|
double LoadC;
|
||||||
double EPS;
|
double EPS;
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void Init(double PP, double HPP, double LPP, double BP, int BDF) /*override*/; // inicjalizacja
|
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
|
double GetPF(double PP, double dt,
|
||||||
|
double Vel) /*override*/; // przeplyw miedzy komora wstepna i PG
|
||||||
void PLC(double mass); // wspolczynnik cisnienia przystawki wazacej
|
void PLC(double mass); // wspolczynnik cisnienia przystawki wazacej
|
||||||
void SetEPS(double nEPS) /*override*/; // stan hamulca EP
|
void SetEPS(double nEPS) /*override*/; // stan hamulca EP
|
||||||
void SetLP(double TM, double LM, double TBP); // parametry przystawki wazacej
|
void SetLP(double TM, double LM, double TBP); // parametry przystawki wazacej
|
||||||
|
|
||||||
inline TEStEP2(double i_mbp, double i_bcr, double i_bcd, double i_brc
|
inline TEStEP2(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD,
|
||||||
, 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
|
int i_mat, int i_ba, int i_nbpa)
|
||||||
, i_BD, i_mat, i_ba, i_nbpa)
|
: TLSt(i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
|
||||||
{
|
{
|
||||||
TareM, TareBP, LoadM, LoadC, EPS = 0.0;
|
TareM, TareBP, LoadM, LoadC, EPS = 0.0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TCV1 : public TBrake
|
class TCV1 : public TBrake
|
||||||
|
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
double BVM; // przelozenie PG-CH
|
double BVM; // przelozenie PG-CH
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
TReservoir *CntrlRes; // zbiornik steruj¹cy
|
TReservoir *CntrlRes; // zbiornik steruj¹cy
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void Init(double PP, double HPP, double LPP, double BP, int BDF) /*override*/;
|
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 GetPF(double PP, double dt,
|
||||||
|
double Vel) /*override*/; // przeplyw miedzy komora wstepna i PG
|
||||||
double GetCRP() /*override*/;
|
double GetCRP() /*override*/;
|
||||||
void CheckState(double BCP, double &dV1);
|
void CheckState(double BCP, double &dV1);
|
||||||
double CVs(double BP);
|
double CVs(double BP);
|
||||||
double BVs(double BCP);
|
double BVs(double BCP);
|
||||||
|
|
||||||
inline TCV1(double i_mbp, double i_bcr, double i_bcd, double i_brc,
|
inline TCV1(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD,
|
||||||
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
|
int i_mat, int i_ba, int i_nbpa)
|
||||||
, i_BD, i_mat, i_ba, i_nbpa)
|
: TBrake(i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
|
||||||
{
|
{
|
||||||
CntrlRes = new TReservoir();
|
CntrlRes = new TReservoir();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// class TCV1R : public TCV1
|
// class TCV1R : public TCV1
|
||||||
|
|
||||||
//{
|
//{
|
||||||
@@ -486,17 +474,17 @@ Knorr/West EP -
|
|||||||
// bool RapidStatus;
|
// bool RapidStatus;
|
||||||
|
|
||||||
// public:
|
// public:
|
||||||
// // function GetPF(PP, dt, Vel: real): real; override; //przeplyw miedzy komora wstepna i PG
|
// // function GetPF(PP, dt, Vel: real): real; override; //przeplyw miedzy komora
|
||||||
|
//wstepna i PG
|
||||||
// // procedure Init(PP, HPP, LPP, BP: real; BDF: int); override;
|
// // procedure Init(PP, HPP, LPP, BP: real; BDF: int); override;
|
||||||
|
|
||||||
// inline TCV1R(double i_mbp, double i_bcr, double i_bcd, double i_brc,
|
// inline TCV1R(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,
|
// int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa,
|
||||||
// double PP, double HPP, double LPP, double BP, int BDF) : TCV1(i_mbp, i_bcr, i_bcd, i_brc, i_bcn
|
// double PP, double HPP, double LPP, double BP, int BDF) : TCV1(i_mbp, i_bcr, i_bcd,
|
||||||
|
//i_brc, i_bcn
|
||||||
// , i_BD, i_mat, i_ba, i_nbpa, PP, HPP, LPP, BP, BDF) { }
|
// , i_BD, i_mat, i_ba, i_nbpa, PP, HPP, LPP, BP, BDF) { }
|
||||||
//};
|
//};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TCV1L_TR : public TCV1
|
class TCV1L_TR : public TCV1
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -504,24 +492,22 @@ Knorr/West EP -
|
|||||||
TReservoir *ImplsRes; // komora impulsowa
|
TReservoir *ImplsRes; // komora impulsowa
|
||||||
double LBP; // cisnienie hamulca pomocniczego
|
double LBP; // cisnienie hamulca pomocniczego
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void Init(double PP, double HPP, double LPP, double BP, int BDF) /*override*/;
|
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 GetPF(double PP, double dt,
|
||||||
|
double Vel) /*override*/; // przeplyw miedzy komora wstepna i PG
|
||||||
void SetLBP(double P); // cisnienie z hamulca pomocniczego
|
void SetLBP(double P); // cisnienie z hamulca pomocniczego
|
||||||
double GetHPFlow(double HP, double dt) /*override*/; // przeplyw - 8 bar
|
double GetHPFlow(double HP, double dt) /*override*/; // przeplyw - 8 bar
|
||||||
|
|
||||||
inline TCV1L_TR(double i_mbp, double i_bcr, double i_bcd, double i_brc
|
inline TCV1L_TR(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD,
|
||||||
, 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
|
int i_mat, int i_ba, int i_nbpa)
|
||||||
, i_BD, i_mat, i_ba, i_nbpa)
|
: TCV1(i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
|
||||||
{
|
{
|
||||||
LBP = 0.0;
|
LBP = 0.0;
|
||||||
ImplsRes = new TReservoir();
|
ImplsRes = new TReservoir();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TKE : public TBrake // Knorr Einheitsbauart — jeden do wszystkiego
|
class TKE : public TBrake // Knorr Einheitsbauart — jeden do wszystkiego
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -531,17 +517,18 @@ Knorr/West EP -
|
|||||||
TReservoir *CntrlRes; // zbiornik steruj¹cy
|
TReservoir *CntrlRes; // zbiornik steruj¹cy
|
||||||
TReservoir *Brak2Res; // zbiornik pomocniczy 2
|
TReservoir *Brak2Res; // zbiornik pomocniczy 2
|
||||||
double BVM; // przelozenie PG-CH
|
double BVM; // przelozenie PG-CH
|
||||||
double TareM; double LoadM; //masa proznego i pelnego
|
double TareM;
|
||||||
|
double LoadM; // masa proznego i pelnego
|
||||||
double TareBP; // cisnienie dla proznego
|
double TareBP; // cisnienie dla proznego
|
||||||
double LoadC; // wspolczynnik zaladowania
|
double LoadC; // wspolczynnik zaladowania
|
||||||
double RM; // przelozenie rapida
|
double RM; // przelozenie rapida
|
||||||
double LBP; // cisnienie hamulca pomocniczego
|
double LBP; // cisnienie hamulca pomocniczego
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void Init(double PP, double HPP, double LPP, double BP, int BDF) /*override*/;
|
void Init(double PP, double HPP, double LPP, double BP, int BDF) /*override*/;
|
||||||
void SetRM(double RMR); // ustalenie przelozenia rapida
|
void SetRM(double RMR); // ustalenie przelozenia rapida
|
||||||
double GetPF(double PP, double dt, double Vel)/*override*/; //przeplyw miedzy komora wstepna i PG
|
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
|
double GetHPFlow(double HP, double dt) /*override*/; // przeplyw - 8 bar
|
||||||
double GetCRP() /*override*/;
|
double GetCRP() /*override*/;
|
||||||
void CheckState(double BCP, double &dV1);
|
void CheckState(double BCP, double &dV1);
|
||||||
@@ -552,9 +539,9 @@ Knorr/West EP -
|
|||||||
void SetLP(double TM, double LM, double TBP); // parametry przystawki wazacej
|
void SetLP(double TM, double LM, double TBP); // parametry przystawki wazacej
|
||||||
void SetLBP(double P); // cisnienie z hamulca pomocniczego
|
void SetLBP(double P); // cisnienie z hamulca pomocniczego
|
||||||
|
|
||||||
inline TKE(double i_mbp, double i_bcr, double i_bcd, double i_brc, int
|
inline TKE(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD,
|
||||||
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,
|
int i_mat, int i_ba, int i_nbpa)
|
||||||
i_BD, i_mat, i_ba, i_nbpa)
|
: TBrake(i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
|
||||||
{
|
{
|
||||||
RapidStatus = false;
|
RapidStatus = false;
|
||||||
TareM, TareBP, LoadM, LoadC, RM, LBP = 0.0;
|
TareM, TareBP, LoadM, LoadC, RM, LBP = 0.0;
|
||||||
@@ -564,13 +551,8 @@ Knorr/West EP -
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// klasa obejmujaca krany
|
// klasa obejmujaca krany
|
||||||
|
|
||||||
|
|
||||||
class TDriverHandle
|
class TDriverHandle
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
@@ -587,32 +569,32 @@ Knorr/West EP -
|
|||||||
virtual double GetSound(int i);
|
virtual double GetSound(int i);
|
||||||
virtual double GetPos(int i);
|
virtual double GetPos(int i);
|
||||||
virtual double GetEP(double pos);
|
virtual double GetEP(double pos);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TFV4a : public TDriverHandle
|
class TFV4a : public TDriverHandle
|
||||||
|
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
double CP; double TP; double RP; //zbiornik steruj¹cy, czasowy, redukcyjny
|
double CP;
|
||||||
|
double TP;
|
||||||
|
double RP; // zbiornik steruj¹cy, czasowy, redukcyjny
|
||||||
|
|
||||||
public:
|
public:
|
||||||
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) /*override*/;
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) /*override*/;
|
||||||
void Init(double Press) /*override*/;
|
void Init(double Press) /*override*/;
|
||||||
|
|
||||||
inline TFV4a(void) : TDriverHandle() { }
|
inline TFV4a(void) : TDriverHandle()
|
||||||
|
{
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TFV4aM : public TDriverHandle
|
class TFV4aM : public TDriverHandle
|
||||||
|
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
double CP; double TP; double RP; //zbiornik steruj¹cy, czasowy, redukcyjny
|
double CP;
|
||||||
|
double TP;
|
||||||
|
double RP; // zbiornik steruj¹cy, czasowy, redukcyjny
|
||||||
double XP; // komora powietrzna w reduktorze — jest potrzebna do odwzorowania fali
|
double XP; // komora powietrzna w reduktorze — jest potrzebna do odwzorowania fali
|
||||||
double RedAdj; // dostosowanie reduktora cisnienia (krecenie kapturkiem)
|
double RedAdj; // dostosowanie reduktora cisnienia (krecenie kapturkiem)
|
||||||
// Sounds: array[0..4] of real; //wielkosci przeplywow dla dzwiekow
|
// Sounds: array[0..4] of real; //wielkosci przeplywow dla dzwiekow
|
||||||
@@ -622,6 +604,7 @@ Knorr/West EP -
|
|||||||
static double pos_table[11];
|
static double pos_table[11];
|
||||||
double LPP_RP(double pos);
|
double LPP_RP(double pos);
|
||||||
bool EQ(double pos, double i_pos);
|
bool EQ(double pos, double i_pos);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) /*override*/;
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) /*override*/;
|
||||||
void Init(double Press) /*override*/;
|
void Init(double Press) /*override*/;
|
||||||
@@ -629,16 +612,18 @@ Knorr/West EP -
|
|||||||
double GetSound(int i) /*override*/;
|
double GetSound(int i) /*override*/;
|
||||||
double GetPos(int i) /*override*/;
|
double GetPos(int i) /*override*/;
|
||||||
|
|
||||||
inline TFV4aM(void) : TDriverHandle() { }
|
inline TFV4aM(void) : TDriverHandle()
|
||||||
|
{
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TMHZ_EN57 : public TDriverHandle
|
class TMHZ_EN57 : public TDriverHandle
|
||||||
|
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
double CP; double TP; double RP; //zbiornik steruj¹cy, czasowy, redukcyjny
|
double CP;
|
||||||
|
double TP;
|
||||||
|
double RP; // zbiornik steruj¹cy, czasowy, redukcyjny
|
||||||
double RedAdj; // dostosowanie reduktora cisnienia (krecenie kapturkiem)
|
double RedAdj; // dostosowanie reduktora cisnienia (krecenie kapturkiem)
|
||||||
bool Fala;
|
bool Fala;
|
||||||
// const double pos_table[11] = { -2, 10, -1, 0, 0, 2, 9, 10, 0, 0, 0 };
|
// const double pos_table[11] = { -2, 10, -1, 0, 0, 2, 9, 10, 0, 0, 0 };
|
||||||
@@ -655,15 +640,16 @@ Knorr/West EP -
|
|||||||
double GetCP() /*override*/;
|
double GetCP() /*override*/;
|
||||||
double GetEP(double pos);
|
double GetEP(double pos);
|
||||||
|
|
||||||
inline TMHZ_EN57(void) : TDriverHandle() { }
|
inline TMHZ_EN57(void) : TDriverHandle()
|
||||||
|
{
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* FBS2= class(TTDriverHandle)
|
/* FBS2= class(TTDriverHandle)
|
||||||
private
|
private
|
||||||
CP, TP, RP: real; //zbiornik steruj¹cy, czasowy, redukcyjny
|
CP, TP, RP: real; //zbiornik steruj¹cy, czasowy, redukcyjny
|
||||||
XP: real; //komora powietrzna w reduktorze — jest potrzebna do odwzorowania fali
|
XP: real; //komora powietrzna w reduktorze — jest potrzebna do
|
||||||
|
odwzorowania fali
|
||||||
RedAdj: real; //dostosowanie reduktora cisnienia (krecenie kapturkiem)
|
RedAdj: real; //dostosowanie reduktora cisnienia (krecenie kapturkiem)
|
||||||
// Sounds: array[0..4] of real; //wielkosci przeplywow dla dzwiekow
|
// Sounds: array[0..4] of real; //wielkosci przeplywow dla dzwiekow
|
||||||
Fala: boolean;
|
Fala: boolean;
|
||||||
@@ -678,7 +664,8 @@ Knorr/West EP -
|
|||||||
/* TD2= class(TTDriverHandle)
|
/* TD2= class(TTDriverHandle)
|
||||||
private
|
private
|
||||||
CP, TP, RP: real; //zbiornik steruj¹cy, czasowy, redukcyjny
|
CP, TP, RP: real; //zbiornik steruj¹cy, czasowy, redukcyjny
|
||||||
XP: real; //komora powietrzna w reduktorze — jest potrzebna do odwzorowania fali
|
XP: real; //komora powietrzna w reduktorze — jest potrzebna do
|
||||||
|
odwzorowania fali
|
||||||
RedAdj: real; //dostosowanie reduktora cisnienia (krecenie kapturkiem)
|
RedAdj: real; //dostosowanie reduktora cisnienia (krecenie kapturkiem)
|
||||||
// Sounds: array[0..4] of real; //wielkosci przeplywow dla dzwiekow
|
// Sounds: array[0..4] of real; //wielkosci przeplywow dla dzwiekow
|
||||||
Fala: boolean;
|
Fala: boolean;
|
||||||
@@ -690,7 +677,6 @@ Knorr/West EP -
|
|||||||
function GetPos(i: int): real; override;
|
function GetPos(i: int): real; override;
|
||||||
end;*/
|
end;*/
|
||||||
|
|
||||||
|
|
||||||
class TM394 : public TDriverHandle
|
class TM394 : public TDriverHandle
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -707,11 +693,11 @@ Knorr/West EP -
|
|||||||
double GetCP() /*override*/;
|
double GetCP() /*override*/;
|
||||||
double GetPos(int i) /*override*/;
|
double GetPos(int i) /*override*/;
|
||||||
|
|
||||||
inline TM394(void) : TDriverHandle() { }
|
inline TM394(void) : TDriverHandle()
|
||||||
|
{
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TH14K1 : public TDriverHandle
|
class TH14K1 : public TDriverHandle
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -730,11 +716,11 @@ Knorr/West EP -
|
|||||||
double GetCP() /*override*/;
|
double GetCP() /*override*/;
|
||||||
double GetPos(int i) /*override*/;
|
double GetPos(int i) /*override*/;
|
||||||
|
|
||||||
inline TH14K1(void) : TDriverHandle() { }
|
inline TH14K1(void) : TDriverHandle()
|
||||||
|
{
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TSt113 : public TH14K1
|
class TSt113 : public TH14K1
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -751,11 +737,11 @@ Knorr/West EP -
|
|||||||
double GetPos(int i) /*override*/;
|
double GetPos(int i) /*override*/;
|
||||||
void Init(double Press) /*override*/;
|
void Init(double Press) /*override*/;
|
||||||
|
|
||||||
inline TSt113(void) : TH14K1() { }
|
inline TSt113(void) : TH14K1()
|
||||||
|
{
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Ttest : public TDriverHandle
|
class Ttest : public TDriverHandle
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -766,11 +752,11 @@ Knorr/West EP -
|
|||||||
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) /*override*/;
|
double GetPF(double i_bcp, double PP, double HP, double dt, double ep) /*override*/;
|
||||||
void Init(double Press) /*override*/;
|
void Init(double Press) /*override*/;
|
||||||
|
|
||||||
inline Ttest(void) : TDriverHandle() { }
|
inline Ttest(void) : TDriverHandle()
|
||||||
|
{
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TFD1 : public TDriverHandle
|
class TFD1 : public TDriverHandle
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -786,11 +772,11 @@ Knorr/West EP -
|
|||||||
void SetSpeed(double nSpeed);
|
void SetSpeed(double nSpeed);
|
||||||
// procedure Init(press: real; MaxBP: real); overload;
|
// procedure Init(press: real; MaxBP: real); overload;
|
||||||
|
|
||||||
inline TFD1(void) : TDriverHandle() { }
|
inline TFD1(void) : TDriverHandle()
|
||||||
|
{
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TH1405 : public TDriverHandle
|
class TH1405 : public TDriverHandle
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -804,12 +790,11 @@ Knorr/West EP -
|
|||||||
double GetCP() /*override*/;
|
double GetCP() /*override*/;
|
||||||
// procedure Init(press: real; MaxBP: real); overload;
|
// procedure Init(press: real; MaxBP: real); overload;
|
||||||
|
|
||||||
inline TH1405(void) : TDriverHandle() { }
|
inline TH1405(void) : TDriverHandle()
|
||||||
|
{
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TFVel6 : public TDriverHandle
|
class TFVel6 : public TDriverHandle
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -825,15 +810,18 @@ Knorr/West EP -
|
|||||||
double GetSound(int i) /*override*/;
|
double GetSound(int i) /*override*/;
|
||||||
void Init(double Press) /*override*/;
|
void Init(double Press) /*override*/;
|
||||||
|
|
||||||
inline TFVel6(void) : TDriverHandle() { }
|
inline TFVel6(void) : TDriverHandle()
|
||||||
|
{
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
extern double PF(double P1, double P2, double S, double DP = 0.25);
|
extern double PF(double P1, double P2, double S, double DP = 0.25);
|
||||||
extern double PF1(double P1, double P2, double S);
|
extern double PF1(double P1, double P2, double 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 PFVa(double PH, double PL, double S, double 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
|
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 long lround(double value); // zastepuje funkcje nieobecna w C++99
|
extern long lround(double value); // zastepuje funkcje nieobecna w C++99
|
||||||
|
|
||||||
|
|||||||
41
mtable.cpp
41
mtable.cpp
@@ -81,7 +81,8 @@ bool TTrainParameters::UpdateMTable(double hh, double mm, std::string NewName)
|
|||||||
{
|
{
|
||||||
if (NewName == NextStationName) // jeœli dojechane do nastêpnego
|
if (NewName == NextStationName) // jeœli dojechane do nastêpnego
|
||||||
{ // Ra: wywo³anie mo¿e byæ powtarzane, jak stoi na W4
|
{ // Ra: wywo³anie mo¿e byæ powtarzane, jak stoi na W4
|
||||||
if (TimeTable[StationIndex + 1].km - TimeTable[StationIndex].km < 0) // to jest bez sensu
|
if (TimeTable[StationIndex + 1].km - TimeTable[StationIndex].km <
|
||||||
|
0) // to jest bez sensu
|
||||||
Direction = -1;
|
Direction = -1;
|
||||||
else
|
else
|
||||||
Direction = 1; // prowizorka bo moze byc zmiana kilometrazu
|
Direction = 1; // prowizorka bo moze byc zmiana kilometrazu
|
||||||
@@ -339,7 +340,8 @@ bool TTrainParameters::LoadTTfile(std::string scnpath, int iPlus, double vmax)
|
|||||||
record->km = atof(s.c_str());
|
record->km = atof(s.c_str());
|
||||||
fin >> s;
|
fin >> s;
|
||||||
}
|
}
|
||||||
if (s.find("|_____|") != std::string::npos) /*zmiana predkosci szlakowej*/
|
if (s.find("|_____|") !=
|
||||||
|
std::string::npos) /*zmiana predkosci szlakowej*/
|
||||||
UpdateVelocity(StationCount, vActual);
|
UpdateVelocity(StationCount, vActual);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -360,9 +362,10 @@ bool TTrainParameters::LoadTTfile(std::string scnpath, int iPlus, double vmax)
|
|||||||
{
|
{
|
||||||
if (s.find(hrsd) != std::string::npos)
|
if (s.find(hrsd) != std::string::npos)
|
||||||
{
|
{
|
||||||
record->Ah = atoi(s.substr(0, s.find(hrsd)).c_str()); // godzina przyjazdu
|
record->Ah = atoi(
|
||||||
record->Am = atoi(
|
s.substr(0, s.find(hrsd)).c_str()); // godzina przyjazdu
|
||||||
s.substr(s.find(hrsd) + 1, s.length()).c_str()); // minuta przyjazdu
|
record->Am = atoi(s.substr(s.find(hrsd) + 1, s.length())
|
||||||
|
.c_str()); // minuta przyjazdu
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -387,7 +390,8 @@ bool TTrainParameters::LoadTTfile(std::string scnpath, int iPlus, double vmax)
|
|||||||
/*tu s moze byc miejscem zmiany predkosci szlakowej*/
|
/*tu s moze byc miejscem zmiany predkosci szlakowej*/
|
||||||
fin >> s;
|
fin >> s;
|
||||||
}
|
}
|
||||||
if (s.find("|_____|") != std::string::npos) /*zmiana predkosci szlakowej*/
|
if (s.find("|_____|") !=
|
||||||
|
std::string::npos) /*zmiana predkosci szlakowej*/
|
||||||
UpdateVelocity(StationCount, vActual);
|
UpdateVelocity(StationCount, vActual);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -408,9 +412,10 @@ bool TTrainParameters::LoadTTfile(std::string scnpath, int iPlus, double vmax)
|
|||||||
{
|
{
|
||||||
if (s.find(hrsd) != std::string::npos)
|
if (s.find(hrsd) != std::string::npos)
|
||||||
{
|
{
|
||||||
record->Dh = atoi(s.substr(0, s.find(hrsd)).c_str()); // godzina odjazdu
|
record->Dh =
|
||||||
record->Dm = atoi(
|
atoi(s.substr(0, s.find(hrsd)).c_str()); // godzina odjazdu
|
||||||
s.substr(s.find(hrsd) + 1, s.length()).c_str()); // minuta odjazdu
|
record->Dm = atoi(s.substr(s.find(hrsd) + 1, s.length())
|
||||||
|
.c_str()); // minuta odjazdu
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -421,11 +426,15 @@ bool TTrainParameters::LoadTTfile(std::string scnpath, int iPlus, double vmax)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
record->Dh = record->Ah; // odjazd o tej samej, co przyjazd (dla ostatniego te¿)
|
record->Dh = record->Ah; // odjazd o tej samej, co przyjazd (dla
|
||||||
record->Dm = record->Am; // bo s¹ u¿ywane do wyliczenia opóŸnienia po dojechaniu
|
// ostatniego te¿)
|
||||||
|
record->Dm = record->Am; // bo s¹ u¿ywane do wyliczenia opóŸnienia
|
||||||
|
// po dojechaniu
|
||||||
}
|
}
|
||||||
if ((record->Ah >= 0))
|
if ((record->Ah >= 0))
|
||||||
record->WaitTime = (int)(CompareTime(record->Ah, record->Am, record->Dh, record->Dm) + 0.1);
|
record->WaitTime = (int)(CompareTime(record->Ah, record->Am,
|
||||||
|
record->Dh, record->Dm) +
|
||||||
|
0.1);
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
fin >> s;
|
fin >> s;
|
||||||
@@ -443,7 +452,8 @@ bool TTrainParameters::LoadTTfile(std::string scnpath, int iPlus, double vmax)
|
|||||||
/*tu s moze byc miejscem zmiany predkosci szlakowej*/
|
/*tu s moze byc miejscem zmiany predkosci szlakowej*/
|
||||||
fin >> s;
|
fin >> s;
|
||||||
}
|
}
|
||||||
if (s.find("|_____|") != std::string::npos) /*zmiana predkosci szlakowej*/
|
if (s.find("|_____|") !=
|
||||||
|
std::string::npos) /*zmiana predkosci szlakowej*/
|
||||||
UpdateVelocity(StationCount, vActual);
|
UpdateVelocity(StationCount, vActual);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -540,8 +550,3 @@ bool TTrainParameters::DirectionChange()
|
|||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user