Forum: Mikrocontroller und Digitale Elektronik ATMega8 ausreichend für ein modellprädiktiven Regelers ?


von Thorsten L. (tlauf79)


Lesenswert?

Hallo,

habe ein mathematisches Modell für eine modellprädiktive Regelung
entworfen. Läuft mit Matlab hervorragend.
Meine Frage ist ob so etwas auf einem Mega8 laufen kann ? Soll mit 16
MHz laufen.

Beherrscht der Controller solche Berechnungen ? Oder soll ich lieber
auf einen anderen Controller zurückgreifen ?

Danke im vorraus !
Thorsten

von Olaf (Gast)


Lesenswert?

Ich weiss zwar nicht was du mit diesem coolen Wort meinst, aber niemand
wird dir das beantworten koennen wenn du nicht sagst wie schnell du
regeln musst.

Olaf

von ope (Gast)


Lesenswert?

jetzt musste ich auch erstmal nachsehen (
http://www.uni-bayreuth.de/departments/math/~lgruene/seminar_mpc06/):

Modellprädiktive Regelung ist eine Methode, mit der Feedback-Regler
sowohl für lineare als auch für nichtlineare Systeme durch Methoden der
Online-Optimierung berechnet werden können. Wegen ihrer großen
Flexibilität ist sie unter den modernen Regelungsalgorithmen vermutlich
die Methode mit den meisten praktischen Anwendungen.

Sprich: Alter Wein in Neuen Schläuchen. Bei mir hier hiess das adaptive
Regelung, wobei aussen vor gelassen wurde, auf welcher Basis die
Adaption/Optimierung konkret durchgeführt wurde (Beobachter mit extra
Schnick-Schnack, analytisch, LUT, Neronale Netze; predikativ ->
Störgrößenaufschaltung?, etc.).

Wenn ich aber lese: Online-Optimierung, sehe ich schwarz für den AVR.
Je nach Umfang dauert es dann schon ein paar Sekunden wenn Matrizen und
Floating Point in's Spiel kommen, mal vom Speichermangel abgesehen, da
ja Optimierung mit lin. DGL und ggf. mit Newton Interation o.a.
gearbeitet wird.

Da Du leider nichts konkretes geschrieben hast, ist diese Angabe
allerdings für Deinen Fall total wertlos - ich bezog mich auf Probleme,
wie ich sie bei mir habe ;-)

Die Implementation sollte jedenfalls keine Hürde sein.

Viele Grüße
Olaf

BTW: Die wenigsten sind hier Regelungstechniker!

von Thorsten L. (tlauf79)


Lesenswert?

Hmm ok, da das ganze in nahezu Echtzeit ablaufen soll, kann ich dann
wohl den MEGA8 vergessen.Was die Regelung angeht bedeutet es kurz
gefasst : Der Regler versucht sich "vorrausschauehend" auf den zu
erwarteten Wert einzustellen.
Da in dieser Zeit sehr viel gerrechnet werden muß denke ich mal das der
Mega es nicht schafft.Der PC (2,8 Ghz) hat da kein Problem mit *lol

Gibt es Prozessoren, die speziell für mathematische Berechnungen
ausgelegt sind ?

Thorsten

von Patrick D. (oldbug) Benutzerseite


Lesenswert?

>Hmm ok, da das ganze in nahezu Echtzeit ablaufen soll

Wo ist da das Problem?

von Thorsten L. (tlauf79)


Lesenswert?

Das der Mega wahrscheinlich da 2 Sekunden dran rechnet, und somit nicht
mehr nahezu Echtzeit ist.

von peter dannegger (Gast)


Lesenswert?

@Thorsten

"Hmm ok, da das ganze in nahezu Echtzeit ablaufen soll, kann ich dann
wohl den MEGA8 vergessen."

Das ist doch Wischiwaschi !

Echtzeit ist alles mögliche, nur keine konkrete Zahl.


Du kannst die kompliziertesten Algorithmen der Welt bequem auf nem
ATMega8 laufen lassen, wenn es z.B. eine Zentralheizungssteuerung sein
soll, denn schneller als 1..10min Regelzeitkonstante macht dabei
einfach keinen Sinn.


Ehe man eine Regelaufgabe in Angriff nimmt, muß man sich erstmal über
die Zeit- und Genauigkeitsanforderunge klar werden, d.h. ganz konkrete
Zahlen ermitteln und kein Echtzeit-Geschwafel absondern.

Und ehe man dann den Algorithmus in Angriff nimmt, muß man erstmal die
Sensoren, die Regelstrecke und die Stellglieder darauf überprüfen, ob
die das überhaupt können.

Eine Regelstrecke mit 1min Reaktionszeit kriegt man z.B. mit einem
Algorithmus mit 1s Zeitkonstante nie im Leben stabil.


Peter

von Patrick D. (oldbug) Benutzerseite


Lesenswert?

Selbst 2 Tage 17 Stunden 43 Sekunden und 6 hundertstel Ausführungszeit
können Echtzeit bedeuten. Denk mal drüber nach...

von peter dannegger (Gast)


Lesenswert?

P.S.:

In der Praxis dimensioniert man Regler gerne so, daß der Regler die
dominierende Polstelle (die höchste Zeitkonstante) bildet, denn diese
Regler sind besonders stabil, da die Phasendrehung max 90° betragen
kann.
Z.B. eine Regelsrecke mit 1min Durchlaufzeit wird mit einer
Zeitkonstante von 10min geregelt.


Peter

von Thorsten L. (tlauf79)


Lesenswert?

Das System lief vorerst mit einem PID Regler, und soll jetzt auf die
Modellprädiktive Regelung umgestellt werden.
Der Algorithmus läuft auch schon sowohl in Matlab, als auch über einen
Prozessrechner.Da dieser Prozessrechner aber noch ein Klotz ist und der
PID Regler klein und kompakt ist, soll die Regelung jetzt auch auf einem
Mikrocontroller ablaufen.

Deshalb such ich einen Mikrocontroller der speziell für komplizierte
mathematische Verfahren geeignet ist (RAM, MHz).

Thorsten

von peter dannegger (Gast)


Lesenswert?

@Thorsten

Immer noch nur Wischiwaschi und nichts Konkretes.

Wer soll Dir da denn helfen ???



Peter

von Thorsten L. (tlauf79)


Angehängte Dateien:

Lesenswert?

Konkrete Frage :

Deshalb such ich einen Mikrocontroller der speziell für komplizierte
mathematische Verfahren der Modellprädiktiven Regelung( geeignet ist
(RAM, MHz).

Konkretes Projekt :
Modellbasierte Planheitsregelung

Reicht das als konkretes ?

von Thorsten L. (tlauf79)


Angehängte Dateien:

Lesenswert?

Diagramm

von Thorsten L. (tlauf79)


Lesenswert?

@Peter

sagt Dir der Begriff "Modellprädiktiven Regelung" überhaupt was ?

Gruß
Thorsten

von mr.chip (Gast)


Lesenswert?

Hallo

Dein Projekt hört sich sehr interessant an. Könntest du evtl. etwas
mehr darüber sagen? Ich habe schon lange immer wieder mit einem Projekt
in diese Richtung geliebäugelt ;-)

Gruss

Michael

von Thorsten L. (tlauf79)


Lesenswert?

Nun es ist meine Diplomarbeit und ich bräuchte nur eine Antwort auf die
Frage :

...suche ich einen Mikrocontroller der speziell für komplizierte
mathematische Verfahren der Modellprädiktiven Regelung( geeignet ist
(RAM, MHz).

Sie läuft in Zusammenarbeit mit dem BFI.

http://www.bfi.de/de/arbeitsgebiete/anlagen_und_systemtechnik/planheitsregelung_warmband.htm

Wie man in dem Diagram sieht, lief die Anlage vorher mit einem PID
Regler. Durch die Umstellung auf die Modellprädiktiven Regelung ist die
Anlage optimiert worden.

Dieser Modellprädiktiven Regeler läuft im Moment noch auf einem
Prozessrechner und soll in einem kompakten Gehäuse b.z.w 19" Einschub
mit einem Mikrocontroller realisiert werden.

@Michael
reicht das ?

Gruß
Thorsten

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Da wäre doch der erste Schritt mal die beteiligten Algorithmen grob auf
ihren Speicher- und Rechenzeitbedarf zu untersuchen, dann kann man
abschätzen was geht und was nicht. Der AVR ist jedenfalls nicht für
"aufwendige" (was immer das sein mag) Berechnungen konzipiert,
wenn's um Fließkomma geht schaut's sowieso düster aus.

von Patrick D. (oldbug) Benutzerseite


Lesenswert?

Du wirst wohl kaum in irgend einem Mikrocontrollerdatenblatt den Satz
"Speziell für modellprädiktive Regelungen geeignet." finden.

Wenn Du mal Rahmenbedingungen für Deine "Echtzeit" (Du verwechselst
übrigens Echtzeit mit hoher Ausführungsgeschwindigkeit - und selbst das
ist noch relativ) angeben würdest, könnte man Dir vielleicht auch
helfen, einen geeigneten Prozessor zu finden.

von Thorsten L. (tlauf79)


Lesenswert?

Nun gut, dann Pflück ich mal die Algorithmen auseinander.Also Fließkomma
sieht düster aus, hmm dann schau ich mal.

Trotzdem Danke !

Gruß
Thorsten

von peter dannegger (Gast)


Lesenswert?

Das ist eine sehr schön einfache Regelaufgabe, da die Totzeit immer
konstant ist, unabhängig vom Regelzustand.

Allerdings hast Du immer noch nicht verraten, wie groß die Totzeit nun
ist, daher kann man immer noch keine Aussage treffen.


Es gäbe da einige Ansätze:

1.
Man kennt möglichst genau die Funktion des Stellgliedes, z.B. Dicke als
Funktion der Spannung. Dann ermittelt man die Abweichung stellt das
Stellglied entsprechend und legt sich wieder für die Totzeit schlafen.

2.
Man macht einige Teststellungen des Stellgliedes und überprüft dann
nach der Totzeit, welche Stellung das beste Ergebnis lieferte und
stellt diese dann ein.

3.
Man kombiniert beides, d.h. erst Testen und dann Nachregeln.


Ich hatte mal eine Regelaufgabe, die mit einem PID-Regler kaum stabil
zu kriegen war.
Dann habe ich festgestellt, daß die Regelgröße exponentiell zur
Spannung am Stellglied war. Ich hab dann einen µC (AT89C2051) genommen,
der mit dem dualen Logarithmus rechnet:
U_stell = k * (ld(soll) - ld(ist))
und nun ist es super stabil

Je mehr man über den Regelkreis weiß, umso einfacher wird das Ganze.


Peter

von peter dannegger (Gast)


Lesenswert?

"wenn's um Fließkomma geht schaut's sowieso düster aus."

Man sollte ruhig möglicht praxisnah sein.

In der Praxis sind Fehler von 1% oft ausreichend, und die kriegt man in
der Regel schon mit 16Bit Ganzzahl hin. Auch die Sensoren und
Stellglieder sind selten besser als 16 Bit.

float wird eigentlich nur deshalb genutzt, damit man sich keine
Gedanken über den Wertebereich zu machen braucht, spart also ein
kleines bischen Zeit bei der Softwarentwicklung.

Gedanken machen bedeutet aber auch, daß man danach weiß, ob bestimmte
Berechnungen sinnvoll sind und ob sie überhaupt richtig sind
(Rechenfehler, Rundungsfehler). Insofern muß das also kein Nachteil
sein.

Auch hat 32Bit Ganzzahl eine höhere Genauigkeit als float (24Bit).


Peter

von peter dannegger (Gast)


Lesenswert?

@Olaf,

"jetzt musste ich auch erstmal nachsehen (
http://www.uni-bayreuth.de/departments/math/~lgruene/seminar_mpc06/):

Modellprädiktive Regelung ist eine Methode, mit der Feedback-Regler
sowohl für lineare als auch für nichtlineare Systeme durch Methoden der
Online-Optimierung berechnet werden können."


Jo, klingt wirklich wie alter Wein in neuen Schläuchen.
Prädiktiv klingt auch eher nach vorhersagen, also nicht besonders
seriös.
Denke mal, es geht um die Analyse des Systems (z.B. Sprungantwort
auswerten) und Modellierung. Man sagt also nichts vorher sondern
erwartet, daß das System sich bei jedem Regelvorgang ähnlich verhält.
Man kann damit aber auch ganz schön auf die Nase fallen. Ich hatte mal
ne Regelung, die möglichst schnell einschwingen sollte. Da habe ich
dann einfach für verschiedene Regelwerte die vorherigen Stellgrößen im
EEPROM gemerkt und als Startwert genommen. Die Regelung wurde aber
keinen Fatz schneller, da durch Umwelteinflüsse sich jedesmal andere
Parameter ergaben.


"Wegen ihrer großen Flexibilität ist sie unter den modernen
Regelungsalgorithmen vermutlich die Methode mit den meisten praktischen
Anwendungen."


Diese Vermutung dürfte falsch sein.
Mit Abstand die meisten Anwendungen nutzen die gute alte einfache und
zuverlässige Zweipunktregelung.


Peter

von ope (Gast)


Lesenswert?

Da Du ja es eh programmieren willst, kannst Du ja zur Abschätzung der
Rechenzeit den Algo erstmal in C implementieren. Evtl. hilft Dir bei
Matlab auch der RTW weiter, da kannst Du den C Source studieren.

Nimmst Du dSpace, hast Du noch weniger Probleme ... (und ein Loch im
Geldbeutel ;-) BTW, RTLinux wird durch RTW auch unterstützt, wenn Du es
installierst. Dann läuft es auch wieder auf der x86 Plattform ggf. mit
entsprechenden IO Karten. Dies setzt allerdings eine gewisse
Bastelleidenschaft vorraus (Ich habe das Spiel vor 4 jahren
durchgemacht mit comedi).

Da kannst Du dann schon mal probieren, ob Du mit Festkommaarithmetik
klar kommst - btw, Simulink konnte auch Festkommaarithmetik simulieren
... Schon alle Möglichkeiten zur Abschätzung mit Matlab/Simulink
ausgeschöpft?

modellprädiktive Regelung: mmhh, wie gross ist denn Dein Modell,
einfache Gleichungen oder Matrix-Vektor-Ops mit
Koordinatentransformation?

Da es ja ein Dipl.-Arbeit ist, kannst Du ruhig mit mehr Infos
rausrücken ...

Viele Grüße
Olaf

von Marko (Gast)


Lesenswert?

Die hochtrabenden Vokabeln hab ich nicht drauf, aber
ich hab ne Pumpenregelung für eine Filterstation gebaut,
in der der Druck konstant gehalten werden soll.
Das Problem: Der Druck steigt bei gleicher Fördermenge
mit der Zeit an, bzw. die Förrderleistung muss mit
der Zeit runter geregelt werden.
Nun soll Die Gerätschaft aber nicht auf Überdruck und auch
nicht auf tiefen Druck laufen, sprich ich rechne ein
Druck-Mengen-Diagramm per lineare regression aus
den gleitenden Mittelwerten kleiner Zeitspannen raus,
regle dann in den entsprechenden Zeiteinheiten auf den
errechneten Wert und kontrolliere das ganze dann auf
Deckungsgleichheit. Bei Abweichungen vom Sollwert wird
nachgeregelt und die Funktion entsprechend angepasst.

Ich mach das gnze aus nem Gespann von Mega32 und Mega8,
die per RS485 verbunden sind (20m Kabel dazwischen),
Ein Zyklus dauert 70ms und ein ganzer Prozesszyklus so ca.
20 - 45 Min.

von Stephan (Gast)


Lesenswert?

moin, also ein x86 mit 2 GHz ist größenordnung 10^3 mal schneller als
der mega8...floatingpoint, wenn du brauchst, beschleunigt den x86 auch
noch mal um ein paar faktoren...klar, die abschätzung ist mehr als
grob, aber wenn du die rechenzeit von deinem algo mal damit
multiplizierst siehste schon wo du landest ;) MATLAB ist aber auch noch
mal deutlich langsamer als c-code...schau dich lieber nach nem proz mit
ordentlich mhz um...oder einfach mal ausprobieren, geht ja bekanntlich
über studieren...hast ja eh den c-code am start, oder?

von Karl H. (kbuchegg)


Lesenswert?

> moin, also ein x86 mit 2 GHz ist größenordnung 10^3 mal
> schneller als der mega8

Schon. Aber auf den meisten x86 laueft Windows mit.
Und das ist 10^4 mal langsamer als wenn ich kein
Betriebssystem oder nur das Notwendigste auf der
Maschine habe :-)

von Profi (Gast)


Lesenswert?

@Karl Heinz: schmunzel! sehr treffend ausgedrückt.

Wenn 8-bit mit 16MHz zu wenig sein sollten, nimm halt einen 16-bit mit
80 Mhz oder einen ARM.
Mangels Angaben meine subjetive Meinung:
Da es hier um schwere Mechanik mit Hydraulik.. gehen dürfte, liegen die
Rekationszeiten eher im Sekundenbereich. Da hat man viel Zeit zum
Berechnen. 16-, 24- oder 32-Bit Mathe reicht sicher.

Was ich nicht verstehe: War der PID-Regler wirklich zu schlecht, oder
war er nicht richtig dimensioniert? Beachte auch: PID ist nicht gleich
PID: es gibt mehrere Möglichkeiten, den Integral- und
DifferentialAnteil zu berechnen, was sich stark auf seine
Regeleigenschaften auswirkt.
Siehe http://www.embeddedforth.de/emb2.pdf S.6-9

von Läubi (Gast)


Lesenswert?

>> soll in einem kompakten Gehäuse b.z.w 19" Einschub

Wenn das ganze "kompakt" in ein 19" Rack sol... warum dan nicht enn
kleinen Rechner hinstellen wenn darauf schon alles ohne probleme
läuft?
Es gibt auch rechner die in 19" Racks passen...

von Manos (Gast)


Lesenswert?

"wenn's um Fließkomma geht schaut's sowieso düster aus."
In C sollte das kein Problem sein...

"...und soll in einem kompakten Gehäuse b.z.w 19" Einschub
mit einem Mikrocontroller realisiert werden."
Hm... hatte ich eben erst gelesen... Also ein Mega8 würde mit ein wenig
drumherum in eine Streichholzschachtel passen... bei 19" hättest Du
noch ausreichend Platz für einen Toaster und einen DVD-Player ;-)

Aber ich denke auch - schau Dir die Formel an, versuch sie C
nachzubilden und vielleicht mal z.B. in VMLab zu testen. Was Tempo
angeht glaube ich nicht dass der Mega8 in C zu langsam ist - abhängig
natürlich von der Komplexität der Formel.

von peter dannegger (Gast)


Lesenswert?

"Was Tempo angeht glaube ich nicht dass der Mega8 in C zu langsam ist -
abhängig natürlich von der Komplexität der Formel."

Genau !

Ohne die Formeln und Zeitbedingungen zu kennen, muß alle Diskussion nur
Wischiwaschi bleiben.

Ich kenne auch sehr viele Probleme, wo man mit etwas Gehirnschmalz die
Rechenanforderungen um den Faktor 1000 oder noch mehr runterschrauben
konnte.


Peter

von ope (Gast)


Lesenswert?

peter dannegger:
>Ohne die Formeln und Zeitbedingungen zu kennen, muß alle Diskussion
>nur Wischiwaschi bleiben.

yep.

Thorsten Lauf (TLauf79):
>Konkretes Projekt :
>Modellbasierte Planheitsregelung
>Reicht das als konkretes ?
>URL links

Das ist annähernd so konkret wie: "ich will ein Auto/Haus bauen" ...
Die Bilder geben lediglich wieder, dass Du eine Regelstrecke mit
Totzeit und einen Regler mit Soll-Ist-Wertvergleich hast. Also dass,
was man in jedem Lehrbuch findet.

Thorsten Lauf (TLauf79):
>habe ein mathematisches Modell für eine modellprädiktive Regelung
>entworfen. Läuft mit Matlab hervorragend.

Wenn Du es als Matlab File hast, hast Du doch die System- die anderen
Matrizen. Diese können Dir zumindest etwas über die reine Rechenzeit an
sich aussagen (einschl. der Dimensionen - welche haben sie denn? Schau
mal in Matlab nach). Ob Deine Modellbildung optimial erfolgt ist, steht
auf einem anderen Blatt. Dazu fehlen uns/mir Infos zum Prozess selber.
Das dazugehörige Simulink Bildchen würde evtl. auch schon Licht in's
Dunkel bringen.

Thorsten Lauf (TLauf79):
>Der Algorithmus läuft auch schon sowohl in Matlab, als auch über
>einen Prozessrechner.Da dieser Prozessrechner aber noch ein Klotz
>ist und der PID Regler klein und kompakt ist, soll die Regelung
>jetzt auch auf einem Mikrocontroller ablaufen.

mmhh, wo ziehst Du die Systemgrenze? Der PID Regler Algo an sich ist
als C-Source betrachtet ein 3-Zeiler und passt auf einen Fingernagel in
Hardware (Chip). Analog PID kann passt auf 1/2 Euro Format und kleiner -
ebenso wie ein Prozessrechner - je nach Aufgabe.

Irgendwie fehlt hier die gemeinsame Sprache und Vorstellungen; es liegt
nicht an der Bereitschaft helfen zu wollen, wie Du ja schon sicher
mitbekommen hast.

Viele Grüße
Olaf

von peter dannegger (Gast)


Lesenswert?

Nochmal zurück zum Thema "Modellprädiktiven Regelung".

Ich hab da was sehr interessantes gefunden:

http://www.romanblack.com/picsound.htm

Da wird sehr schön beschrieben, daß Sachen oftmals nur furchtbar
kompliziert klingen, aber mit etwas Gehirnschmalz plötzlich total
einfach sind.

Erst lief alles mit flaoting Point aufm Pentium und danach reichte ein
PIC dicke aus.


Das Beispiel zeigt auch sehr schön die Grenzen einer Modellprädiktiven
Regelung auf. Ein RC-Glied läßt sich sehr gut modellieren (e-Funktion)
und hat im betrachtenen Frequenz- und Spannungsbereich ideale
Eigenschaften.

Reale Systeme, insbesondere mechanische, haben dagegen mit
verschiedensten Unwägbarkeiten zu kämpfen (Haftreibung, Schlupf, Spiel,
Temeraturausdehnung usw.).

Ich hatte mal ne Druckregelung mit Magnetventil, die lief mit komplexer
werdenden Regelalgorithmus unverändert schlecht. Die Ergebnisse waren
einfach nicht reproduzierbar.

Erst der Austausch des Ventils und des Antriebs (Piezostack) brachten
sehr gute Resultate und auch der Regelalgorithmus konnte wieder
drastisch vereinfacht werden.


Peter

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.