Filter coefficient (N) in PID block?

321 ビュー (過去 30 日間)
Robert
Robert 2013 年 2 月 17 日
コメント済み: Andre Elliot 2023 年 5 月 15 日
Good evening folks!
While tuning my quadrotor model in Matlab I found that the Matlab PID function had a Filter coefficient (N) term in the PID equation. However I have not encountered such a term in my typical PID programs. How would one implement this term into the PID equation and what would be some simple C code to add this term into the derivative? I tried generating C code from my model but got a lot of header and C program files with nothing close to simple.
My current PID code line in C is:
U2 = KP * phi_error + KI * phi_errorsum + KD * (PHI_RATE_desired-PHI_RATE);
Many Thanks, Robert

採用された回答

Arkadiy Turevskiy
Arkadiy Turevskiy 2013 年 3 月 12 日
The code would look like that.
FilterCoefficient = (Kd * u - Filter_DSTATE) * N;
y = (Kp * u + Integrator_DSTATE) + FilterCoefficient;
Integrator_DSTATE += Ki * u * 0.01;
Filter_DSTATE += 0.01 * FilterCoefficient;
HTH.
Arkadiy
  4 件のコメント
Marzieh Hosseini
Marzieh Hosseini 2021 年 5 月 6 日
Hi,
Is it the same code if I want to implement PID in Matlab code, while I am controlling a device directly with Matlab and I got real time information in my Matlab?
Andre Elliot
Andre Elliot 2023 年 5 月 15 日
Hi what are u, N, y and the meaning of DSTATE? nice day.

サインインしてコメントする。

その他の回答 (3 件)

Shashank Prasanna
Shashank Prasanna 2013 年 2 月 17 日
Hi Robert, this link should give you a better idea of what N means:
If you have Simulink Control Design toolbox, then you can use the built in pidtune functionality to tune the PID.
  1 件のコメント
Brian Candiloro
Brian Candiloro 2023 年 1 月 13 日
Can this filter term be realized in a physical opamp differentiator circuit or only in code?

サインインしてコメントする。


Robert
Robert 2013 年 2 月 17 日
Thank you for the response, but I saw that link and do not quite understand it entirely, especially the filter block.
So in essence should the code look something like this:
Derivative PID:
Derivative_gain*(set_rate - N*acutal_rate)?
I am not quite sure where the filter (1/s) comes into play.
Thank you

Robert
Robert 2013 年 2 月 21 日
Any ideas?
  1 件のコメント
Seng Tak Goh
Seng Tak Goh 2019 年 3 月 11 日
Hi Robert,
In essence, the filtered derivative is doing a first order filtering on the change of the inputs, scaled by D gain.
The 1/s integrates the previous output scaled by N term, then adding the input change scaled by D * N to produce the output.
If you multiply the D term of the continuous form by s, you will see it better how the filtering comes into play.
In discrete form:
y[n] = D*N*(u[n]-u[n-1]) + (1-N*Ts)*y[n-1];

サインインしてコメントする。

カテゴリ

Help Center および File ExchangePID Controller Tuning についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by