Forum: Mikrocontroller und Digitale Elektronik PI - Reglerentwurf für Wechselstrommotor


von PI - Reglerentwurf für Wechselstrommotor (Gast)


Lesenswert?

Hallo,

Meine Aufgabenstellung:
Ich muss einen Wechselstrommotor regeln und dazu einen passenden Regler 
entwerfen.
Die Drehzahlstellung erfolgt über einen Triac der die Halbwellen 
schaltet.
Die aktuelle Drehzahl bekomme ich über einen Hall Sensor.
Das funktioniert auch bereits.

Der Motor hat ein PT1 Verhalten und die Zeitkonstante T=2.379s 
(Ermittelt aus der Sprungantwort des Motors)
Daher wiederhole ich den Regelalgorithmus alle 0.2s (Tregler/T <= 0.1)

Anschließend habe ich laut
http://rn-wissen.de/wiki/index.php/Regelungstechnik
meine Regelparameter mit der Schwingungsmethode ermittelt.
Kpkrit = 14 und die Motordrehzahl schankt regelmäßig mit 1,5s

Die daraus resultierenden Werte sind:
Kp = 6,3
Tn = 1,275
Ki =8,0325

Mein Code für den Regler ist:

diff = sollRpm - istRpm;
esum = esum + diff;
rpm = kp*diff + ki*dt*esum; //dt = 0.2
diffalt = diff;

Nun zu meinem Problem:
Wenn ich nun die Drehzahl auf z.B.:2000U/min einstelle, dreht der Motor 
bis zur max Drehzahl und das ca. 2-4 Sekunden, anschließend verringert 
er die Drehzahl und schwankt unregelmäßig auf und ab.

Könnt ihr mir bitte Helfen. Was mache ich falsch? Ich komme zu keiner 
Lösung wenn ich mit diesen Reglerentwurf laut rn-wissen arbeite.

Vielen Dank für im Voraus für Eure Bemühungen

von Purzel H. (hacky)


Lesenswert?

Debuggen ...
Ein Oszilloskop ist vorhanden ? Falls nicht - ganz falsch.
Kommuniziert der Regler ? Falls nicht - schon falsch.
Etwas besser waere ein mehrkanal DAC, der irgendwelche Werte ueber die 
Zeit ausgeben kann.

Zum code... den Bereich der summanden pruefen und limitieren, den Berech 
des stellgliedes pruefen, Summe initialisieren, das Ganze natuerlich als 
Ganzzahl rechnung. Was macht diff_alt? Was macht dt, resp Tn?

Wie wird rpm auf das Stellglied abgebildet ?

Halbwellen schaltet ... ist eher ein Witz. Weshalb nicht Phasenwinkel ?

Nimm mal eine Kurve auf, wie Drehzahl, Stellwert und Stellglied 
zusammenhaengt. Ist es linear ? Was geschieht mit Lastaenderungen ?

Der PID ist fuer Leute, die sich wenig fuer das Problem interessieren.
Gar nicht geht nicht.

: Bearbeitet durch User
von temp (Gast)


Lesenswert?

Ich denke mal, dass die Informationen von dir für eine Beurteilung noch 
nicht reichen. Damit die Werte für den Regler überhaupt vergleichbar 
werden, muss man die Skalierung der Eingangs- und Ausgangsgrößen mit 
beachten.

z.B. Wenn ein ADC einem Wertebereich von 0-1024 hat und die PWM mit 
Werten zwischen von 0-256 arbeitet, hat man eine zusätzliche Verstärkung 
von 4 in seinem Regler. Die ganze Literatur geht aber hier von 1 aus. 
Das heißt in dem Beispiel, dass das Ergebnis deines Reglers auch wieder 
durch 4 geteilt werden muss um die Koeffizienten vergleichen zu können. 
Jede andere Scalierung ist natürlich auch möglich. Sowohl Festkommawerte 
als auch Fließkommawerte sind denkbar.

Die Werte von Dir mit Kp von 6,3 bedeuten ja eigentlich nur, dass der 
Eingangsfehler mit 6,3 multipliziert als Stellgröße verwendet wird. Das 
erscheint mir ziemlich hoch für den Fall, dass keine weitere Verstärkung 
im Regler vorhanden ist. Um das beurteilen zu können, müsstest du uns 
aber sagen wie deine Eingangs- und Ausgangswerte aussehen. Deine 
Berechnung wird mit Fließkomma gemacht wie ich denke. d.h. Wenn du 
direkt mit 5000 für 5000U/min arbeitest als max. Drehzahl, dann sollte 
auch die Zahl 5000 für PWM maximal auf gelten (ich sage mal PWM, weil 
keiner das Stellglied kennt).

Weitere Punkte wie das Begrenzen der Errorwerte (Windup) u.s.w lasse ich 
da erst mal völlig aussen vor, obwohl das für einen realen Regler sicher 
noch wichtig wäre.

von temp (Gast)


Lesenswert?

Siebzehn Zu Fuenfzehn schrieb:
> Nimm mal eine Kurve auf, wie Drehzahl, Stellwert und Stellglied
> zusammenhaengt. Ist es linear ? Was geschieht mit Lastaenderungen ?

Das habe ich jetzt mal völlig raus gelassen. Wenn die Theorie aber zur 
Praxis passen soll, müsste man die Nichtliniaritäten neben der 
Skalierung natürlich auch noch berücksichtigen.

von PI - Reglerentwurf für Wechselstrommotor (Gast)


Lesenswert?

> Ein Oszilloskop ist vorhanden ? Falls nicht - ganz falsch.
Ist vorhanden
> Kommuniziert der Regler ? Falls nicht - schon falsch.
mit was kommunizieren?

> Zum code... den Bereich der summanden pruefen und limitieren, den Berech
> des stellgliedes pruefen, Summe initialisieren, das Ganze natuerlich als
> Ganzzahl rechnung. Was macht diff_alt? Was macht dt, resp Tn?

Drehzahl rpm wird limitiert (0-2600(maxDrehzahl))die Werte Ki, Kp und dt 
werden initialisiert.
diffalt hat keinen Verwendungszweck habe ich unabsichtlich mit hinein 
kopiert sorry...
soll ich diff und esum auch limitieren?
dt wiederholungszeit des Regelalgorithmus
Tn ist ein Wert den man zur berechnung von Ki braucht meinst du das?

> Halbwellen schaltet ... ist eher ein Witz. Weshalb nicht Phasenwinkel ?

Sorry schlecht beschrieben, es wird der Phasenwinkel angesteuert.

> Nimm mal eine Kurve auf, wie Drehzahl und Stellglied zusammenhaengt. Ist
> es linear ? Was geschieht mit Lastaenderungen ?

ja ist linear, die ansteuerung selbst funktioniert und erreicht ohne 
Regelung ziemlich genau seinen Sollwert. Der Motor treibt ein 
Rauchgasgebläse an. Somit erreiche ich die Drehzahl nur bei 
Zimmertemperatur ohne Regelung. Da ich aber Rauch mit verschiedener 
Temperatur habe verändert sich die Last, so das die Drehzahl um ca 5-10% 
abweichen kann (ohne regelung)

Hoffe es ist jetzt besser verständlich.

von PI - Reglerentwurf für Wechselstrommotor (Gast)


Lesenswert?

temp schrieb:
> Ich denke mal, dass die Informationen von dir für eine Beurteilung noch
> nicht reichen. Damit die Werte für den Regler überhaupt vergleichbar
> werden, muss man die Skalierung der Eingangs- und Ausgangsgrößen mit
> beachten.

Die Eingangsgröße wird bereits so umgerechnet, dass ich die Drehzahl in 
U/min erhalte somit ist die Einheit von istRpm U/min wie auch bei 
sollRpm und rpm

Die Ausgangsgröße rpm wird wiederum richtig umgerechnet, dass ich ein 
richtiges PWM Signal erhalte.

Mein Problem ist nur, dass der Regler schwingt sonst nichts.

von PI - Reglerentwurf für Wechselstrommotor (Gast)


Lesenswert?

temp schrieb:
> Weitere Punkte wie das Begrenzen der Errorwerte (Windup) u.s.w lasse ich
> da erst mal völlig aussen vor, obwohl das für einen realen Regler sicher
> noch wichtig wäre.

Habe jetzt den error wert esum begrenz auf +-1000
funktioniert so weit sehr gut
Problem: Jetzt habe ich eine Regelabweichung von 100U/min

Wie kann das sein? ist ja kein P-Regler

von Karl H. (kbuchegg)


Lesenswert?

PI - Reglerentwurf für Wechselstrommotor schrieb:

>> Kommuniziert der Regler ? Falls nicht - schon falsch.
> mit was kommunizieren?

Mit euch.
Zb über eine UART auf ein Terminal.

Damit man auch mal die sich ergebenden Werte live und 'in Echtzeit' 
sieht.
Dann kann man zb beurteilen ob das Problem darin liegt, das der I Regler 
zu sehr den Stellwert in die Höhe treibt, so dass der I Regler seine 
liebe Mühe damit hat seine Fehlersumme wieder auf 0 zu bringen wenn die 
Solldrehzahl erreicht bzw. überschritten ist.


Es ist fast immer ein strategischer Fehler in der Entwicklung, wenn man 
komplexe Systeme entwickelt ohne eine Möglichkeit zu haben, dem Programm 
bei der Arbeit zuzusehen und sich ausgewählte Werte irgendwo anzeigen zu 
lassen. Das Weglassen derartiger Dinge in der Entwicklungsphase ist dann 
das berühmte 'Stochern im Nebel', bei dem man ohne ausreichende 
Erfahrung in der Erkennung unf Bewertung von szenentypischen 
Fehlerbildern dann eben nicht mehr weiter weiss und auf Raten angewiesen 
ist.


Edit:
> Jetzt habe ich eine Regelabweichung von 100U/min
> Wie kann das sein?

Jep. Genau davon rede ich bzw. "Siebzehn Zu Fuenfzehn"
Wenn dir der Regler die Istdrehzahl ausgeben würde, die Fehlersumme 
sowie den Stellwert wüsstest du schon längst was da passiert.
Der erfahrene Entwicklungsingenieur rechnet damit, dass etwas nicht auf 
Anhieb funktioniert und plant von vorne herein ein, dass er 
Möglichkeiten zum debuggen braucht. Nur Neulinge denken, sie könnten 
dynamische Systeme auf Anhieb beherrschen und sie würden daher so etwas 
profanes wie eine Ausgabemöglichkeit nicht brauchen. Das heisst ja 
nicht, dass diese Schnittstelle auf immer und ewig im System bleiben 
muss. Läuft alles, wird die SChnittstelle wieder abgehängt und man hat 
ein funktionierendes System, dem keiner mehr ansieht, dass da mal ein 
LCD drann war oder eine UART.

: Bearbeitet durch User
von PI - Reglerentwurf für Wechselstrommotor (Gast)


Lesenswert?

Karl Heinz schrieb:
> Nur Neulinge denken, sie könnten
> dynamische Systeme auf Anhieb beherrschen und sie würden daher so etwas
> profanes wie eine Ausgabemöglichkeit nicht brauchen.


Jaaaaaa wie glaubst du weis ich was ich für eine Regelabweichung habe? 
Richtig ich lasse sie mir über ein Terminal ausgeben.
Und Neuling, ja aber nur in der Regelungstechnik. Wir wollen ja nicht 
vorschnell Urteilen.


Also ich habe mir den Stell, Ist und Sollwert ausgeben lassen

Bei einer Soll von 2000 habe ich einen Stellwert von ca 2140 und einen 
Istwert von ca. 1907 diese Wert ändern sich eig nur im Einer bereich. 
Somit währe die Regelung gar nicht mal so schlecht wenn nicht die 
bleibende Regelabweichung währe.

von Karl H. (kbuchegg)


Lesenswert?

PI - Reglerentwurf für Wechselstrommotor schrieb:

> Bei einer Soll von 2000 habe ich einen Stellwert von ca 2140 und einen
> Istwert von ca. 1907 diese Wert ändern sich eig nur im Einer bereich.
> Somit währe die Regelung gar nicht mal so schlecht wenn nicht die
> bleibende Regelabweichung währe.

Und was hast du an Fehlersumme im I Regler?

Die müsste ja eigentlich immer größer werden, solange die Istdrehzahl zu 
klein ist. Wird die Fehlersumme größer muss davon abegeleitet laut
1
  Stellwert = P_Regler_Wert + I_Regler_Wert
ja auch der Stellwert größer werden.

Offensichtlich tut er das bei dir aber nicht, wenn der Stellwert 
konstant bleibt.

Da sich der Wert für 'I_Regler_Wert' aber zu
1
    Ki * Fehlersumme
errechnet, hast du daher wahrscheinlich mittels

> Habe jetzt den error wert esum begrenz auf +-1000

die esum zu sehr eingeschränkt, so dass I_Regler_Wert nicht mehr gross 
genug wird, sodass der Stellwert die notwendige Höhe nicht mehr erreicht 
um den Motor in der Drehzahl hoch zu kriegen.
Beachte auch:
Wenn der Regler eingeschwungen ist, dann ist es alleine der I_Regler, 
der den Motor auf der Solldrehzahl hält. Bei eingeschwungenem Regler ist 
der P_Regler_Wert gleich 0! D.h. es kann durchaus sein, dass der 
P-Regler am Anfang einen Stellwert errechnet, mit dem der Motor erst mal 
richtig Gas gibt, den du aber dann durch die Begrenzung der Fehlersumme 
nie wieder erreichst.

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Abhilfe könnte jetzt sein, das Ki größer zu machen, oder die Begrenzung 
der Fehlersumme weiter zu fassen. Beide Modifikationen haben das Ziel 
den Wert des I-Anteils größer werden zu lassen, so dass der Stellwert 
auch größer werden kann.
Welches davon zum Ziel führt, wirst du ausprobieren müssen, wobei dir 
die mitgeschriebenen Werte bzw. der Motor selber sagt (Schwingneigung), 
was welche Änderung bewirkt.

: Bearbeitet durch User
von PI - Reglerentwurf für Wechselstrommotor (Gast)


Lesenswert?

Karl Heinz schrieb:
> die esum zu sehr eingeschränkt, so dass I_Regler_Wert nicht mehr gross
> genug wird, sodass der Stellwert die notwendige Höhe erreicht um den
> Motor in der Drehzahl hoch zu kriegen.

Danke das war der Fehler.

Im ganzen funktioniert es jetzt eig ziemlich gut.

Frage kann ich jetzt irgendwie ermitteln ob der Regler 100% stabil 
läuft.

von Karl H. (kbuchegg)


Lesenswert?

PI - Reglerentwurf für Wechselstrommotor schrieb:
> Karl Heinz schrieb:
>> die esum zu sehr eingeschränkt, so dass I_Regler_Wert nicht mehr gross
>> genug wird, sodass der Stellwert die notwendige Höhe erreicht um den
>> Motor in der Drehzahl hoch zu kriegen.
>
> Danke das war der Fehler.

:-)
Siehst du. Und das alles hab ich aus der Information abgeleitet, dass 
dein Stellwert konstant bleibt.

> Frage kann ich jetzt irgendwie ermitteln ob der Regler 100% stabil
> läuft.

Häng eine Last drann und sieh nach wie sehr die Drehzahl einbricht bzw. 
was der Regler dagegen tut. Auch mal ein paar untreschiedlich schnelle 
Lastwechsel durchführen.

: Bearbeitet durch User
von PI - Reglerentwurf für Wechselstrommotor (Gast)


Lesenswert?

Karl Heinz schrieb:
> Häng eine Last drann und sieh nach wie sehr die Drehzahl einbricht bzw.
> was der Regler dagegen tut. Auch mal ein paar untreschiedlich schnelle
> Lastwechsel durchführen.

Es ist ein Gebläse Motor

Problem ist mein Regler ist noch nicht stabil habe ich gerade 
festgestellt.
Wenn ich eine kleine Drehzahl anfahren möchte (200 U/min) Dreht der 
Motor auf hoch und geht wieder auf Drehzahl 0 und das dauernd.

Wie kann ich die richtigen Reglerparameter feststellen, da es mit der 
Schwingungsmethode anscheinend nicht so wirklich geht. Oder muss ich 
hier die Grenzstabilität bei einer kleinen Drehzahl feststellen?

von Karl H. (kbuchegg)


Lesenswert?

PI - Reglerentwurf für Wechselstrommotor schrieb:

> Problem ist mein Regler ist noch nicht stabil habe ich gerade
> festgestellt.
> Wenn ich eine kleine Drehzahl anfahren möchte (200 U/min) Dreht der
> Motor auf hoch und geht wieder auf Drehzahl 0 und das dauernd.

Du hast doch die Werte vor dir auf dem Terminal.
Sieh halt nicht immer nur auf die Drehzahl sondern auch auf die 
einzelnen Terme der Reglergleichung
1
  Stellwert = P_Wert + I_Wert
wie entwickeln sich die?
Das ist doch die für dich relevante und wichtige Information um 
einzuschätzen, was in deinen Parametern nicht stimmt.

> Wie kann ich die richtigen Reglerparameter feststellen, da es mit der
> Schwingungsmethode anscheinend nicht so wirklich geht.

Werte studieren. Erkennen wie und aus welchen Komponenten sich der 
Stellwert zusammensetzt. Wenn ein Regler schwingt, dann sind 
normalerweise die Faktoren Kp bzw. Ki zu hoch, ich schätze mal bei dir 
wird eben Ki zu hoch sein. Die Folge ist dann, dass der Regler 
überkorrigiert und wieder in die Gegenrichtung korrigieren muss, was er 
als Folge eines zu großen Ki dann wahrscheinlich wieder 'übertreibt'.

Müsste man aber alles in den Werten sehen können.

von PI - Reglerentwurf für Wechselstrommotor (Gast)


Lesenswert?

Habe eher gehofft sich die Werte halbwegs errechnen zu können. Oder ist 
es besser einfach zu probieren und die Werte so zu ermitteln.

von Karl H. (kbuchegg)


Lesenswert?

PI - Reglerentwurf für Wechselstrommotor schrieb:
> Habe eher gehofft sich die Werte halbwegs errechnen zu können.

Wie ich das sehe:

Die Werte errechnen ist alles schön und gut. Nur brauchst du dazu eine 
Beschreibung der Regelstrecke, die 100% mit der Realität übereinstimmt. 
Und das tut sie in den seltensten Fällen. Denn wo in der Modellierung 
der Regelstrecke ist denn zb ein Lager enthalten, dass bei bestimmten 
Drehzahl aus welchem Grund auch immer eine höhere Reibung aufweist. Wo 
sind Resonanzphänomäne berücksicht. etc.
Die Realität ist meistens komplexer als ein einfaches Modell glauben 
machen lässt.

: Bearbeitet durch User
von PI - Reglerentwurf für Wechselstrommotor (Gast)


Lesenswert?

Gut, dann werde ich mal meine Werte ermittel.

Danke für die schnellen Rückmeldungen :)

von DerSchonWieder (Gast)


Lesenswert?

Hast du ein Anti Windup eingebaut?

Hast du deinen Regelalgorithmus mal mit einer simulierten PT1 Strecke 
regeln lassen? Wenn das funktioniert weisst du schonmal ob dein 
Algorithmus stimmt.

von DerSchonWieder (Gast)


Lesenswert?

PI - Reglerentwurf für Wechselstrommotor schrieb:
> Wenn ich eine kleine Drehzahl anfahren möchte (200 U/min) Dreht der
> Motor auf hoch und geht wieder auf Drehzahl 0 und das dauernd.

Das liegt vermutlich daran, dass bei kleinen Phasenwinkeln (kleine 
Drehzahl, kleiner Stellwert für Phasenanschnittsteuerung) der Motor ein 
völlig anderes Drehmomentverhalten hat wie bei großen Phasenwinkeln. Der 
Motor ist kein lineares System und hat da als PT1 betrachtet 
wahrscheinlich deutlich andere Streckenparameter.

Was für ein Motortyp ist überhaupt eingesetzt? Link?

von joergk (Gast)


Lesenswert?

Hallo PI - Reglerentwurf für Wechselstrommotor (Gast),
wieter oben schriebst Du, daß Dein Stellglied linear sei.
Ich behaupte mal, daß dies nicht stimmt, denn:
1. Bewirkt eine Phasenanschnittsteuerung keine zum Zündwinkel 
proportionale Ausgangsspannung
2. Ist die Drehzahl des Gebläses nicht proportional zur Spannung

Ich würde erst mal das Übertragungsverhalten des Stellgliedes überprüfen 
und gegebenenfalls linearisieren:
Lege doch mal Deinen Regler lahm und erhöhe schrittweise den Stellwert 
von 0 bis 100% und nimm dazu die sich einstellende Drehzahl auf.
Die sich ergebene Kurve könntest Du ja mal hier einstellen.

Jörg

von Ingo L. (corrtexx)


Lesenswert?

DerSchonWieder schrieb:
> Das liegt vermutlich daran, dass bei kleinen Phasenwinkeln
Das denke ich auch, mach mal dein Ki kleiner, dann reißt der Regler 
nicht so schnell auf... Du hast eben keine lineare Abhängigkeit deines 
Drehmomentes zu deinem Anschnittwinkel:
Beitrag "Phasenanschnitt (Zündwinkel berechen)"

Der Effektivstrom von Alpha lässt sich mit folgendem Polynom recht genau 
beschreiben:
y = 2,27013E-09x4 - 5,39760E-07x3 - 8,85239E-06x2 + 2,81651E-04x + 
9,98302E-01
Normiert auf 1

Wenns dir hilft...

: Bearbeitet durch User
von PI - Reglerentwurf für Wechselstrommotor (Gast)


Lesenswert?

Bezüglich Zündwinkel:

Also es ist so das ich aus der Stellgröße eine Wert ein PWM Signal 
errechne.
Das heißt mein Motor läuft bei einer vorgegebenen Drehzahl auch ziemlich 
genau auf dieser Drehzahl (im Leerlauf was bei mir heißt der Lüfter 
transportiert Luft mit Zimmertemperatur)

joergk schrieb:
> Lege doch mal Deinen Regler lahm und erhöhe schrittweise den Stellwert
> von 0 bis 100% und nimm dazu die sich einstellende Drehzahl auf.
> Die sich ergebene Kurve könntest Du ja mal hier einstellen.

Und genau das habe ich bereits gemacht. D.h es funktioniert alles bis 
auf den Regler. Um alle anderen Sachen habe ich mich bereits gekümmert. 
Ich möchte rein meine Drehzahlschwankungen bei auftretenden 
Laständerungen ausgleichen.

DerSchonWieder schrieb:
> Was für ein Motortyp ist überhaupt eingesetzt? Link?

http://www.ebmpapst.com/de/products/hot-air-blowers/hot_air_blowers_detail.php?pID=108468

DerSchonWieder schrieb:
> Hast du ein Anti Windup eingebaut?

Ja habe ich mitlerweile

> Hast du deinen Regelalgorithmus mal mit einer simulierten PT1 Strecke
> regeln lassen? Wenn das funktioniert weisst du schonmal ob dein
> Algorithmus stimmt.

Nein wie mache ich das am besten?

von DerSchonWieder (Gast)


Lesenswert?

PI - Reglerentwurf für Wechselstrommotor schrieb:
>> Hast du deinen Regelalgorithmus mal mit einer simulierten PT1 Strecke
>> regeln lassen? Wenn das funktioniert weisst du schonmal ob dein
>> Algorithmus stimmt.
>
> Nein wie mache ich das am besten?

na ja du wirst doch ein PT1 programmieren können. Siehe 
http://de.wikipedia.org/wiki/PT1-Glied
beim Zeitdiskreten PT1 Glied.
In das packst du deine errechneten Parameter für deine Motorstrecke und 
simulierst mal. Dann sollte dein regler funktionieren. Das gibt dir 
zumindest die Sicherheit daß die Programmierung stimmt.
Wenns dann beim realen Motor nicht geht, dann liegt das an den oben 
angegebenen Gründen.

von DerSchonWieder (Gast)


Lesenswert?

PI - Reglerentwurf für Wechselstrommotor schrieb:
>> DerSchonWieder schrieb:
>> Was für ein Motortyp ist überhaupt eingesetzt? Link?
>
> 
http://www.ebmpapst.com/de/products/hot-air-blowers/hot_air_blowers_detail.php?pID=108468

Entweder ich bin doof oder du willst uns veräppeln.
Das ist doch ein Kondensatormotor, den kann man doch gar nicht mir 
Phasenanschnitt regeln.
Dazu brauchst du einen Umrichter oder zumindest 
Vorwiderstand/Kondensator, wobei das schon grenzwertig sein kann.

von DerSchonWieder (Gast)


Lesenswert?


von PI - Reglerentwurf für Wechselstrommotor (Gast)


Lesenswert?

Und warum hat er dann 230V und einen 1uF Kondensator!?!

Es gibt 4 Buttons oberhalb der Technischen Beschreibung. Klick auf den 
linken, dann siehst du die Nenndaten!

von PI - Reglerentwurf für Wechselstrommotor (Gast)


Lesenswert?

DerSchonWieder schrieb:
> Siehe auch den Beitrag:
> Beitrag "230V Lüfter die Drehzahl reduzieren"

Ich will Regeln und nicht reduzieren. Das ganze ist ein Teil einer 
Steuerung d.h ich habe eine Steuerung für ein Gesamtes System in der 
dieser Motor vorkommt. D.h ich möchte auch andere Drehzahlen anfahren. 
Jedoch soll der Motor dann auch mit genau dieser Laufen. Deshalb mache 
ich das über einen Mikrocontroller.

von DerSchonWieder (Gast)


Lesenswert?

PI - Reglerentwurf für Wechselstrommotor schrieb:
> Und warum hat er dann 230V und einen 1uF Kondensator!?!

Weil es ein Kondensatormotor ist (1phasig mit Hilfsphase über den 
Kondensator)

PI - Reglerentwurf für Wechselstrommotor schrieb:
> Es gibt 4 Buttons oberhalb der Technischen Beschreibung. Klick auf den
> linken, dann siehst du die Nenndaten!

Ja und, liest du da was von Drehzahl von bis, Spannung von bis, ...?

von PI - Reglerentwurf für Wechselstrommotor (Gast)


Lesenswert?

Ich hoffe ich bin jetzt nicht unhöflich.

Bitte denkt nicht über das drumherum nach. Ich weis schon was ich mache.
Das einzige wovon ich nicht wirklich eine Ahnung habe ist Regeln.

Deshalb brauche ich Tipps zum Erstellen eines Reglers und nicht um das 
Drumherum.

Wie kann ich die Informationen über die zu Regelnde Strecke genau 
ermitteln?
Wie ermittle ich halbwegs genau meine Parameter?
Was muss man alles begrenzen (WindUp), gibt es da noch anderes zu 
beachten?

Auf solche Fragen suche ich eine Antwort?

von joergk (Gast)


Lesenswert?

PI - Reglerentwurf für Wechselstrommotor schrieb:
> Wie kann ich die Informationen über die zu Regelnde Strecke genau
> ermitteln?

Wie ich oben schrieb: Übertragungsfunktion des Stellgliedes ermitteln.

Im unteren Drehzahlbereich einmal steigend und einmal fallend 
(Anlaufverhalten).

Dann gehts weiter...

Jörg

von PI - Reglerentwurf für Wechselstrommotor (Gast)


Lesenswert?

DerSchonWieder schrieb:
> Ja und, liest du da was von Drehzahl von bis, Spannung von bis, ...?

Es ist ein Wechselstrommotor der über einen Triac gesteuert wird 
(Phasenanschnitt). Habe ich bereits oben erwähnt.

Drehzahl bis 2400 U/min geht aber in der Praxis bis ca. 2550 U/min

von PI - Reglerentwurf für Wechselstrommotor (Gast)


Lesenswert?

joergk schrieb:
> Wie ich oben schrieb: Übertragungsfunktion des Stellgliedes ermitteln.
>
> Im unteren Drehzahlbereich einmal steigend und einmal fallend
> (Anlaufverhalten).
>
> Dann gehts weiter...

Die Sprungantwort habe ich bereits ermittelt.
Daraus lässt sich ja schon mal erkennen das der Motor ein PT1 Verhalten 
hat und das die Zeitkonstante T = 2.379s ist.

von DerSchonWieder (Gast)


Lesenswert?

joergk schrieb:
> Wie ich oben schrieb: Übertragungsfunktion des Stellgliedes ermitteln.
>
> Im unteren Drehzahlbereich einmal steigend und einmal fallend
> (Anlaufverhalten).
>
> Dann gehts weiter...

Nix geht weiter. Wenn er keinen Motor hat, der überhaupt für eine 
Drehzahlstellung ausgelegt ist, dann geht da nichts mehr weiter. Und ich 
sehe in dem link keinen Motor den man drehzahlsteuern kann.

PI - Reglerentwurf für Wechselstrommotor schrieb:
> Daraus lässt sich ja schon mal erkennen das der Motor ein PT1 Verhalten
> hat und das die Zeitkonstante T = 2.379s ist.

Vor allem die 9 ist wichtig! Ich bin raus, viel Erfolg noch.

von PI - Reglerentwurf für Wechselstrommotor (Gast)


Lesenswert?

DerSchonWieder schrieb:
> Nix geht weiter. Wenn er keinen Motor hat, der überhaupt für eine
> Drehzahlstellung ausgelegt ist, dann geht da nichts mehr weiter. Und ich
> sehe in dem link keinen Motor den man drehzahlsteuern kann.

Gut das ich das aber bereits mache :D sorry aber einen Einphasen 
Wechselstrommotor kann man sehrwohl drehzahlgesteuert betreiben. Auch 
ohne FU

von Karl H. (kbuchegg)


Lesenswert?

PI - Reglerentwurf für Wechselstrommotor schrieb:

> Wie ermittle ich halbwegs genau meine Parameter?

Wie, was?
Soll das heissen, du hast in 2 Stunden es immer noch nicht geschafft das 
Ki von mir aus in 0.1 Schritten kleiner zu machen, bis der Regler auch 
bei kleinen Drehzahlen nicht mehr schwingt?

: Bearbeitet durch User
von PI - Reglerentwurf für Wechselstrommotor (Gast)


Lesenswert?

Doch aber das gewünschte Ergebnis blieb aus.
Ich habe es zwar geschafft das er nicht mehr schwingt jedoch ist das 
Regelverhalten auf dem Gesamten Drehzahlbereich nicht optimal.
vorallem wenn man eine drehzahl von 0 weg anfährt muss der regler erst 
einschwingen und bleibt dan konstant oder er braucht sehr lange bis er 
die drehzahl erreicht meist auch mit einem überschwingen verbunden

von Karl H. (kbuchegg)


Lesenswert?

PI - Reglerentwurf für Wechselstrommotor schrieb:
> Doch aber das gewünschte Ergebnis blieb aus.
> Ich habe es zwar geschafft das er nicht mehr schwingt jedoch ist das
> Regelverhalten auf dem Gesamten Drehzahlbereich nicht optimal.
> vorallem wenn man eine drehzahl von 0 weg anfährt muss der regler erst
> einschwingen und bleibt dan konstant oder er braucht sehr lange bis er
> die drehzahl erreicht meist auch mit einem überschwingen verbunden

Nun.
Pragmatisch wie ich bin. Niemand schreibt dir vor, dass dein Ki über 
alle Soll-Drehzahlbereiche dasselbe sein muss :-)

: Bearbeitet durch User
von Bastler (Gast)


Lesenswert?

Das ist ja das schöne an so einem Digitalregler. Der kann seine 
Parameter an den aktuellen "Arbeitspunkt" anpassen: Ki(soll)

von PI - Reglerentwurf für Wechselstrommotor (Gast)


Lesenswert?

Ja daran hab ich schon gedacht aber für heute lass ichs

von PI - Reglerentwurf für Wechselstrommotor (Gast)


Lesenswert?

1
err = istRpm - sollRpm;
2
3
maxErr = 100;
4
if (err > maxErr) {
5
  err = maxErr;
6
} else if (err < -maxErr) {
7
  err = -maxErr;
8
}
9
10
11
errIntegral += err * dt;
12
13
14
maxErrIntegral = 1000;
15
16
if (errIntegral <= -maxErrIntegral) {
17
  errIntegral = -maxErrIntegral;
18
} else if (errIntegral > maxErrIntegral) {
19
  errIntegral = maxErrIntegral;
20
}
21
22
propFact = (15.0 - 0.005 * sollRpm); // Regelgeschwindigkeit
23
24
r = 70 + sollRpm - 1 * errIntegral - err * propFact;

So ich habe jetzt einen Regelalgorithmus gefunden der funktioniert. (Ist 
im bestehenden System implementiert) Jedoch gibt es hier und da 
einzelfälle wo dieser zu schwingen beginnt.

Daher wollte ich auch einen eigenen Entwickeln.

Frage kann diesen Algorithmus irgendwer nachvollziehen. Ich nicht ganz.

zur Erklärung:

dt ist die Zeit in der der Regelalgorithmus immer wieder aufgerufen wird 
ist auf 0.5s festgelegt
r ist die Stellgröße ist glaub ich ersichtlich
err und errIntegrall ist glaube ich selbsterklährend

aber was ist der propFact und iwi ist die Formel für r nicht ganz 
nachvollziehbar für mich

von Thomas (Gast)


Lesenswert?

Hallo Gast,

also das mit dem Überschwingen usw. ist ganz einfach.
Ich bin damals auf das gleiche Problem reingefallen.

Der PID Regler arbeitet nur wenn er die Möglichkeit hat zu regeln.
ein Sprung von 0% auf 100% geht nicht.

Es fehlt die Rampe.

Also.... wenn der Motor 100U/1s seine Geschwindigkeit verändern kann,
so sollte eine Rampe z.B. 8U/0,1s aufgebaut werden.

Damit hat der Regler immer Luft zu korrigieren.

Die Rampe ist das Geheimnis......


Gruß Thomas

von PI - Reglerentwurf für Wechselstrommotor (Gast)


Lesenswert?

Aaahh ok...
Das heißt ich soll die Drehzahl erst einmal anfahren und wenn der Motor 
diese halbwegs erreicht hat, dann erst Regeln. Stimmt das?

Und kannst du mit diesem Code oberhalb etwas anfangen?

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

Hallo "PI",

> Problem ist mein Regler ist noch nicht stabil habe ich gerade
> festgestellt.
> Wenn ich eine kleine Drehzahl anfahren möchte (200 U/min) Dreht der
> Motor auf hoch und geht wieder auf Drehzahl 0 und das dauernd.

Wie misst du denn genau die Drehzahl? Gibt es nur einen Hall-Puls pro 
Umdrehung, oder mehrere? Bei einem Puls/U hast du bei 200 U/min gerade 
mal 3,3 Pulse/U. Selbst bei deinem sehr niedrigen Reglertakt von 5 Hz 
ist die Auflösung der Drehzahl sehr bescheiden. Zwisschen 0 und 200 
U/min liegen gerade mal 16,667 Pulse/Reglertakt, d.h. dein Sollwert wird 
nur mit 4 bit dargestellt.

Mit freundlichen Grüßen
Thorsten Ostermann

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

PI - Reglerentwurf für Wechselstrommotor schrieb:
> err = istRpm - sollRpm;
>
> maxErr = 100;
> if (err > maxErr) {
>   err = maxErr;
> } else if (err < -maxErr) {
>   err = -maxErr;
> }
>
> errIntegral += err * dt;
>
> maxErrIntegral = 1000;
>
> if (errIntegral <= -maxErrIntegral) {
>   errIntegral = -maxErrIntegral;
> } else if (errIntegral > maxErrIntegral) {
>   errIntegral = maxErrIntegral;
> }
>
> propFact = (15.0 - 0.005 * sollRpm); // Regelgeschwindigkeit
>
> r = 70 + sollRpm - 1  errIntegral - err  propFact;

Hmm, da fehlt ja fast alles. Die einzigen Programmteile, sie ich hier 
sehe ist die Klemmung von minimalen und maximalen Werten, ein wenig I 
Behandlung und hardcodiertes P.
Ich empfehle dir eine einfache Einführung in PID Regler, wie z.B. die 
AVR Application Note 221, die einen universell implementierbren PID 
Regler beschreibt inklusive Code und schönem PDF.
http://www.atmel.com/Images/doc2558.pdf

Grob gesagt dämpft I Schwingungen und verlangsamt bei höheren Werten die 
Reaktionszeit, während höhere D für schnellere Reaktionen sorgen und im 
Extremfall für Überschwingen sorgen. P sorgt dafür, das der Regelkreis 
überhaupt verstärkt.
Implementiert habe ich den Atmel PID Regler z.B. im hier beschriebenen 
3-Phasen Umrichter mit AVR:
http://www.mikrocontroller.net/articles/3-Phasen_Frequenzumrichter_mit_AVR

Da kannst du über das LCD und die Knöppe die Werte im Betrieb verändern 
und dabei den Motor Lastwechseln unterziehen, beobachten oder 
wasauchimmer.

Du wirst vermutlich nicht umhin kommen, auf Karl-Heinz zu hören und die 
Werte
* dem Benutzer zu zeigen
* interaktiv veränderbar zu machen. Nicht unbedingt, um den Motor stabil 
zu bekommen, aber um dabei was über die einzelnen Faktoren zu lernen.

Thomas schrieb:
> Die Rampe ist das Geheimnis......

Eigentlich sollte sich bei korrekten Werten von P,I und D die Rampe von 
alleine einstellen.

: Bearbeitet durch User
von PI - Reglerentwurf für Wechselstrommotor (Gast)


Lesenswert?

Matthias Sch. schrieb:
> Du wirst vermutlich nicht umhin kommen, auf Karl-Heinz zu hören und die
> Werte
> * dem Benutzer zu zeigen
> * interaktiv veränderbar zu machen. Nicht unbedingt, um den Motor stabil
> zu bekommen, aber um dabei was über die einzelnen Faktoren zu lernen.

Das mache ich sowieso.

Thorsten Ostermann schrieb:
> Wie misst du denn genau die Drehzahl? Gibt es nur einen Hall-Puls pro
> Umdrehung, oder mehrere? Bei einem Puls/U hast du bei 200 U/min gerade
> mal 3,3 Pulse/U. Selbst bei deinem sehr niedrigen Reglertakt von 5 Hz
> ist die Auflösung der Drehzahl sehr bescheiden. Zwisschen 0 und 200
> U/min liegen gerade mal 16,667 Pulse/Reglertakt, d.h. dein Sollwert wird
> nur mit 4 bit dargestellt.

Habe leider auf die schnelle nichts gefunden.
Aber ich werde das beachten und hoffe später Infos zum Hallsensor zu 
finden.

Matthias Sch. schrieb:
> AVR Application Note 221, die einen universell implementierbren PID
> Regler beschreibt inklusive Code und schönem PDF.
> http://www.atmel.com/Images/doc2558.pdf

Werde ich später ausprobieren. Muss jetzt noch an anderen Problemen 
arbeiten.

Danke jedenfalls für die Denkanstöße :)

von Thomas (Gast)


Lesenswert?

Matthias Sch. schrieb:
> Thomas schrieb:
>> Die Rampe ist das Geheimnis......
>
> Eigentlich sollte sich bei korrekten Werten von P,I und D die Rampe von
> alleine einstellen.

Also ich hab die Erfahrung gemacht, das ein Regler nur dann 
funktioniert, wenn er Platz zum Regeln hat.

Kann sein, dass die Rampe alleine kommt. Nur ich bin den anderen Weg 
gegangen.

Und der funktioniert bei allen unseren CNC Steuerungskunden.

Und das sind rund 100 verschiede.

Unabhängig von wechselden Einflüssen wie
Temperatur, staub usw...


Gruß Thomas

von Udo S. (urschmitt)


Lesenswert?

Thomas schrieb:
> Also ich hab die Erfahrung gemacht, das ein Regler nur dann
> funktioniert, wenn er Platz zum Regeln hat.

Jeder Regler hat ein limitierten Stellwert. Das muss man bei starken 
Verstärkungsfaktoren und gleichzeitig starken Sollwertsprüngen 
berücksichtigen.

Thomas schrieb:
> Der PID Regler arbeitet nur wenn er die Möglichkeit hat zu regeln.
> ein Sprung von 0% auf 100% geht nicht.

Jedes Heizungsthermostat ist ein Regler. Nach deiner Theorie dürfte man 
also in einem kalten Raum das Thermosstat erst auf 1 nach einiger Zeit 
auf 2, dann auf 3 etc stellen.
Also mein Thermostat arbeitet auch einwandfrei wenn ich es von 0 auf 3 
oder auch direkt auf 5 stelle.
Mit Regelungstechnik hat diese Theorie auf jeden Fall eher nichts zu 
tun.

: Bearbeitet durch User
von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

Ihr habt beide recht. Beim Heizungsthermostat sind die Zeitkonstanten 
hoch und ein leichtes Überschwingen ist tolerabel. Beim Antrieb von 
beweglichen Bauteilen sieht das anders aus. Da verwendet man gerne in 
Beschleunigung und Ruck (engl. jerk) begrenzte Rampen, weil ein 
dynamischer Antrieb sonst gerne die ganze Maschine zum wackeln bringt, 
und auf Dauer sonst die Maschine oder sich selbst zerlegt.

Mit freundlichen Grüßen
Thorsten Ostermann

von Purzel H. (hacky)


Lesenswert?

Ich finde eine Zeitkonstante von 2.4 sekunden und eine Regler Abtastzeit 
von 0.5 sekunden zu nahe beieinander. Ich wuerde den Regler alle 20ms, 
phasensynchron zum Netz laufen lassen.

von PI - Reglerentwurf für Wechselstrommotor (Gast)


Lesenswert?

Siebzehn Zu Fuenfzehn schrieb:
> Ich finde eine Zeitkonstante von 2.4 sekunden und eine Regler Abtastzeit
> von 0.5 sekunden zu nahe beieinander. Ich wuerde den Regler alle 20ms,
> phasensynchron zum Netz laufen lassen.

An das habe ich auch schon gedacht und auch schon probiert. Ich habe die 
Zeit von 500ms auf 200ms herabgesetzt und dadurch schon eine bessere 
Regelung erhalten.
Ich muss nur prüfen ob ich dadurch keine Probleme bekomme, da der 
Prozessor schon sehr ausgelastet ist mit meinem Programm, aber wird 
wahrscheinlich e funktionieren.

Auf jedenfall werde ich, wenn ich auf eine gute Lösung komme sie hier 
reinstellen.

von Purzel H. (hacky)


Lesenswert?

Das Problem ist dermassen von trivial, da kann ein controller noch nicht 
mal ansatzweise ausgelastet sein... wenn man's richtig macht. Also :

- weg mit printf()
- weg mit float
- ein alfaelliger dispay ist zufieden mit 2
  updates pro sekunde, schneller sieht man ohnehin nicht.

von PI - Reglerentwurf für Wechselstrommotor (Gast)


Lesenswert?

Siebzehn Zu Fuenfzehn schrieb:
> Das Problem ist dermassen von trivial, da kann ein controller noch nicht
> mal ansatzweise ausgelastet sein... wenn man's richtig macht. Also :

Mit diesem Problem natürlich nicht

Jedoch steuert der Controller nicht nur dieses Gebläse. Dies ist nur 
eine von vielen Aufgaben die er zu bewältigen hat.

Frage gibt es eine Formel/Richtwert nach der man die Wiederholungszeit 
des Algorithmus einstellen muss.

Bin einmal auf diese hier gestoßen.

Wiederholzeit/Zeitkonstante(Regelstrecke) = 1/10

Stimmt die?

von David (Gast)


Lesenswert?

Ich würde ein Kennfeld aufnehmen mit Eingangsspannung über Drehzahl.

Für die Regelung dann einfach mit der Solldrehzahl ins Kennfeld rein und 
die resultierende Spannung aufschalten. Dazu dann noch den Ausgang vom 
PI-Regler addieren um die schwankende Last zu kompensieren.
Hat den Vorteil, dass der PI-Regler "etwas vom der Drehzahl entkoppelt 
ist".

Oder wurde dieser Ansatz schon erfolglos probiert?

Eventuell könnte man auch probieren zwischen Reglerausgang und System 
das invertierte Kennfeld zu legen um vorhandene Nichtlinearitäten 
halbwegs zu linearisieren und die PI-Parameterwahl zu vereinfachen.

Was haltet Ihr davon?

LG David

von Purzel H. (hacky)


Lesenswert?

Ja. Das sowieso. Das nennt sich Linearisierung des Stellgliedes am 
System.
Ohne das muss der integrator mehr arbeiten, und die Regelung wird 
langsamer, man muss den I-Anteil verkleinern.

von PI - Reglerentwurf für Wechselstrommotor (Gast)


Lesenswert?

Wie macht man das in der Praxis weis gerade nicht genau wie man das 
umsetzt.

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
Noch kein Account? Hier anmelden.