Я внедряю ПИД-регулятор для управления скоростью двигателя. Я закончил с внедрением управления PI, и он прекрасно работает для меня. В спецификации мне было сказано реализовать метод фильтрации с помощью следующего уравнения для части D:
Теперь, что я понимаю, так это то, что s
представляет в "dx/dt"
целом, что соответствует скорости изменения ошибки, но здесь я могу связать это со скоростью изменения обратной связи. Td/N
для ограничения общего выхода усиления (надеюсь, я понял это правильно). Теперь, чтобы представить это в терминах кода C, я попробовал следующий способ:
s = (CurrentFeedback()-Old_Feedback)*100/(MaxFeedback()); //to calculate the % change in feedback
s = s*1000/sampleTime; //1000 is multiplied because sampleTime is in milliseconds
D = (Td*s)/(1+(s*Td/N));
D = D*KP; //Kp is multiplied as per the standard pid equation.
Old_Feedback = CurrentFeedback();
PID = P+I-D;
Что ж, результаты с добавлением D - это не то, что я предсказал. Я просто хочу знать, правильно ли я реализовал уравнение порции D? Я делаю какие-либо ошибки в моем понимании основных математических разделений?
ПРИМЕЧАНИЕ: я не могу изменить пересчет kp, ti, td, так как он исходит непосредственно от VFD.