Clear Filters
Clear Filters

Tune PID controller for a nonlinear system in MATLAB

37 views (last 30 days)
I am implementing a PID controller in a MATLAB script in which I have use ode23. The system is nonlinear, and I want to know how to optimize my PID gains without using Simulink.
 

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 17 Feb 2021
Most of the tools that MATLAB has available for PID controller tuning is with respect to linear systems. Nonlinear systems are extremely hard to predict and are therefore very hard to optimize PID gains for. Common practice is to optimize the PID gains for the linearized system and use these as a starting point for the PID gains of the nonlinear system.
A Simulink model can easily be linearized, but it is less straightforward to do this in MATLAB. The way to do this is through the PID Tuner app, for which the documentation can be found at:
With this app, the user can input arrays of input and output signals to the physical system without any PID controller action. The PID Tuner app will try to linearize the system and apply the best PID gains for the performance measures (response time, transient behavior) specified. The steps below outline this process when choosing the input/output data for the plant.
  1. Open the PID Tuner app from the "Apps" tab
  2. In the "Plant" dropdown, select "Identify New Plant"
  3. In the "Get I/O Data" dropdown, select "Arbitrary I/O Data"
  4. Specify the variable name (vector) for the output signal.
  5. Specify the variable name (vector) for the input signal (*Note: input and output signals must be the same size)
  6. Enter the start time
  7. Enter the sample time
  8. Click "Import" in the bottom right of the pop-up window
  9. Set all other settings in the toolstrip of the PID tuner (i.e. Controller type, domain, performance measures, etc.)
The performance measures can be adjusted until the desired system response is achieved.
 

More Answers (0)

Products


Release

R2019b

Community Treasure Hunt

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

Start Hunting!