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

Initialisierung einer Maske, Problem mit set_param

 

Volker81k
Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 12.05.09
Wohnort: Zürich
Version: R2006a
     Beitrag Verfasst am: 19.06.2009, 16:31     Titel: Initialisierung einer Maske, Problem mit set_param
  Antworten mit Zitat      
Hallo liebe Leidensgenossen,

um euch das WE zu verschönern hier noch eine kleine Nuss zum Knacken. Folgendes Problem:

In einem Subsystem befinden sich zwei From-Blöcke. Der eine von ihnen bekommt immer einen Minuten-Impuls (Imp_min).

Der andere From-Block bekommt einen Impuls, der von der äusseren Beschaltung abhängt. Meine Idee ist, dass über ein PullDown-Menü in der Maske des Subsystem die Impulsart ausgewählt werden kann (h, d, w, etc.) und sich damit das Tag des From-Blocks ändert. Das funktioniert bisher nur für den angezeigten Namen des Subsystems.

Folgender Code steht dafür im Initialization Menü der Maske:
Code:

% Auswerten der Impulsart aus dem PullDown-Menü
switch PullDown
    case 1
        StrPD = 'h';
    case 2
        StrPD = 'd';
    case 3
        StrPD = 'w';
    case 4
        StrPD = 'm';
    case 5
        StrPD = 'y';
end

% neue Impulsart festlegen
TagNew = ['Imp_' StrPD];              

% Pfade der beiden From-Blöcke ermitteln
FromPath = find_system(gcb,'LookUnderMasks','all','BlockType','From');

% Aktuelles Tag von From-Block aus Pfad 1 auslesen
TagOld = get_param(FromPath(1), 'GoToTag');

% Imp_min muss bestehen bleiben, also bei gleichem String den anderen Pfad ändern
if strcmp(TagOld, 'Imp_min')
    set_param(FromPath(2), 'GoToTag', TagNew);
else
    set_param(FromPath(1), 'GoToTag', TagNew);
end

% Ende der Initialisierung


Bei der Ausführung wird mir dieser Fehler angezeigt:
MATLAB error message: Error using ==> set_param
Invalid Simulink object specifier.

Die seperate Ausführung des Codes im CommandWindow funktioniert.
Kann es sein das bei der Initilisierung eines Blocks keine änderung der Block-Bezeichnung mehr möglich ist?

Danke fürs Lesen und eure Hilfe!
Ein schönes WE
Volker
Private Nachricht senden Benutzer-Profile anzeigen


Volker81k
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 12.05.09
Wohnort: Zürich
Version: R2006a
     Beitrag Verfasst am: 20.06.2009, 13:30     Titel:
  Antworten mit Zitat      
Ich habe den Fehler gefunden. Bei der Abfrage der Systempfade mit find_system werden Zellen übergeben, die aber von dem set_param Befehl nicht verarbeitet werden können. Es muss also eine Umwandlung in String erfolgen:
Code:

...

% Pfade der beiden From-Blöcke ermitteln
FromPath = find_system(gcb,'LookUnderMasks','all','BlockType','From');

% Umwandeln der Zellen in String
FromPath1 = char(FromPath(1));
FromPath2 = char(FromPath(2));

% Aktuelles Tag von From-Block aus Pfad 1 auslesen
TagOld = get_param(FromPath1, 'GoToTag');

% Tag des From-Blocks ändern
if strcmp(TagOld, 'Imp_min')
    set_param(FromPath2, 'GoToTag', TagNew);
else
    set_param(FromPath1, 'GoToTag', TagNew);
end

% Ende der Initilisierung -------------------------------------------------
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Volker81k
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 12.05.09
Wohnort: Zürich
Version: R2006a
     Beitrag Verfasst am: 30.06.2009, 15:11     Titel:
  Antworten mit Zitat      
Kurzer Nachtrag:
Ein Kollege gab mir den Hinweis das bei den Cell-Arrays nicht mit runden sondern mit geschweiften Klammern gearbeitet werden muss, wenn man die einzelnen Zellen auslesen will Rolling Eyes

So würde der Code aus meinem ersten Post sich nur geringfügig ändern:

Code:

...

% Pfade der beiden From-Blöcke ermitteln
FromPath = find_system(gcb,'LookUnderMasks','all','BlockType','From');

% Aktuelles Tag von From-Block aus Pfad 1 auslesen
TagOld = get_param(FromPath{1}, 'GoToTag');

% Tag des From-Blocks ändern
if strcmp(TagOld, 'Imp_min')
    set_param(FromPath{2}, 'GoToTag', TagNew);
    set_param(FromPath{2}, 'BackgroundColor', Color);
else
    set_param(FromPath{1}, 'GoToTag', TagNew);
    set_param(FromPath{1}, 'BackgroundColor', Color);
end

% Ende der Initilisierung -------------------------------------------------
 
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.