%   TUNINGBSP.M
%
%  Aufgabe zur Anwendung der Einstellregeln
%
%  J. Lunze
%  1.5.2003
% für 2. Auflage: 2.1.2007
% für 3. Auflage: 4.12.2011
% für 5. Auflage: 11.01.2020
%
close all
clear
%
%   Simulinkmodell  "TuningRegelstrecke":
% A=[-0.404 0.229;0.179 -0.554];
% B=[1.189 ;-0.037];
% C=[0 0.175];
% D=0;
% Strecke=ss(A, B, C, D);



%%    Übergangsfunktion der Regelstrecke
%
figure(1)
Tanfang=0;
Tende=20;
%    Simulation mit fester Schrittweise 0.1
%    Sprunghöhe 5
[T,X,Y] = sim('TuningRegelstrecke',[Tanfang Tende],[],[]);
F=rand(size(Y))-0.5*ones(size(Y));
randvalue=0.15;     % Interval der Gleichverteilung [0, randvalue]
Yr = Y + randvalue*F;

%Plot
plot(T, Yr(:,1), 'b')
latexxlabel('$$t$$ in s')
latexylabel('$$y$$');
rotateY;
latextitle('\"Ubergangsfunktion der Regelstrecke');
axis([0 20 -0.15 1.05]);
grid on;
yticks([0 0.5 1]);
xticks([0 5 10 15 20]);


%%  Approximation der Regelstrecke als PT_tT_1-Strecke
%
figure(2)
plot(T, Yr(:,1), 'b');
hold on
%    Ablesen der Werte für T1 und Tt
ks=0.19;
plot([0, 25],[0 0],'k:');                    % Zeitachse
plot([3, 3],[-1 2],'b--');                   % Markieren der Totzeit
latextext(2, -0.22, '$$T_{\rm t}=1$$');
plot([0, 25],[5*ks 5*ks],'k:');                  % statische Verstärkung
latextext(3.5, 0.85, '$$5 \cdot k_{\rm s}=0,\!95$$');
plot([0, 8], [0.63*5*ks 0.63*5*ks],'b--');       % Markieren der Zeit T_1
latextext(0.3, 0.7, '$$0,\!63 \cdot 5 \cdot k_{\rm s}=0,\!6$$');
plot([8 8], [0.63*5*ks, -1], 'b--');
latextext(7, -0.22, '$$T=5$$');
latextitle('Ablesen der Modellparameter');
axis([0 20 -0.15 1.05]);
yticks([0 0.5 1]);
xticks([0  15 20]);
latexylabel('$$y\;\;$$');
rotateY;
hold off



%%    Überprüfung der Approximationsgenauigkeit
%
figure(3)
subplot(4,1,[1,2]);
plot(T, Yr(:,1), 'b');
hold on
%    PT_tT_1-Approximation
T1=5;
ks=0.19;
Strecke=ss(-1/T1, 1/T1, ks, 0);
Yapprox=step(Strecke, T);
%    Verschieben von Y um 3 Zeiteinheiten
plot(T+3, 5*Yapprox, 'b', [0, 3], [0, 0], 'b');
latexxlabel('$$t$$ in s');
latexylabel('$$y$$');
rotateY;
axis([0 20 -0.15 1.05]);
yticks([0 0.5 1]);
xticks([0 5 10 15 20]);
latextitle('Vergleich von Modell und Messkurve');
hold off


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%  Anwendung der Einstellregeln
%%    Übergangsfunktion der Regelstrecke
%
figure(4)
Tanfang=0;
Tende=20;
%    Simulation mit fester Schrittweise 0.1
[T,X,Y] = sim('TuningRegelkreis1',[Tanfang Tende],[],[]);
F=rand(size(Y))-0.5*ones(size(Y));
randvalue=0.15;     % Interval der Gleichverteilung [0, randvalue]
Yr = Y + randvalue*F;

%Plot
plot(T, Yr(:,1), 'b', T, Yr(:,2), 'b', T, Yr(:,3), 'b', [0 20],[1 1],'k:')
latexxlabel('$$t$$ in s')
latexylabel('$$h_{\rm w}$$');
rotateY;
latextitle('\"Ubergangsfunktion des Regelkreises');
latextext(2.5, 1.4, 'PID');
latextext(8, 1.4, 'PI');
latextext(5.5, 0.8, 'P');
axis([0 20 -0.03 2]);
yticks([0 0.5 1 1.5 2]);
xticks([0 5 10 15 20]);


%%  Bestimmung der kritischen P-Verstärkung
%
figure(5)
Tanfang=0;
Tende=8;

%Simulation mit dem Simulink-Modell Regelkreis.mdl
%  feste Schrittweite 0.1
%  Sprunghöhe 1
%  mit WOK-Verfahren bestimmt: kritische Verstärkung 145
[T,X,Y] = sim('TuningPRegelkreise',[Tanfang Tende],[],[]);
F=rand(size(Y))-0.5*ones(size(Y));
randvalue=0.3;     % Interval der Gleichverteilung [0, randvalue]
Yr = Y + randvalue*F;

%Plot
plot(T,Yr(:,1), 'b',  T,Yr(:,2), 'b',  T,Yr(:,3), 'b',  T,Yr(:,4), 'b')
latexxlabel('$$t$$ in s')
latexylabel('$$h_{\rm w}$$');
rotateY;
latextitle('Verhalten des P-geregelten Systems');
grid on
latextext(2.2, 2.2, '$$k_{\rm P}=$$');
latextext(2.8, 1.7, '50');
latextext(6.8, 2.4, '180');
latextext(4.5, 2.2, '145');
latextext(5.1, 1.7, '100');
axis([0 8 -0.8 2.8]);
yticks([0 1 2]);
xticks([0 2 4 6 8]);



%%   Übergangsfunktion der Regelstrecke
%
figure(6)
Tanfang=0;
Tende=20;
%    Simulation mit fester Schrittweise 0.1
[T,X,Y] = sim('TuningRegelkreis2',[Tanfang Tende],[],[]);
F=rand(size(Y))-0.5*ones(size(Y));
randvalue=0.15;     % Interval der Gleichverteilung [0, randvalue]
Yr = Y + randvalue*F;

%Plot
plot(T, Yr(:,1), 'b', T, Yr(:,2), 'b', T, Yr(:,3), 'b', [0 20],[1 1],'k:')
latexxlabel('$$t$$ in s')
latexylabel('$$h_{\rm w}$$');
rotateY;
latextitle('\"Ubergangsfunktion des Regelkreises');
latextext(1, 1.4, 'PID');
latextext(1, 1.6, 'PI');
latextext(2.5, 1.8, 'P');
axis([0 20 -0.03 2]);
yticks([0 0.5 1 1.5 2]);
xticks([0 5 10 15 20]);



%%
%
Epsbildc15('tunbsp');
