Distillation Controller Tuning
This example shows how to use Simulink® Design Optimization™ to optimize the multi-loop controller parameters of a distillation column. The Distillation column produces methanol and is represented as a linear model with delays. The digital multi-loop controller consists of a decoupling matrix and two single-loop PI controllers. The parameters of both the single-loop controllers are tuned simultaneously to satisfy a 14 percent overshoot and 13 minute rise-time step response characteristics.
distillation_demo model using the command below and run the simulation. The simulation produces the unoptimized composition of methanol in the column and the initial data for optimization.
Double-click the Scope block to view the unoptimized methanol composition in the top and bottom of the column.
Linearized Model of Distillation Column block. Note that this is a subsystem and shows the model for variation of methanol in the top and bottom of the distillation column.
Desired Step Response block to view constraints on the step response of the distillation column. These constraints are used to simultaneously tune both of the single-loop controller parameters.
You can launch the Response Optimizer using the Apps menu in the Simulink toolstrip, or the
sdotool command in MATLAB®. You can launch a pre-configured optimization task in the Response Optimizer by first opening the model and by double-clicking on the orange block at the bottom of the model. From the Response Optimizer, press the Plot Model Response button to simulate the model and show how well the initial design satisfies the design requirements.
There are two curves in the plot representing the methanol composition in the top and bottom of the column.
We start the optimization by pressing the Optimize button from the Response Optimizer. The plots are updated to indicate that the design requirements are now satisfied.
The two solid curves show the final optimized methanol composition in the top and bottom of the distillation column.
% Close the model bdclose('distillation_demo')