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

Jan 30, 2008 1 Replies

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



% 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{1},Kpidtf.den{1}); 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');


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

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required