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
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
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!
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
>Hmm ok, da das ganze in nahezu Echtzeit ablaufen soll
Wo ist da das Problem?
Das der Mega wahrscheinlich da 2 Sekunden dran rechnet, und somit nicht mehr nahezu Echtzeit ist.
@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
Selbst 2 Tage 17 Stunden 43 Sekunden und 6 hundertstel Ausführungszeit können Echtzeit bedeuten. Denk mal drüber nach...
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
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
@Thorsten Immer noch nur Wischiwaschi und nichts Konkretes. Wer soll Dir da denn helfen ??? Peter
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 ?
@Peter sagt Dir der Begriff "Modellprädiktiven Regelung" überhaupt was ? Gruß Thorsten
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
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
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.
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.
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
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
"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
@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
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
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.
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?
> 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 :-)
@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
>> 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...
"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.
"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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.