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');