|
|
SImulationszeit für s-function ändern |
|
Eisen |
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 24.02.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.02.2009, 09:56
Titel: SImulationszeit für s-function ändern
|
|
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?
|
|
|
|
|
andi_u |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.02.2009, 12:21
Titel:
|
|
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
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 24.02.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.02.2009, 12:36
Titel:
|
|
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?
|
|
|
andi_u |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.02.2009, 14:58
Titel:
|
|
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: ---
|
|
|
|
|
|
Verfasst am: 24.02.2009, 15:02
Titel:
|
|
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
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 24.02.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.02.2009, 10:57
Titel:
|
|
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.
|
|
|
andi_u |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.02.2009, 14:22
Titel:
|
|
Genau,
die hab ich ganz vergessen. Eine Rate Trasiation ist dann natürlich erforderlich.
Super sache, bitte!
Gruß andi_u
|
|
|
|
|
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 - 2025
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.
|
|