|
rocknrolli |
Forum-Anfänger
|
|
Beiträge: 22
|
|
|
|
Anmeldedatum: 11.01.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.4.0 (R2007a) für Mac
|
|
|
|
|
|
Verfasst am: 11.01.2010, 19:52
Titel: set_param() und Fcn
|
|
|
|
|
Hallo,
ich habe da ein Problem mit set_param():
Ich habe im Simulink-Modell Formeln mit mehreren Konstante. Die würde ich gerne in einem Script-File definieren und dann mittels set_param() an mein Simulink-Modell übergeben.
Dort benutze ich Fcn-Bausteine (aus User-defined Functions).
Dass klappt aber irgendwie nicht.
Ich hab mal ein (ziemlich billiges) Beispiel geschrieben:
Ein Sinussignal soll mit einer Variable (im Script-File k, im Modell i) multipliziert und mit einem Scope ausgeben werden.
Meine Funktion:
Mein Modell:
siehe Anhang
Ich bekomme folgende Fehlermeldung:
??? Error using ==> set_param
Fcn block does not have a parameter named 'i'.
Error in ==> fcnbeispiel at 4
set_param('fcn_beispiel/Fcn', 'i', kString);
Wie kann ich das machen?
Schon mal vielen Dank für die Antwort!
Beschreibung: |
|
Download |
Dateiname: |
fcnbeispiel.m |
Dateigröße: |
141 Bytes |
Heruntergeladen: |
801 mal |
Beschreibung: |
|
Download |
Dateiname: |
fcn_beispiel.mdl |
Dateigröße: |
16.34 KB |
Heruntergeladen: |
758 mal |
_________________
7.4.0 (R2007a) für Mac
|
|
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.01.2010, 15:35
Titel:
|
|
ganz einfach
die Property in deinem Block heisst nicht 'i' sondern 'Expr' also:
Gruß Lord nibbler
|
|
|
rocknrolli |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 22
|
|
|
|
Anmeldedatum: 11.01.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.4.0 (R2007a) für Mac
|
|
|
|
|
|
Verfasst am: 21.01.2010, 11:52
Titel:
|
|
Vielen Dank für die Antwort!
Und dann hab ich gleich eine neue Frage:
Was ist denn, wenn ich zwei Variablen in einem Fcn-Block habe? Heißt dann die eine "Expr1" und die andere "Expr2"?
_________________
7.4.0 (R2007a) für Mac
|
|
|
rocknrolli |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 22
|
|
|
|
Anmeldedatum: 11.01.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.4.0 (R2007a) für Mac
|
|
|
|
|
|
Verfasst am: 06.02.2010, 20:59
Titel:
|
|
Hallo,
ich komm grad nicht weiter...
In meinem Modell verwende ich einige physikalische Formeln mit mehreren Konstanten. Für jede Berechnung habe ich einen fcn-Block genommen. Ich will die Konstanten in einem Script-File festlegen, also mit set_param die Werte an die Blöcke übergeben.
In einem Fcn-Block steht z. B.: u*n0*A
(Hier soll die Leistung eines Sonnenkollektors berechnet werden: u (Eingangsgröße) ist die Bestrahlungsstärke, n0 der Wirkungsgrad und A die Fläche)
Wenn ich in der MATLAB-Oberfläche mit get_param die Parameter dieses Blockes aufrufe wird mir folgendes angezeigt:
Gibts es eine Möglichkeit, mehr als einen Parameter zu übergeben?
Viele Grüße,
Daniel
_________________
7.4.0 (R2007a) für Mac
|
|
|
hoderlump |
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 08.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.02.2010, 13:36
Titel:
|
|
Das wär doch dann:
Greetz
edit: kosmetisch
|
|
|
Zenon |
Forum-Guru
|
|
Beiträge: 292
|
|
|
|
Anmeldedatum: 20.01.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.02.2010, 14:32
Titel:
|
|
Für mich klingt das nach ziemlich vielen Parametern...
Wieso schreibst Du nicht einfach alle Konstanten mit ihrem Wert ins m-File und rufst den Spaß dann unter File -> Model Properties -> Callback -> InitFcn auf. Dann solltest Du die Konstanten einfach so in den Funktionsblock schreiben können und die Werte werden am Start der Simulation automatisch übergeben.
Würde das die Sache nicht viel einfacher machen?
|
|
|
Jazzer |
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 28.03.10
|
|
|
|
Wohnort: HH
|
|
|
|
Version: 2009b 32bit
|
|
|
|
|
|
Verfasst am: 06.04.2010, 10:12
Titel:
|
|
rocknrolli hat Folgendes geschrieben: |
Vielen Dank für die Antwort!
Und dann hab ich gleich eine neue Frage:
Was ist denn, wenn ich zwei Variablen in einem Fcn-Block habe? Heißt dann die eine "Expr1" und die andere "Expr2"? |
Ich mach das immer so:
Ich klicke auf den Simulink Block dessen Parameter ich mit set_param ändern möchte.
Dann schreib ich in das Command Fenster:
Jetzt bekommst Du den Pfad zu diesem Block angezeigt.
Danach tippt man einfach:
und erhält alle Parameterfelder angezeigt.
Einfach anzunehmen deas nächste Feld hieße Expr2 ist ja zu waage.
Manchmal ist z.Bsp: Value klein geschrieben und manchmal groß.
mit 'DialogParameters' muss man dann nicht mehr probieren oder raten.
|
|
|
Phate |
Forum-Guru
|
|
Beiträge: 283
|
|
|
|
Anmeldedatum: 09.11.09
|
|
|
|
Wohnort: Stuttgart
|
|
|
|
Version: R2008b
|
|
|
|
|
|
Verfasst am: 06.04.2010, 19:30
Titel:
|
|
Hi,
Ich mein das geht schon mit get_param. Aber die einfachere und meiner
Meinung nach auch übersichtlichere Variante ist ein mFile in dem alle Startwerte liegen und dieses mit initfct aufrufen. Vorallem wenn man mal mehr als 20 Paramter und Anfangswerte hat in einem Komplexen Model.
Grüße
|
|
|
|
|
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.
|
|