|
|
mdl-Files miteinenader verknüpfen |
|
Philler |
Forum-Anfänger
|
|
Beiträge: 10
|
|
|
|
Anmeldedatum: 31.05.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.07.2011, 15:04
Titel: mdl-Files miteinenader verknüpfen
|
|
|
|
|
Hallo zusammen,
ich habe da momentan ein Problem bei meinem Simulink Model. Ich bin dabei eine Prüfstand zu simulieren und muss nun 2 Modelle miteinander verbinden.
Ein Model beinhaltet die Synchronmaschinen des Prüfstands und in der anderen ist die Regelung.
Das Regelungsmodel wurde mir vorgegeben und sollte weitgehend unverändert bleiben. Bei den "Solver options" der Regelung wird fixed-step und discrete verwendet mit einer Fix-Step-size Ts (Variable).
Meinen Prüfstand möchte ich nun in diese File miteinbinden. Das Model des Prüfstandes soll jedoch eine andere Abtastzeit erhalten.
Ich habe versucht in die Regelung einen Model-Block einzubinden der dann die File des Prüfstandes aufruft. In der Prüfstands-File verwende ich die gleichen Solver Options.
Wenn ich das ganze nun versuche zu simulieren erhalte ich folgende Fehlermeldungen
1)
Model reference SIM target (Pruefstand_msf.mexw32) for model Pruefstand is out of date because the binary information cache does not contain necessary information. This may indicate the slprj directory has been removed or a previous build of this model was not successful
2)
Error using -> rtwgen
The "FixedStepDiscrete" solver cannot be used to simulate block diagramm "Pruefstand" because it contains continuous states.
Kann mir jemand bei meinem Problem helfen? Oder ist ein anderer Ansatz des ganzen Problems sinnvoller?
Bin momentan über jeden ratschlag dankbar.
Danke.
Gruß Philler
|
|
|
|
|
_Peter_ |
Moderator
|
|
Beiträge: 537
|
|
|
|
Anmeldedatum: 08.12.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.10, 2010a
|
|
|
|
|
|
Verfasst am: 15.07.2011, 12:47
Titel:
|
|
Hallo Philler,
hast du alle Dateien zu dem Modell bekommen? Gibt es den Ordner "slprj" zum Model Pruefstand?
Im ersten Schritt solltest du dieses Modell nochmal kompilieren, so dass alle Daten vorhanden sind.
_________________
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?
|
|
|
Phate |
Forum-Guru
|
|
Beiträge: 283
|
|
|
|
Anmeldedatum: 09.11.09
|
|
|
|
Wohnort: Stuttgart
|
|
|
|
Version: R2008b
|
|
|
|
|
|
Verfasst am: 15.07.2011, 13:29
Titel:
|
|
Hi,
Höhrt sich für mich so an als ob jemand nach dem kompilieren der MEX-Datei den Ordner "slprj" gelöscht oder verschoben hat.
Den Ordern erstellt Matlab wenn du das machst automatisch also nicht wundern dass du bzw. jemand anderes diesen Ordner nicht angelegt hat.
Warum und was in diesem Ordner ist darfst du mich allerdings nicht fragen.
Würde an deiner Stelle das MEX File neu kompilieren und aufsühren.
Grüße
|
|
|
Philler |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 10
|
|
|
|
Anmeldedatum: 31.05.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.07.2011, 14:06
Titel:
|
|
Ok, danke mal für eure antworten.
Ich habe es soweit hinbekommen.
Nur ist mein eigentliches Problem noch nicht gelöst.
Die vorhandene Regelung läuft mit einem Fixed-Step Solver und das Model des Prüfstandes mit einem Variable-Step Solver. Mein Gedanke bei der ganzen Sache war eigentlich den Prüfstand über eine zweite mdl-Datei einzubinden und in dieser den Solver Variable-Step zu verwenden. Simulink gibt mir dann jedoch die Fehlermeldung: "..., Referencing a variable-step model from a fixed-step model is not supperted."
Also geht es so wohl auch nicht.
Nun meine Frage, kann mir dabei jemand weiterhelfen und sagen wie ich das Problem lösen könnte.
Ich habe 2 mdl-files, einmal fixed-step und einmal variable-step, und ich möchte diese miteinander verbinden.
Bin für jeden Ratschlag dankbar.
Gruß Philler
|
|
|
DSP |
Forum-Meister
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 18.07.2011, 14:29
Titel:
|
|
Da stellt sich mir eher die Frage, warum du den Prüfstand unbedingt mit variabler Stepsize betreiben möchtest? Es ist ja eine Sache, Prüfstand = Strecke und Regelung mit unterschiedlichen Abtastzeiten zu betreiben. Aber dennoch sind sie dann fest und sollten wenn möglich ein ganzzahliges Vielfaches zueinander haben.
|
|
|
Philler |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 10
|
|
|
|
Anmeldedatum: 31.05.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.07.2011, 14:41
Titel:
|
|
Ok, ich denke der Begriff Regelung wird hier falsch verstanden. Zugegeben habe es auch schlecht beschrieben. Die vorhandene Regelung stellt nicht den PI-Regler der Strecke dar. Die Regelung von der ich rede ist das Simulink Model welches auf einem dSpace System läuft. Es gibt meine Momentensollwerte für den Prüfstand aus.
|
|
|
Phate |
Forum-Guru
|
|
Beiträge: 283
|
|
|
|
Anmeldedatum: 09.11.09
|
|
|
|
Wohnort: Stuttgart
|
|
|
|
Version: R2008b
|
|
|
|
|
|
Verfasst am: 18.07.2011, 14:45
Titel:
|
|
Hi,
Das Problem mit der unterschiedlichen Schrittweite kannst du mit dem Rate Transsion Block und dem Memory Block beheben. Mit hilfe von diesem kann man auch zum Beispiel Subsysteme mit unterschiedlichen Schrittweiten bzw. variablen Schrittweiten miteinander verbinden.
Grüße
|
|
|
Philler |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 10
|
|
|
|
Anmeldedatum: 31.05.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.07.2011, 14:58
Titel:
|
|
Wie genau wird das dann gemacht wenn ich ein subsystem mit "continuous states" einfügen will? Wenn cih mein Prüfstandsmodel in ein Subsystem bringe, kommt ja die Fehlermeldung dass mein subsystem continuous states enthält und meine File ist ja fixedstep.
Das subsystem soll ja mit einer anderen Taktung arbeiten.
|
|
|
Phate |
Forum-Guru
|
|
Beiträge: 283
|
|
|
|
Anmeldedatum: 09.11.09
|
|
|
|
Wohnort: Stuttgart
|
|
|
|
Version: R2008b
|
|
|
|
|
|
Verfasst am: 19.07.2011, 07:17
Titel:
|
|
|
|
Philler |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 10
|
|
|
|
Anmeldedatum: 31.05.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.07.2011, 10:18
Titel:
|
|
|
|
|
@Phate
Danke mal für deine Antwort.
Aber so ganz funktionieren will es noch nicht.
Muss die s-function dann auch als variable-step deklariert sein?
Ich habe nun das Prüfstandsmodel genommen und die dSpace-Regelung als S-Function eingefügt. Die übergebenen Signale habe ich mit dem Memory und rate transition Block verbunden. Es wird jedoch trotzdem noch gemekert das zwei verschiedene Solver verwendet werden.
Es kann auch sein, dass ich dabei einen Fehler mache?
Ich werde nochmal kurz mein Fall schildern:
Das Prüfstandsmodel stellt meine Hauptfile dar. Von hier aus soll die vorgegebene dSpace-Regelung eingefügt werden. Zwischen den beiden Modellen werden Parameter übergeben.
Prüfstand --> Regelung : Momentenistwert, Drehzahlistwert, Beschleunigungsistwert
Regelung --> Prüfstand : Momentensollwert
Die vorgegebene Regelung läuft mit einem fixed-step solver und das Prüfstandmodel mit einem variable-step. Der Solver der Regelung sollte und nicht geändert werden und in meinem Prüfstandsmodel funktioniert ein fixed-step Solver aufgrund von Integratoren nicht.
Gibt es nun irgendeine Möglichkeit diese Parameter auszutauschen, unter Berücksichtigung der verschiedenen Taktzeiten der Systeme?
Gruß Philler
|
|
|
Phate |
Forum-Guru
|
|
Beiträge: 283
|
|
|
|
Anmeldedatum: 09.11.09
|
|
|
|
Wohnort: Stuttgart
|
|
|
|
Version: R2008b
|
|
|
|
|
|
Verfasst am: 19.07.2011, 14:59
Titel:
|
|
Hi,
Also ich hoffe ich hab das richtig verstanden.
Du übergibst die Signale aus dem Prüfstand (variable Stepsize) an einen Memory Block. Von diesem gehst du in den Rate Transission Block und aus diesem widerum in deinen Regler der mit einer festen Schrittweite gelöst wird.
Im Memoryblock stellst du die Schrittweite ein die dein fixed Stepsize Solver benötigt?!
Deine maximale Schrittweite in deiner variablen Schrittweite darf nicht größer sein als die des fixed stepsize des anderen Solvers (Hoffe du verstehst den Satz ).
Noch ne Frage du hast deinem Prüfstandsmodell und deinem Reglermodell die jeweils richtigen Solver zugewiesen oder?
Soweit ich weis geht das für jedes Subsystem einzeln. Leider kann ich dir nicht genau sagen wie, da bei mir das Problem ist, dass das Gesamfahrzeugmodell schon einen Integrator hat und ich es als MEX-File (sprcih als .dll) eingebunden habe.
Hoffe konnte dir weiterhelfen, ansonsten nochmal Fragen.
|
|
|
Philler |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 10
|
|
|
|
Anmeldedatum: 31.05.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.07.2011, 15:24
Titel:
|
|
|
|
|
Zitat: |
Du übergibst die Signale aus dem Prüfstand (variable Stepsize) an einen Memory Block. Von diesem gehst du in den Rate Transission Block und aus diesem widerum in deinen Regler der mit einer festen Schrittweite gelöst wird. |
Das stimmt soweit. Die Regelung habe ich dabei als S-Function eingefügt.
Zitat: |
Du übergibst die Signale aus dem Prüfstand (variable Stepsize) an einen Memory Block. Von diesem gehst du in den Rate Transission Block und aus diesem widerum in deinen Regler der mit einer festen Schrittweite gelöst wird. |
Ist das eine Frage oder Aufforderung? Im Rate Transition Block habe ich als output-sample-time 0.00025 eingegeben. Das entspricht den 4kHz mit denen die Regelung läuft.
Im Regelungsmodel wurden ebenfalls die 0.00025 für den fixed time step eingetragen.
Zitat: |
Deine maximale Schrittweite in deiner variablen Schrittweite darf nicht größer sein als die des fixed stepsize des anderen Solvers (Hoffe du verstehst den Satz Smile). |
Das ist bei mir der Fall.
Zitat: |
Noch ne Frage du hast deinem Prüfstandsmodell und deinem Reglermodell die jeweils richtigen Solver zugewiesen oder? |
Hier verstehe ich nicht ganz wie das gemeint ist. Momentane Einstellungen sind:
Prüfstand: variable step ; ode45 ; max step size 0.0001
Regler: fixed step ; discrete ; Fixes-step-size 0.00025
Muss ich hierbei noch etwas beachten, oder geht es so wie es im Moment ist?
Zitat: |
Soweit ich weis geht das für jedes Subsystem einzeln. Leider kann ich dir nicht genau sagen wie, da bei mir das Problem ist, dass das Gesamfahrzeugmodell schon einen Integrator hat und ich es als MEX-File (sprcih als .dll) eingebunden habe. |
Wie meinst du das? Ich kann jedem Subsystem einzeln einen Solver zuweisen?
Das ganze System läuft bei mir mittlerweile auch schon zum Teil. Die Übergabe in die Regelung funktioniert, nur sobald ich Werte aus Regelung zurückgeben will, mekert er wieder das in diversen Blöcken der Regelung eine discrete sample time eingegeben werden muss und nicht "inherited" drin stehen darf.
Im Anhang hab ich mal ein Bild des Prüfstandmodels angehängt.
Beschreibung: |
|
Download |
Dateiname: |
PST.JPG |
Dateigröße: |
74.75 KB |
Heruntergeladen: |
829 mal |
|
|
|
Phate |
Forum-Guru
|
|
Beiträge: 283
|
|
|
|
Anmeldedatum: 09.11.09
|
|
|
|
Wohnort: Stuttgart
|
|
|
|
Version: R2008b
|
|
|
|
|
|
Verfasst am: 20.07.2011, 07:43
Titel:
|
|
Guten Morgen,
Zitat: |
Wie meinst du das? Ich kann jedem Subsystem einzeln einen Solver zuweisen? |
Ja genau. Soweit ich weis ist das möglich hab ich aber selbst noch nie gemacht.
Zitat: |
Prüfstand: variable step ; ode45 ; max step size 0.0001
Regler: fixed step ; discrete ; Fixes-step-size 0.00025 |
Genau das wollte ich wissen.
mMn hast du das richtig miteinander Verbunden und die 0.00025 die du im Rate Transission Block eingetragen hast stimmen.
Hast du den Wert von 0.00025 auch im Memory Block eingetragen oder steht der noch auf inherited? Ich denke hier muss auch 0.00025 eintragen werden, so dass die Signale vom Prüfstand nur zu diesen Zeitintervallen weitergeleitet werden.
Wenn das so nicht funktioniert hab ich gestern in meine Modell nochmal nachgeschaut. Hier steht der Rate Transision Block auf Inherited und im Memory Block die discrete Schrittweit von 0.001 die verwendet wird
Grüße
|
|
|
Philler |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 10
|
|
|
|
Anmeldedatum: 31.05.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.07.2011, 14:58
Titel:
|
|
|
|
|
Servus!
Zitat: |
Hast du den Wert von 0.00025 auch im Memory Block eingetragen oder steht der noch auf inherited? Ich denke hier muss auch 0.00025 eintragen werden, so dass die Signale vom Prüfstand nur zu diesen Zeitintervallen weitergeleitet werden. |
Ich habe diese 2 Blöcke mal komplett rausgenommen und die Signale direkt in die S-Function gegeben und es funktioniert auch so.
Einzig was noch nicht funktioniert, ist die Übergabe der Sollmomente aus der Regelung, also aus der S-Function heraus.
Ich habe zu Versuchszwecken eine Momentenvorgabe (repeating sequence) in die Regelung eingebaut, die die direkt aus der S-Function herausgegeben werden. Sobald ich aus dem Model die S-Function erzeugen will, erscheint die Fehlermeldung, dass diverse Blöcke eine discrete Sample time benötigen.
Diesen Fehler verstehe ich nicht ganz, da es ja noch gar nichts mit dem Prüfstandsmodell zu tun hat. Ich gebe ja lediglich einige Momentenwerte vor, so wie es am realen Prüfstand auch ist.
Warum mekert er dann?
Es handelt sich bei den Blöcken um Discrete-Time Integratoren, bei welchen er eine sample time will. Momentan steht da noch inherited drin.
Kann mir dabei vielleicht jemand weiterhelfen?
Gruß Philler
|
|
|
|
|
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.
|
|