%   Script PT2BODE.M
%
%   Bodediagramm und Übergangsfunktionen
%   eines Systems zweiter Ordnung
%
% J. Lunze
% 23.2.1996
% für 2. Auflage: 9.12.1998
% für 3. Auflage: 3.4.2001
% für 4. Auflage: 15.9.2003
% für 5. Auflage: 18.4.2005
% für 6. Auflage: 4.12.2006
% für 7. Auflage: 28.4.2008
% für 8. Auflage: 5.1.2010
% für 9. Auflage: 13.2.2012
% für 10. Auflage: 27.1.2014
% für 12. Auflage: 3.07.2019
%
%   
clear
close all

%%  Bodediagramm des Systems 1/(1 + 2dTs + T^2s^2)
%   für unterschiedliche Dämpfung 0 < d < oo
%       T=1
%
figure(1);
W=logspace(-1, 1, 500);
z=1;
n=[1 0.01 1];
System1=tf(z, n);
[B, P] = bode(System1, W);
D = [0.005, 0.05, 0.125, 0.25, 0.5, 1.5, 2.5];
Dsize=size(D);
for k=1:Dsize(2)
    d=D(k);
    n=[1 2*d 1];
    System1=tf(z, n);
    [Betrag, Phase] = bode(System1, W);
    subplot(2, 1, 1);
    semilogx(W, 20*log10(Betrag(:)), 'b');
    hold on;
    subplot(2, 1, 2);
    semilogx(W, Phase(:), 'b');
    hold on;
end;
subplot(2, 1, 1);
plot([2 10],[0 0],'k:');
n=[1 2 1];
System1=tf(z, n);
[Betrag, Phase] = bode(System1, W);
subplot(2,1,1);
semilogx(W, 20*log10(Betrag(:)),'b--');
axis([0.1 10 -50 50]);
latexylabel('$$|G|$$ in dB');
rotateY;
xleer;
%grid('on');
latextitle('PT$$_2$$-Glied mit $$d=0.005, 0.05, 0.125, 0.25, 1, 1.5, 2.5$$');
hold off;
%
subplot(2,1,2);
semilogx(W, Phase(:), 'b--');
%grid('on');
latexylabel('$$\phi$$ in Grad');
rotateY;
latexxlabel('$$\omega$$ in rad/s');
axis([0.1 10 -200 20]);
xticks([0.1 1 10]);
yticks([-270 -180 -90 0]);


%%  Übergangsfunktionen des Systems 1/(1 + 2dTs + T^2s^2)
%   für unterschiedliche Dämpfung 0 < d < oo
%       T=1
%
figure(2);
D = [0.05, 0.125, 0.25, 0.5, 1.5, 2.5];
Dsize=size(D);
for k=1:Dsize(2)
    d=D(k);
    n=[1 2*d 1];
    System1=tf(z, n);
    [Y(:,k), T] = step(System1, [0:0.1:15]);
end;
plot(T, Y, 'b', [0 5], [1 1],'k:');
hold on
n=[1 2 1];
System1=tf(z, n);
Y=step(System1, [0:0.1:15]);
plot(T, Y, 'b--');
latexylabel('$$h$$');
rotateY;
latexxlabel('$$t$$ in s');
%grid('on');
latextitle('PT$$_2$$-Glied mit $$d=0.05, 0.125, 0.25, 0.5, 1, 1.5, 2.5$$');
latextext(0.1, 1.9, '$$d=$$');
latextext(0.3, 1.8, '0,05');
latextext(0.3, 1.6, '0,125');
latextext(0.3, 1.4, '0,25');
latextext(0.3, 1.1, '0,5');
latextext(0.3, 0.9, '1');
latextext(0.2, 0.7, '1,5');
latextext(3.2, 0.4, '2,5');
axis([0 15 0 2]);
xticks([0 5 10 15]);
yticks([0 0.5 1 1.5 2]);

%%  Band für die Übergangsfunktion des Systems 1/(1 + 2dTs + T^2s^2)
%   für Dämpfung d = 0,4 ... 0,8
%       T=1
%
figure(3);
subplot(3,1,[1,2]);
Y=[];
D = [0.4:0.05:0.8];
Dsize=size(D);
for k=1:Dsize(2)
    d=D(k);
    n=[1 2*d 1];
    System1=tf(z, n);
    [Y(:,k), T] = step(System1, [0:0.1:10]);
end;
plot(T, Y, 'b');
latexylabel('$$h_{\rm w}$$');
rotateY;
latexxlabel('$$t$$')
latextext(0.6, 1.1, '$$d=0,\!4$$');
latextext(3.5, 0.8, '$$d=0,\!8$$');
grid('on');
latextitle('PT2-\"Ubergangsfunktion mit $$d=0,4...0,8$$');
axis([0 10 0 1.4]);
xticks([0 2 4 6 8 10]);
yticks([0 0.5 1]);


%%     Bodediagramm eines geregelten Systems
%
%   
figure(4);
d=0.12;
T=1;
n=[T*T, 2*T*d, 1];
System1=tf(z, n);
[B, P]=bode(System1, W);
[Gb,kb]=min(abs(B-0.7));
kb=kb+1;
subplot(2,1,1);
semilogx(W, 20*log10(B(:)), 'b');
hold on;
xleer;
axis([0.1 10 -40 20]);
yticks([-40 -20 0 20]);
plot([min(W), W(kb), W(kb)],[20*log10(B(kb)), 20*log10(B(kb)), -40], 'b--');
%latextext(0.12 , -35, '<---------- Bandbreite --------->');
latextext(min(W), -35, '$$\leftarrow$$');
latextext(0.8*W(kb), -35, '$$\rightarrow$$');
latextext(2*min(W), -35, 'Bandbreite');
grid off;
Bmax=20*log10(max(B));
plot([0.7, W(kb)],[Bmax, Bmax],'b--');
latextext(W(kb),10,'$$G_{\rm max}$$');
latextitle('Bodediagramm des Regelkreises');
latexylabel('$$|G_{\rm w}|$$ in dB');
rotateY;
hold off;
%
subplot(2,1,2);
semilogx(W, P(:), 'b');
%latexxlabel('$$\omega$$ in rad/s');
latexxlabel('$$\omega$$ in rad/s');
xticks([0.1 1 10]);
latexylabel('$$\phi_{\rm w}$$  in Grad');
rotateY;
yticks([-270 -180 -90 0]);
xticks([0.1 1 10]);
grid off;
hold off;


%%   Veränderung der Übergangsfunktion durch eine Nullstelle
%
%   
figure(5);
d=0.8;
T=[0:0.01:6]';
k=0;
for a=[0.5, 1, 2, 5, 100]
   k=k+1;
   z=[1/a/d 1];
   n=[1 2*d 1];
   System=tf(z, n);
   [Y, X]=step(System,T);
   Y1(:,k)=Y;
end
plot(T, Y1, 'b');
latextitle('\"Ubergangsfunktion von $$(s+s_0)/(1+2ds+s^2)$$ mit $$s_0=-a*d$$');
latexxlabel('$$t$$ in s');
latexylabel('$$h$$');
rotateY;
latextext(1.9, 0.5,'100');
latextext(1.6, 0.7,'5');
latextext(1.4, 0.8,'2');
latextext(1, 1,'1');
latextext(1, 1.3, '0,5');
latextext(0.1, 1.3,'$$a=$$');
axis([0 6 0 1.5]);
xticks([0 1 2 3 4 5 6]);
yticks([0 0.5 1 1.5]);


%%
%
figure(6);
T=[0:0.01:6]';
k=0;
for a=[0.5, 1, 2, 5, 100]
   k=k+1;
   z=3*[1/a 1];
   n=[1 4 3];
   System=tf(z, n);
   [Y, X]=step(System,T);
   Y1(:,k)=Y;
end
plot(T, Y1, 'b');
latextitle('\"Ubergangsfunktion von $$(s+s_0)/(s+1)(s+3)$$');
latexxlabel('$$t$$ in s');
latexylabel('$$h$$');
rotateY;
latextext(1.6, 0.65,'-100');
%latextext(1.5, 0.8,'-5');
latextext(1.2, 0.9,'-2');
latextext(0.9, 1.1,'-1');
latextext(0.6, 1.3, '-0,5');
latextext(0.1, 1.45,'$$s_0=$$');
axis([0 6 0 1.5]);
xticks([0 1 2 3 4 5 6]);
yticks([0 0.5 1 1.5]);



%% Herstellung der Bilddateien *.eps
%
Epsbildc15('pt2bode');
