S-funktion des Simulink-Blocks "Pulse Generator"

Gast #198662
Lesenswert?

Hallo zusammen,

Ich versuche automatisch durch Real Time Workshop die S-Funktion von
dem schon vorhandenen Simulink-Block "Pulse Generator" zu
generieren.

Ich habe Simulink gestartet, ein neues Model erzeugt und in das Model
den Simulink-Block "Pulse Generator"  in den neuen Modell eingezogen
und sein Ausgang mit dem in Simulink/Sinks "Output" eingebunden.

Danach habe ich ganz genau als Schritte die in Matlab-Help: "Creating
an S-Function Block from a Subsystem" beschrieben sind, verfolgft.

Da der "Pulse Generator" mit Variable Solver arbeitet, habe ich in
"Simulation paramters" -Fenster den Variable Solver ode45 gewählt.
Danach auf Build-Button gedrückt.

Leider wenn ich versuche die erzeugenden S-Funktion als in Simulink als
block zu simulieren , kommt immer die Folgende Fehler Meldung:

Error reported by S-function 'untitled_sf' in block 'untitled1/RTW
S-Function':
To have a variable sample time, you must define
MDL_GET_TIME_OF_NEXT_VAR_HIT and add a mdlGetTimeOfNextVarHit routin
Gast #198663
Lesenswert?

"Creating s-function from Subsystem" sagt mich nicht viel und auch mit
dem Real-Time-Workshop hatte ich noch nicht das Vergnuegen. Aber die
Fehlermeldung ist eindeutig. Die S-function muss die Funktionalität
fuer  die Ermittlung des naechsten Hit-Zeitpunkts haben, so dass das
Simulink-"Framework" die Zeitschrittweite des DGL-Loesers mit
variableer Zeitschrittweite ensprechend den Anforderungen der Blocks im
Model bestimmen kann. Wuerde fuer einen Puls-Generator auch Sinn machen,
da man so den Zeitpunkt des naechsten Flankenwechsels als naechste
"Hit-Time" zurueckgeben kann. Wenn aus irgend einem Grund diese
Funktion nicht automatisch erzeugt wurde, kann man sie relativ einfach
im "nachruesten" so man den Quellcode der s-Function hat.
Mglw. hilft es auf die Schnelle einen "fixed-step" Solver zu nutzen.
Vielleicht die gesamte S-Function einfach "von Hand" schreiben (ist
kein "Hexenwerk").

HTH, Martin

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren