Re: Book & RGA - II

From: Sigurd Skogestad <Sigurd.Skogestad>
Date: Fri Mar 07 1997 - 10:42:34 CET

Dear Mr. Cameron,

I looked a bit more carefully at the example 3 in Huang and I have
some comments.

1. The exact RGA can be generated as shown in the file below
(undoubtedly this gives the same as your simulink file).
As you note, some RGA-values start "jumping" between 0 and 10
from about freauency 0.7 rad/s and upwards in frequency.

2. But this frequency range is outside the bandwidth anyway,
since the minimum delay in each output is between 1 and 2 s
, so the closed-loop bandwidth must be less than about 1/2 = 0.5 rad/s.
In fact, with the large time constants a closed-loop time constant of
10 min or larger (bandwidth of 0.1 rad/s or less) seems more realistic.

3. Up the this frequency the RGA shows the pairing
   [1 0 0; 0 0 1; 0 1 0] to be the best.

4. My simplified method, see previous email, where I just added together the
delays and time constants in a single time constant, gives the RGA-value in this
intermediate frequency range, i.e. between 0.01 and 0.1 rad/s.

5. As a comment, with my program the RGA at frequency 0.9856 rad/s is

>> xtracti(Grga,120)

ans =

   1.1231 - 0.0750i 0.0042 + 0.0212i -0.1273 + 0.0538i 0.9856
  -0.0926 - 0.0844i 0.5180 + 0.0872i 0.5747 - 0.0028i 0
  -0.0304 + 0.1594i 0.4778 - 0.1085i 0.5527 - 0.0510i 0
       0 0 1.0000 Inf

which is a bit fifferent than yours, presumable because you used some
approximation of the time delay.

I hope this helps,

Best regards,
Sigurd Skogestad

----------------------------------------------------

Here is the file I used to compute the RGA exactly:

omega = logspace(-3,1,160);
g11 = fod_f(-1.986, 66.67, 0.71, omega);
g12 = fod_f(5.24,400,60, omega);
g13 = fod_f(5.984,14.29,2.24, omega);
g21 = fod_f(0.0204, 5, -4.199, omega);
g22 = fod_f(-0.33, 3.904, 1.883, omega);
g23 = fod_f(2.38, 10, 1.143, omega);
g31 = fod_f(0.374, 22.22, 7.75, omega);
g32 = fod_f(-11.3, 35.66, 14.78, omega);
g33 = fod_f(-9.881, 11.35, 1.59, omega);

G = sbs(sbs( abv(g11,g21,g31) , abv(g12,g22,g32) ),abv(g13,g23,g33));

Grga = vrga(G);
vplot('liv,lm',Grga);

i1 = [1 0 0; 0 1 0; 0 0 1];
vplot('liv,m',vsvd(msub(Grga,i1)));

i2 = [1 0 0; 0 0 1; 0 1 0];
vplot('liv,m',vsvd(msub(Grga,i2)));

-----
the following function is used:

% function fod_f = fod_f(k,tau,theta,omega)
%
% Generates EXACT frequency response first-order with delay process
% k - gain
% tau - time constant
% theta - delay
% omega - frequency vector
%
% This is the chemical engineers favorite process...
% S. Skogestad ; Mar. 1997

function fod_f = fod_f(k,tau,theta,omega)

if (nargin == 0) | (nargin > 5),
   disp('usage: fod_f = fod_f(k,tau,theta,omega)')
          return
          end

 epp=0;
 i = pck(epp,1,1,0);
 delay_f = frsp(i,omega,theta);

 time_f = frsp( nd2sys(k,[tau 1]), omega);
fod_f = mmult( time_f, delay_f);
Received on Fri Mar 7 10:42:37 1997

This archive was generated by hypermail 2.1.8 : Tue Jan 20 2004 - 09:32:15 CET