![Very Happy :-D](./images/smilies/biggrin.gif)
Надеюсь вы обратите на меня внимание и алгоритм, и поправите положение.
Решил подсказать вам, уважаемые разработчики, проверенный алгоритм работы акпп, например такой используется на японских aisin. Примитивный и простой, а большего и не надо.
Вот один простой алгоритм работы акпп. для начала можно забыть про гидротрансформатор.
переменные:
THR - текущее положение дросселя %
RPM - текущие обороты двигателя.
SPEED - текущая скорость машины.
gear - текущая передача.
Для начала надо задать соотвествие дросселю разным режимам, то есть разбить его допустим на 4 группы и при этом задать
скорость переключения вверх (upshift_spd) для каждой передачи. Числа условные, зависят от всх двигателя и передачтоных
чисел акпп.
переключение вверх 1-2.
THR upshift_spd(1-2)
THR1 (0-20%) - 15
THR2 (21-40%) - 25
THR3 (41-65%) - 45
THR4 (66-100%) - 65
переключение вверх 2-3.
THR upshift_spd(2-3)
THR1 (0-20%) - 25
THR2 (21-40%) - 40
THR3 (41-65%) - 70
THR4 (66-100%) - 100
переключение вверх 3-4.
THR upshift_spd(3-4)
THR1 (0-20%) - 45
THR2 (21-40%) - 70
THR3 (41-65%) - 110
THR4 (66-100%) - 150
Переключение передач вниз при замедлении и торможении можно задать также для каждлой передачи, но без учета дросселя и
меньшие, чем на малом дросселе переключения вверх, чтобы не было конфликтов.
downshift_spd(4-3) = 30
downshift_spd(3-2) = 15
downshift_spd(2-1) = 10
для понижения передачи при ускорении, необходимо контролировать параметр
dspeed = upshift_spd - speed, который должен быть ограничен, например dspd_max=20, чтобы не оказаться в близи максимальных
оборотов и не делать лишнее переключение. Понижение должно всегда проходить на максимально возможную передачу при заданных
условиях.
Как работает алгоритм.
Постоянно проверяются обороты, дроссель, скорость.
1) Gear=1 нажимаем дроссель например на THR=25%, он попадает в диапазон THR2.
2) растут обороты и скорость. Как только SPEED > upshift_spd(1-2)=25, переключаемся вверх gear=2.
3) speed=30. дроссель убавили до THR=20%, попали в THR1. upshift_spd(2-3) для THR1 = 25, переключаемся на gear=3.
4) speed=40. Нажимаем дроссель THR=50%. Смотрим для THR3 возможность переключения на предыдущие передачи:
на второй передаче скорость upshift_spd=70, dspeed=70-40=30 > dspd_max - возможно переключить.
на первой передаче скорость upshift_spd=45, dspeed=45-40=5 < dspd_max - невозможно переключить.
Таким образом переключаемся на gear=2.
5) удерживаем THR=50% соотвествующий THR3. Когда speed > upshift_spd(2-3)=70, переключеаемся на gear=3.
6) speed = 80. Если убираем например THR=10%, попадаем в THR1, так как speed > upshift_spd(3-4)=45, переключаемся gear=4.
7) Убираем THR=0%, остаемся по прежнему в THR1, скорость speed=80, начинает снижаться. Так как speed > downshift_spd(4-3) =
30, удерживается gear=4.
![Cool 8)](./images/smilies/dirol.gif)
пониженную передачу для THR4:
на третей передаче upshift_spd(3-4)=150, dspeed=150-50=100 > dspd_max - возможно.
на второй передаче upshift_spd(2-3)=100, dspeed=100-50=50 > dspd_max - возможно.
на первой передаче upshift_spd(1-2)=65, dspeed=65-50=15 < dspd_max - невозможно.
Таким образом переключаемся на вторую передачу gear=2.
9) держим THR=100% (THR4), при speed > upshift_spd(2-3)=100, переключаемся gear=3.
10) держим THR=100% (THR4), при speed > upshift_spd(3-4)=150, переключаемся gear=4.
11) скорость speed=160. Убраем газ THR=0%, скорость снижается. удерживаем gear=4.
12) как только speed < downshift_spd(4-3), понижаем передачу gear=3. Ну и так далее.
Ну вот как то так. старался доступным языком изъясняться, чтобы Вы смогли меня понять.