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

SImulationszeit für s-function ändern

 

Eisen
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 24.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.02.2009, 10:56     Titel: SImulationszeit für s-function ändern
  Antworten mit Zitat      
HAllo,

ich hätte eine Frage bezüglich s-Functions und SImulationszeit. Mein SIMULINK-Modell arbeitet mit einer Simulationszeit von 1ms.
Meine s-function soll aber nur alle 10ms ausgeführt werden. Wie kann ich dies realisieren, wenn die Simulationszeit zwingend eingehalten werden muss?
Private Nachricht senden Benutzer-Profile anzeigen


andi_u

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.02.2009, 13:21     Titel:
  Antworten mit Zitat      
hi,

das kommt auf die Art der S-function an. Wenn du z.B. einer c-mex S-function arbeitest, dann gibt es eine extra Samplezeitroutine in der du deine samplezeit festlegst.

mfg andi_u
 
Eisen
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 24.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.02.2009, 13:36     Titel:
  Antworten mit Zitat      
Ja ich arbeite mit einer c-mex S-function und meine Routine sieht zur Zeit so aus:

Code:
static void mdlInitializeSampleTimes(SimStruct *S)
{
ssSetSampleTime(S, 0, CONTINUOUS_SAMPLE_TIME);
ssSetOffsetTime(S, 0, 0.0);

}

Allerdings arbeitet diese S-Function jetzt auch mit 1ms. Was muss ich in der Routine ändern, damit diese nur alle 10ms ausgeführt wird?
Private Nachricht senden Benutzer-Profile anzeigen
 
andi_u

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.02.2009, 15:58     Titel:
  Antworten mit Zitat      
hi,

also wenn du ohne continuierliche states arbeitest, dann müsste das so aussehen:

ssSetSampleTime(S, 0, 0.01);
ssSetOffsetTime(S, 0, 0.0);

wenn du mit continuierlichen states arbeiten musst, dann sieht das schon wieder anders aus. Dann musst nämlich gegebenenfals mit zwei verschiedenen Samplezeiten arbeiten, die eine continuierlich, die andere zeitdiskret, also:

ssSetSampleTime(S, 0, CONTINUOUS_SAMPLE_TIME);
ssSetOffsetTime(S, 0, 0.0);
ssSetSampleTime(S, 1, 0.01);
ssSetOffsetTime(S, 1, 0.0);

In der Matlab-Hilfe steht da auch mehr dazu. Musst mal unter "Setting Sample Times and Offsets" suchen oder auch das ein oder andere Beispiel anschauen. Da kannst mal unter "s-function examples" suchen und dann die Section "Implementing Block Features" durchsehen. Da sind Beispiele für Diskrete und Continuierlcihe Systeme zu sehen.

Gruß andi_u
 
andi_u

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.02.2009, 16:02     Titel:
  Antworten mit Zitat      
Hab noch was Wichtiges vergessen...

wenn du mit zwei Samplezeiten arbeitest musst du natürlich das auch in der Inititalisierung berücksichtigen.

ssSetNumSampleTimes(S, 2);

Gruß andi_u
 
Eisen
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 24.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.02.2009, 11:57     Titel:
  Antworten mit Zitat      
DAnke Andi,

das mit

ssSetSampleTime(S, 0, 0.01);
ssSetOffsetTime(S, 0, 0.0);

hat wunderbar funktioniert. Meine Nachrichten werdn jetzt nur noch alle 10ms versendet. Musste nur noch eine Rate Transition vor die s-function setzen.
Private Nachricht senden Benutzer-Profile anzeigen
 
andi_u

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.02.2009, 15:22     Titel:
  Antworten mit Zitat      
Genau,

die hab ich ganz vergessen. Eine Rate Trasiation ist dann natürlich erforderlich.

Super sache, bitte!

Gruß andi_u
 
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.