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

Simulink-Modell bei größerer Step-Size nicht ausführbar

 

ratsplayer
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 07.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2015, 12:42     Titel: Simulink-Modell bei größerer Step-Size nicht ausführbar
  Antworten mit Zitat      
Hi,

ich befinde mich im Informatik-Studium und arbeite aktuell mit Matlab-Simulink. Ich habe ein fertiges Fahrdynamikmodell, welches ich anpassen und in eine Simulations-Software integrieren muss.
Das Modell läuft auf einer Step-Size von 1/1000. Ich benötige allerdings für die Simulationssoftware eine Step-Size von 1/120 (120Hz). Die Anpassung ist maximal bis 1/610 möglich (getestet).

Wenn ich versuche die Step-Size zu ändern und das Modell auszuführen, erhalte ich mehrere solcher Errors:

Derivative input x of 'Modellname/Integrator' at time 0.xxx is Inf or NaN. Stopping simulation. There may be a singularity in the solution. If not, try reducing the step size (either by reducing the fixed step size or by tightening the error tolerances)".

Es werden mir dann, wenn ich die Errors auswähle immer die Integratoren angezeigt. Diese haben wohl bei dieser Step-Size zu verschiedenen Zeitpunkten als Input INF oder NaN.
Ich habe bereits versucht eine Schaltung vorzuschalten, die bei Inf oder NaN den Reset-Port des Integrators aktiviert, leider führt das nicht zur Problemlösung.

Auch durch Googlen bin ich nicht auf eine Problemlösung gestoßen, obwohl ich verschiedene Foren-Einträge mit dem selben Fehler gefunden habe.

Hat jemand eine konkrete Idee, warum das Modell mit einer größeren Step-Size nicht mehr läuft?

Ich verwende aktuell noch Matlab R2012b.
Im Modell ist Fixed-Step mit ODE5 konfiguriert.
Auch mit anderen Solvern (Fixed-Step) lässt sich das Problem nicht lösen.

Leider darf ich weder das Modell noch Modell-Teile veröffentlichen.

Vielen Dank im Voraus und viele Grüße

ratsplayer
Private Nachricht senden Benutzer-Profile anzeigen


Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2015, 13:15     Titel:
  Antworten mit Zitat      
Nicht jeder Solver ist für ein gegebenes Modell bei jeder Schrittweite stabil. Es kann also passieren, dass die Simulation bei zu große Schrittweiten instabil wird, obwohl das System an sich stabil ist. Da hilft entweder, dem Betreuer/Vorgesetzten zu sagen, dass er nochmal über sein Problem nachdenken soll (leider sind viele dazu nicht bereit) oder die Wahl eines anderen (impliziten) Solvers. Explizite Solver (wie der ODE5) sind nicht grundsätzlich stabil. Ich bin mir nicht mehr ganz sicher, aber wenn ich mich recht erinnere, können instabile Eigenwerte bei impliziten Solvern stabil erscheinen - da muss man dann ein bisschen aufpassen, dass man keinen Quatsch simuliert.

Ansonsten sollte man, bevor man einfach mal eben die Schrittweite um Faktor 10 reduziert, kurz nochmal über Shannon meditieren und überlegen, ob man das wirklich tun will. Auch hier vielleicht nochmal den Betreuer triggern. Bei einer Abtastrate von 120Hz werden im Ergebnis nur Frequenzen bis 60Hz abgebildet sein. Und entsprechend müssen auch die Eingangsdaten aufbereitet werden. Je nach dem, was man so an Filtertechnik rumstehen hat, kann es einem passieren, dass man mit der Grenzfrequenz für das Antialiasing-Filter sehr niedrig landet (niedrig im Sinne von deutlich unter 10Hz). Da verschätzt man sich sehr schnell ganz ordentlich. Wahlweise muss man die Eingangsdaten mit einer höheren Frequenz abtasten, als das Modell läuft (oversampling) und kann dann ein bisschen am Analog-Filter sparen.

Kurz: Dein Problem sollte lösbar sein, stell aber auf jeden Fall nochmal sicher, ob es wirklich gelöst werden soll.
Private Nachricht senden Benutzer-Profile anzeigen
 
ratsplayer
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 07.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2015, 13:31     Titel:
  Antworten mit Zitat      
Hi,

erstmal vielen Dank für deine ausführliche Antwort.

Welchen Solver würdest du empfehlen? Beim Rumexperimentieren mit verschiedenen Solvern wurde mir immer die selbe Fehlermeldung angezeigt.

Ich bin leider kein Matlab-Simulink-Experte, möglicherweise fehlt es mir auch etwas am grundlegenden Verständnis des Problems.

Die Eingangswerte stammen alle von der Simulationssoftware, es handelt sich also nicht um Werte aus der Natur, ich gehe davon aus, dass somit die meisten Filter nicht nötig sind.

Das Problem mit der Abtastrate wirkt sich doch eigentlich nur auf die Qualität der Ausgänge aus, oder? Ich frage mich aber, warum die Simulation gar nicht möglich ist. Auch verstehe ich nicht wirklich, wie die Simulation instabil werden kann.

Was ist neben der Wahl eines anderen Solvers notwendig um das Problem zu lösen?

Die Vorgabe von 120Hz ist durch die Hardware/Simulationssoftware gegeben. Aus dem Modell wird über C++-Code eine "DPU" (dll) für die Simulationssoftware SILAB erstellt.

Gruß

ratsplayer
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2015, 13:53     Titel:
  Antworten mit Zitat      
Zur Wahl des richtigen Solvers gibt es einen tollen Artikel von Mathworks: http://de.mathworks.com/help/simulink/ug/choosing-a-solver.html

Meiner Meinung nach einer der besten Texte überhaupt zu dem Thema - die verlinkten Artikel zum gleichen Thema gehören auch dazu. Stell Dich auf ein bisschen Mathematik ein. Auch die Artikel auf Wikipedia (auch die englischen) sind zu dem Thema nicht verkehrt.

Die Simulation darf die Eingangswerte dann auch nur mit 120Hz liefern. Wenn alles auf einem System läuft, wird sie das aber sicherlich tun. Die Auswirkung der langsamen Abtastung ist vor allem, dass Du keine schnellen Vorgänge abbilden kannst. Wenn das Auto durch ein Schlagloch auf der Autobahn simuliert werden soll, wird die Simulation zwar ein Ergebnis liefern, aber das hat vielleicht nicht unbedingt etwas mit dem zu tun, was ein echtes Auto machen würde, da die Simulation ja nur alle 1s/120 hinguckt. Alles, was dazwischen passiert, siehst Du nicht. Darüber sollte sich aber der Aufgabensteller bewusst sein (nicht unbedingt der Fall).

Zum Problem: es kann sein, dass das Modell zeitdiskret aufgebaut ist. Dann hat eine Änderung des Solvers von Simulink keine Auswirkungen. Das kannst Du schnell rausbekommen, wenn Du "discrete (no continous states)" als solver einstellst. Keine Fehlermeldung -> Modell ist zeitdiskret. Fehlermeldung: wenigstens ein Element ist nicht zeitdiskret, was aber nicht heißen muss, dass das Modell an sich nicht zeitdiskret aufgebaut ist.
Private Nachricht senden Benutzer-Profile anzeigen
 
ratsplayer
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 07.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2015, 14:38     Titel:
  Antworten mit Zitat      
Hi,

vielen Dank nochmals für deine schnelle Antwort.
Ich habe den Artikel mal grob durchgelesen und werde in den nächsten Tagen mal mit den Solvern experimentieren.

Das die Ergebnisse durch eine größere Schrittweite schlechter werden ist mir klar. In erster Linie geht es mir allerdings erstmal darum, dass ich das Modell in der Simulationssoftware ans laufen bekomme. Die Ergebnisse würde ich dann mal mit den Ergebnissen einer kleineren Schrittweite vergleichen.

Testweise habe ich den Solver bereits auf "discrete (no continous states)" gestellt und erhalte weiterhin Fehlermeldungen.

Ich werde parallel zum Testen der Solver mal versuchen herauszufinden, ob es eventuell eine Möglichkeit gibt, das Modell mit 610Hz in der Simulationssoftware ausführen zu können. Hardware-Kosten sollten hierbei eigentlich keine Rolle spielen.

Gruß

ratsplayer
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 07.07.2015, 14:38     Titel:
  Antworten mit Zitat      
Ich würde gerne zunächst mehr wissen was "in eine Simulationssoftware integrieren" bedeutet. Was ist das für eine Software, wie fuktioniert die Integration und was wird da simuliert was Simulink nicht kann. Ist es eine Co-Simulation?

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
ratsplayer
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 07.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2015, 18:05     Titel:
  Antworten mit Zitat      
Hi,

es handelt sich um die Simulationssoftware SILAB (https://wivw.de/de/silab/). Diese ist wie ein Framework aufgebaut. Es besteht die Möglichkeit selbsterstellte "DPUs" (Data Processing Units) zu erzeugen und integrieren.
Diese DPUs kann man erstellen, in dem man aus dem Simulink-Modell C/C++-Code erzeugt, diesen an die Anforderungen von SILAB anpasst, kompiliert und builded.
Die DPUs sind DLL-Dateien, die von SILAB ausgeführt werden. Die Eingänge der Modelle werden dabei von SILAB beschrieben und SILAB verwendet die Werte aus den Ausgängen zur Simulation.
SILAB kann sowohl auf einem einzigen Rechner ausgeführt werden, sich aber auch auf mehrere Rechner splitten, wobei dann jeder Rechner eine eigene Aufgabe übernimmt (Sound, Bildschirmausgaben, ...).
Der Rechner, der in diesem Fall das Modell ausführen soll, führt die Simulation mit 120Hz aus.

Gruß

ratsplayer
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 08.07.2015, 07:15     Titel:
  Antworten mit Zitat      
Sehr schön, das heisst technologisch geht es über einen kompletten "Export" des Simulink Modells als C Code. Das bedeutet wiederum, alle Möglichkeiten das Modell selber mit den gewünschten Eigenschaften lauffähig zu machen sind witzlos, wenn sie nicht C-Code fähig sind.

Meine Idee ist daher vielleicht nicht hilfreich. Ich kenne mich mit Codegenerierung kaum aus, es käme halt auf einen Versuch an.

In den Configuration Parameters man spezielle und zusätzliche Outputs einstellen, Save options -> Refine Output oder die anderen Möglichkeiten.

Es müsste auch Möglichkeiten "Downsample" oder so geben.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.07.2015, 09:30     Titel:
  Antworten mit Zitat      
Refine wäre genau das Gegenteil vom gewünschten, Downsample kann ich bei mir (2014b) nicht entdecken. Vielleicht hast Du aber mit "Produce specified output only" glück, wenn Du dort 0:(1/120):inf für die Zeitpunkte vorgibst.

Falls das funktioniert, musst Du wieder mit Shannon aufpassen, da das letztendlich auch eine langsame Abtastung eines Signals ist, das sich schneller ändert, als Du abtastest.
Private Nachricht senden Benutzer-Profile anzeigen
 
ratsplayer
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 07.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.07.2015, 16:12     Titel:
  Antworten mit Zitat      
Hi,

danke euch allen für eure Antworten.
Ich habe alles Mögliche durchprobiert, im Endeffekt werde ich die Frequenz irgendwo zwischen 610 und 1000Hz belassen.
Ich habe ein anderes Problem behoben, das Modell lässt sich jetzt in der Simulationssoftware verwenden (noch nicht perfekt, aber läuft erstmal grundsätzlich).

Viele Grüße

ratsplayer
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.