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

library in simulink

 

guguli
Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 04.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.07.2013, 14:27     Titel: library in simulink
  Antworten mit Zitat      
Hi zusammen,

Ich möchte gerne Libraries benutzen. hab mich auch schlau gelesen hab aber etwas noch nicht ganz verstanden.
Also ich hab eine Labrary erstellt mit 7 verschiedene Subsysteme dadrin.
Nun möchte ich aus der GUI 2 diesen Subsysteme hochladen so dass die mit ein anderen verbunden werden. Das eine Subsystem hat ein Outout, den das zwete Subsystem als Input benutzt. Ich hab in meiner GUI radioButtons, die die Auswahl ermöglichen.
erste Frage:
der referece block, was genau macht der.
2te: wie kann ich die beide Subsysteme mit ein andern verbinden????

THX
Private Nachricht senden Benutzer-Profile anzeigen


knilumis_baltaM
Forum-Century

Forum-Century


Beiträge: 241
Anmeldedatum: 20.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2013, 06:27     Titel:
  Antworten mit Zitat      
Wie man Blöcke miteinander verbindet ist unter folgendem Link beschrieben:

http://blogs.mathworks.com/seth/201.....-models-with-matlab-code/
Private Nachricht senden Benutzer-Profile anzeigen
 
guguli
Themenstarter

Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 04.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2013, 10:18     Titel:
  Antworten mit Zitat      
Hi, danke für die Antwort.

Gibt es einen Befehl, womit man die Existenz eines Blockes überprüfen kann.
Also ich will so wasmachen:

if exist (sys/blockname)
delete_block(sys/blockname)


THX
Private Nachricht senden Benutzer-Profile anzeigen
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 31.07.2013, 10:37     Titel:
  Antworten mit Zitat      
Hallo,
du kannst dir über find_system eine Liste aller Blöcke (oder mit zusätzlichen angaben auch nur spezielle 'Blöcke) im (Sub-)System zurückgeben lassen.
Diese Liste kannst du dann entsprechend durchsuchen.

Beispiel:
Code:
blockList = find_system(bdroot, 'BlockType','Constant')

Würde dir alle Constant-Blöcke im gesamten System zurückgeben.
Statt bdroot kannst du auch ein Subsystem definieren.
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
knilumis_baltaM
Forum-Century

Forum-Century


Beiträge: 241
Anmeldedatum: 20.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2013, 10:40     Titel:
  Antworten mit Zitat      
Du kannst
Code:

benutzen.

Könntest dann z.B. so benutzen:
Code:
x = find_system('ModelName','Regexp','on','Name','BlockName');
if isempty(x)
    disp('Block nicht gefunden.');
else
    disp('Block gefunden.');
end
Private Nachricht senden Benutzer-Profile anzeigen
 
guguli
Themenstarter

Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 04.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2013, 12:00     Titel:
  Antworten mit Zitat      
wie kann ich in einem Modell ein Subsystem finden???
Code:
find_system(ModulareSimulation, 'Subsystem','Skull');


Also mein Modell heisst ModulareSimulation, und Skull heisst das Subsystem.
So wie oben kriege ich diese Fehlermedlung:
Invalid Simulink object specifier
Private Nachricht senden Benutzer-Profile anzeigen
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 31.07.2013, 12:15     Titel:
  Antworten mit Zitat      
Hast du dir die Hilfe zu find_system angesehen und das ausführliche Beispiel von knilumis_baltaM?
Es sind (bis auf den Pfad) immer paarige Anweisungen, die du hinschreiben musst. 'Blocktype','gesuchter_Typ'
'Name','gesuchter_Name'
Stings kommen dabei immer in Hochkommata, also auch dein Modellname.

Code:
x = find_system('ModulareSimulation','Regexp','on', 'BlockType','SubSystem','Name','Skull');

_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
guguli
Themenstarter

Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 04.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2013, 13:24     Titel:
  Antworten mit Zitat      
ahh thx.

Angenommen ich finde alles subsystme, wie kann ich die denn alle löschen.
Code:
blockexist = find_system('ModulareSimulation','Regexp','on', 'BlockType','SubSystem');
    if isempty(blockexist)
        add_block('modularLib/Skull', 'ModulareSimulation/Skull')
    else
        delete_block('')
        add_block('modularLib/Skull', 'ModulareSimulation/Skull')
    end


wie kann ich denn alle blocke in meinem Modell löchen???
also mit delete_block geht nur ein bestimmtes block. ich möchte aber alle blöcke in "blockexist "
Private Nachricht senden Benutzer-Profile anzeigen
 
knilumis_baltaM
Forum-Century

Forum-Century


Beiträge: 241
Anmeldedatum: 20.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2013, 13:57     Titel:
  Antworten mit Zitat      
Also blockexist ist ein Cell Array und da sind alle Namen von den Subsystemen in deinem Modell gespeichert. Du kannst also nacheinander die Namen in blockexist auslesen und dann löschen. In meinem Beispiel hatte ich ja ein ganz bestimmtes Modell gesucht und in dem Fall kann es gefunden werden oder nicht, also hat die Abfrage nach isempty gepasst. Hier musst du eben alles gefundene auswerten.

Als schnelle/unsaubere Lösung könntest du für alle Subsysteme löschen folgendes nehmen:

Code:
blockexist = find_system('ModulareSimulation','Regexp','on', 'BlockType','SubSystem');
if ~isempty(blockexist)
    for i=1:length(blockexist)
        try
            delete_block(blockexist(i,1));
        catch me
        end
    end
end


Der Try & Catch Teil ist dafür da, um nicht zwischen Subsystems und Subsubsystems zu unterscheiden.
Private Nachricht senden Benutzer-Profile anzeigen
 
guguli
Themenstarter

Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 04.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2013, 14:01     Titel:
  Antworten mit Zitat      
danke, hab das eben anderes gelöst Smile....
MIr ist dann aufgefallen dass es so wie ich es beschrieben hatte nicht so ganz hin haut. Smile

eine andere Frage: Wie kann ich mit add_line() zwischen zwei subsystem machen. ich hab gelesen dass mit add_line nur in einem Subsystem funktioniert. Also ich add zwei Blöcke (Subsysteme) dann will ich sie verbinden. wie geht das?????
Private Nachricht senden Benutzer-Profile anzeigen
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 31.07.2013, 14:23     Titel:
  Antworten mit Zitat      
Ließ doch bitte mal die Hilfe zu add_line. ( http://www.mathworks.de/de/help/simulink/slref/add_line.html )

Aus dem dort beschriebenen Beipiel kannst du erkennen, dass du einfach nur
Code:
add_line('Modellname','SubsystemName1/OutPortNummer' ,'SubSystemName2/InPortnummer')
hinschreiben musst.
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
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.