function srt04Fw % SRT Rechnerdemo 4 % Demonstration zur Phasenreserve % 1. Teil: Definition der verwendeten Übertragungsfunktionen % % Übertragungsfunktion ohne Verstärkung Strecke = tf([1],[1 1]); % PT1-Glied Regler = tf([1],[1 0]); % I-Glied k=evalin('base','k'); % Allpassglied zur Darstellung des Einheitskreises in der Ortskurvendarstellung Allpass = tf([1 -1],[1 1]); % % IGlied zur Darstellung des 20dB-Abfalls im Bode-Diagramm IGlied = tf(1,[1 0]); % Übertragungsfunktion berechnen offenerKreis = k*Regler*Strecke; % --- Ortskurve % % betrachteter Frequenzbereich w=logspace(-1.8,1.5,200); % Berechnen des Frequenzganges Frequenzgang = freqresp(offenerKreis,w); RealTeil = real(Frequenzgang(:)); ImagTeil = imag(Frequenzgang(:)); % Phasenreserve berechnen % 1. Phasenreserve der geregelten Strecke [Gm,Pm,Wcg,Wcp] = margin(offenerKreis); Phasenreserve = Pm; % Darstellen der Sprungantwort if isempty(findobj('tag','srt04step')) fig=figure; set (fig,'tag','srt04step','Name',['Führungssprungantwort für k=' num2str(k)]); set (fig,'NumberTitle','off'); set (fig,'Menubar','none'); scr=get(0,'Screensize'); set (fig,'position',[4 35 scr(3)-8 scr(4)-80]); else fig=figure(findobj('tag','srt04step')); set (fig,'Name',['Führungssprungantwort für k=' num2str(k)]); end step(feedback(offenerKreis,1)); hold off; % Bode-Diagramm if isempty(findobj('tag','srt04bode')) fig=figure; set (fig,'tag','srt04bode','Name',['Bode-Diagramm für k=' num2str(k)]); set (fig,'NumberTitle','off'); set (fig,'Menubar','none'); scr=get(0,'Screensize'); set (fig,'position',[4 35 scr(3)-8 scr(4)-80]); else fig=figure(findobj('tag','srt04bode')); set (fig,'Name',['Bode-Diagramm für k=' num2str(k)]); end h=bodeplot(offenerKreis,w);%bodeplot(offenerKreis,IGlied,w); grid on; h.addchar('All Stability Margins','resppack.AllStabilityMarginData', ... 'resppack.BodeStabilityMarginView','visible','on'); hold on; bodeplot(IGlied,w); hold off; % Darstellen der Ortskurve if isempty(findobj('tag','srt04nyquist')) fig=figure; set (fig,'tag','srt04nyquist','Name',['Nyquist-Diagramm für k=' num2str(k)]); set (fig,'NumberTitle','off'); set (fig,'Menubar','none'); scr=get(0,'Screensize'); set (fig,'position',[4 35 scr(3)-8 scr(4)-80]); else fig=figure(findobj('tag','srt04nyquist')); set (fig,'Name',['Nyquist-Diagramm für k=' num2str(k)]); end plot(RealTeil,ImagTeil,'r','LineWidth',2); hold on; plot(-1,0,'+r'); % zum Vergleich; Einheitskreis zeigen nyquist(Allpass,'b'); axis([-2 2 -2 2]); %grid on; hold off;