О, тут я смотрю как раз и формула объявилась

.
Давайте проанализируем ситуацию: мы рассматриваем два вида ПИД управления
- задание положения -> ПИД
обратная связь по положению -> ПИД
ПИД -> скорость (момент) двигателя
- задание скорости -> ПИД
обратная связь по скорости -> ПИД
ПИД -> скорость (момент) двигателя
при этом задание по скорости это положение пропущенное через ddt, и обратная связь в принципе тоже самое. Т.к. наверняка компонент encoder делает тоже самое.
Теперь попробуем проанализировать формулу для обоих случаев. Точнее попробуем один привести к другому.
В следующей формуле e
p это ошибка по положению e
v по скорости. Из того, что скорость вычисляется дифференцированием имеем e
v = de
p/dt
В итоге:
Что получаем, остался компонент D, остался компонент P. Исчез компонент I, вместо него появилось что-то несуразное

.
Что нам это дает, если пользоваться стандартными методами настройки PID, то вместо P надо настраивать I, вместо D - P, а компонент I - D (но так как он у нас вообще непонятно что, надо его ставить = 0)
Вывод для получения именно PID регулирования со всеми его составляющими надо на вход pid подавать скорость и ошибку по скорости

. Как-то так.
Или с выхода PID брать положение, и преобразовывать его в скорость?
У кого какие мысли?
Формула в форма openoffice (для просмотра содержимого нажмите на ссылку)pid = Pe_v + Int from{0} to{t} e_v dt + D{de_v} over {dt}
newline
e_v = de_p over dt
newline
pid = P {de_p} over dt + Int from 0 to t {{de_p} over {dt} dt} + D {d^2 e_p} over {d^2 t} = {}
newline
{} = P {de_p} over dt + I(e_p(t) - e_p(0)) + D {d^2 e_p} over {d^2 t}
newline
{} = P{{de_p} over dt} underbrace {компопнет D_p} + I({e_p(t)}underbrace{компонент P_p} - {e_p(0)}underbrace{stack{константа # можно # опустить} }) + D {{d^2 e_p} over {d^2 t}} underbrace {что-то`вроде`FF0_p?!?}