Main Content

Specify Multi-Input Multi-Output Plants

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
DC =
 
  From input "Reflux Rate" to output...
                                      12.8
   Distillate Purity:  exp(-1*s) * ----------
                                   16.7 s + 1
 
                                   6.6
   Bottoms Purity:  exp(-7*s) * ----------
                                10.9 s + 1
 
  From input "Steam Rate" to output...
                                    -18.9
   Distillate Purity:  exp(-3*s) * --------
                                   21 s + 1
 
                                  -19.4
   Bottoms Purity:  exp(-3*s) * ----------
                                14.4 s + 1
 
  From input "Feed Rate" to output...
                                        3.8
   Distillate Purity:  exp(-8.1*s) * ----------
                                     14.9 s + 1
 
                                     4.9
   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.

References

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

See Also

Apps

Functions

Objects

Related Examples

More About