% Servoachse_dat.m   Matlab-Script-Datei zur Simulation des
%                  dynamischen Verhaltens der Übungsaufgabe
%                        Zirn 29.4.09
clear all       % alle Parameter löschen
clc

% 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


%Führungsgrösse Rampe

Tsoll=[0 1];
Xsoll=[0 0];
Phisoll=Xsoll/r;

% 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=5;   % Nms/rad Drehzahlregelverstärkung 
Tn=100e-3;     % s Nachstellzeit im Geschwindigkeitsregler 
Kv=20;  % 1/s Lageregelverstärkung 
Fv=0.3;       % 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=0.99;   % 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);

%zweite Darstellung mit Step
% figure(2); hold off; plot(ts,omegasoll,'k--'); hold on
% plot(ts,motoges,'b','LineWidth',2); plot(ts,lastges,'k','LineWidth',2); 
% xlabel('t in s'); ylabel('Geschwind. in m/s');
% legend('Setpoints','Motor','Slider',4);
% 


figure(3);

plot(Tsoll,Phisoll,'k--'); hold on;
plot(ts,phis,'b','LineWidth',2); 
plot(ts,xs*u/r,'k','LineWidth',2); 
hold off;


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);

