Я реализую ПИД-регулирование для управления скоростью двигателя. В спецификации мне сказали внедрить технологию фильтрации, используя следующее уравнение для части D. Я закончил с внедрением PI-управления, и он отлично работает для меня.D часть расчета PID
Теперь я понял, до сих пор является то, что 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. Заранее большое спасибо. Извините за плохой английский.
Не должно ли изменение процента быть '(текущим-старым)/старым?? Почему у вас есть «max» в знаменателе? – thelaws
хорошо, я положил max, потому что максимальное возможное изменение обратной связи - это mx feedback it self .... – SPandya
Я подозревал бы целое деление. Насколько велика 'N' по сравнению с' s * Td'? Если он больше, ваш младший член округляется до 1. и если 'N' меньше, чем' Td', вся формула усекается до 0. – AShelly