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.

И, может быть, вы можете изменить свой последний символ.

Другие вопросы по тегам