Forum: PC-Programmierung S-funktion des Simulink-Blocks "Pulse Generator"


von khalid Adraoui (Gast)


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

von mthomas (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.