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-Blöcke deaktivieren

 

Raketenmaid
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 28.09.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.02.2013, 18:06     Titel: Simulink-Blöcke deaktivieren
  Antworten mit Zitat      
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?
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.02.2013, 16:12     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Raketenmaid
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 28.09.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.02.2013, 17:55     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.02.2013, 20:54     Titel:
  Antworten mit Zitat      
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

enable_switch.mdl
 Beschreibung:

Download
 Dateiname:  enable_switch.mdl
 Dateigröße:  34.24 KB
 Heruntergeladen:  658 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Raketenmaid
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 28.09.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.02.2013, 12:56     Titel:
  Antworten mit Zitat      
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 Smile

Notfalls muss ich halt doch den Weg über Configurable Systems gehen (wovor mir graut).
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.02.2013, 13:01     Titel:
  Antworten mit Zitat      
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
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.