|
|
Variable in einem MATLAB-Function Bolck initialisieren |
|
Bug |
Forum-Anfänger
|
|
Beiträge: 11
|
|
|
|
Anmeldedatum: 17.12.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2013b
|
|
|
|
|
|
Verfasst am: 26.05.2014, 13:21
Titel: Variable in einem MATLAB-Function Bolck initialisieren
|
|
Hallo zusammen,
in meinem MATLAB-Function Block möchte ich eine Variable zur Integration verwenden. Diese soll am Anfang als Vergleichswert genommen und am Ende gleich dem Ausgangswert gesetzt werden. So, dass bei einem neuen Schleifendurchlauf erstmal das letzte Ergebnis überprüft wird.
Mein Problem ist, dass ich nicht weiß, wie ich eine Variable initialieren kann, die kein Input, Output oder fester Parameter ist und mir nicht eine Fehlermeldung wie:
"Data store memory with name 'Ialt' was not found for block"
oder wenn ich sie vorher im Workspace eintrage:
"Variable 'Ialt' is resolved in workspace ('base') for block 'vollstaendiges_Simulationsmodell' but it is not a 'Simulink.Signal' object"
Hier ist mal mein Code:
Wie kann ich diesen Code trotz dem zum Laufen bringen?
Bin für jede Hilfe dankbar
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 26.05.2014, 14:30
Titel:
|
|
Hallo,
zunächst mal MATLAB-Syntax beachten: { } zur Gruppierung von Code gibt es nicht, ebensowenig +=
Wenn Variablen von einer Ausführung des Blocks erhalten bleiben sollen, schau dir mal persistent an.
Grüße,
Harald
|
|
|
Bug |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 11
|
|
|
|
Anmeldedatum: 17.12.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2013b
|
|
|
|
|
|
Verfasst am: 27.05.2014, 09:58
Titel:
|
|
Ah, sehr gut. Das löst das Problem erstmal. Vielen Dank schonmal!
Der neue Code lautet:
Jetzt bekommt mein nachgeschalteter Sättigungsblock nur leider nen Problem:
"Simulink cannot solve the algebraic loop containing 'Problem_mit_Saettigung/Sättigung' at time 0.0 using the TrustRegion-based algorithm due to one of the following reasons: the model is ill-defined i.e., the system equations do not have a solution; or the nonlinear equation solver failed to converge due to numerical issues."
Das Problem muss irgendwas mit dem MATLAB-Function-Block zu tun haben. Tausche ich den MATLAB-Function-Block durch einen MATLAB-Function-Block mit nachgeschaltetem Integrator, habe ich das Problem nicht.
Ich hab das aktuelle Problem mal vereinfacht nachgebaut.
Beschreibung: |
|
Download |
Dateiname: |
Problem_mit_Saettigung.slx |
Dateigröße: |
16.89 KB |
Heruntergeladen: |
410 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 27.05.2014, 12:00
Titel:
|
|
Hallo,
das hat weniger mit dem MATLAB-Function Block zu tun als damit, dass du eine Rückführung ohne verzögerndes Element (Integrator, Unit Delay etc.) hast.
awu ist ja von I abhängig, du hast also
I = fcn(..., awu) und somit
I = fcn(..., I)
und das geht so nicht.
Grüße,
Harald
|
|
|
Bug |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 11
|
|
|
|
Anmeldedatum: 17.12.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2013b
|
|
|
|
|
|
Verfasst am: 27.05.2014, 15:43
Titel:
|
|
Ah, Danke!
Nun habe ich einfach alles in den Fcn-Block geschrieben, da hab ich grade weniger Probleme mit
Grüße
|
|
|
|
|
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.
|
|