% "Servosteuerung der X-Achse
clear all %alle Variablen löschen
clc, close all
%Modellparameter
m1=168;         %kg motorseitige Masse
m2=89;          %kg schlittenseitige Masse 
k=71e6;         %N/m Gesamtsteifigkeit
hS=0.022;       %m Spindelsteigung
J1=(hS/(2*pi))^2*m1;    %kgm2 Rotationsträgheit motorseitig
R=2;            %Ohm Widerstand der Motorwicklung
L=0.02;         %H Induktivität der Motorwicklung
Tel=(L/R);      %s Zeitkonstante der elektrischen Systemteils
Komega=0.15;    %Vs/rad Spannungskonstante
KM=0.15;        %Nm/A Momentenkonstante
Ttot=1e-4;      %s Totzeit
Imax=20;        %A Maximalstrom
UZ=500;         %V Zwischenkreisspannung
MRS=0.1;        %Nm Reibmoment Festlager,Mutter
MRM=0.2;        %Nm Reibmoment Motorlager
FR=40;          %N Reibungskraft Linearführung,Schlittenführung
dxm=1e-6;       %m Auflösung Positionsmesssystem am Schlitten
dphim=5e-6;     %rad Auflösung Motorgeber (entspricht 1 Winkelsekunde)

%Reglereinstellungen
Kpx=50;           %1/s Lagereglerverstärkung
Kpv=0.001;          %As/rad Drehzahlreglerverstärkung
Kpi=100;           %V/A Stromreglerverstärkung
Tn= 1;        %s Nachstellzeit
Fv= 0;           %Proportionalitätsfaktor zur Geschwindigkeitsvorsteuerung

%Führungsgrößengenerator
v=0.01;
x1= 0.005;      %m Position x1
x2= 0.010;      %m Position x2
y1= 0.005;      %m Position y1
Tsim=1;
Tsoll=0;
Xsoll=[0 x1 x1 x2 x2]; %Sollpositionsvektor X-Achse
Vsoll=[v v v v v];          %m/s Geschwindigkeit
%Ysoll=[0 0 y1 y1 ]; %Sollpositionsvektor Y-Achse

%Tsoll=[0 5/vB 5/vB 10/vB Tsim];


%Simulationparameter definieren
simulation_opt = simset('MaxRows',100000,'Solver','ode5','FixedStep',2e-5);

%Simulation starten
[x,y,t]=sim('AufgabeA_2017_10_10',Tsim,simulation_opt);
%Simulationsergebnisse darstellen
figure(1); hold off;    %erste Grafik aufrufen, alte Darstellung löschen

%Kaskadenregler
%Reglereinstellungen für Stromregler
% plot(ts,Is,'k'); grid; 
% hold on;                %alte Darstellung halten
% plot(ts,Isoll,'k--');
% xlabel('t in s'), ylabel('I in A');

%Reglereinstellungen für Drehzahlregler
plot(ts,omega1s,'k'); grid; 
hold on;                %alte Darstellung halten
plot(ts,omega_soll,'k--');
hold on;                %alte Darstellung halten
xlabel('t in s'), ylabel('I in A');
plot(ts,Is,'k');        %Stellgröße anzeigen





%plot(ts,x2s,'k'); grid; 
% hold on;                %alte Darstellung halten
% plot(Tsoll,Xsoll,'k--');
% xlabel('t in s'), ylabel('x(t) in m');
% title('Simulation');
%axis([0 12 0 12]);

% figure(2);           %zweite Grafik aufrufen
% plot(ts,x2s,'k'); grid;
% xlabel('t in s'), ylabel('Strom in A');
% title('Anlaufsimulation des Motors');



