mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-03-22 15:05:03 +01:00
poprawki z hamulcami ok!
This commit is contained in:
27
Console.cpp
27
Console.cpp
@@ -421,7 +421,8 @@ void Console::ValueSet(int x, double y)
|
||||
MWDComm->WriteDataBuff[20] = (unsigned int)(iliczba >> 8);
|
||||
MWDComm->WriteDataBuff[19] = (unsigned char)iliczba;
|
||||
break;
|
||||
case 7: MWDComm->WriteDataBuff[0] = (unsigned char)floor(y); // prędkość
|
||||
case 7: if (Global::iPause) MWDComm->WriteDataBuff[0] = 0; //skoro pauza to hasler stoi i nie nabija kilometrów
|
||||
else MWDComm->WriteDataBuff[0] = (unsigned char)floor(y); // prędkość dla np haslera
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -462,28 +463,28 @@ float Console::AnalogCalibrateGet(int x)
|
||||
if (iMode == 4 && PoKeys55[0])
|
||||
{
|
||||
float b = PoKeys55[0]->fAnalog[x];
|
||||
return (((((Global::fCalibrateIn[x][5] * b) + Global::fCalibrateIn[x][4]) * b +
|
||||
/*return (((((Global::fCalibrateIn[x][5] * b) + Global::fCalibrateIn[x][4]) * b +
|
||||
Global::fCalibrateIn[x][3]) *
|
||||
b +
|
||||
Global::fCalibrateIn[x][2]) *
|
||||
b +
|
||||
Global::fCalibrateIn[x][1]) *
|
||||
b +
|
||||
Global::fCalibrateIn[x][0];
|
||||
Global::fCalibrateIn[x][0];*/
|
||||
b = (((((Global::fCalibrateIn[x][5] * b) + Global::fCalibrateIn[x][4]) * b +
|
||||
Global::fCalibrateIn[x][3]) *
|
||||
b +
|
||||
Global::fCalibrateIn[x][2]) *
|
||||
b +
|
||||
Global::fCalibrateIn[x][1]) *
|
||||
b +
|
||||
Global::fCalibrateIn[x][0];
|
||||
return (b + 2) / 8;
|
||||
}
|
||||
if (Global::bMWDmasterEnable && Global::bMWDBreakEnable)
|
||||
{
|
||||
float b = (float)MWDComm->uiAnalog[x];
|
||||
b = (b - Global::fMWDAnalogInCalib[x][0]) / (Global::fMWDAnalogInCalib[x][1] - Global::fMWDAnalogInCalib[x][0]);
|
||||
switch (x)
|
||||
{
|
||||
case 0: if (Global::bMWDdebugEnable && Global::iMWDDebugMode & 4) WriteLog("Pozycja kranu = " + to_string(b * 8 - 2));
|
||||
return (b * 8 - 2);
|
||||
break;
|
||||
case 1: return (b * 10);
|
||||
break;
|
||||
default: return 0;
|
||||
}
|
||||
return (b - Global::fMWDAnalogInCalib[x][0]) / (Global::fMWDAnalogInCalib[x][1] - Global::fMWDAnalogInCalib[x][0]);
|
||||
}
|
||||
return -1.0; // odcięcie
|
||||
};
|
||||
|
||||
@@ -133,9 +133,9 @@ bool TMWDComm::Open() // otwieranie portu COM
|
||||
|
||||
bool TMWDComm::Close() // zamykanie portu COM
|
||||
{
|
||||
Global::bMWDmasterEnable = false; // główne włączenie portu!
|
||||
Global::bMWDInputEnable = false; // włącz wejścia
|
||||
Global::bMWDBreakEnable = false; // włącz wejścia analogowe
|
||||
Global::bMWDmasterEnable = false; // wyłącz SerialPort
|
||||
Global::bMWDInputEnable = false; // wyłącz wejścia
|
||||
Global::bMWDBreakEnable = false; // wyłącz wejścia analogowe
|
||||
Global::bMWDdebugEnable = false; // wyłącz debugowanie
|
||||
Global::iMWDDebugMode = 0; // wyłącz debugMode!
|
||||
|
||||
@@ -166,7 +166,7 @@ bool TMWDComm::ReadData() // odbieranie danych + odczyta danych analogowych i za
|
||||
{
|
||||
DWORD bytes_read;
|
||||
ReadFile(hComm, &ReadDataBuff[0], BYTETOREAD, &bytes_read, NULL);
|
||||
|
||||
if (Global::bMWDdebugEnable && Global::iMWDDebugMode == 128) WriteLog("Data receive. Checking data...");
|
||||
if (Global::bMWDBreakEnable)
|
||||
{
|
||||
uiAnalog[0] = (ReadDataBuff[9] << 8) + ReadDataBuff[8];
|
||||
|
||||
@@ -70,43 +70,29 @@ public:
|
||||
#endif
|
||||
|
||||
/*
|
||||
INFO - zmiany dokonane w innych plikach niezbędne do prawidłowego działania:
|
||||
INFO - wpisy do eu07.ini:
|
||||
|
||||
Console.cpp:
|
||||
Console::AnalogCalibrateGet - obsługa kranów hamulców
|
||||
Console::Update - wywoływanie obsługi MWD
|
||||
Console::ValueSet - obsługa manometrów, mierników WN (PWM-y)
|
||||
Console::BitsUpdate - ustawiania lampek
|
||||
Console::Off - zamykanie portu COM
|
||||
Console::On - otwieranie portu COM
|
||||
Console::~Console - usuwanie MWD (jest też w Console OFF)
|
||||
mwdmasterenable yes // włącz MWD (master MWD Enable)
|
||||
mwddebugenable yes // włącz logowanie
|
||||
mwddebugmode 4 // tryb debugowania (które logi)
|
||||
|
||||
MWDComm * Console::MWD = NULL; - luzem, obiekt i wskaźnik(?)
|
||||
dodatkowo zmieniłem int na long int dla BitSet i BitClear oraz iBits
|
||||
mwdcomportname COM3 // nazwa portu
|
||||
mwdbaudrate 500000 // prędkość transmisji
|
||||
|
||||
Train.cpp:
|
||||
if (Global::iFeedbackMode == 5) - pobieranie prędkości, manometrów i mierników WN
|
||||
if (ggBrakeCtrl.SubModel) - możliwość sterowania hamulcem zespolonym
|
||||
if (ggLocalBrake.SubModel) - możliwość sterowania hamulcem lokomotywy
|
||||
mwdinputenable yes // włącz wejścia (przyciski, przełączniki)
|
||||
mwdbreakenable yes // włącz hamulce (wejścia analogowe)
|
||||
|
||||
Globals.h:
|
||||
dodano zmienne dla MWD
|
||||
Globals.cpp:
|
||||
dodano inicjalizaję zmiennych i odczyt z ini ustawień
|
||||
mwdmainbreakconfig 0 1023 // konfiguracja kranu zespolonego -> min, max (położenie kranu - odczyt z ADC)
|
||||
mwdlocbreakconfig 0 1023 // konfiguracja kranu maszynisty -> min, max (położenie kranu - odczyt z ADC)
|
||||
mwdanalogin2config 0 1023
|
||||
mwdanalogin2config 0 1023
|
||||
|
||||
Wpisy do pliku eu07.ini
|
||||
mwdmaintankpress 0.9 1023 // max ciśnienie w zbiorniku głownym i rozdzielczość
|
||||
mwdmainpipepress 0.7 1023 // max ciśnienie w przewodzie głównym i rozdzielczość
|
||||
mwdbreakpress 0.5 1023 // max ciśnienie w cylindrach hamulcowych i rozdzielczość
|
||||
|
||||
//maciek001 MWD
|
||||
comportname COM3 // wybór portu COM
|
||||
mwdbaudrate 500000
|
||||
mwdhivoltmeter 4000 1023 // max napięcie na woltomierzu WN
|
||||
mwdhiampmeter 800 1023 // max prąd amperomierza WN
|
||||
|
||||
mwdbreakenable yes // czy załączyć sterowanie hamulcami? blokuje klawiature
|
||||
mwdbreak 1 255 0 255 // hamulec zespolony
|
||||
mwdbreak 2 255 0 255 // hamulec lokomotywy
|
||||
|
||||
mwdzbiornikglowny 0.82 255
|
||||
mwdprzewodglowny 0.7 255
|
||||
mwdcylinderhamulcowy 0.43 255
|
||||
mwdwoltomierzwn 4000 255
|
||||
mwdamperomierzwn 800 255
|
||||
mwddivider 5 // dzielnik - czym większy tym rzadziej czyta diwajs
|
||||
*/
|
||||
|
||||
22
Train.cpp
22
Train.cpp
@@ -3762,12 +3762,21 @@ bool TTrain::Update( double const Deltatime )
|
||||
false) // nie blokujemy AI
|
||||
{ // Ra: nie najlepsze miejsce, ale na początek gdzieś to dać trzeba
|
||||
// Firleju: dlatego kasujemy i zastepujemy funkcją w Console
|
||||
if (((mvOccupied->BrakeHandle == FV4a) ||
|
||||
(mvOccupied->BrakeHandle == FVel6))) // może można usunąć ograniczenie do FV4a i FVel6?
|
||||
if (mvOccupied->BrakeHandle == FV4a)
|
||||
{
|
||||
double b = Console::AnalogCalibrateGet(0);
|
||||
b = b * 8 - 2;
|
||||
b = Global::CutValueToRange(-2.0, b, mvOccupied->BrakeCtrlPosNo); // przycięcie zmiennej do granic
|
||||
if (Global::bMWDdebugEnable && Global::iMWDDebugMode & 4) WriteLog("Pozycja kranu = " + to_string(b));
|
||||
ggBrakeCtrl.UpdateValue(b); // przesów bez zaokrąglenia
|
||||
mvOccupied->BrakeLevelSet(b);
|
||||
}
|
||||
if (mvOccupied->BrakeHandle == FVel6) // może można usunąć ograniczenie do FV4a i FVel6?
|
||||
{
|
||||
double b = Console::AnalogCalibrateGet(0);
|
||||
b = Global::CutValueToRange(-2.0, b, mvOccupied->BrakeCtrlPosNo); // przycięcie zmiennej do granic
|
||||
|
||||
b = b * 7 - 1;
|
||||
b = Global::CutValueToRange(-1.0, b, mvOccupied->BrakeCtrlPosNo); // przycięcie zmiennej do granic
|
||||
if (Global::bMWDdebugEnable && Global::iMWDDebugMode & 4) WriteLog("Pozycja kranu = " + to_string(b));
|
||||
ggBrakeCtrl.UpdateValue(b); // przesów bez zaokrąglenia
|
||||
mvOccupied->BrakeLevelSet(b);
|
||||
}
|
||||
@@ -3782,13 +3791,14 @@ bool TTrain::Update( double const Deltatime )
|
||||
if (ggLocalBrake.SubModel)
|
||||
{
|
||||
if (DynamicObject->Mechanik ?
|
||||
(DynamicObject->Mechanik->AIControllFlag ? false : (Global::iFeedbackMode == 4 || Global::bMWDmasterEnable)) :
|
||||
(DynamicObject->Mechanik->AIControllFlag ? false : (Global::iFeedbackMode == 4 || (Global::bMWDmasterEnable && Global::bMWDBreakEnable))) :
|
||||
false) // nie blokujemy AI
|
||||
{ // Ra: nie najlepsze miejsce, ale na początek gdzieś to dać trzeba
|
||||
// Firleju: dlatego kasujemy i zastepujemy funkcją w Console
|
||||
if ((mvOccupied->BrakeLocHandle == FD1))
|
||||
{
|
||||
double b = Console::AnalogCalibrateGet(1);
|
||||
b *= 10;
|
||||
b = Global::CutValueToRange(0.0, b, LocalBrakePosNo); // przycięcie zmiennej do granic
|
||||
ggLocalBrake.UpdateValue(b); // przesów bez zaokrąglenia
|
||||
mvOccupied->LocalBrakePos =
|
||||
@@ -4681,7 +4691,7 @@ bool TTrain::Update( double const Deltatime )
|
||||
if ((!Console::Pressed(Global::Keys[k_DecBrakeLevel])) &&
|
||||
(!Console::Pressed(Global::Keys[k_WaveBrake])) && (mvOccupied->BrakeCtrlPos == -1) &&
|
||||
(mvOccupied->BrakeHandle == FVel6) && (DynamicObject->Controller != AIdriver) &&
|
||||
(Global::iFeedbackMode != 4) && (!(Global::bMWDmasterEnable && Global::bMWDBreakEnable)))
|
||||
(Global::iFeedbackMode != 4) && (!(Global::bMWDmasterEnable && Global::bMWDBreakEnable)))
|
||||
{
|
||||
// mvOccupied->BrakeCtrlPos=(mvOccupied->BrakeCtrlPos)+1;
|
||||
// mvOccupied->IncBrakeLevel();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
@@ -13,17 +13,18 @@
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{8E0232E5-1C67-442F-9E04-45ED2DDFC960}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v120_xp</PlatformToolset>
|
||||
<PlatformToolset>v140_xp</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v120_xp</PlatformToolset>
|
||||
<PlatformToolset>v140_xp</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
@@ -36,14 +37,14 @@
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<TargetName>eu07++</TargetName>
|
||||
<IntDir>$(SolutionDir)tmp\$(PlatformShortName)-$(Configuration)\$(ProjectName)\</IntDir>
|
||||
<OutDir>$(SolutionDir)bin\</OutDir>
|
||||
<TargetName>mhEU07-201702debug</TargetName>
|
||||
<IntDir>E:\Gry\EU07\eu07 exe\tmj-cpp-hamulec</IntDir>
|
||||
<OutDir>E:\Gry\EU07\eu07 exe\tmj-cpp</OutDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<TargetName>eu07++</TargetName>
|
||||
<TargetName>mhEU07-201702relase</TargetName>
|
||||
<IntDir>$(SolutionDir)tmp\$(PlatformShortName)-$(Configuration)\$(ProjectName)\</IntDir>
|
||||
<OutDir>$(SolutionDir)bin\</OutDir>
|
||||
<OutDir>E:\Gry\EU07\eu07 exe\tmj-cpp-hamulec</OutDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
@@ -55,7 +56,7 @@
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<FloatingPointExceptions>true</FloatingPointExceptions>
|
||||
<FloatingPointExceptions>false</FloatingPointExceptions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
|
||||
Reference in New Issue
Block a user