Halli hallo, ich möchte verschiedene Regler auf Mikrocontrollern implementieren. (Welcher Mikrocontroller genau, ist noch nicht so ganz klar.) Im Studium haben wir Regelungssimulationen sonst mit Matlab/Simulink erstellt und ausprobiert, was relativ angenehm war, gerade wenn es sich um mathematisch eher "abgehobene" Regelungsalgorithmen handelt. Nun stehe ich vor der Aufgabe, ebenso komplizierte Regler händisch mit C zu programmieren, wovor es mir ein bisschen graut. Wäre sicher auch mal eine gute Übung, allerdings schon recht mühsam. Meiner erster Gedanke: "Bauste vielleicht doch lieber Zuhause in 2h das passende Simulinkmodell, lässt dir den C-Code autogenerieren, passt den ein bisschen an und sparst dir dadurch eventuell wochenlange Arbeit, die du sonst händisch mit C dafür brauchen würdest." Man kann sogar fixed-point beim Matlab Coder auswählen. Ein wesentlicher Grund, der gegen Matlab sprechen könnte, ist, dass der generierte C-Code nicht so ganz ressourcensparend oder zuverlässig(???) ist. Zumindest habe ich diese Argumente mal irgendwo so aufgeschnappt. Stimmt das (noch)? (Vielleicht war das früher ja tatsächlich so. Aber es kann ja sein, dass der Matlab Coder mittlerweile so gut geworden ist, dass kaum noch ein Unterschied besteht.) Wobei müsste ich denn bei der Auswahl eines Mikrocontrollers achten, wenn ich mir Code hauptsächlich automatisch generieren lassen möchte (und der dann auch gut funktioniert)? Jemand aktuelle Erfahrung damit? Eventuell sprechen prinzipielle Gründe dagegen? (Ihr seht, so viel Ahnung habe ich noch nicht von Mikrocontrollern.)
>Ein wesentlicher Grund, der gegen Matlab sprechen könnte, ist, dass der >generierte C-Code nicht so ganz ressourcensparend oder zuverlässig(???) >ist. Zumindest habe ich diese Argumente mal irgendwo so aufgeschnappt. Bei gängigen Programmen wie Matlab gilt das so nicht mehr pauschal. Nutzt Du aber die hinterwäldler Feld-, Wald- und Wiesenbibliothek... Was aber bei vielen µP dagegensprechen könnte ist der Platzbedarf. Oft gilt bei solchen Bibliotheken: Die muss auch noch waschen und bügeln können - auf einem PehZeh kein Problem - aber beim FLASH eines 08/15 µP...
Grundsätzlich spricht nix dagegen. Gerade was die Reglergeschichten in Simulink angeht gibt es wenig Gründe die dagegen sprechen. Gerade diese Dinge werden in der Industrie sehr gerne generiert. Der Code läuft dann letztendlich auch im Auto, die Codequalität ist i.d.R. bei diesen Dingen gut. Wo Matlab noch defizite hat sind z.B. Statemachines mit komplexen Ein-/Ausgängen. Allerdings sollte dir klar sein, dass die Integration des Codes sehr mühselig sein kann. Probiers einfach mal aus und teil uns mit. Wenn der Regler nach 2h fertig ist, kannst ja mal Code generieren und uns dann mitteilen, wie der so ausschaut.
Ich halte bei uns nichts von unseren Matlab-Verfechtern, die per Stateflow embedded Steuerungscode modellieren wollen. Für mathematische Berechnungen (Regler, Matritzen, Geometrie) die über einfache Gleichungen hinaus gehen, wäre kein Matlab Dummheit. Sollte der µC gesprengt werden (zeitlich/RAM/ROM), kann man den Code *am Ende* auch händisch optimieren oder zumindest als Basis/Testbench/Referenz nutzen. Dann ist aber nicht Matlab schuld, sondern Stückzahlen oder der, der den µC ausgesucht hat. Auswahl des µC: C-Compiler vorhanden (ist immer gegeben) und den Matlab Code auf ein fertiges Demo-Kit bringen (lassen). Dann siehtst Du, ob Dein Code bei Deiner Aufgabe 1%, 10%, 100% oder 1000% von Zeit oder Speicher braucht.
Ich verstehe nicht, warum ausgerechnet Matlab für uC Programmierung eingesetzt wird. Python + numpy + sympy + scipy + matplotlib können matlab für regelungstechnische Anwendung 100% ersetzten. Ich bereue immernoch dass ich damals vor 4J für Matlab 100€ bezahlt habe. Nenn mir bitte einen Regler der in C schwer zu implementieren ist. Online Identifizierung (rekursive LSQ) der Strecken sind etwas kompliziert
Stm M. schrieb: > Python + numpy + sympy + scipy + matplotlib Super. Und das alles auf einem uC und in Echtzeit?
Christian M. schrieb: > Stm M. schrieb: >> Python + numpy + sympy + scipy + matplotlib > > Super. Und das alles auf einem uC und in Echtzeit? wer sagt dass das alles auf dem uC laufen. Für die Simulation und Berechnung der Reglerverstärkungen können Python + genannten Packages eingesetzt werden.
>Für die Simulation und Berechnung der Reglerverstärkungen können Python
+ genannten Packages eingesetzt werden.
Ja, wenn die Strecke denn gleich bleibt. Solche aufwendigen Simulation
benoetigt man ja eher bei komplizierten Systemen, wie zB 5 gekoppelte
Pools mit 2 Wasserfaellen dazwischen.
Und da sollte man schon gewappnet sein, dass sich Parameter aendern. Dh
man sollte die Simulation als Beobachter auf dem System mitlaufen
lassen, und die Abweichung im Auge behalten.
Stm M. schrieb: > wer sagt dass das alles auf dem uC laufen. Der UP. Er möchte sich ablauffähigen Code erstellen. Die Simulation (Dimensionierung des Reglers etc.) ist nicht Bestandteil seiner Frage. Flo schrieb: > Nun stehe ich vor der Aufgabe, ebenso komplizierte Regler händisch mit C > zu programmieren
@Stm Mc
>wer sagt dass das alles auf dem uC laufen.
Vielleicht der Titel dieser Diskussion?
Was ich noch anfügen wollte:
Von Misch-Masch halte ich nicht sehr viel.
Entweder man lässt sich den Code generieren, oder man schreibt ihn sich
selber.
Spätestens wenn zu viele sogenannte "Anpassungen" getätigt werden,
steigt die Fehlerquote immens an. Ob dann der Code-Generator wirklich
noch sein Geld wert ist…
Wenn man mal ein paar Exoten (sowohl µP als auch Regleralgorithmen)
außen vor lässt, sollten für "normale" Mikrokontroller ALLE gängigen
Regler, in vielfach getesteter Form, vorliegen.
Der klassische PID-Regler läßt sich sehr einfach in C programmieren, vorzugsweise mit float. Die Abtastzeit wählt man oft so, daß sie gegenüber der Durchlaufzeit der Regelstrecke (DAC->Stellglied->Sensor->ADC) dominiert. Auf keinen Fall darf sie die Totzeit unterschreiten.
Sapperlot W. schrieb: >>Für die Simulation und Berechnung der Reglerverstärkungen können Python > + genannten Packages eingesetzt werden. > > Ja, wenn die Strecke denn gleich bleibt. Solche aufwendigen Simulation > benoetigt man ja eher bei komplizierten Systemen, wie zB 5 gekoppelte > Pools mit 2 Wasserfaellen dazwischen. > > Und da sollte man schon gewappnet sein, dass sich Parameter aendern. Dh > man sollte die Simulation als Beobachter auf dem System mitlaufen > lassen, und die Abweichung im Auge behalten. es geht um einen komplizierten Regler, keinen Beobachter, und schon gar nicht online Identifizierung der Strecke
> .. keinen Beobachter, und schon gar nicht online Identifizierung der Strecke
Da verpasst du aber was. Egal.
Mir ist nicht ganz klar wie man die Strecke ohne den Regler selbst
identifizieren, rep messen will. Denn der Regler bietet ja das
Stellglied, und die Sensorauswertung. Damit habe ich die Strecke quasi
schon vermessen. Noch nicht modelliert. Das kann man ja extern, per
Schnittstelle, machen.
Und wenn ich die Simulation als Beobachter mitlaufen lasse, habe ich
einen Feedback zur Guete des Modelles. Der Beobachter muss ja nichts zur
Regelung beitragen.
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.