Forum: Mikrocontroller und Digitale Elektronik Digitale Regler: konstanter Zeitabstand nötig?


von Philipp (Gast)


Lesenswert?

Moin,
ich frage mich grade, wie genau der zeitliche Abstand zwischen zwei 
Aufrufen eines digitalen Reglers (z.B. PI, PID, etc.) eingehalten werden 
muss.

Hintergrund: Ich habe eine Schaltung auf AVR Basis, die neben einem PWM 
gesteuerten Step-Down-Wandler ein Display und mehrere Tasten enthält. 
Der Step-Down-Wandler soll per PID-Regler gesteuert werden. Nun würde 
ich gerne, um einen Timer und Interrupt zu sparen, die Regelung einfach 
mit in die Hauptschleife integrieren. In dieser werden aber auch die 
Tasten abgefragt und das Display angesteurt. Wenn nun das Display 
aktualisiert wird, verzögert sich die Zeit zwischen zwei 
Reglerberechnungen, so dass ich keine konstanten Abstände zwischen den 
Berechnungen mehr habe. Ist sowas tolerierbar?

von Karl H. (kbuchegg)


Lesenswert?

Es ist dann nicht tolerierbar, wenn du die Resourcen frei hast um für 
den PID Regler ganz einfach eine Zeitbasis zu schaffen.

Und nein: Man kann durchaus mit einem Timer auch mehrere Dinge erledigen 
lassen, solange es sich nur zeitlich ausgeht, dass alles fertig ist, bis 
der nächste ISR Aufruf erfolgt.

von Purzel H. (hacky)


Lesenswert?

Sinnvollerweise verwendet man einen Timer um alle zB 10ms ein Flag zu 
setzen, aufgrund dessen man dann im main die Regelscheife ausfuehrt. Man 
kann so auch mit Subzyklen arbeiten. Wenn der Timer zB schneller wie der 
ADC ist, so ruft man eben nur alle 30 Ticks die Regelscheife auf und 
macht sonst was anderes. zB die Tasten, Display, usw.
Der PID ist uebrigens fuer Faule die minimales Interesse haben. Aber 
solange es damit geht, geht's.

Will damit sagen, man koennte auch mit ungleichen Zeitabstaenden 
arbeiten, das ist aber eher nichts fuer PID Leute. Die Berechnungen 
werden komplizierter und wenn man mehr rechnen muss dauert's noch 
laenger.

von Achim M. (minifloat)


Lesenswert?

Heia Jetzt-aber schrieb:
> Will damit sagen, man koennte auch mit ungleichen Zeitabstaenden
> arbeiten, das ist aber eher nichts fuer PID Leute. Die Berechnungen
> werden komplizierter und wenn man mehr rechnen muss dauert's noch
> laenger.

Wenn man eh nebenher eine Zeitbass laufen hat und schön die Zeitabstände 
zwischen den Sollwert- und Istwertmessungen und der Berechnung/Ausgabe 
mitloggt, wirds wieder einfacher. Dann könnte man aber gleich die 
Berechnungen und die Ausgabe mit in die Zeitbasis packen.

Eine gute Sache ist es jedenfalls, ADC-Messungen anzustoßen und 
daraufhin nicht wie mans überall sieht, den Prozessor in einer 
Warteschleife hängen lassen, die prüft, ob das Bit wieder zurückgesetzt 
ist. Auch hier lohnt sichs, Interruptgetrieben zu arbeiten.
mf

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Philipp schrieb:
> Der Step-Down-Wandler soll per PID-Regler gesteuert werden.

Ist meines Erachtens nach unnötig. Eine einfache 2-Punkt-Regelung reicht 
aus. Schließlich soll der Regler einigermaßen schnell sein, damit es 
keine Überschwinger gibt. Dabei kann man 2 Ansätze wählen: Entweder die 
PWM anhand der gemessenen Ausgangsspannung nachregeln (mehr, weniger 
oder so lassen), was einer kontinuierlichen Ansteuerung des Konverters 
entspricht. Man kann auch mit einer festen PWM arbeiten, welche der Last 
angepasst wird und diese an der Schaltschwelle komplett abschalten und 
beim Unterschreiten wieder einschalten. Dies wäre dann eine 
diskontinierliche Ansteuerung des Konverters.

von Philipp (Gast)


Lesenswert?

Danke für eure Antworten.
Ich werd's dann wohl in der ISR, oder, wie hacky geschrieben hat, über 
Flags realisieren.
Die Idee von travelrec finde ich auch ganz ansprechend. Da müsste müsste 
ich mich dann nicht um den ganzen Kram für nen PID-Regler kümmern.

von Havareii (Gast)


Lesenswert?

Philipp schrieb:
> ich frage mich grade, wie genau der zeitliche Abstand zwischen zwei
> Aufrufen eines digitalen Reglers (z.B. PI, PID, etc.) eingehalten werden
> muss.

Allgemein: Das hängt von den Anforderungen an die Regelgüte ab.
Pauschal: Wenn sich die Regelfrequenz ändert bedeutet das eine andere 
Bewertung für die Zeitabhängigen Anteile I und D. Aber natürlich spielt 
das Zeitverhalten der Strecke auch rein, also P kann dann auch zuviel 
oder zuwenig des Guten sein. Also lieber f = const.

von Thomas (Gast)


Lesenswert?

Du verstehst das Grundproblem? Die PID Parameter sind Abhängig von der 
Abtastzeit.

von Thomas (Gast)


Lesenswert?

ups, Havareii war schneller...

von Ulirch (Gast)


Lesenswert?

Es würde sich anbieten den Regler in den Interrupt vom AD-wandler zu 
verlegen. Die eigentliche Regelfunktion ist ja nicht so langwierig, wenn 
man da keine Fließkommazahlen benutzt.

von Purzel H. (hacky)


Lesenswert?

>Es würde sich anbieten den Regler in den Interrupt vom AD-wandler zu
verlegen....

Eher nicht. Meist benoetigt man mehrere Werte, bevor man eine 
Entscheidung treffen kann. Und die Werte der verschiedenen Groessen 
kommen sequentiell an. Also erst alle Werte wandeln, dann die 
Regelroutine aufrufen. Falls es von Vorteil ist kann man zwischendurch 
pruefen ob von Sensorwerten Grenzwerte ueberschritten wurden.

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.