Specify Multi-Input Multi-Output (MIMO) Plants

This example shows hot to specify plants having multiple inputs and outputs.

Most MPC applications involve plants with multiple inputs and outputs. You can use ss, tf, and zpk to represent a MIMO plant model. For example, consider the following model of a distillation column [1], which has been used in many advanced control studies:

[y1y2]=[12.8es16.7s+118.9e3s21.0s+13.8e8.1s14.9s+16.6e7s10.9s+119.4e3s14.4s+14.9e3.4s13.2s+1] [u1u2u3]

Outputs y1 and y2 represent measured product purities. The controller manipulates the inputs, u1 and u2, to hold each output at a specified setpoint. These inputs represent the flow rates of reflux and reboiler steam, respectively. Input u3 is a measured feed flow rate disturbance.

The model consists of six transfer functions, one for each input/output pair. Each transfer function is the first-order-plus-delay form often used by process control engineers.

Specify the individual transfer functions for each input/output pair. For example, g12 is the transfer function from input u1 to output y2.

g11 = tf( 12.8, [16.7 1], 'IOdelay', 1.0,'TimeUnit','minutes');
g12 = tf(-18.9, [21.0 1], 'IOdelay', 3.0,'TimeUnit','minutes');
g13 = tf(  3.8, [14.9 1], 'IOdelay', 8.1,'TimeUnit','minutes');
g21 = tf(  6.6, [10.9 1], 'IOdelay', 7.0,'TimeUnit','minutes');
g22 = tf(-19.4, [14.4 1], 'IOdelay', 3.0,'TimeUnit','minutes');
g23 = tf(  4.9, [13.2 1], 'IOdelay', 3.4,'TimeUnit','minutes');

Define a MIMO system by creating a matrix of transfer function models.

DC = [g11 g12 g13
      g21 g22 g23];

Define the input and output signal names and specify the third input as a measured input disturbance.

DC.InputName = {'Reflux Rate','Steam Rate','Feed Rate'};
DC.OutputName = {'Distillate Purity','Bottoms Purity'};
DC = setmpcsignals(DC,'MD',3);
-->Assuming unspecified input signals are manipulated variables.

Review the resulting system.

DC =
  From input "Reflux Rate" to output...
   Distillate Purity:  exp(-1*s) * ----------
                                   16.7 s + 1
   Bottoms Purity:  exp(-7*s) * ----------
                                10.9 s + 1
  From input "Steam Rate" to output...
   Distillate Purity:  exp(-3*s) * --------
                                   21 s + 1
   Bottoms Purity:  exp(-3*s) * ----------
                                14.4 s + 1
  From input "Feed Rate" to output...
   Distillate Purity:  exp(-8.1*s) * ----------
                                     14.9 s + 1
   Bottoms Purity:  exp(-3.4*s) * ----------
                                  13.2 s + 1
Input groups:              
       Name        Channels
     Measured         3    
    Manipulated      1,2   
Output groups:          
      Name      Channels
    Measured      1,2   
Continuous-time transfer function.


[1] Wood, R. K., and M. W. Berry, Chem. Eng. Sci., Vol. 28, pp. 1707, 1973.

See Also

| | |

Related Examples

Was this topic helpful?