16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-19 13:29:18 +02:00

1. Dodanie możliwości definicji kalibracji wyjść i wejść PWM jako funkcja piątego stopnia

2. Do użycia są dwa nowe słowa kluczowe w ini: calibrate5din, calibrate5dout oba z 6 parametrami
3. Przerzucenie calibracji wejść do Console z Train
4. Dodanie funkcji obcinającej zmienną do podanego zakresu
This commit is contained in:
firleju
2016-03-17 18:58:38 +01:00
parent 6c067afa1b
commit 1f939735ce
5 changed files with 96 additions and 38 deletions

View File

@@ -3716,22 +3716,24 @@ bool TTrain::Update()
if (ggBrakeCtrl.SubModel)
{
if (DynamicObject->Mechanik ?
(DynamicObject->Mechanik->AIControllFlag ? false : Global::iFeedbackMode == 4) :
(DynamicObject->Mechanik->AIControllFlag ? false :
Global::iFeedbackMode == 4 ) :
false) // nie blokujemy AI
{ // Ra: nie najlepsze miejsce, ale na pocz¹tek gdzieœ to daæ trzeba
double b = Console::AnalogGet(0); // odczyt z pulpitu i modyfikacja pozycji kranu
if ((b >= 0.0) && ((mvOccupied->BrakeHandle == FV4a) ||
(mvOccupied->BrakeHandle ==
FVel6))) // mo¿e mo¿na usun¹æ ograniczenie do FV4a i FVel6?
// Firleju: dlatego kasujemy i zastepujemy funkcj¹ w Console
// double b = Console::AnalogGet(0); // odczyt z pulpitu i modyfikacja pozycji kranu
if (double b = Console::AnalogCalibrateGet(0) && ((mvOccupied->BrakeHandle == FV4a) ||
(mvOccupied->BrakeHandle == FVel6))) // mo¿e mo¿na usun¹æ ograniczenie do FV4a i FVel6?
{
b = (((Global::fCalibrateIn[0][3] * b) + Global::fCalibrateIn[0][2]) * b +
Global::fCalibrateIn[0][1]) *
b +
Global::fCalibrateIn[0][0];
if (b < -2.0)
// b = (((Global::fCalibrateIn[0][3] * b) + Global::fCalibrateIn[0][2]) * b +
// Global::fCalibrateIn[0][1]) *b +
// Global::fCalibrateIn[0][0];
b = Global::CutValueToRange(-2.0, b, mvOccupied->BrakeCtrlPosNo); // przyciêcie zmiennej do granic
/*if (b < -2.0)
b = -2.0;
else if (b > mvOccupied->BrakeCtrlPosNo)
b = mvOccupied->BrakeCtrlPosNo;
b = mvOccupied->BrakeCtrlPosNo;*/
ggBrakeCtrl.UpdateValue(b); // przesów bez zaokr¹glenia
mvOccupied->BrakeLevelSet(b);
}
@@ -3749,17 +3751,19 @@ bool TTrain::Update()
(DynamicObject->Mechanik->AIControllFlag ? false : Global::iFeedbackMode == 4) :
false) // nie blokujemy AI
{ // Ra: nie najlepsze miejsce, ale na pocz¹tek gdzieœ to daæ trzeba
double b = Console::AnalogGet(1); // odczyt z pulpitu i modyfikacja pozycji kranu
if ((b >= 0.0) && (mvOccupied->BrakeLocHandle == FD1))
// Firleju: dlatego kasujemy i zastepujemy funkcj¹ w Console
// double b = Console::AnalogGet(1); // odczyt z pulpitu i modyfikacja pozycji kranu
if (double b = Console::AnalogCalibrateGet(1) && (mvOccupied->BrakeLocHandle == FD1))
{
b = (((Global::fCalibrateIn[1][3] * b) + Global::fCalibrateIn[1][2]) * b +
Global::fCalibrateIn[1][1]) *
b +
Global::fCalibrateIn[1][0];
if (b < 0.0)
//b = (((Global::fCalibrateIn[1][3] * b) + Global::fCalibrateIn[1][2]) * b +
// Global::fCalibrateIn[1][1]) *
// b +
// Global::fCalibrateIn[1][0];
b = Global::CutValueToRange(0.0, b, Hamulce::LocalBrakePosNo); // przyciêcie zmiennej do granic
/*if (b < 0.0)
b = 0.0;
else if (b > Hamulce::LocalBrakePosNo)
b = Hamulce::LocalBrakePosNo;
b = Hamulce::LocalBrakePosNo;*/
ggLocalBrake.UpdateValue(b); // przesów bez zaokr¹glenia
mvOccupied->LocalBrakePos =
int(1.09 * b); // sposób zaokr¹glania jest do ustalenia