Wie man eine C++ S-Funktion zu Simulink hinzufügt

In unseren vorherigen Beispielen wie Matlab Level 2 S-Function Beispiel: Sinuswelle (kontinuierliche Ausgabe) haben wir gezeigt, wie man eine einfache S-Funktion in C++ erstellt.

So fügen Sie eine C++ S-Funktion zu Simulink hinzu:

Schritt 1: Erstellen Sie die Quelldatei der S-Funktion

Erstellen Sie im Verzeichnis, das Sie in Matlab/Simulink geöffnet haben, eine neue Datei namens z.B. sine_wave_generator.cpp. Siehe Matlab Level 2 S-Function Beispiel: Sinuswelle (kontinuierliche Ausgabe) für ein Beispiel des C++-Codes.

Ich empfehle, Visual Studio Code statt Matlab als C++-Editor zu verwenden.

Schritt 2: Kompilieren Sie die S-Funktion

Öffnen Sie ein Terminal und führen Sie aus

build_sine_wave.sh
mex sine_wave_generator.cpp

Ich empfehle nicht, dies in Matlab auszuführen, obwohl dies möglich ist. Ich empfehle immer, ein System-Terminal zu verwenden.

Der Kompilierungsprozess funktioniert nur, wenn die letzte Zeile der Ausgabe MEX completed successfully. lautet.

Wenn Sie eine andere Ausgabe sehen, müssen Sie das Problem debuggen.

Häufige Probleme sind:

Für Tests empfehle ich, ein neues Simulink-Modell zu erstellen, anstatt ein altes wiederzuverwenden.

Schritt 4: Fügen Sie einen S-Funktions-Block hinzu

Beginnen Sie, indem Sie auf den Dialog zum Hinzufügen eines neuen Blocks klicken:

Simulink Bibliotheks-Browser

Klicken Sie nun auf User-defined functions und wählen Sie den S-function-Block. Wählen Sie nicht den Matlab Level-2 S-function-Block, auch wenn Sie eine Level-2-S-Funktion verwenden. Level-2-S-Funktionen funktionieren auch mit dem normalen S-function-Block einwandfrei.

Simulink S-Funktions-Block hinzufügen

Ziehen Sie diesen Block in den Haupt-Simulink-Modellbereich, d.h. den großen weißen leeren Bereich im anderen Fenster, das sich normalerweise direkt hinter dem library browser-Dialog befindet:

Simulink S-Funktion ziehen

Schritt 5: Konfigurieren Sie den S-Funktions-Block

Doppelklicken Sie auf den S-Funktions-Block, um den Konfigurationsdialog zu öffnen:

Simulink S-Funktion doppelklicken

Bearbeiten Sie im Dialog den Name und geben Sie den Namen der S-Funktion ein.

Der Name der S-Funktion ist immer der Name der .cpp-Datei ohne die .cpp-Erweiterung.

In unserem Fall heißt die C++-Datei sine_wave_generator.cpp, daher lautet der Name der S-Funktion sine_wave_generator.

Klicken Sie auf Apply, um die Änderungen zu speichern und den Dialog zu schließen.

In unserem Beispiel können wir den S-Funktions-Block mit einem Scope-Block verbinden, um die Ausgabe zu visualisieren.

Dies ist nicht zwingend erforderlich, aber es ist eine gute Möglichkeit zu überprüfen, ob die S-Funktion wie erwartet funktioniert.

Um den Scope-Block hinzuzufügen, klicken Sie erneut auf das Library browser-Symbol in der Navigationsleiste:

Simulink Bibliotheks-Browser

Klicken Sie auf Sinks und wählen Sie den Scope-Block:

Simulink Scope-Block hinzufügen

Ziehen Sie den Scope-Block in den Haupt-Simulink-Modellbereich:

Simulink Scope ziehen

Schließen Sie den Library browser-Dialog.

Verbinden Sie nun den Ausgang des S-Funktions-Blocks mit dem Eingang des Scope-Blocks:

Simulink S-Funktion verbinden

Die verbundenen Blöcke sollten nun so aussehen:

Simulink verbundene S-Funktion

Klicken Sie auf die Run-Schaltfläche in der Simulink-Symbolleiste, um die Simulation auszuführen:

Simulink Simulation ausführen

Schritt 8: Überprüfen Sie das Scope

Wenn alles wie erwartet funktioniert, können Sie nun den Scope-Block doppelklicken, um die Ausgabe der S-Funktion zu sehen:

Simulink Scope doppelklicken

Dies öffnet ein neues Fenster, das die Scope-Ausgabe der S-Funktion anzeigt:

MATLAB Kontinuierliche S-Funktion Sinuswellen-Generator


Check out similar posts by category: Matlab/Simulink