Хех, уволился, а движок с собой что-ли прихватил? Может забыть как страшний сон?
Что за движок-то? От электричества работает?
текущая величина ошибки (скорость замеряется за предыдущие 0,1 сек) умножается на К и добавляется с учетом знака к числу в интеграторе
А потом эти величины "П" и "И" складываешь?
После масштабирования выдается в ЦАП
Что выдаётся?
Вот формулка ПИ-регулятора у которого в качестве уставок полоса пропорциональности и время интегрирования, а на выходе сигнал 0-100%:
Yi = 1/Xp * (Ei + 1/tи*сумма(Ei*дtизм))*100% , где
Yi - выходной (управляющий сигнал);
Xp - полоса пропорциональности;
Ei - ошибка;
tи - постоянная времени интегратора;
дtизм - время между двумя соседними измерениями (это вот твои 0,1 сек);
сумма(Ei*дtизм) - накопленная сумма рассогласований (за время интегрирования tи);
Реализуется, в принципе, просто - считаешь ошибку, храня в памяти предыдущее её значение, на каждом шаге кладёшь её в интегратор (всё с учётом знака). В начале интеграл будет равным 0 пока не накопится ошибка (т.е. закончится время интегрирования), до этого момента (вышло время) интегральная часть не выдаёт своё значение, а действует предыдущее. Как появляется новое - его в память и регулятор работает с ним, а интегратор считает следующее. Только вот программируется непросто...
По хорошему бы сюда прикрутить защиту интегратора от насыщения, то есть задать рамки в которых он может работать (например +/-5% от уставки) если вышел за них - всё, интегральная часть равна 0.
Ну и ещё поиграться с шагом измерений - уменьшить, будеть только лучше - "сгладим" регулирование. Ежели вспомнить теорему Котельникова - то надо выбирать этот интервал в два раза меньше минимальной постоянной времени системы. Если частоту, то в два раза больше максимальной частоты какого-либо компонента системы. Вот и смотри что у тебя самое "быстрое". Наверное, нагрузка, раз она "быстропеременная в пределах одного оборота"? И все твои 10000 импульсов/оборот с энокодера за 0,1 сек идут на смарку. Отсюда и самовозбуждение и всё прочее...
Может "Д" добавить для увеличения реакции регулятора на изменения. Получится ПИД. Если захочешь, вот дополнение к формуле, вставишь вместо знака "+":
+ tд*(Ei/дtизм) + , где
tд - время дифференцирования.
Ну и почитай, например
ТУТ . В общем, за применение к твоей системе ПИ-регулятора я не ручаюсь, хотя, может и подходит, так что всё вышесказанное не относится к построению твоей системы, а просто ремарка по поводу ПИ-регулятора.