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

Handle eines Blockes, der eine Matlab Function aufruft

 

Ade
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 12.10.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.02.2017, 11:55     Titel: Handle eines Blockes, der eine Matlab Function aufruft
  Antworten mit Zitat      
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:

Code:
set_param(gcb, 'status', num2str(status));
PortConnectivity = get_param(gcb,'PortConnectivity');
sources = PortConnectivity.SrcBlock;


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.
Private Nachricht senden Benutzer-Profile anzeigen


Ade
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 12.10.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.02.2017, 08:37     Titel:
  Antworten mit Zitat      
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)).
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.