|
|
Aus pop-up Parameter setzen |
|
Deniz |
Forum-Fortgeschrittener
|
|
Beiträge: 90
|
|
|
|
Anmeldedatum: 31.07.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.12.2010, 22:25
Titel: Aus pop-up Parameter setzen
|
|
Guten Abend an alle!
Ich erstelle mir gerade ein GUI, das ich mit einem Simulink-Modell verknüpfe.
Ich habe jetzt ein Pop-up Button eingebaut. Je nachdem welchen Fall ich auswähle, möchte ich meinem Modell bestimmte Werte übergeben. Es gelingt mir jedoch nicht, die Parameter zu übergeben.
In der Callback Function des Pop-up's habe ich es mit Variationen des set-Befehls probiert, aber anscheinend nie die richtige Syntax gefunden.
z.B.
set('SimulinkModelName','ParameterName',WertDesParameters);
als Erklärung. ich habe z.b. einen Wert x, der je nach case 1 oder case 2 den Wert x=5 oder x=7 annehmen soll im Model 'Rechnung'.
meine Idee war:
case1
set('Rechnung','x',5)
case2
set('Rechnung','x',7)
otherwise
end
so erkennt matlab das 'x' jedoch nicht.
Kann mir jemand sagen, wie der Befehl richtig lautet?
Vielen Dank für die Hilfe!
MfG
Deniz
|
|
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 08.12.2010, 22:46
Titel: Re: Aus pop-up Parameter setzen
|
|
Hallo Deniz,
ich habe noch nicht mit Simulink gearbeitet. Aber heißt es nicht "set_param" statt "set"?
Gruß, Jan
|
|
|
Deniz |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 90
|
|
|
|
Anmeldedatum: 31.07.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.12.2010, 22:55
Titel:
|
|
Hi Jan,
ich habe es auch mit set_param probiert gehabt. hatte auch nicht funktioniert
Es kommt immer der Fehler
Undefined function or variable
|
|
|
_Peter_ |
Moderator
|
|
Beiträge: 537
|
|
|
|
Anmeldedatum: 08.12.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.10, 2010a
|
|
|
|
|
|
Verfasst am: 09.12.2010, 08:40
Titel:
|
|
Hallo Deniz,
möchte ich den Wert eines Konstant-Blocks verändern, nutze ich folgenden Befehl:
Modelname: Test
Blockname: Constant
Anzunehmender Wert: 4
Befehl dazu:
_________________
Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
|
|
|
Deniz |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 90
|
|
|
|
Anmeldedatum: 31.07.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.12.2010, 12:15
Titel:
|
|
Hallo Peter,
danke erst mal für die Antwort!
Ich habe es ausprobiert, auch variiert, aber er erkennt meine Konstante einfach nicht.
Ich habe mal ein Bild meines Simulinks-Modell angefügt (v.a. wegen dem Pfad der Konstante)
Der Fehler lautet:
??? Error using ==> Clausius_Rankine_Kreisprozess>Start_Callback at 219
Error evaluating parameter 'Value' in 'blabla/Pumpe/Dichte_1/Constant2':
Undefined function or variable 'C_rho_fl'.
und mein Befehl:
In case2 werden die gleichen Befehle stehen, nur mit anderen Werten.
Zudem sieht es hierbei so aus, als müsste ich meine Variable an jedem Ort extra definieren, damit er sie erkennt.
Ist es auch möglich, dass meine Variablen nur durch die Angabe meines Simulink-Models erkannt werden?
In meiner Pushbutton-Funktion werden meine Variablen ja auch allgemein erkannt.
MfG
Deniz
Beschreibung: |
|
Download |
Dateiname: |
blabla.jpg |
Dateigröße: |
60.93 KB |
Heruntergeladen: |
451 mal |
|
|
|
_Peter_ |
Moderator
|
|
Beiträge: 537
|
|
|
|
Anmeldedatum: 08.12.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.10, 2010a
|
|
|
|
|
|
Verfasst am: 09.12.2010, 12:26
Titel:
|
|
Hallo Deniz,
kurz und knapp... 3 Punkte:
- Du musst den Blockname auch im Pfad angeben.
- Der Wert muss als String übergeben werden.
- Und die Variable C_rho_fl nicht auskommentieren, dann kennt er sie ja logischerweise auch nicht
also entweder machst du das so:
oder so:
_________________
Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
|
|
|
Deniz |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 90
|
|
|
|
Anmeldedatum: 31.07.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.12.2010, 14:42
Titel:
|
|
Hallo Peter,
habe deinen Vorschlag glaube ich auch schon probiert gehabt und habe es gerade nochmal versucht, es klappt so aber auch nicht.
Es kommt immer noch der Fehler:
??? Error using ==> Clausius_Rankine_Kreisprozess>Start_Callback at 219
Error evaluating parameter 'Value' in 'blabla/Pumpe/Dichte_1/Constant2':
Undefined function or variable 'C_rho_fl'.
in Zeile 219 wird mein Simulink Modell aufgerufen mit dem Befehl
Wenn ich die Variablen in meiner Pushbutton-Function definiere, funktioniert auch alles wunderbar. Jedoch möchte ich ja eine Unterscheidung haben, damit man nicht per Hand die einzelnen Variablen verändern muss, wenn man mit einem anderen Medium in der Pumpe arbeiten möchte.
Ich weiß auch nicht, warum das alles nicht funktioniert...
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 09.12.2010, 15:06
Titel:
|
|
Hallo Deniz,
Versuche doch mal den Debugger nach der Ursache des Problems suchen zu lassen:
Dann das Programm laufen lassen. Matlab stoppt dann, wenn der Fehler auftritt und Du kannst in Ruhe heraus finden, wieso die fehlende Variable nicht gefunden wird.
Gruß, Jan
|
|
|
Deniz |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 90
|
|
|
|
Anmeldedatum: 31.07.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.12.2010, 15:22
Titel:
|
|
Also er zeigt mir dann einen Fehler beim Aufrufen des Simulink-Models (Befehl sim(...))
Aber wie gesagt, wenn ich die Variablen in der Pushbutton function definiere gibt es keinen fehler, nur bei der Definition im Pop-up.
Deswegen wüsste ich auch nicht, was ich ändern sollte am Befehl sim.
Werde aber mal noch weiterschauen.
Gruß
Deniz
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 09.12.2010, 16:40
Titel:
|
|
Hallo Deniz,
Dann vermute ich, steht im Struct "options" irgendwo der String 'C_rho_fl', obwohl dort der Wert der Variablen C_rho_fl als String stehen sollte. Wenn dann Simulink versucht den Wert zu setzen, kann er mit C_rho_fl nichts anfangen, da diese Variable innerhlab des Models nicht bekannt ist.
Lösung: Das entsprechende Feld nicht als 'C_rho_fl' definieren, sondern als (mit geeignetem Format, ich nehme mal %g als Beispiel):
Gruß, Jan
|
|
|
Deniz |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 90
|
|
|
|
Anmeldedatum: 31.07.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.12.2010, 17:00
Titel:
|
|
Hi Jan!
Also den Befehl sprintf kenne ich nicht. Und ich weiß leider auch nicht welches "Feld" du meinst.
Wenn es nicht zu viele Umstände macht, könntest du es mir noch kurz erläutern bitte?
V.a. auch, wo ich den Befehl einfügen soll...und benötige ich dann den set_param-Befehl noch?
Dankeschön!
Deniz
|
|
|
Deniz |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 90
|
|
|
|
Anmeldedatum: 31.07.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.12.2010, 19:15
Titel:
|
|
So, ich habe es jetzt endlich hinbekommen.
Ich darf die Fallunterscheidung nicht in der popup-function machen sondern setze die Fallunterscheidung in die Pushbutton-Function. Da muss man dann auch nicht mit dem set_param Befehl setzen, sondern einfach
Variablenname=Variablenwert.
Vielen Dank an alle für euere Bemühungen!
Deniz
|
|
|
|
|
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 - 2025
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.
|
|