Hallo Leute, ich weiß, ich nerv mittlerweile, aber ich bin fast am Ziel und komm nicht wirklich weiter. Zur Erinnerung: ich regel einen GS-Motor mit einem PI-Regler. Angetrieben von PWM. Soll- und Istwert ist eine Geschwingigkeit in U/min. Was stellt denn meine Stellgröße dar, welche Einheit hat sie? Ich hab schon viele verschiedene Möglichkeiten gehört, welche ist denn jetzt richtig? Ist die Stellgröße eine Geschwindigkeit oder die PWM-Pulsbreite? Hilft mir, ich bin am Verzweifeln....
das kannst du dir eigentlich aussuchen, ggf musst du die werte umrechnen... vergiss aber dabei nicht das umrechnungen idr immer ne gewisse abweichnung haben. ich mein damit das wenn du zb pwm nach u/min umrechnest, das du ja bestimmt ein pi dabei. dadurch wird dein ergebnis idr auf/abregundet.
Das kapier ich eben nicht, wieso ich mir das aussuchen kann, ich hab doch eine feste Formel. Meine schaut so aus: pi_r.Stellwert = pi_r.Kp*pi_r.Regelabweichung + (pi_r.Ki*pi_r.I_Anteil)/100; Regelabweichung ist eine Drehzahldifferenz, z.B 2000-1950 = 50 Der I-Anteil ist die Summe aller Abweichungen, z.B 10 Kp = 18; Ki = 60 also alles feste Größen, bei dieser Konstellation bekomme ich 906 raus. Und was sagt mir die Zahl????????
Die musst Du dann umrechnen... Deine Stellgröße ist die Größe, mit der Du Deinen Motor "stellen" also steuern kannst. Das sollte Dein PWM Verhältnis sein. Du hast mal geschrieben bei 50% PWM Tastverhältnis steht der Motor. Mach doch einfach mal ein Diagramm. Trag auf der x - Achse das PWM High - Low Verhältnis in Prozent auf und auf der y - Achse die Drehzahl. Wahrscheinlich ist das Ganze schön nichtlinear ... Stell das Diagramm dann mal hier rein, dann kann Dir konkreter geholfen werden ! Grüße, Michael
Die Stellgröße ist die mittlere Spannung, die der Motor beaufschlagt wird. D.h. bei 10V Versorgung gilt 90%PWM=9V, 10%PWM=1V, ... Ein Zusammenhang Drehzahl<->PWM kann nicht gefunden werden, da dieser von Belastung usw. abhängt. Kann eigentlich leicht erklärt werden: 1) Motor steht und PWM=0% 2) jetzt PWM=50% 3) Motor steht immer noch und läuft erst gemütlich weg -> PWM=50% würde somit Drehzahlen von n=0...xxx entsprechen->kein Zusammenhang.
Hab vielleicht eine Möglichkeit gefunden, wie ich das eine in das andere umrechnen kann. Allerdings muss ich dafür die maximale Stellgröße wissen. Die muss ich aus der Formel : pi_r.Stellwert = pi_r.Kp*pi_r.Regelabweichung + (pi_r.Ki*pi_r.I_Anteil)/100; berechnen können und dann kann ich das auf PWM umrechnen. Also minimale Stellgröße =0 entspricht PWM=FE70 (Flankenwechselregister) Maximale Stellgröße = ?? entspricht PWM=FFFF Ich hab versucht, den max. Stellwert durch das Einsetzen der Werte zu bestimmen. Also für den Teil mit dem P-Anteil funktioniert das sehr gut: die max. Regelabweichung ist Maxdrehzahl-0U/min = 3000U/min. Mit Kp=60 multipliziert = 54000. Wie ich das mit dem I-Anteil herausbekommen soll...keine Ahnung....Wenn ich das wüsste, dann hab ich zwei Bereiche: 0->400 0->Max.Stellwert und kann die ineinander umrechnen!!
also ich hab jetzt ein paar Werte aufgenommen. Tastverhältnis in % -> Drehzahl in U/min 50% -> 0 U/min 60% -> 445 U/min 70% -> 1704 U/min 80% -> 1780 U/min 90% -> 2390 U/min 100% -> 2474 U/min Das ganze ist wirklich schön unlinear. Also wie soll ich jetzt meine Stellgröße skallieren?
ich würde kubische splines machen und dann eine lookup tabelle aufbauen. bei vorgabe einer drehzahl würde ich in dieser tabelle das benötigte tastverhältnis nachschlagen (for loop durchlauf mit break wenn gefunden) vielleicht nicht ideal aber pragmatisch gelöst
Hier was zum einstellen der Verstärkungsfaktoren ... http://de.wikipedia.org/wiki/Faustformelverfahren_(Automatisierungstechnik)
also ich hab jetzt ein Diagramm erstellt: Drehzahl in Abhängigkeit vom Tastverhältnis(siehe Anhang). Also wenn man interpoliert und zwei Augen zurdückt, dann kann man doch sagen, dass der Verlauf linear ist, oder? Was sagt ihr???????????????????????????????
also ich hab versucht eure Tipps in die Tat umzusetzen. Hab die Stellgröße auf den richgigen Bereich skaliert von 0->65535 auf (0->400). Nochmal der Regler:
1 | pi_r.Stellwert = pi_r.Kp*pi_r.Regelabweichung + pi_r.Ki*pi_r.I_Anteil)/100; |
Skalierte Stellgröße: (pi_r.Stellwert*400)/65535 Da meine Stellgröße sich im Bereich zw. 400 bis 800 bewegt sieht die entgültige Stellgröße so aus: Stellgröße_entg= 400 + skalierte Stellgröße Hab versucht, das anhand von 2 Werten zu überprüfuen. v_soll = 1500U/min v_ist = 1300U/min Nach dem Anwenden aller Formeln bekomme ich Stellgröße_entg = 423 Das kann doch nicht sein.... Denn 423 entspricht einer sehr niedrigen Drehzahl (unter 80 U/min). Ich möchte aber von 1300 auf 1500 und nicht auf 80 runter!!!!! Hab ich nen Denkfehler????
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.