%   Script SCHIFF.M
%
%   Schiffsstabilisator
%
% J. Lunze
% für 2. Auflage: 16.2.1999
% für 3. Auflage: 2.4.2001
% für 4. Auflage: 18.9.2003   Periodendauer jetzt 6 Sekunden
%                           (natürliche Rollperiode von Schiffen:6...20s)
% für 5. Auflage: 19.4.2005
% für 6. Auflage: 4.12.2006
% für 7. Auflage: 28.4.2008
% für 8. Auflage: 3.1.2010
% für 9. Auflage: 16.2.2012
% für 10. Auflage: 27.1.2014
% für 12. Auflage: 23.03.2020
%
%   
clear
close all

%% Modell des Schiffes und Rollbewegung bei impulsförmiger
%  Anregung
%   
figure(1)
subplot(6,1,[1,2,3])
z=3.3;
d=0.1;
omega=2*pi/6/sqrt(1-d*d);
T=1/omega;
n=[T*T, 2*d*T, 1];
Schiffmodell=tf(z, n);
Time=0:0.03:15;
Y=impulse(Schiffmodell, Time);
plot(Time, Y, 'b', [-1 0 0],[0 0 Y(1,1)], 'b',[-1 10], [0 0],'k:');
latexxlabel('$$t$$ in s');
latexylabel('$$\phi$$ in Grad');
rotateY;
latextitle('Rollbewegung des ungeregelten Schiffes');
axis([-1 10 -2.6 3.2]);
xticks([0 2 4 6 8 10]);
yticks([-2 0 2]);


%%   Bodediagramm des Schiffes
%   
figure(2)
W=logspace(-1, 1, 1000);
[Betrag, Phase]=bode(Schiffmodell, W);
subplot(2,1,1)
semilogx(W, 20*log10(Betrag(:)), 'b');
latextitle('Bodediagramm des Schiffes');
latexylabel('$$|G|$$ in dB');
rotateY;
axis([0.1, 10, -30, 30]);
yticks([-20 0 20]);
xleer;
grid('on');
hold on;
%
subplot(2,1,2)
semilogx(W, Phase(:), 'b');
latexylabel('$$\phi$$ in Grad');
rotateY;
yticks([-360 -270 -180 -90 0]);
latexxlabel('$$\omega$$ in rad/s');
xticks([0.1 1 10]);
grid('on');
axis([0.1, 10, -200, 0]);
xticks([0.1 1 10]);
yticks([-180 -90 0]);
hold on;


%%   Wurzelortskurve bei D-Regelung
%   
figure(3)
z1=z*[1 0];
SchiffmitDRegler=tf(z1, n);
subplot(3,3,[1, 2, 4, 5]);
rlocprintblue(SchiffmitDRegler);
plot([-5 -2], [0 0]);
latextitle('Schiffsstabilisierung durch D-R\"uckf\"uhrung');
axis([-2 1 -1.5 1.5]);
xticks([-2 -1 0 1]);
yticks([-1 0 1]);
axis('square');
kD=0.38;
Pole=rlocus(SchiffmitDRegler, kD);
plot(real(Pole(1)), imag(Pole(1)), 'bs');
plot(real(Pole(2)), imag(Pole(2)), 'bs');
hold off


%%   Störverhalten bei kD=0.5
%   
figure(4)
subplot(6,1,[1,2])
nd=n+[0 kD*z 0];
Schiffmodell2=tf(z, nd);
Y=impulse(Schiffmodell2, Time);
plot(Time, Y, 'b', [-1 0 0],[0 0 Y(1,1)], 'b', [-1 10], [0 0],'k:');
latexylabel('$$\phi$$ in Grad');
rotateY;
latextitle('Rollbewegung des geregelten Schiffes');
axis([-1 10 -2.6 3.2]);
xleer;
yticks([-2 0 2]);
%
subplot(6,1,[3,4])
offeneKette=tf(z1*kD, n);
KreisStellgr=feedback(offeneKette,1);
U=impulse(KreisStellgr, Time);
plot(Time, U, 'b', [-1 0 0], [0 0 U(1,1)], 'b', [-1 10],[0 0],'k:');
latexxlabel('$$t$$ in s');
latexylabel('$$u$$');
rotateY;
axis([-1 10 -0.4 1.6]);
xticks([0 2 4 6 8 10]);
yticks([0 1]);


%%  Bodediagramm des Störverhaltens des geregelten Systems
%   
figure(2)
[Betrag,Phase,W]=bode(Schiffmodell2);
subplot(2,1,1)
semilogx(W, 20*log10(Betrag(:)),'b--');
xleer;
latexylabel('$$|G_0|$$ in dB');
rotateY;
grid('on');
hold off;
%
subplot(2,1,2)
semilogx(W, Phase(:), 'b--');
latexxlabel('$$\omega$$ in rad/s');
latexylabel('$$\phi_0$$ in Grad');
xticks([0.1 1 10]);
rotateY;
grid('on');
hold off


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