Prof. Dr. R. Kessler, FH-Karlsruhe, Sensorsystemtechnik, wiregsi2.doc Seite 1 Homepage: http://www.home.fh-karlsruhe.de/~kero0001/ E-Mail: <[email protected]> Winkelregelung mit SIMULINK Zum Vergleich die Tephys-Datei winkre20.txt: siehe http://www.home.fh-karlsruhe.de/~kero0001/winkelreg/winkelreg.html 1 y1=0 { y1 = Messkanal12 des Digitalsziloskops} 2 y2=0 { y2 = Messkanal 2 des Digitalsziloskops} 3 del=-0.25-tauf*f 4 d=drei(f*t+del) { d= Dreieckfunktion, Frequenz f, Phase del, anzupassen an Messfigur} 5 W0=aW*ja(t-t1)*ja(t2-t)+ar*sign(d-sw)+ap*ja(d-sw) { W0=Quelle für Führgröße: aW= Amplitude Rechteckimpuls im Zeitbereich t1 bis t2; ar = Amplitude des aus dem Dreieck d gewonnenen Rechtecks, ap = einseitiges Rechteck, ebenfalls aus Dreieck gewonnen} 6 W=W+begr((W0-W)/TW,vma,vmi)*dt { W = Führgröße, anstiegsbegrenzt und verrundet} 7 J=J0+2*mK*rK*rK {J = Trägheitsmoment: J0=Trägheitsmoment des Motors und der Gewindestange M6. 2*mK*rK*rK = zusätzliches Trägheitsmoment der beiden Masse-Klötze mit Radialabstand rK von der Achse und Masse mK } 8 x=nein(t-tauf)*uxst/kx+ja(t-tauf)*(x+w*dt) {x = Winkel der Motorachse (im Bogenmaß). Bis zur Zeit tauf wird x auf dem Startwert uxst/kx festgehalten und dann losgelassen.} 9 X=kx*x { X = Spannung des Winkel-Potentiometers ( X=Regelgröße = die zu regelnde Größe). kx = Sensorkonstante. } 10 DA=Td*(ja(kon)*(W-X-WXalt)/dt-nein(kon)*kx*w) { DA = D-Anteil des PD-Reglers. Bei kon >0 wird die Regeldifferenz W-X differenziert. Bei kon <= 0 wird nur - X differenziert} 11 WXalt=W-X { Wxalt = „alter Wert“ von W-X, für Bildung des D-Anteils } 12 uM=ja(reg)*begr(Ap*(W-X+DA),max,min)+nein(reg)*U0 { uM = Stellgröße des PD-Reglers = Ausgang des Leistungs- Spannungsfolgers. uM ist begrenzt auf die Maximalspannung max und die Minimalspannung min } 13 i=(uM-kg*w)/R { i = Motorstrom. Die Motorinduktivität wird hier vernachlässigt. kg*w ist die Spannung, die durch die Rotation der Motorwelle induziert wird. kg = „ Generatorkonstante“, w = Winkelgeschwindigkeit} 14 w=ja(t-tauf)*(w+(kg*i-rv*w-rGL*sign(w)-rtu*w*abs(w))*dt/J) { w = Winkelgeschwindigkeit der Motorwelle. Bis zum Zeitpunkt tauf wird die Motorwelle festgehalten, vgl. Formel für Winkel x . rv*w =“viskoses“ Reibmoment, rGL*sign(w) = „Gleitreibungsmoment“, rtu*w*abs(w) = „turbulentes“ Reibmoment } 15 t=t+dt { t = Zeit. Schrittweite dt nach Genauigkeitsansprüchen wählen. } Jetzt die Winkelregelung mit SIMULINK simuliert: Datei wireg3.m Kessler,12.11.00 ar - Winkelregelung, ähnlich Tephyswinkre20.txt + + + - Ap 1/R max min W 0 i + + kg + w 1/J - 1/s 1/s i Td du/dt uM rGL*sgn(u)+rv*u+rtu*u*abs(u) t kg Clock X kx Die beiden nachfolgenden "Parameter-Zeilen" als gemeinsamen Block mit Maus "kopieren" (copy) und in Matlab "einfügen" (paste) und mit <Return> aktivieren. Dann in Simulink Schaltfläche Simulation/Start anklicken. Pulsgenrator: 1/f; 1/(2*f); 2*ar; tauf; load wi20m; M20=[wi20m(1:1024,1),wi20m(1:1024,2)]; figure;plot(1:1024,M20); grid; figure(1);plot(t,W0, t,X,t,uM/10);grid; gtext(['Ap=',num2str(Ap),', Td=',num2str(Td) ]); tauf=2.05;f=0.0328; ar= -1.78; tmax=50;rv=0;rGL=0.005; rtu=0;J=0.002478; kg=0.08;R=10; kx=0.36;Td=0;Ap=50;max=13;min= -13;dt=0.01; Zum Zeichen der Simulationskurven die nachfolgenden beiden Zeilen in Matlab einfügen und mit <Return> aktivieren figure(1);plot(t,W0,'w', t,X,'w',t,uM/10,'w');grid; gtext(['Ap=',num2str(Ap),', Td=',num2str(Td) ]); Prof. Dr. R. Kessler, FH-Karlsruhe, Sensorsystemtechnik, wiregsi2.doc Seite 2 Homepage: http://www.home.fh-karlsruhe.de/~kero0001/ E-Mail: <[email protected]> Wie die SIMULINK- Simulation starten? 1 Den „Kommentar-Text“ mit den Parametern ( tauf=... bis dt = 0.01; ) mit Maus markieren, dann mit Maus „kopieren“, dann mit Maus in „Matlab-Ebene“, dort rechts vom Matlab-Zeichen >> mit Maus einfügen (=paste) und dann mit Taste <Return> aktivieren. Damit sind Matlab die Parameter bekannt. 2 Dann in Simulink mit Mausklick auf „Schaltfläche“ Simulation/Start . Dann mit Maus in Simu link den „Kommentar-Text“ figure(1)....bis num2str(..) markieren, kopieren und in Matlab einfügen und mit <Return> aktivieren: dadurch entsteht das Matlab-Bild. 3. Dann mit Maus in die Bild: es entsteht Fadenkreuz. Durch Mausklick werden die beiden Parameter Ap und Td ins Bild geschrieben. 4 Die weiteren Parameter-Änderungen direkt in der Matlab-Ebene. Starten wieder in Simulink-Ebene mit Schaltfläche Simulation/Start Tephysbild Für die SIMULINK- Schaltung wird hier bewusst eine sehr primitive Methode zum Starten und ParameterÄndern angewendet. Man wird erkennen, dass das sehr umständlich ist. Viel eleganter kann man SIMULINK laufen lassen mit Hilfe einer „Editor-Datei“. Beispiele dafür finden sich in den SIMULINK-Beispielen auf meiner Homepage http://www.home.fh-karlsruhe.de/~kero0001/ A p = 5 0 , T d = 0 5 4 3 2 1 0 -1 -2 -3 -4 -5 0 1 0 2 0 3 0 4 0 5 0 Bei obigem Bild nur P-Regler (Ap=50, Td = 0), Simulation entspricht dem Experiment, vgl. TephysBilder Prof. Dr. R. Kessler, FH-Karlsruhe, Sensorsystemtechnik, wiregsi2.doc Seite 3 Homepage: http://www.home.fh-karlsruhe.de/~kero0001/ E-Mail: <[email protected]> Ap=50, Td=0.2 2 1.5 1 0.5 0 -0.5 -1 -1.5 -2 0 1 0 2 0 3 0 4 0 5 0 Bei obigem Bild Ap= 50, Td = 0.2 ( vgl. Zahlen in der Figur) max=213, Td=0 25 20 15 10 5 0 -5 -10 -15 -20 -25 0 10 20 30 40 50 Bei der obigen Figur P-Regler(AP=50, Td =0), ABER bewusst FALSCH simuliert: max = 213 (statt 13) und min = -213 (statt –13). Folglich riesige Stellgröße uM und viel zu wenig Dämfung