モーター速度制御用のPIDコントローラーを実装しています。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部分の式を正しく実装したかどうかを知りたいだけですか?微分の基本的な数学の理解に間違いをしていますか?
注: VFDから直接取得されるため、kp、ti、tdの再計算を変更する自由はありません。