Matlab/Simulink: Minimale leere S-Function-Vorlage
Du kannst diese minimale, leere S-Function als Vorlage für den Einstieg in deine eigene S-Function verwenden.
Dieses minimale Beispiel enthält auch eine Vorlage für mdlStart().
Denke daran, dass du beim Umbenennen der Datei auch das S_FUNCTION_NAME-#define entsprechend aktualisieren musst.
nothing_sfunction.cpp
#define S_FUNCTION_NAME nothing_sfunction
#define S_FUNCTION_LEVEL 2
#include "simstruc.h"
// Funktion: mdlInitializeSizes ===============================================
// Abstract:
// Größen der verschiedenen Vektoren einstellen.
static void mdlInitializeSizes(SimStruct *S)
{
// Hier ssSetNumInputPorts() etc. hinzufügen
}
#define MDL_START
static void mdlStart(SimStruct *S)
{
// Optional: Hier Initialisierungsaufgaben ausführen
// Falls nicht benötigt, kannst du diese Funktion und #define MDL_START vollständig entfernen.
}
// Funktion: mdlInitializeSampleTimes =========================================
// Abstract:
// Abtastzeiten auf 1ms (1kHz) initialisieren
static void mdlInitializeSampleTimes(SimStruct *S)
{
// Für ein Beispiel, was hier hinzugefügt werden kann, siehe https://techoverflow.net/2024/10/20/matlab-level-2-s-function-example-sine-wave-continous-output/
}
// Funktion: mdlOutputs =======================================================
// Abstract:
// Den Sinuswellen-Output basierend auf der Simulationszeit berechnen.
static void mdlOutputs(SimStruct *S, int_T tid)
{
// Für ein Beispiel, was hier hinzugefügt werden kann, siehe https://techoverflow.net/2024/10/20/matlab-level-2-s-function-example-sine-wave-continous-output/
}
// Funktion: mdlTerminate =====================================================
// Abstract:
// Diese Funktion wird am Ende der Simulation zum Aufräumen aufgerufen.
static void mdlTerminate(SimStruct *S)
{
// Für dieses Beispiel ist kein Aufräumen erforderlich
}
// Erforderlicher S-Function-Trailer
#ifdef MATLAB_MEX_FILE
#include "simulink.c" // MEX-Datei-Schnittstellenmechanismus
#else
#include "cg_sfun.h" // Codegenerierungs-Schnittstelle
#endifKompilieren mit
build_nothing_sfunction.sh
mex -g nothing_sfunction.cpp CXXFLAGS="-std=gnu++17 -fPIC"Die Verwendung von -std=gnu++17 oder neuer wird empfohlen, ist aber nicht erforderlich.
Ähnliche Beiträge nach Kategorie:
Matlab/Simulink, C++
Wenn dieser Beitrag dir geholfen hat, erwäge, mir einen Kaffee zu spendieren oder per PayPal zu spenden, um die Recherche und Veröffentlichung neuer Beiträge auf TechOverflow zu unterstützen