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