|
|
How to: Link .m File to Subsystem? |
|
Bernd |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.08.2012, 14:56
Titel: How to: Link .m File to Subsystem?
|
|
Hallo!
Ich habe in Simulink ein Subsystem, in dessen z.B. ein Widerstandsteiler enthalten ist. Nun möchte ich dieses Subsystem 16 mal instanzieren mit den Namen "Load_1" bis "Load_16". Bei jedem dieser 16 Instanzen soll es nun möglich sein, zwischen 3 verschiedene Lasttypen zu wählen. Lasttyp Nr. 1 soll z.B. R1=1k und R2=1k sein, Lasttyp Nr. 2: R1=1k, R2=2k, Lasttyp Nr. 3: R1=1k, R2=4k. Die ganze Simulink Zeichnung (.mdl Files), wo die 16 Instanzen drinnen sind als auch das Subsystem mit dem Widerstandteiler möchte ich read-only haben, dass man die Struktur nicht ändern kann. D.h. ich möchte in einem .m File angeben können, von welchem Lasttyp "Load_1" bis "Load_16" ist und Matlab setzt automatisch die Richtigen Widerstandwerte ein.
Wie löse ich das am besten? Habe schon viel gegoogelt, nichts hat für mich als ziemlicher Neuling funktioniert.
Wäre sehr dankbar über jegliche Hilfe!
|
|
|
|
|
coopers |
Forum-Anfänger
|
|
Beiträge: 10
|
|
|
|
Anmeldedatum: 27.09.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.08.2012, 19:34
Titel:
|
|
Hallo Bernd
Hier mal ein Denkanstoß:
Du schreibst dein m-file in dem du die unterschiedlichen Lastfälle definierst und die Wiederstände entsprechend initialisiert werden.
Aus dem gofile wird die Simulation gestartet.
In deinem Modell müssen die Parameter dann natürlich entsprechen den Parametern im gofile benannt sein.
Muss das ganze denn wirklich schreibgeschützt sein?
Reicht es nicht auch vllt das Subsystem als Custom Library zu Speichern und mit einer Eingabemaske zu versehen?
Hierzu vllt mal an dieser Stelle noch ein paar weitere Infos:
http://www.mathworks.de/products/simulink/description2.html
Gruß, Coopers
|
|
|
Bernd |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.08.2012, 09:18
Titel:
|
|
Hallo Coopers!
Ja, im Prinzip sowas, nur möchte ich diese function gemeinsam mit demjenigen grafischen Simulink-Block "mitgeben", der die Widerstände enhält und icht im Toplevel, das die Simulation aufruft!! Wie geht das?
Bitte um Antwort. Vielen Dank im Voraus,
Bernd
|
|
|
cybbi |
Forum-Fortgeschrittener
|
|
Beiträge: 84
|
|
|
|
Anmeldedatum: 23.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: Alle
|
|
|
|
|
|
Verfasst am: 06.08.2012, 09:43
Titel:
|
|
Ich bin auch der Meinung, dass eine eigene Libary hier das beste ist. Über den entsprechenden Block lässt sich dann eine Maske legen (Rechts-Klick auf das zugehörige Subsystem --> Create Mask). Wenn du dann anschließend immer noch was skriptgesteuertes brauchst, kannst du die entsprechenden Funktionalitäten unter den Callback-Funktionen innerhalb der Maske unterbringen.
|
|
|
Bernd |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.08.2012, 10:52
Titel:
|
|
H cybbi!
Ja, genau sowas suche ich. Das mit Create Mask ist mir klar, darin übergebe ich ob die Last vom Typ1, 2, od. 3 sein soll. Nur wie mache ich eben den "if Typ1 => R1=1k" Code mit diesen Callback Funktionen, die du ansprichst, in die grafische Library "Simulink Block/Substystem" mit-hinein? Kannst du mir da ein bisschen nähere Auskunft darüber geben? Das wäre toll!
Danke und liebe Grüße,
Bernd
|
|
|
coopers |
Forum-Anfänger
|
|
Beiträge: 10
|
|
|
|
Anmeldedatum: 27.09.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.08.2012, 21:59
Titel:
|
|
Bernd hat Folgendes geschrieben: |
Hallo Coopers!
Ja, im Prinzip sowas, nur möchte ich diese function gemeinsam mit demjenigen grafischen Simulink-Block "mitgeben", der die Widerstände enhält und icht im Toplevel, das die Simulation aufruft!! Wie geht das?
Bitte um Antwort. Vielen Dank im Voraus,
Bernd |
Hallo Bernd,
was spricht dagegen es so zu machen wie ich es vorgeschlagen habe?
Du kannst jeder Instanz von deinem Subsystem einen Individuellen Parameter geben (R1-R16) die dann je nach Lastfall eingestellt werden.
Das Startskriüt schreibt die Parameter in den Baseworkspace und dein Modell holt sich da dann die richtigen Werte her.
Ob du es jetzt als Library machst oder masked ist erstmal egal.
Grüße,
Coopers
|
|
|
Bernd |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.08.2012, 07:36
Titel:
|
|
|
|
|
Hello Coopers!
Ich möchte die Berechnungen (wenn Lasttyp 1, dann R1=1k) deshalb nicht nicht im Toplevel haben, denn wenn ich den Block austausche gegen einen einfachen (wo einfach ein fixer Widerstand drin ist mit einem fixen Wert), dann liegt Code im Toplevel herum, und andere Leute, die damit arbeiten kennen sich dann nicht aus. Eben, es wäre eleganter so.
Immerhin bin ich schon so weit, dass ich den übergebenen Parameter (Lasttyp) in eine Konstante eintrage und dann den Wert zu einem Matlab Block schicke, wo ich dann die Berechnung machen könnte. Aber wie krieg ich das Ergebnis (1k) wieder in eine Variable (z.B. R1)? Also das "Gegenteil" vom Block "Constant", denn wenn ich bei "Constant" eine Variable reinschreibe, dann krieg ich das als Signal heraus (und die Leitung kann ich z.B. auf ein Display schicken). Wie kann ich aber, was ich als Output als Signalleitung schon habe (vom Matlab-Berechnungs-Block) wieder in eine Variable gießen, die ich an anderer Stelle (beim Widerstand) wieder verwenden kann. Jetzt hab' ich's versucht mit dem Block "To Workspace", nur das funktioniert nicht. Irgendwelche Ideen?
|
|
|
coopers |
Forum-Anfänger
|
|
Beiträge: 10
|
|
|
|
Anmeldedatum: 27.09.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.08.2012, 18:36
Titel:
|
|
Hallo Bernd,
anhand deiner Erklärungen wird mir noch nicht ganz klar, was du wo wie definierst und wohin übergibst.
Vllt kannst du ja nochmal zum besseren Verständnis den Funktionsablauf hier posten und bei Fehlermeldungen dann auch den Inhalt der Fehlermeldung.
Grüße!
coopers
|
|
|
Bernd |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.08.2012, 11:08
Titel:
|
|
Hi Coopers!
Ich denke, ich habe mittlerweile eine Lösung gefunden: Callbacks!
Vielen Dank trotzdem,
Bernd
|
|
|
|
|
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.
|
|