Matlab/Simulink: Plantilla minimal de S-function vacía
Puedes usar esta S-function minimal y vacía como plantilla para empezar con tu propia S-function.
Este ejemplo minimal también incluye una plantilla mdlStart().
Recuerda que si renombras el archivo, también necesitas actualizar el #define de S_FUNCTION_NAME en consecuencia.
nothing_sfunction.cpp
#define S_FUNCTION_NAME nothing_sfunction
#define S_FUNCTION_LEVEL 2
#include "simstruc.h"
// Function: mdlInitializeSizes ===============================================
// Abstract:
// Configurar los tamaños de los diversos vectores.
static void mdlInitializeSizes(SimStruct *S)
{
// Añadir ssSetNumInputPorts() etc aquí
}
#define MDL_START
static void mdlStart(SimStruct *S)
{
// Opcionalmente, realizar tareas de inicialización aquí
// Si no se necesita, puedes eliminar esta función y #define MDL_START por completo.
}
// Function: mdlInitializeSampleTimes =========================================
// Abstract:
// Inicializar los tiempos de muestreo a 1ms (1kHz)
static void mdlInitializeSampleTimes(SimStruct *S)
{
// Para un ejemplo de qué añadir aquí, ver https://techoverflow.net/2024/10/20/matlab-level-2-s-function-example-sine-wave-continous-output/
}
// Function: mdlOutputs =======================================================
// Abstract:
// Calcular la salida de onda senoidal basada en el tiempo de simulación.
static void mdlOutputs(SimStruct *S, int_T tid)
{
// Para un ejemplo de qué añadir aquí, ver https://techoverflow.net/2024/10/20/matlab-level-2-s-function-example-sine-wave-continous-output/
}
// Function: mdlTerminate =====================================================
// Abstract:
// Esta función se llama al final de la simulación para limpieza.
static void mdlTerminate(SimStruct *S)
{
// No se requiere limpieza para este ejemplo
}
// Trailer requerido de S-function
#ifdef MATLAB_MEX_FILE
#include "simulink.c" // Mecanismo de interfaz de archivo MEX
#else
#include "cg_sfun.h" // Interfaz de generación de código
#endifCompila usando
build_nothing_sfunction.sh
mex -g nothing_sfunction.cpp CXXFLAGS="-std=gnu++17 -fPIC"Usar -std=gnu++17 o más nuevo es recomendado, pero no obligatorio.
Echa un vistazo a artículos similares por categoría:
MATLAB/Simulink, C++
Si este artículo te ha ayudado, considera invitarme a un café o hacer una donación vía PayPal para apoyar la investigación y publicación de nuevos artículos en TechOverflow