Set PID integrator to saturation value
43 ビュー (過去 30 日間)
古いコメントを表示
I have a PID controller that controls a valve between 0 and 1 (0% and 100%). I have set the output limits in the PID block to 0 (lower limit) and 1 (upper limit) and I have set the anti-windup method to "clamping".
When the PID's output saturates at 1, the integrator stops (as expected). I want to set the integrator's value to 1 when the integration resumes again to avoid larger steps in the controller's output.
I looked at the documentation and found the "back-calculation" method for integrator anti-windup. It looks like exactly what I need, but it does not seem to have any effect? I don't get it. I tried rebuilding it myself by deactivating the controller's output limit, including a saturation block manually, and then have the controller track the saturated signal, but that did not work either.
The only thing that worked was when I included a logic that reset the integrator when the output reached 1, but that does not feel like a good solution. It also creates an algebraic loop.
Does anybody know a solution? Thanks
2 件のコメント
回答 (1 件)
Sayan
2023 年 9 月 15 日
I understand from your query that it is required to keep the PID Controller output to 1 when it reaches the saturation limit rather than clamping to 0 to make the tracking faster in next time steps, and the "Anti-Windup" methods are not working for the model. The most probable solution for the query is mentioned below.
- Enable the "Tracking mode". You can do that by going to the "Initialization" tab and finding the checkbox "Enable tracking mode".
- Specify the "Tracking coefficient (Kt)". The inverse of "Kt" determines the time constant of the tracking loop.
- Connect the "TR" port with the output of your plant.
Alternatively, if you are building a "PI" controller manually with an "Inetegrator" block and facing an algebraic loop while resetting the integrator externally, you can use the below steps to remove that.
- Use the Unit Delay block (available in Simulink/Discrete) which provides the output of the previous step.
- Connect the block between the reset signal and the Integrator's "External reset" port.
Further details on "Anti-Windup" control using PID and an integrator can be found in the following MATLAB documentation.
- "Anti-Windup" :https://www.mathworks.com/help/simulink/slref/anti-windup-control-using-a-pid-controller.html
- Integrator: https://www.mathworks.com/help/releases/R2023a/simulink/slref/integrator.html
Hope this helps in answering the query.
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Gain Scheduling についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!