www.mikrocontroller.net

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


Autor: khalid Adraoui (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: mthomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.