Matlab/Simulink: Мінімальний порожній шаблон S-функції
Ви можете використовувати цю мінімальну порожню S-функцію як шаблон для початку роботи зі власною S-функцією.
Цей мінімальний приклад також містить шаблон mdlStart().
Пам’ятайте, що якщо ви перейменуєте файл, вам також потрібно відповідним чином оновити #define S_FUNCTION_NAME.
nothing_sfunction.cpp
#define S_FUNCTION_NAME nothing_sfunction
#define S_FUNCTION_LEVEL 2
#include "simstruc.h"
// Функція: mdlInitializeSizes ===============================================
// Короткий опис:
// Налаштування розмірів різних векторів.
static void mdlInitializeSizes(SimStruct *S)
{
// Додайте ssSetNumInputPorts() тощо тут
}
#define MDL_START
static void mdlStart(SimStruct *S)
{
// За бажанням, виконайте тут завдання ініціалізації
// Якщо не потрібно, ви можете повністю видалити цю функцію та #define MDL_START.
}
// Функція: mdlInitializeSampleTimes =========================================
// Короткий опис:
// Ініціалізувати часи дискретизації як 1 мс (1 кГц)
static void mdlInitializeSampleTimes(SimStruct *S)
{
// Приклад того, що додати тут, див. на https://techoverflow.net/2024/10/20/matlab-level-2-s-function-example-sine-wave-continous-output/
}
// Функція: mdlOutputs =======================================================
// Короткий опис:
// Обчислити вихід синусоїди на основі часу моделювання.
static void mdlOutputs(SimStruct *S, int_T tid)
{
// Приклад того, що додати тут, див. на https://techoverflow.net/2024/10/20/matlab-level-2-s-function-example-sine-wave-continous-output/
}
// Функція: mdlTerminate =====================================================
// Короткий опис:
// Ця функція викликається в кінці моделювання для очищення.
static void mdlTerminate(SimStruct *S)
{
// Для цього прикладу очищення не потрібне
}
// Обов'язковий завершальний блок S-функції
#ifdef MATLAB_MEX_FILE
#include "simulink.c" // Механізм інтерфейсу MEX-файлу
#else
#include "cg_sfun.h" // Інтерфейс генерації коду
#endifСкомпілюйте за допомогою
build_nothing_sfunction.sh
mex -g nothing_sfunction.cpp CXXFLAGS="-std=gnu++17 -fPIC"Використання -std=gnu++17 або новішої версії рекомендується, але не є обов’язковим.
Дивіться схожі статті за категоріями:
Matlab/Simulink, C++
Якщо ця стаття допомогла вам, будь ласка, подумайте про те, щоб купити мені каву або зробити пожертву через PayPal на підтримку досліджень та публікації нових статей на TechOverflow