D часть расчета PID
Я использую ПИД-регулятор для контроля скорости двигателя. В спецификации мне было сказано реализовать технику фильтрации, используя следующее уравнение для части D. Я закончил с внедрением управления PI, и он прекрасно работает для меня.
Теперь я понял, что 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. Заранее большое спасибо. Извините за плохой английский.
1 ответ
Всякий раз, когда время выборки достаточно велико и чувствительность измерения высока, D будет только добавлять шум, потому что любое маленькое изменение будет немедленно атаковано D-регулятором, создавая ужасную пульсацию в конце. В большинстве систем вам не нужен D, если вы можете жить с более медленным управлением. Если вы все еще хотите использовать D, убедитесь, что он намного меньше, чем P и I.
И, может быть, вы можете изменить свой последний символ.