% Servoachse_dat.m   Matlab-Script-Datei zur Simulation des
%                  dynamischen Verhaltens der Übungsaufgabe
%                        Zirn 29.4.09
clear all       % alle Parameter löschen
% Modellparameter - Motorseite
Mmax=50;   	% A Maximalmoment
FR=20;      % N Führungsreibung
MR=1;       % Nm Lagerreibmoment
T=2e-3;     % s Ersatz-Zeitkonstante des elektrischen Systemteils
m=100;      % kg Gesamtmasse x
J=0.01;     % kgm2 Motorträgheit
k=1e6;      % N/m Riemensteifigkeit
r=0.03;     % m Treibrolle
u=1;        % Getriebeübersetzung
dphi=0.5*2*pi/(360*60); % Getriebespiel
dx=r*dphi;  % auf die Lastseite umgerechnet
% Reglereinstellungen
kers=(r/u)^2*k; Jers=(r/u)^2*m;
lamda=J/(J+Jers); theta=J+Jers; w0=sqrt(kers*theta/(J*Jers));
Kp=theta*w0*lamda^0.8;   % Nms/rad Drehzahlregelverstärkung 
Tn=4*theta/Kp;     % s Nachstellzeit im Geschwindigkeitsregler 
Kv=Kp/(theta*4);  % 1/s Lageregelverstärkung 
Fv=0.5;       % Proportionalitätsfaktor zur Geschwindigkeitsvorsteuerung
Tv=theta/Kp;    % Ersatzeitkonstante Drehzahlregler
% setpoints
xpos=100e-3;  % m Positionierweite
vbahn=0.99;    % m/s Sollgeschwindigkeit
amax=10;     % m/s^2 Sollbeschleunigung
[Xset, vXset, aXset,Tset]=Positioniersteuerung(xpos,vbahn,amax,1e-3);
% Simulation parameters
simulation_opt=simset('Solver','ode5','FixedStep',T/10);
Tsim=max(Tset);   % Simulations time
% Simulation 
[x,y,t]=sim('Servoachse_mod',Tsim,simulation_opt);
% Display results
figure(1); hold off; plot(Tset,Xset,'k--'); hold on
plot(ts,phis*r/u,'b','LineWidth',2); plot(ts,xs,'k','LineWidth',2); 
xlabel('t in s'); ylabel('Position in m');
title('Servoaxis positioning operation with a_m_a_x=10 m/s^2');
legend('Setpoints','Motor','Slider',4);

