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

mdl-Files miteinenader verknüpfen

 

Philler
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 31.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2011, 15:04     Titel: mdl-Files miteinenader verknüpfen
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen


_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 15.07.2011, 12:47     Titel:
  Antworten mit Zitat      
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?
Private Nachricht senden Benutzer-Profile anzeigen
 
Phate
Forum-Guru

Forum-Guru



Beiträge: 283
Anmeldedatum: 09.11.09
Wohnort: Stuttgart
Version: R2008b
     Beitrag Verfasst am: 15.07.2011, 13:29     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Philler
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 31.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.07.2011, 14:06     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 18.07.2011, 14:29     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Philler
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 31.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.07.2011, 14:41     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Phate
Forum-Guru

Forum-Guru



Beiträge: 283
Anmeldedatum: 09.11.09
Wohnort: Stuttgart
Version: R2008b
     Beitrag Verfasst am: 18.07.2011, 14:45     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Philler
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 31.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.07.2011, 14:58     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Phate
Forum-Guru

Forum-Guru



Beiträge: 283
Anmeldedatum: 09.11.09
Wohnort: Stuttgart
Version: R2008b
     Beitrag Verfasst am: 19.07.2011, 07:17     Titel:
  Antworten mit Zitat      
Hi,

Ich habe das bei meinem Modell wie gesagt auch (kann es dir als Beispiel aber leider nicht zur Verfügung stellen).

Mein erstes Systems ist ein Hydrauliksystem mit einem ode23s solver, das zweite ein Gesamtfahrzeugmodell als MEX-File.

Das Gesamtfahrzeugmodell benötigt eine konstante Schrittweite von 0.01s.
Also lass ich meine Ausgangssignale von meinem Hydrauliksystem immer in den Memory-Block schreiben der mit einem Unit Delay von genau 0.01s.

Das Signal wird also nur alle 0.01s vom Memoryblock weitergeleitet. Das schicke ich dan in den Rate Transission Block und von da an in mein Gesamtfahrzeugmodell.

Hoffe ich konnte es besser erklären. Hier nochmal die Links für die Blöcke, denke da ist auch alles ausführlich beschrieben.


http://www.mathworks.com/help/toolbox/simulink/slref/memory.html
http://www.mathworks.com/help/toolb.....slref/ratetransition.html
http://www.mathworks.com/help/toolbox/rtw/ug/f1001899.html

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Philler
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 31.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2011, 10:18     Titel:
  Antworten mit Zitat      
@Phate

Danke mal für deine Antwort.
Aber so ganz funktionieren will es noch nicht. Sad

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
Private Nachricht senden Benutzer-Profile anzeigen
 
Phate
Forum-Guru

Forum-Guru



Beiträge: 283
Anmeldedatum: 09.11.09
Wohnort: Stuttgart
Version: R2008b
     Beitrag Verfasst am: 19.07.2011, 14:59     Titel:
  Antworten mit Zitat      
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 Smile).

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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Philler
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 31.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2011, 15:24     Titel:
  Antworten mit Zitat      
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.

PST.JPG
 Beschreibung:

Download
 Dateiname:  PST.JPG
 Dateigröße:  74.75 KB
 Heruntergeladen:  829 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Phate
Forum-Guru

Forum-Guru



Beiträge: 283
Anmeldedatum: 09.11.09
Wohnort: Stuttgart
Version: R2008b
     Beitrag Verfasst am: 20.07.2011, 07:43     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Philler
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 31.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2011, 14:58     Titel:
  Antworten mit Zitat      
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
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.