- золотник =>
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
.
И так по кругу будет, то есть проблема этого кода в том, что он не расчитывает сколько по времени займет остановка золотника