|
|
Matlab Block value not assigned |
|
Daewun |
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 08.06.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.08.2013, 11:40
Titel: Matlab Block value not assigned
|
|
Hallo,
Ich habe ein kleines Problem bezüglich eines Matlab Blockes. Generell sollte er nur aus 2 Konstanten und der Simulationszeit eine Übertragungsfunktion machen.
Wenn ich die geschriebene Funktion ganz normal in Matlab laufen lasse, kommen die Werte herraus, die herraus kommen sollen, in Simulink bekomm ich allerdings die Fehlermeldung:
Output argument 'Cj' is not assigned on some execution paths.
Was die Fehlermeldung mir sagen möchte ist mir klar, aber warum funktioniert es in Matlab aber nicht in Simulink ?
Der Code der funktion ist:
die Einbindung in Simulink habe ich angehangen
Gruß Daewun
Beschreibung: |
|
Download |
Dateiname: |
Kreislauf.PNG |
Dateigröße: |
9.18 KB |
Heruntergeladen: |
611 mal |
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 27.08.2013, 11:57
Titel:
|
|
Hallo,
probiers mal damit:
Variablennamen wie min und max würde ich übrigens vermeiden, da man dann nicht mehr auf die Funktionen min und max zugreifen kann.
Grüße,
Harald
|
|
|
Daewun |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 08.06.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.08.2013, 12:21
Titel:
|
|
Hallo Harald,
vielen Dank, das scheint soweit zu funktionieren. Jetzt scheint der Ausgangswert gelegentlich 0 zu werden, was ich versucht habe zu verhindern durch eine Bedingung, dass wenn der Ausgang kleiner als 10^-10 wird der Ausgang auf 10^-5 gesetzt.
Allerdings wird er trotzdem noch 0. Zumindest bekomm ich die Fehlermeldung dass der Eingang des Integrators inf oder NaN ist. zu bestimmten Zeitpunkten. Da ich durch dieses Cj teile denke ich dass es da 0 wird.
Aber das sollte doch eigentlich mit der Bedingung nicht mehr passieren oder ?
Ich hab die Einbindung und das faszinierende Ergebnis im Scope mal angehangen. (Meiner Meinung nach passiert das vorher nämlich schonmal)
gruß
Daewun
Beschreibung: |
|
Download |
Dateiname: |
scope.PNG |
Dateigröße: |
22.29 KB |
Heruntergeladen: |
605 mal |
Beschreibung: |
|
Download |
Dateiname: |
divide.PNG |
Dateigröße: |
6.05 KB |
Heruntergeladen: |
624 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 27.08.2013, 12:54
Titel:
|
|
Hallo,
Zitat: |
Jetzt scheint der Ausgangswert gelegentlich 0 zu werden, was ich versucht habe zu verhindern durch eine Bedingung, dass wenn der Ausgang kleiner als 10^-10 wird der Ausgang auf 10^-5 gesetzt. |
Bitte den entsprechenden Code posten.
Zitat: |
Ich hab die Einbindung und das faszinierende Ergebnis im Scope mal angehangen. |
Auf dem Scope kann zumindest ich nicht zwischen 0 und 10^-5 unterscheiden. Vielleicht die y-Achse entsprechend anpassen?
Ich würde auch mal den Ausgang des MATLAB-Function Blocks in einen Out Port führen, damit man sich die Werte ansehen kann.
Ein (Minimal-) Beispiel, das man sich anschauen kann, könnte helfen.
Grüße,
Harald
|
|
|
Daewun |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 08.06.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.08.2013, 13:11
Titel:
|
|
Also der Code sieht jetzt folgendermaßen aus:
theoretisch sollte das ganze Periodisch laufen, deswegen meine Verwunderung.
Die Ergebnisse des outputs hänge ich mal an, sieht aber auf jeden Fall sehr periodisch aus.
Wenn es hilft kann ich auch das gesamte Modell posten, habe es nur aus Übersichtlichkeitsgründen klein gehalten. Ist kein Geheimnis was ich da mache. Es geht um die Simulation eines Herz-Lungenkreislaufes.
Beschreibung: |
|
Download |
Dateiname: |
simout.PNG |
Dateigröße: |
9.39 KB |
Heruntergeladen: |
590 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 27.08.2013, 14:58
Titel:
|
|
Hallo,
jedenfalls sieht es nicht so aus, als ob der Output tatsächlich auf 0 geht?
Grüße,
Harald
|
|
|
Daewun |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 08.06.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.08.2013, 11:36
Titel:
|
|
ja, da geht er noch nicht auf 0 aber der eine Schritt danach, das ist mein Gefühl ...
Die Fehlermeldung ist:
Derivative input 1 of 'sijcal/linker Ventrikel /Integrator' at time 0.019 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)
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 28.08.2013, 12:12
Titel:
|
|
Hallo,
um da weiterhelfen zu können, müsste ich tatsächlich mal das Modell sehen.
Grüße,
Harald
|
|
|
Daewun |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 08.06.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.08.2013, 12:21
Titel:
|
|
Ich hoffe, dass es einigermaßen übersichtlich ist ...
Beschreibung: |
Subsystem in dem der Integratoreingang inf oder NaN wird |
|
Download |
Dateiname: |
subsystem.PNG |
Dateigröße: |
45.4 KB |
Heruntergeladen: |
558 mal |
Beschreibung: |
|
Download |
Dateiname: |
Gesamtmodell.PNG |
Dateigröße: |
53.48 KB |
Heruntergeladen: |
554 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 28.08.2013, 13:50
Titel:
|
|
Hallo,
mit "sehen" meinte ich das Modell an sich und die Möglichkeit, damit herumzuspielen ;)
Wenn du uns ein einfacheres Modell geben kannst, bei dem das Problem auftritt, wäre das natürlich umso besser.
Zumindest müsste man aber wissen, welches Subsystem denn oben abgebildet ist.
Bei Ableitungen kann es übrigens zu numerischen Instabilitäten kommen. Ich würde daher bevorzugt mit Integratoren modellieren.
Grüße,
Harald
|
|
|
Daewun |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 08.06.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.08.2013, 14:23
Titel:
|
|
Achso, na das is ja kein Problem, ich hänge das Modell einfach an, ich weiss nur nich ob es reicht die SimulinkDatei anzuhängen.
Ich habe leider kein einfacheres Modell, bei dem das auftritt, is das erste mal das mir das passiert. Ich mache das ganze auch nur aus Übungszwecken und wie sich zeigt ja zu recht, scheinbar hab ich Simulink noch nicht in dem Maß verstanden wie ich es sollte
Die Subsysteme sind alle die selben, sie unterscheiden sich nur in den Eingangssignalen, die daraus abgeleitete Gleichung ist in jedem Subsystem die selbe.
Ja mit Integratoren arbeiten ist geschickter, auch wegen der Kausalität und Wirkungsrichtung des Modells
|
|
|
Daewun |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 08.06.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.08.2013, 14:23
Titel:
|
|
huch, Anhang vergessen
Beschreibung: |
|
Download |
Dateiname: |
sijcal.slx |
Dateigröße: |
23.92 KB |
Heruntergeladen: |
292 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 28.08.2013, 19:45
Titel:
|
|
Hallo,
das Problem ist nicht der Nenner, sondern der Zähler. Wenn du da mal einen Scope- oder Display-Block dranhängst, siehst du, dass die Werte gegen unendlich laufen.
Die naheliegendste Ursache dafür ist ein Modellierungsfehler.
Ich würde auch nicht ausschließen, dass sich Ungenauigkeiten durch die Ableitungsblöcke aufschaukeln.
Warum verwendest du eigentlich einen Solver mit fester Schrittweite? Würde ich nicht machen, wenn ich auf der Fehlersuche bin.
Vielleicht hilft dir das schon mal weiter.
Grüße,
Harald
|
|
|
Daewun |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 08.06.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.08.2013, 11:52
Titel:
|
|
Hallo,
Ja das hilft mir schon ungemein weiter, vielen Dank. Daran habe ich ehrlich gesagt nicht gedacht, weil es für gewöhnlich doch eher der Nenner ist der gegen 0 geht
Ich nehme auch ganz stark an, dass es sich um einen Modellierungsfehler irgendwo handelt, 2 Fehler habe ich schon gefunden, allerdings helfen die noch nicht an dem Problem...
Den Solver habe ich eigentlich schon wegen später gewählt, ich dachte eigentlich nicht dass es bei der Fehlersuche einen Unterschied macht.
Grüße
Daewun
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 29.08.2013, 12:17
Titel:
|
|
|
|
|
Hallo,
Zitat: |
Daran habe ich ehrlich gesagt nicht gedacht, weil es für gewöhnlich doch eher der Nenner ist der gegen 0 geht |
Das mag sein, aber du hattest ja ausgeschlossen, dass der Nenner 0 werden kann. Ich hatte übrigens zu Diagnosezwecken ein
in den MATLAB Function-Block geschrieben um bei jeder Ausführung zu sehen, welche Werte er ausspuckt.
Fixed-Step Solver würde ich nur für Code-Generierung verwenden.
Um zu sehen, welche Einstellungen dabei sinnvoll sind, würde ich die Simulation mit Variable Step Solver laufen lassen und dann an den Einstellungen des Fixed-Step Solvers drehen, bis etwas herauskommt, das den Ergebnissen des Variable-Step Solvers ausreichend gleicht.
Mir ist noch aufgefallen, dass du die Ableitung von Konstanten bildest, die dann logischerweise 0 ist. Ist das gewollt?
Modelliere das ganze doch mal mit Integratoren, vielleicht wird dir dadurch klar, wo das Problem liegt. Oder vielleicht löst sich dadurch auch das Problem - wie gesagt: Ableitungen sind numerisch problematisch.
Wenn du mehrere gleiche Subsysteme in einem Modell hast, würden sich übrigens Modellreferenzen anbieten. Wenn du Änderungen machen möchtest, musst du die Subsysteme ja jeweils anpassen, während du bei Modellreferenzen nur ein Modell warten musst.
Grüße,
Harald
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|