robust control: a simple pid controller is better then every hinf! Why?

Translate This Thread From English to

Threaded View


Hi folks. I currently experiments with a PT2 uncertrain plant. For
that system i'll create a controller which has a specific robust
performance. For that i'll use Matlab 7.3 with Robust Control Toolbox
3.1.1. Cause of the robust performance i need mu-synthesis with d-k
iteration. The mentioned toolbox contains the dksyn function. The
weighting function envelopes sensitivity of the closed loop of the PID
controller with the uncertain plant. I understand the h-inf. norm,
that it'll find out of a set of controllers a specific one, which can
achieve my requierements. So if i argue, that the PID controller
contains to this set of controllers, why isn't a similar structure
found?

Thx for every comments and ideas. Best greets Eggi


% nominelle Parameter
nm = 3;
nc = 1;
nk = 2;

% relative Fehler
pm = .4;
pc = .2;
pk = .3;

% erzeuge "unsichere Parameter"
um = ureal('m',nm,'Percentage',[-1 1]*100*pm);
uc = ureal('c',nc,'Percentage',[-1 1]*100*pc);
uk = ureal('k',nk,'Percentage',[-1 1]*100*pk);

% normale Matrizen
A0 = [    0        1;
        -nk/nm    -nc/nm];
B0 = [    0;        1/nm];
C0 = [    1        0];
D0 = [    0]; %#ok<NBRAK>

% Matrizen mit unsicheren Parametern
A = [    0        1;
        -uk/um    -uc/um];
B = [    0;        1/um];

% nominelle Strecke
G0 = ss(A0,B0,C0,D0);

% Zusammenbinden des Zustandsraumsystems (unsicheres strukturiertes
SS)
Gus = ss(A, B, C0, D0);

% Erzeugen eines Vergleichsreglers (PID)
k    = 15;
ti    = 1;
td    = 1;

Kpidtf = k*tf([ti*td ti 1],[0.01 ti 0]);
[a,b,c,d] = tf2ss(Kpidtf.num,Kpidtf.den);
Kpid = ss(a,b,c,d);

figure;
CLpid = feedback((Gus.NominalValue*Kpid),1);
step(CLpid),grid;

%% Wichtungsfunktionen
% Wichtungsfunktion zur Bewertung des Stellgliedes
nWu = 1;
dWu = 1;
gWu = 10^(-2);
Wr = tf(nWu, dWu)*gWu;

Wt = ss([15.05 -15.06; 16.58 -16.56],[0.5211; -0.5211],[0.7307
-0.7589],1.312);
Ws = ss([-0.02859 0.05684; 0.5143 -1.028],[3.237; -1.618],[1.116 1.59],
0.9393);

% Zusammenbinden des Systems mit "unsicheren" Parametern und den
% Wichtungsfunktionen
systemnames        = ' Gus Ws Wr ';
inputvar        = '[ dist; control ]';
outputvar        = '[ Ws; -Wr; -Gus-dist ]';
input_to_Gus    = '[ control ]';
input_to_Ws        = '[ Gus+dist ]';
input_to_Wr        = '[ control ]';
sysoutname        = 'Pus';
cleanupsysic    = 'yes';
sysic;

% Reglersynthese
[Khinfs, clps, GAMhinfs,DKINFOhinfs]    = dksyn(Pus, 1, 1);

disp(['Hinfs: ' num2str(GAMhinfs)]);

% Binden des geschlossenen Systems
CLhinfs    = feedback((Gus*Khinfs),1);
CLpid    = feedback((Gus*Kpid),1);

% Empfindlichkeitsfunktion
Shinfs    = 1/(1+Khinfs*Gus);
Spid    = 1/(1+Kpid*Gus);

%%

figure;
bode(Khinfs,Kpid),grid;
figure;
step(CLhinfs,CLpid),grid,legend('H-unendlich strukturiert','PID');
figure;
bode(Shinfs,Spid,'c',1/Ws,'r'),grid,legend('H-unendlich
strukturiert','PID','1/Ws');

Re: robust control: a simple pid controller is better then every hinf! Why?



It isn't clear what your question is.  The example you chose is not
that difficult to control so it is relatively robust without any
tricks. I don't have Matlab or the Toolbox so a lot of the commands
are cryptic.  It would have been best to display intermediate results,
links to graphs or include more comments as to what you are trying to
prove. Eggi, do you have a link to a web site that shows what you are
trying to do?

Peter Nachtwey

Site Timeline