function srt04Fz % 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; % % 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 % bode(offenerKreis,IGlied,w); % grid on; % 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; % Darstellen der Sprungantwort if isempty(findobj('tag','srt04step')) fig=figure; set (fig,'tag','srt04step','Name',['Störsprungantwort 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',['Störsprungantwort für k=' num2str(k)]); end step(feedback(Strecke,k*Regler)); hold off;