# Multivariable control via Transfer Matrices?

Started by February 16, 2005
```reading my old copy of 'Modern Control Engineering' by Ogata, 1970,
(ok, no longer 'modern'), pg 117 describes a method of multivariable
control using a 'transfer matrix' of Laplace transfer functions where
Gij(s) is the transfer function from ith input to jth output.

Would this be practical to actually implement?  Assuming I could model
each Gij(s) as a simple 2nd order function, and only need 10Hz
response, and have 5 inputs (thermocouples) and 5 outputs (heaters),
could one DSP physically handle the Z transform matrix inversions in
10Hz realtime?

Or, is there a simpler way?

tia!

```
```perfb@yahoo.com wrote:

> reading my old copy of 'Modern Control Engineering' by Ogata, 1970,
> (ok, no longer 'modern'), pg 117 describes a method of multivariable
> control using a 'transfer matrix' of Laplace transfer functions where
> Gij(s) is the transfer function from ith input to jth output.
>
> Would this be practical to actually implement?  Assuming I could model
> each Gij(s) as a simple 2nd order function, and only need 10Hz
> response, and have 5 inputs (thermocouples) and 5 outputs (heaters),
> could one DSP physically handle the Z transform matrix inversions in
> 10Hz realtime?
>
> Or, is there a simpler way?
>
> tia!
>
The problem with the transfer matrix approach is that it isn't clear if
the states of two separate transfer functions are coupled or not.  So a
system that looks like

[ 1 ]
x(n+1) = b x(n) + (1-b) u(n), y(n) = [   ] x(n)
[ 1 ]

has the same transfer function matrix as

[b  0]        [1-b]
x(n+1) = [    ] x(n) + [   ] u(n), y(n) = x(n).
[0  b]        [1-b]

I much prefer a state-space approach to design here, because (a) it
clears up such ambiguities and (b) it makes it easier to build in
nonlinearities if necessary.

At a 10Hz sampling rate you don't need no stinking DSP.  You should be
able to implement 5 2nd-order thermal control loops with an 8-bit
processor using all integer math.  With a 16-bit DSP you can do this
using high-level code and floating point.

--

Tim Wescott
Wescott Design Services
http://www.wescottdesign.com
```
```On 16 Feb 2005 10:40:07 -0800, "perfb@yahoo.com" <perfb@yahoo.com>
wrote:
>reading my old copy of 'Modern Control Engineering' by Ogata, 1970,
>(ok, no longer 'modern'), pg 117 describes a method of multivariable
>control using a 'transfer matrix' of Laplace transfer functions where
>Gij(s) is the transfer function from ith input to jth output.
>
>Would this be practical to actually implement?

Since all of the denominators would be identical, (the characteristic
equation), then no, it would not be efficient to duplicate that for
each of the numerators, unless you had a lot of pole/zero
cancellations.

>Assuming I could model
>each Gij(s) as a simple 2nd order function, and only need 10Hz
>response, and have 5 inputs (thermocouples) and 5 outputs (heaters),
>could one DSP physically handle the Z transform matrix inversions in
>10Hz realtime?

10Hz on a DSP?  5x5 matrix inversion? no problem.

>Or, is there a simpler way?

By your description I'm assuming maybe the input is really five
temperature errors calculated from 5 reference values and 5
thermocouples and that  this is a control system.  In a State Space
format, the matrices are of size A (2x2), B (2x5), C(5x2), D(5x5). and
it probably implements a PI type of control with feedforward if the D
term is nonzero.  I'm guessing at the details because you haven't
provided them.  But there isn't any reason why you couldn't implement
this as a discrete state space controller.  Depending upon the
precison that you need, at 10 Hz, you could run this on an 4-10MHz
8-bit PIC.  You don't need a DSP to implement this control.

```