Pendel-Positionierung mit „Paddel“

Werbung
Prof. Dr. R.Kessler, FH-Karlsruhe, Fachb. Mechatronik und Naturwissenschaften Pad6.doc,
Seite 1
Pendel-Positionierung mit „Paddel“
ein Versuch zur Regelungstechnik
Experimente und Simulink- Simulation
(vgl. die Tephys-Simulation: http://www.home.fh-karlsruhe.de/~kero0001/Pad4.PDF)
Aufgabenstellung
Ein drehbar gelagertes Pendel ist mit Hilfe eines Gleichstrom-Motors zu positionieren. Dabei soll sich der Motor
nicht auf einem ortsfesten Fundament abstützen, sondern über drehbare „Paddel“ soll sich der Motor über den
„Luftwiderstand“ auf der Luft „abstützen“. Der Vorgang ist vergleichbar mit einem Boot, das mit Hilfe von
Paddeln auf dem Wasser zu positionieren ist. Die Paddel haben im Gegensatz zu Propellern keinen „Auftrieb“,
sondern wirken nur durch ihren Strömungswiderstand.
Stator und Pendel
starr miteinander
verschraubt
Rotor
Stator
des DC-Motors
reibungsarme Montage
des Winkel-Potis
WinkelPotentiometer
10 Gang Wendel
PaddelFlügel
rML =
Gleitreibung der
Motor-Lager
PendelStange
Kugellager für
Pendel-Welle
Grundplatte . Sie kann
mit Gelenk-Muffe um
90 Grad geschwenkt
werden
rPL =
Gleitreibung des
Pendel-Lagers
Die Paddel sind einfache Rechteck-Flächen, z.B. aus Kunststoff. Sie haben kein „Profil“. Bei der Rotation üben sie
also keine „Auftriebskraft“ aus (wie ein „Propeller“). Bei der Drehung der Paddel muß der Motor ein Drehmoment
ausüben. Dies wirkt auch auf das Pendel. Bei konstanter Winkelgeschwindigkeit wM des Motors wirkt nur das
Widerstands -Moment der Luftreibung (= wM*abs(wM) * Kpad ) proportional zum Quadrat von wM, bei
veränderlicher Winkelgeschwindigkeit wirkt zusätzlich das Beschleunigungs-Moment Jpad * dwM/dt
Wie aus der nachfolgenden Erläuterung hervorgeht, enthält die Anordnung mehrere Nicht-Linearitäten: Gleitreibung
der Motorlager und der Pendellager, Luftwiderstand von Paddel und Pendel, Sinus des Pendelwinkels, Begrenzungen
der Regler-Stellgröße. Die mathenmatische Beschreibung kann also nicht mit dem komplexen Frequenzgang und
nicht mit der Laplace -Transformation erfolgen, sondern sie muß numerisch durchgeführt werden. Mit
numerischer Simulation mit TEPHYS oder mit SIMULINK erhält man gute Übereinstimmung mit den
Experimenten (vgl. nachfolgenden Text)
Prof. Dr. R.Kessler, FH-Karlsruhe, Fachb. Mechatronik und Naturwissenschaften Pad6.doc,
Seite 2
Aufstellen der DGLn
Die „Elektrik“ des Motors (Gleichstrom-Motor):
Das Ersatz-Schaltbild eines Gleichstrom-Motors ist bekanntlich wie folgt (linkes Teilbild):
i
uM
L
R
kg*wM
i
uM
L
R
kg*(wM-wPe)
Dabei ist uM die an den Motorklemmen anliegende Spannung, i der Strom, R der Ohm’sche Widerstand des Motors ,
L die Induktivität der Motorspule und kg*wM ist die infolge der Winkelgeschwindigkeit wM der Motorwelle
induzierte elektrische Spannung. kg ist die „Generatorkonstante“. Da im vorliegenden Falle das Gehäuse des Motors
mit dem Pendel starr verbunden ist, bewegt sich das Motorgehäuse mit der Winkelgeschwindigkeit wPe des Pendels,
folglich ist jetzt gemäß dem rechten Teilbild die induzierte Spannung kg* (wM-wPe)
Der Maschensatz, angewendet auf das rechte Teilbild, liefert die DGL
uM = R*i + L *di/dt + kg * (wM-wPe).
Wir wollen im Folgenden den Einfluss der Motorinduktivität vernachlässigen, setzen also einfach L=0. Dann bleibt
die algebraischen Gleichung uM = R*i + kg * (wM – wPe ) und daraus die einfache Gleichung für den Strom i
i = ( uM - kg*(wM -wPe) ) / R
Die Mechanik des Motors:
Die Motorwelle dreht sich (bezogen auf ein ruhendes Koordinatensystem) mit der Winkelgeschwindigkeit wM. Auf die
Motorwelle wirken mehrere Drehmomente :
Antriebsdrehmoment: Der Strom i erzeugt das Antriebsdrehmoment kg * i. Es wirkt einerseits auf die
Motorwelle, andererseits „stützt“ sich dies Drehmoment auf dem Motorgehäuse ab. Auf das Motorgehäuse wirkt also
infolge des Stromes das gleich große, aber entgegengesetzte Drehmoment –kg*i.
Luftwiderstand: Mit der Motorwelle dreht sich das Paddel. Die Flächen des Paddels erfahren beim Drehen der
Motorwelle ein durch den Luftwiderstand der Paddel erzeugtes Drehmoment. Dies wird angesetzt als
Mpad = - Kpad * wM * abs(wM). Es wirkt also entgegensetzt zur Winkelgeschwindigkeit wM und proportional dem
Quadrat von wM.
Lagerreibung: Die Motorlager üben ein Reibungsdrehmoment aus , das wir als Gleitreibung annehmen wollen:
-rML*sign( wM-wPe), es ist also proportional einer Konstanten rML („MotorLager“) und ist abhängig vom
Vorzeichen der Differenz wM – wPe. Das gleiche Drehmoment wirkt mit umgekehrten Vorzeichen auch auf das Pendel
Das Paddel und die Motorwelle haben das gesamte Massenträgheitsmoment Jpad . Nach dem Newton’schen
Grundgesetz für die Drehdynamik ergibt sich also die DGL für die Motorwinkelgeschwindigkeit wM
Jpad * Winkelbeschleunigung = Summe der auf die Motorwelle wirkenden Drehmomente,
oder die Formeln eingesetzt:
Jpad* dwM/dt = kg*i - Kpad * wM * abs(wM) –rML*sign ( wM – wPe)
Das Pendel:
Das Pendel hat (gegen die Vertikale) den Pendelwinkel xPe und die Winkelgeschwindigkeit wPe = dxPe/dt. Die
Schwerkraft mPe*g der Pendelmasse mPe (g=Fallbeschleunigung) erzeugt im Schwerpunkt S (Abstand Ls von der
Drehachse des Pendels) das Drehmoment - mPe* g* Ls * sin (xPe). Das Produkt mPe * g *Ls wollen wir als Konstante
mgLs abkürzen, also ist das Schwerkraftdrehmoment – mgLs * sin(xPe)
Prof. Dr. R.Kessler, FH-Karlsruhe, Fachb. Mechatronik und Naturwissenschaften Pad6.doc,
Seite 3
Reibungsdrehmomente auf das Pendel:
Die Lagerreibung des Pendel-Lagers erzeugt das Gleitreibungsdrehmoment – rPL*sign( wPe).
Das von der Luftreibung auf das Pendel wirkende (turbulente) Drehmoment wird angesetzt als - rtu * wPe *
abs(wPe), also proportional dem Quadrat der Winkelgeschwindigkeit. Zusätzlich wollen wir noch ein viskoses
Reibungsdrehmoment annehmen: rP*wPe, also proportional wM.
Bei der obigen Behandlung des Motors wurden schon zwei weitere Drehmomente diskutiert, die ebenfalls auf das Pendel
wirken: Das Antriebsdrehmoment - kg*i und das Drehmoment des Motorlagers: rML*sign( wM-wPe)
Das Pendel hat das Massenträgheitsmoment Jpe. Die Drehdynamik des Pendels liefert also folgende DGL:
Jpe*dwPe/dt =
- kg*i + rML* sign(wM - wPe) –mgLs * sin(xPe) – rP*wPe - rtu*wPe*abs(wPe) –rPL*sign(wPe)
Die Simulink-Schaltung:
Gesamtschaltung:
Datei Pad20.mdl
Kessler Nov 05
Aufruf mit Parameter-Datei
pad20_X
mit X = 14, 15, 16, 17, 18, 20
Pendel-Positionierung mit Paddel
fixed step dt , Ode5
W
uM
Mel
wPe
W-periodisch
UnivRegler
Umax
Umin
wahlweise
mit Tiefpass
uXoTP
1
Kx
Pendel
uX
R0*CTP.s+1
xPe
kon
kg/R
t
1/Jpad
rML*sgn(u)
rML*sgn(wM-wPe)
Clock
TP
1/s
Kpad*u*abs(u)
wM
wPe
kg
Zusammenstellung der Formeln:
i = ( uM - kg*(wM-wPe) ) / R
Jpad* dwM/dt = kg*i - Kpad * wM * abs(wM) -rML*sign ( wM - wPe)
Jpe*dwPe/dt =
- kg*i + rML* sign(wM- wPe) -mgLs * sin(xPe) - rP*wPe- rtu*wPe*abs(wPe) -rPL*sign(wPe)
Anschließend die Subsystme der Schaltung:
Subsystem
W-periodisch
+ Gleichanteil
aW*sgn( cos( 2*pi*(f*u+ del )) )
a0
Quelle für Sollwert W,
anstiegsbegrenzt u. verrundet
1/tW
1/s
+- vma
f=0.0735; aW=0.6; tW=0.1; vma=.5;
1
W
Prof. Dr. R.Kessler, FH-Karlsruhe, Fachb. Mechatronik und Naturwissenschaften Pad6.doc,
Zu pad20.MDL
Seite 4
"Universal"-PID-Regler
1
kW
X
kW*W
2
1/Ti
W
1/s
Ap
1
Y
3
kon
-1
Td
du/dt
Z.B.: Ap= - 100; Ti=1000; Td=0; kW=1; konv=1;
Tephys wäre so:
Ein = W - X
int = int + Ein * dt / Ti
DA = ja (kon) * (Ein -Einalt) /dt - nein (konv) * ( x - Xalt) /dt
Einalt = Ein
Xalt = X
Y = Ap * ( kW * W - X + int + Td * DA )
1
in_1
2
Mel
Subsystem Pendel
von Datei Pad20.MDL
s.u.
1
dwPe/dt
wPe
1/JPe
in_2
tst
1
1
s
s
0
rPL*sgn(u)+rP*u+rPtu*u*abs(u)
ReibMoment Pendel:
PendelLager, viskos, turbulent
in_2 = rML*sgn(wM-wPe) = ReibMoment vom MotorLager
Startwert
xPes
2
xPe
mgLs * sin(u)
SchwerkraftMoment
Jpe*dwPe/dt =
- kg*i + rML* sign(wM- wPe) -mgLs * sin(xPe) - rP*wPe- rtu*wPe*abs(wPe) -rPL*sign(wPe)
Anschließend Simulationsläufe ,
der jeweilige Aufruf steht unterhalb des Bildes.
Hinweis zu den Messungen: Die in den nachfolgenden Bildern benutzten Messungen sind die
gleichen wie bei der Tephys-Simulation (s. den oben zitierten Link). Diese Tephys-Messungen
wurden so umkodiert, dass sie von Matlab gelesen werden können, vgl. die unten eingefügte
Matlab-Datei)
In jedem Bild sind die beiden oberen Kurven die gemessenen Kurven:
Sollwert y1 (blau, Rechteck oder anstiegsbegrenztes Rechteck) und Istwert y2 (grün).
Darunter drei Simulationskurven: Sollwert W blau, Istwert X grün und rot die Motorspannung uM
Prof. Dr. R.Kessler, FH-Karlsruhe, Fachb. Mechatronik und Naturwissenschaften Pad6.doc,
Seite 5
Als Titel der Figuren eine Zeile mit einigen Parametern:
Bild Nr, Parameter des Sollwertes W (Amplitude aW, Frequenz f, Phasenlage del), Parameter des
Reglers (Verstärkungsfaktor Ap, Zeitkonstante Td des D-Anteils)
Die Bildunterschrift (xlabel) ist der beim Messein eingegebene Messkommentar.
Man erkennt u.a., dass die Motorspannung (rote Kurve) in allen Beispielen in die positive und in
die negative Begrenzung geht. Das ist eine von mehreren Nichtlinearitäten des Systems. Die
anderen Nichtlinearitäten wurden oben schon erwähnt: Gleitreibung der Motorlager und der
Pendellager, Luftreibung von Motor und Pendel, Sinus des Pendelwinkels
Wegen dieser Nichtlinearitäten kann die Simulation nur numerisch durchgeführt werden. LaplaceTransformation und auch Bode-Diagramm sind ungeeignete Berechnungsmethoden.
Wie aus den Bildern hervorgeht, sind die Kurven recht kompliziert. Dennoch
stimmen die Simulations-Kurven weitgehend mit den Messkurven überein
Bild=14, aW=1.2, f=0.0735, del=-0.02, vma=50, Ap=-200, Td=0
Nr
Zeit
W
ux
uM*0.015
4
1 4.78
2 6.28
3
-1.2
-1.2
-2.24
-1.38
-0.21
-0.21
2
y1/2+2
y2/2+2
W
uX
uM*0.02
1
0
-1
-2
-3
0
5
10
15
20
Pad14m,Pad y1=W(1V),y2=uX(1V),P-Regl:Rp=2.2M, Soll+-180ø
Aufruf mit pad20_14
25
Sollwert +- 180 Grad, also Pendel steht Kopf, P-Regler Ap= -200
Bild=15, aW=1.2, f=0.0735, del=-0.03, vma=500, Ap=-100, Td=0
4
y1/2+2
y2/2+2
W
uX
uM*0.02
3
2
1
0
-1
-2
-3
0
5
10
15
20
Pad15m,Pad y1=W(1V),y2=uX(1V),P-Regl:Rp=1M, Soll+-180ø
Aufruf mit pad20_15
Sollwert +- 180 Grad, also Pendel steht Kopf, P-Regler Ap= -100
25
Prof. Dr. R.Kessler, FH-Karlsruhe, Fachb. Mechatronik und Naturwissenschaften Pad6.doc,
4
Seite 6
Bild=16, aW=1.2, f=0.0735, del=0.03, vma=50, Ap=-200, Td=0.0357
y1/2+2
y2/2+2
W
uX
uM*0.02
3
2
1
0
-1
-2
0
5
10
15
20
25
Pad16m,Pad y1=W(1V),y2=uX(1V),PD:Rp=2.2M,Rd=23.8k,Cd1.5/uF,Rd1=2k Soll+-180ø
Aufruf mit pad20_16 Sollwert +- 180 Grad, also Pendel steht Kopf, PD-Regler Ap= -200, Td=0.0357
3
Bild=17, aW=1.2, f=0.0735, del=-0.05, vma=50, Ap=-200, Td=0.1125
y1/2+2
y2/2+2
W
uX
uM*0.02
2
1
0
-1
-2
0
5
10
15
20
25
Pad17m,Pad y1=W(1V),y2=uX(1V),PD:Rp=2.2M,Rd=75k,Cd1.5/uF,Rd1=6.3k Soll+-180ø
Aufruf mit pad20_17 Sollwert +- 180 Grad, also Pendel steht Kopf, PD-Regler Ap= -200, Td=0.1125
4
3
2
Bild=18, aW=2.998, f=0.098, del=-0.15, vma=50, Ap=-200, Td=0.18
y1/2+2
y2/2+2
W/2
uX/2
uM*0.02
1
0
-1
-2
0
5
10
15
20
25
Pad18m,Pad y1=W(1V),y2=uX(1V),PD:Rp=2.2M,Rd=40k,Cd=4.5/uF,Rd1=4k Soll=+-5*90ø
Aufruf mit pad20_18 Sollwert +- 5 * 90 Grad, also Pendel steht waagrecht, PD-Regler Ap= -200, Td=0.18
Prof. Dr. R.Kessler, FH-Karlsruhe, Fachb. Mechatronik und Naturwissenschaften Pad6.doc,
3
2
1
Seite 7
Bild=20, aW=2.998, f=0.07825, del=-0.06, vma=10, Ap=-200, Td=0
y1/2+2
y2/2+2
W/2
uX/2
uM*0.02
0
-1
-2
-3
0
5
10
15
20
25
Pad20m,Pad y1=W(5V),y2=uX(5V),P:Rp=2.2M,[Rd=40k,Cd=4.5/uF,Rd1=4k] Soll=+-5*90ø
Aufruf mit pad20_20 Sollwert +- 5 * 90 Grad, also Pendel steht waagrecht, P-Regler Ap= -200
Eine der aufrufenden Matlab-Dateien:
% Datei pad20_15.m Parameter-File zum Betreiben des
% Simulink-Modells pad20.MDL (Paddel, R46, 20.11.02, R59 S.157 )
% Die Messungen stammen aus früheren Tephys-Messungen, sind umkodiert
% für die Benutzung mit Matlab
format compact; % unterdrückt unnötige Leerzeilen
clear; % So sollte man jedes Programm anfangen, sonst erlebt man
% ev. Überraschungen infolge alter Variablenwerte
f =
0.07350; % Frequenz des Sollwertes
del =
-0.03;
% Phasenverschiebung des Sollwertes
aW =
1.20;
% Amplitude des Sollwertes
tW =
0.010;
% für Anstiegsbegrenzer, s. Schaltung
vma =
500;
% vma= maximale Steigung des Sollwertes
dt
=
0.0010156250; % dt = Rechenschrittweite
kg
=
0.08110;
% kg = Generatorkonstante des Motors
R
=
10;
% R = Ohmscher Widerstand des Motors
rML
=
0.0059;
% rML = Gleitreibung des Motorlagers
Kpad
=
2.3700E-4; % Faktor bei turbulenter Reibung Paddel
Jpad
=
0.0014920; % Jpad = MassenTrägheitsMoment des Paddels
rPL
=
0.00220;
% rPL= Gleitreibung PendelLager
rP
= 0;
% rP = viskose Reibung Pendel
rPtu
= 2E-4;
% rPtu = turbulente Reibung Pendel
mgLs
=
0.0560; % mgLs=m*g*Ls,m= Pendelmasse, Ls=Schwerpktradius
JPe
= 0.00287; % Jpe = MassenTrägheitsMoment des Pendels
Kx
= 0.382;
% Kx = SensorKonstante PendelWinkel
R0
= 3.3E+4; %
RTP
= 10000;
% RTP = Widerstand des Tiefpasses
CTP
=
2.2000E-0008 ; % CTP = Kapazität des Tiefpasses
TP
=
0 ;
% TP = 0--> ohne Tiefpass
Td
= 0 ;
% Td = Zeitkonstante D-Anteil des PID-Reglers
Ap
= -100; % Ap = Proportionalitätskonstante PID-Regler
Umax =
12.50; % Umax = maximale Motorspannung
Umin
= -14.0; % Umin = minimale Motorspannung
tmax
= 20.8; % tmax = Simulationszeit
tst =0; % tst = Startzeit (s. Simulink-Schaltung)
xPes =0; % xPes = Startwert Pendelwinkel, s. Schaltung
kon =1; % kon=1 konventioneller D-Anteil
kW
=1; % kW Faktor im Regler (s. Schaltung Regler)
a0
=0; % a0 = Gleichanteil Sollwert
Ti=100000;% Ti =Zeitkonstante I-Anteil des PID-Reglers
Prof. Dr. R.Kessler, FH-Karlsruhe, Fachb. Mechatronik und Naturwissenschaften Pad6.doc,
Bild=15;
%***************** Messung laden und darstellen: *************
Y=load('Pad15m'); % Messdatei, Messungen mit Hameg-Oszi HM 1208
tmaxm=Y.tmax;
kom=Y.kom;
anz=Y.anz;
y1=Y.Y1; % Y1 = Sollwert
y2=Y.Y2; % Y2 = Istwert
dtm=tmaxm/anz;
% dtm = Zeitschrittweite bei der Messung
tm=0:dtm:tmaxm-dt; % tm= Zeitvektor für Darstellung der Messung
figure(Bild);clf reset;
plot(tm,y1/2+2, tm,y2/2+2); grid on;
hold on; % Damit man weiter in die Figur plotten kann
% ************* jetzt simulieren: *****************************+
if Bild ==14 pad20; end; % Aufruf der Simulink-Datei auf Bildschirm
sim('pad20',[0,tmax]); % Durchführung der Simulation
set(0,'defaultlinelinewidth',1.0); % 1.0 Strichstärke normal
plot(t,W,t,uX,t,uM*0.02); grid on;
legend('y1/2+2','y2/2+2','W','uX','uM*0.02');
SBild=['Bild=',num2str(Bild)]; % Bildung von Strings für Titel
SaW=[', aW=',num2str(aW,15)];
Sf=[', f=',num2str(f,15)];
Sdel=[', del=',num2str(del,15)];
SAp=[', Ap=',num2str(Ap,15)];
STd=[', Td=',num2str(Td)];
Svma=[', vma=',num2str(vma)];
Ti=[SBild,SaW,Sf,Sdel,Svma,SAp,STd]; % Titel als StringVektor
title(Ti);
% cursor aktivieren:
tc= t;
% Vektor der x-Achse, hier die Zeit
yc= [W'; uX'; uM'*0.02];
% die Daten sind Spaltenvektor, drum transponiert
ofsc= [0, 0,0 ]; % Der Vektor der y-Offsets
%.....5....1....5....2....5....1....5....3....5....4....5....
Stry=['
Zeit
W
ux
uM*0.02 ']; % Tabellenkopf
tab=1;while 1 SimCurs2; end;
set(0,'defaultlinelinewidth',1);
xlabel(kom) % Der Messkommentar als Bildunterschrift (xlabel)
hold off; % Damit die nachfolgenden Figuren frisch anfangen
% Ende Datei Pad20_15.m
Seite 8
Herunterladen