%   Script DEADBEA.M zur Herstellung von Bildern
%
%   Deadbeat-Regler für den Gleichstrommotor
%
%  verwendet EPSBILD.M
%  Daten aus RT1: BSPMOTOR.M
%
% J. Lunze
% 9.1.1997   Daten vom 7.12.1995
% für 2. Auflage: 16.12.2001
% für 3. Auflage: 25.3.2004
% für 5. Auflage: 4.11.2007
% für 7. Auflage 31.3.2012
% für 10. Auflage: 26.3.2020
%
%
clear
close all
%
%    Entwurf einer Geschwindigkeitsregelung
%    für einen Gleichstrommotor
%
Bspmotor;    % liefert MotorUF
%  Drehzahlgeber
Td = 0.008;       % s
Drehzahlgeber=tf([1], [Td 1]);
MotorDrehzahl=series(MotorUF, Drehzahlgeber);
W=[-1:0.1:3];
Wsize=size(W);
for k=1:Wsize(2)
    O(k)=10^W(k);
end;
[A, B, C, D]=ssdata(MotorDrehzahl);
n=3;

%%
%
%    zeitdiskretes Verhalten des Motors
%
%
figure(1);
subplot(4,1,[1,2]);
Ta=0.1;    % Anpassung an veränderte Motordaten
[Ad, Bd]=c2d(A, B, Ta);
Y=dstep(Ad, Bd, C, D);
T=0:length(Y)-1;
stairs(T, Y, 'Color','b','LineWidth',1.5);
hold on
plot(T, Y, 'bo', [0 10],[0 0],'k:');
latextitle('\"Ubergangsfolge des Gleichstrommotors');
set(gca, 'XTick', [1:4]);
latexxlabel('$$k$$');
latexylabel('$$h$$ in $$\frac{1}{\rm s}$$');
rotateY;
axis([0 4 -0.005 0.055]);
xticks([0 1 2 3 4]);
yticks([0 0.05]);
hold off;


%%    Deadbeat-Entwurf
%
%
figure(2);
sigma=[0 0 0];
sR=[0 0 1]*inv(ctrb(Ad, Bd));
K=sR*Ad^n
Ag = Ad-Bd*K;
V=1/(C*inv(eye(n,n)-Ag)*Bd);
Bg=V*Bd;
subplot(4,1,[1,2]);
Y=dstep(Ag, Bg, C, D, 1, 5);
T=0:length(Y)-1;
stairs(T, Y, 'Color','b','LineWidth',1.5);
hold on;
plot(T, Y, 'bo');
plot([-1 0], [0 0], 'b','LineWidth', 1.5);
plot([0 4], [0, 0], 'k:');
set(gca, 'XTick', [0:4]);
latexylabel('$$h_{\rm w}$$ in $$\frac{1}{\rm s}$$');
rotateY;
xleer;
axis([-1 4 -0.2 1.2]);
yticks([0 1]);
hold off;
latextitle('F\"uhrungs\"ubergangsfolge des Gleichstrommotors');
subplot(4,1,[3,4]);
U=dstep(Ag, Bg, -K, V, 1, 5);
T=0:length(U)-1;
stairs(T, U, 'Color','b','LineWidth',1.5);
hold on;
plot([-1 0 0], [0 0 28.7], 'b','LineWidth', 1.5); 
plot([0 4], [0 0], 'k:');
set(gca, 'XTick', [0:4]);
latexxlabel('$$k$$');
latexylabel('$$u$$ in V');
rotateY;
axis([-1 4 -5 50]);
xticks([0 1 2 3 4]);
yticks([0 25 50]);
hold off;


%%    Wiederholung des Entwurfes für verkleinerte Abtastzeit
%
%
figure(3);
Ta=0.05;
[Ad, Bd]=c2d(A, B, Ta);
sR=[0 0 1]*inv(ctrb(Ad, Bd));
K=sR*Ad^n
Ag = Ad-Bd*K;
V=1/(C*inv(eye(n,n)-Ag)*Bd);
Bg=V*Bd;
subplot(4,1,[1,2]);
Y=dstep(Ag, Bg, C, D, 1, 5);
T=0:length(Y)-1;
stairs(T, Y, 'Color','b','LineWidth',1.5);
hold on;
plot(T, Y, 'bo', [-1 0], [0 0], 'b','LineWidth',1.5); 
plot([0 4], [0, 0], 'k:');
set(gca, 'XTick', [0:4]);
latexylabel('$$h_{\rm w}$$ in $$\frac{1}{\rm s}$$');
rotateY;
xleer;
axis([-1 4 -0.2 1.2]);
yticks([0 1]);
hold off;
latextitle('F\"uhrungs\"ubergangsfolge des Gleichstrommotors');
subplot(4,1,[3,4]);
U=dstep(Ag, Bg, -K, V, 1, 5);
T=0:length(U)-1;
stairs(T, U, 'Color','b','LineWidth',1.5);
hold on;
plot([-1 0 0], [0 0 45.2], 'b','LineWidth',1.5);
plot([0 4], [0 0], 'k:');
set(gca, 'XTick', [0:4]);
latexxlabel('$$k$$');
latexylabel('$$u$$ in V');
rotateY;
axis([-1 4 -5 50]);
xticks([0 1 2 3 4]);
yticks([0 25 50]);
hold off;
%

%%     Ausgabe der Bilder als .eps-Dateien
%
Epsbildc15('deadbea');
