- золотник =>
HydraulicSpool - поршень =>
HydraulicPiston
+-----+-----+-----+-----+
| |==========>| |
+-----+-----+-----+-----+
0 1 2 3 4
Нужно положение поршня перевести из 1 в 3.
Но данный код очень сильно зависит от скорости золотника.
Так как 1 < 3(меньше), то зоротнику нужно положение 1, чтобы двигать поршень в вперед.
Все нормально работает до положения 3, в положение 3 поршень говорит золотнику, что нужно из положения 1 перевести в положение 0, так как 3 == 3(равно).
Но у золотника есть свое собственное время, следовательно золотник начинает переводиться в положение 0, но за одну микросекунду положение будет ~0.999 (при условии что золотнику для перевода из -1 до 1 понадобиться 2 секунды)
Из этого можно сделать вывод, что золотник переводиться в положение 0, а поршень в это время уже начинает из положения 3 перемещяться в положение ~3.0001, следовательно
3.00001 > 3(больше), по этому золотнику говориться положение -1, но у золотника положение ~0.998, и вот пока золотник перемещяется в положение -1 поршень уже будет в положение ~3.7.
И так по кругу будет, то есть проблема этого кода в том, что он не расчитывает сколько по времени займет остановка золотника