|
|
Handle eines Blockes, der eine Matlab Function aufruft |
|
Ade |
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 12.10.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.02.2017, 10:55
Titel: Handle eines Blockes, der eine Matlab Function aufruft
|
|
|
|
|
Ich simuliere eine Recyclinganlage. Dazu habe ich eine Bibliothek mit Masked Blocks erstellt, die die verschiedenen Module (Sortierung, Buffer,...) repräsentieren. Jedes Modul hat eine Ausfallwahrscheinlichkeit, modelliert durch stochastisch auftretende Discrete Events. Falls ein Modul ausfällt, ruft ein Triggered Subsystem (innerhalb des ausfallenden Masked Block) eine Interpreted Matlab Function auf. Diese Funktion kommuniziert den Ausfall an die im Prozess vorangehenden Module (diese dürfen kein weiteres Material liefern, damit das ausgefallene Modul nicht "überläuft"). Dazu wird ein Parameter 'status' der ausgefallenen und der vorangehenden Masked Blocks auf 0 gesetzt. Die grundlegende Teil des Codes ist also:
Das wird dann vereinfacht gesagt mit einer Schleife durch alle Blöcke exerziert. Soweit funktioniert das auch ganz gut - mein einziges Problem ist: Wenn die Funktion aufgerufen wird, muss sie natürlich wissen, von welchem Block sie gerufen wurde (also, welches Modul ausgefallen ist). 'gcb' gibt mir allerdings nur den zuletzt angeklickten Block. Gibt es eine Möglichkeit, den Handle des zuletzt aktiven Blocks, oder des rufenden Blocks zu übergeben? (Über den 'Parents' Parameter könnte ich dann ja den Handle der Modul-Maske bestimmen).
Danke schonmal für die Hilfe! Ich poste auch gerne den Rest meines Codes oder Bilder meines Models, wenn das zum Verständnis helfen würde!
Mit bestem Gruß, Ade.
|
|
|
|
|
Ade |
Themenstarter
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 12.10.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.02.2017, 07:37
Titel:
|
|
Ok, for everyone stumbling upon this:
For the mask that contains the caller of the Matlab Interpreted Function, in the mask editor I define a parameter 'this_block' (turn visibility off), that I initialize in the Initialisation pane using
parent = get_param(gcb,'Parent');
set_param(gcb, 'this_block','Parent')
Since this masked block (responsible for modelling the failure and its upstream communication) is itself used in another masked block also present in the library (responsible for modeling the module's behaviour), I also had to check "Allow library blocks to modify it's contents" in the mask editor Inititlization pane of the parent's mask. The parameter 'this_block' is then handed over as one of the input arguments of the called function (in my case, status_communication(u, this_block)).
|
|
|
|
|
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.
|
|