MIMO Control System
This example shows how to build a MIMO control system using connect
to interconnect Numeric LTI models and
tunable Control Design Blocks.
Consider the following two-input, two-output control system.
The plant G is a distillation column with two inputs and two outputs. The two inputs are the reflux L and boilup V. The two outputs are the concentrations of two chemicals, represented by the vector signal y = [y1,y2]. You can represent this plant model as:
The vector setpoint signal r = [r1,r2] specifies the desired concentrations of the two chemicals. The vector error signal e represents the input to D, a static 2-by-2 decoupling matrix. CL and CV represent independent PI controllers that control the two inputs of G.
To create a two-input, two-output model representing this closed-loop control system:
Create a Numeric LTI model representing the 2-by-2 plant G.
s = tf('s','TimeUnit','minutes'); G = [87.8 -86.4 ; 108.2 -109.6]/(75*s+1); G.InputName = {'L','V'}; G.OutputName = 'y';
When you construct the closed-loop model,
connect
uses the input and output names to form connections between the block diagram components. Therefore, you must assign names to the inputs and outputs of the transfer functionG
in either of the following ways: .You can assign input and output names to individual signals by specifying signal names in a cell array, as in
G.InputName = {'L','V'}
Alternatively, you can use vector signal naming, which the software automatically expands. For example, the command
G.OutputName = 'y'
assigns the names'y(1)'
and'y(2)'
to the outputs ofG
.
Create tunable Control Design Blocks representing the decoupling matrix D and the PI controllers CL and CV.
D = tunableGain('Decoupler',eye(2)); D.u = 'e'; D.y = {'pL','pV'}; C_L = tunablePID('C_L','pi'); C_L.TimeUnit = 'minutes'; C_L.u = 'pL'; C_L.y = 'L'; C_V = tunablePID('C_V','pi'); C_V.TimeUnit = 'minutes'; C_V.u = 'pV'; C_V.y = 'V';
Note
u
andy
are shorthand notations for theInputName
andOutputName
properties, respectively. Thus, for example, entering:D.u = 'e'; D.y = {'pL','pV'};
is equivalent to entering:
D.InputName = 'e'; D.OutputName = {'pL','pV'};
Create the summing junction.
The summing junction produces the error signals e by taking the difference between r and y.
Sum = sumblk('e = r - y',2);
Sum
represents the transfer function for the summing junction described by the formula'e = r - y'
. The second argument tosumblk
specifies that the inputs and outputs ofSum
are each vector signals of length 2. The software therefore automatically assigns the signal names{'r(1)','r(2)','y(1)','y(2)'}
toSum.InputName
and{'e(1)','e(2)'}
toSum.OutputName
.Join all components to build the closed-loop system from r to y.
CLry = connect(G,D,C_L,C_V,Sum,'r','y');
The arguments to the
connect
function include all the components of the closed-loop system, in any order.connect
automatically combines the components using the input and output names to join signals.The last two arguments to
connect
specify the output and input signals of the closed-loop model, respectively. The resultinggenss
modelCLry
has two-inputs and two outputs.
See Also
Related Examples
- Control System Model with Both Numeric and Tunable Components
- Multi-Loop Control System
- MIMO Control System