|
|
Simulink-Blöcke deaktivieren |
|
Raketenmaid |
Forum-Fortgeschrittener
|
|
Beiträge: 58
|
|
|
|
Anmeldedatum: 28.09.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.02.2013, 18:06
Titel: Simulink-Blöcke deaktivieren
|
|
|
|
|
Problemstellung:
Je nach vom Benutzer festzulegender Option soll anders gerechnet werden (in meinem Fall, einmal Werte aus einer Datei nehmen oder sie berechnen, je nachdem, was der Benutzer einstellt).
Problem:
Es funktioniert recht gut bei Verwendung eines Switches. Allerdings rechnet Simulink auch trotzdem den durch die Option irrelevant gewordenen Block durch. Also wenn ich z.B. sage, das Modell soll die Daten aus der Datei nehmen, werden die Daten dennoch weiterhin berechnet, nur eben nicht weiter gegeben. Dies führt dazu, dass ich durchaus Fehler bekomme, weil die im irrelevanten Block berechneten Daten ungültige Werte annehmen (die ich aber nicht nutze).
Was ich gern hätte
Eigentlich müsste es einen Switch geben, der "umgedreht" zu dem, der in Simulink vorhanden ist, funktioniert, d.h. dass das Signal gar nicht in den irrelevanten Block geht, dieser sozusagen umgangen wird. Oder noch besser deaktiviert wird, so dass die "Routinen" innerhalb dieses Blocks gar nicht erst ausgeführt werden, wenn dieser Teil unnötig ist.
Warum ich folgende Lösung nicht mag:
Ich könnte natürlich einfach im Falle des Einlesens der Daten aus einem File Dummy-Werte in den Block schicken, für die der Block korrekt rechnet. Diese Lösung kommt aber nicht wirklich in Frage, weil die Anzahl der Eingangsdaten in den Block immens groß ist und man diese nicht pauschal mit einem Wert belegen kann, so dass der Block einwandfrei funktioniert.
Meine Frage an Euch: Habt Ihr mir Tipps oder Hinweise, wie ich diesen Block benutzergesteuert umgehen oder noch viel besser deaktivieren kann?
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 15.02.2013, 16:12
Titel:
|
|
Hallo,
ich würde dafür "enabled subsystems" (aus Ports & Substems) verwenden.
Das Entscheidungssignal würde dann zwischen 0 und 1 bzw. für die andere Implementierung zwischen 1 und 0 hin- und herspringen.
Alternativ kann man ein "configurable subsystem" (auch aus Ports & Substems) verwenden. Dann kann allerdings nicht während der Simulation umgeschaltet werden.
Grüße,
Harald
|
|
|
Raketenmaid |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 58
|
|
|
|
Anmeldedatum: 28.09.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 15.02.2013, 17:55
Titel:
|
|
Vielen Dank, Harald.
Ich habe mich bereits ein wenig mit dem Enable Block auseinander gestzt. Aber zu meiner Schande muss ich zugeben, dass mir der Einsatz dieses Blocks absolut schleierhaft ist. Ich kann einen Ausgabeport mir anzeigen lassen, wie ich aber diesen Block anspreche, um ihm zu sagen, wann er das zugehörige Subsystem disabeln oder enabeln soll, verstehe ich nicht. Die Matlab-Hilfe (über F1 oder doc) hat mir da leider gar nicht weiter geholfen
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 15.02.2013, 20:54
Titel:
|
|
Hallo,
das aus der Ferne zu erklären fällt mir schwer.
Ich habe mal ein Beispiel gemacht, in dem das Pulssignal verwendet wird um zu entscheiden, ob die Sinusschwingung durchgelassen oder mit 2 multipliziert werden soll.
Vor allem auf die reset-Einstellung in den jeweiligen Enable- und Outportblöcken der Subsysteme achten.
Grüße,
Harald
Beschreibung: |
|
Download |
Dateiname: |
enable_switch.mdl |
Dateigröße: |
34.24 KB |
Heruntergeladen: |
658 mal |
|
|
|
Raketenmaid |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 58
|
|
|
|
Anmeldedatum: 28.09.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.02.2013, 12:56
Titel:
|
|
Vielen Dank, Harald!
Dein Beispiel hat mir sehr geholfen, die Funktionsweise zu verstehen.
Ich hoffe, mir hilft das Enablen weiter, obwohl ich nach wie vor befürchte, dass Simulink auch den disabelten Block durchrechnet, nur einfach das Signal nicht weiter gibt. Probiere ich aber gleich mal aus
Notfalls muss ich halt doch den Weg über Configurable Systems gehen (wovor mir graut).
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 18.02.2013, 13:01
Titel:
|
|
Hallo,
Zitat: |
obwohl ich nach wie vor befürchte, dass Simulink auch den disabelten Block durchrechnet, nur einfach das Signal nicht weiter gibt. |
Das würde mich sehr wundern, da die enabled Subsystems genau dafür gedacht sind.
Die configurable Subsystems sind halb so schlimm. Die Anleitung in der Doku ist meines Erachtens recht klar.
http://www.mathworks.com/help/relea.....onfigurablesubsystem.html
Wenn der Benutzer für die gesamte Laufzeit einer Simulation eine Konfiguration auswählen soll, ist das meines Erachtens auch der elegantere Weg. Die enabled Subsystems sind vor allem dann interessant, wenn Simulink diese Entscheidung selbst treffen soll, und dann kann sie sich auch während einer Simulation ändern.
Grüße,
Harald
|
|
|
|
|
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.
|
|