WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Code-Generierung aus Simulink/SimPower

 

al_e
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 05.05.14
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 11.12.2014, 10:34     Titel: Code-Generierung aus Simulink/SimPower
  Antworten mit Zitat      
Hallo zusammen,
ich habe hier ein etwas größeres Simulink-Modell in welchem hauptsächlich mit Blöcken aus der SimPower-Bibliothek gearbeitet wurde.
Das Modell selbst ist soweit fertig und funktioniert auch. Als Solver habe ich gewählt
- Powergui: Continous
- Sim-Einstellungen: Continous / ode23tb

Damit war die Simulation bisher am schnellsten. Trotzdem ist sie noch etwas langsam, im Zuge sämtlicher Optimierungsmöglichkeiten die es so gibt möchte ich auch die Codeerzeugung mit Simulink Coder in Erwägung ziehen.

Hat da schon jemand Erfahrungen gemacht, im Speziellen eben in Verbindung mit SimPower-Blöcken?

Denn das Hauptproblem bei der Erzeugung sind Algebraic Loops. Die sind zuhauf entstanden, und teilweise sogar in den Simpower-Bibliotheksblöcken selbst vorhanden. Insbesondere ein Loop ist uncool, der befindet sich in der powergui...

Bin für jede Information dankbar,

Fabi
Private Nachricht senden Benutzer-Profile anzeigen


al_e
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 05.05.14
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 12.12.2014, 15:31     Titel:
  Antworten mit Zitat      
Mittlerweile habe ich die Probleme gelöst und möchte hiermit davon berichten, für alle diejenigen die Ähnliches vor haben.

Die Algebraic Loops lassen sich mit dem Einbau von Memory / Delay Blöcken vermeiden. Allerdings muss man immer genau schauen ob sich die Messergebnisse verändern, teilweise muss man schon wesentliche Teile ummodellieren. Wenn man schon vorher weiß dass man später Code erzeugen möchten gleich beim Modellieren darauf achten, dass keine Algebraic Loops entstehen.

Zu Beginn hatte ich über 70 Algebraic Loops, aber manchmal hat auch der Einbau von einem Memory-Block 10 Loops auf einmal gelöst. Unter anderem auch in den bereits in den Bibliotheken enthaltenen Blöcken, da musste ich also nichts reinpfuschen.

Ein guter Nebenefffekt: die CPU-Zeit ist durch das Entfernen der Loops wesentlich verbessert worden (fast 4x schneller). Algebraic Loops machen dem Solver also sehr zu schaffen.


Letztendlich hat die Codeerzeugung auch funktioniert, allerdings funktioniert der Compiler (gmake) NICHT wenn im Installationspfad ein Leerzeichen ist! Beispiel: C:\Program Files\MATLAB führt zu permanentem Abbruch. Ein Workaround ist, in den .make-Dateien rumzupfuschen, aber dann muss man nach jeder Erzeugung neu pfuschen, also lieber neu installieren.


Die Simulation meines SimPower-Modells als C-Code brachte eine 5-fache Verschnellerung, lohnt sich also durchaus.

VG
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.