Используйте одни из предоставленных S-шаблонов-функций MEX C как начальная точка для создания вашей собственной S-функции. Шаблоны содержат скелетные реализации методов коллбэка с комментариями, которые объясняют их использование. Файл шаблона, sfuntmpl_basic.c
, содержит обычно используемые стандартные программы S-функции. Шаблон, содержащий все доступные стандартные программы (а также больше комментариев), может быть найден в sfuntmpl_doc.c
в той же папке.
Мы рекомендуем, чтобы вы использовали шаблон файла MEX на C при разработке S-функций MEX.
В этом разделе описываются требования, чтобы каждый исходный файл S-функции встретился, чтобы скомпилировать правильно. S-шаблоны-функций удовлетворяют эти требования.
Для S-функций, чтобы действовать правильно, каждый исходный модуль вашей S-функции это получает доступ к SimStruct
должен содержать следующую последовательность, задает, и включать
#define S_FUNCTION_NAME your_sfunction_name_here #define S_FUNCTION_LEVEL 2 #include "simstruc.h"
где your_sfunction_name_here
имя вашей S-функции (т.е. что вы вводите в диалоговое окно S-Function Block Parameters). Эти операторы предоставляют вам доступ к SimStruct
структура данных, которая содержит указатели на данные, используемые симуляцией. Включенный код также задает макросы, используемые, чтобы сохранить и получить данные в SimStruct
, описанный подробно в S-функциях Уровня 1 C Преобразования MEX. Кроме того, код указывает, что вы используете формат S-функции Уровня 2.
Все S-функции от версии 1.3 Simulink® до версии 2.1 считаются S-функциями Уровня 1. Они совместимы с более новыми версиями программного обеспечения, но мы рекомендуем, чтобы вы написали новые S-функции в формате Уровня 2.
Следующие заголовки включены simstruc.h
при компиляции как файл MEX.
Заголовочные файлы, Включенные simstruc.h При Компиляции как файл MEX
Заголовочный файл | Описание |
---|---|
| Общие типы данных, например, real_T |
| SimStruct типы данных, например, DTypeId |
| Стандартные программы API файла MEX MATLAB®, чтобы соединить интерфейсом с файлами MEX со средой MATLAB |
| MATLAB Внешние Интерфейсные стандартные программы API, чтобы запросить и управлять матрицами MATLAB |
При компиляции S-функции для использования с продуктом Simulink Coder™, simstruc.h
включает следующее.
Заголовочные файлы, Включенные simstruc.h, Когда Используется продуктом Simulink Coder
Заголовочный файл | Описание |
---|---|
| Общие типы, например, real_T |
| SimStruct типы данных, например, DTypeId |
| Макросы для стандартных программ MATLAB API |
Ваша S-функция должна реализовать следующие функции, (см.):
задает размеры различных параметров в mdlInitializeSizes
SimStruct
, такой как количество выходных портов для блока.
задает шаг (шаги) расчета блока.mdlInitializeSampleTimes
вычисляет выход блока.mdlOutputs
выполняет любые действия, требуемые при завершении симуляции. Если никакие действия не требуются, эта функция может быть реализована как тупик.mdlTerminate
Ваша S-функция должна включать следующий код трейлера в конце основного модуля только.
#ifdef MATLAB_MEX_FILE /* Is this being compiled as MEX-file? */ #include "simulink.c" /* MEX-file interface mechanism */ #else #include "cg_sfun.h" /* Code generation registration func */ #endif
Эти операторы выбирают соответствующий код для вашего конкретного приложения:
Файл simstruc.h
заголовочный файл языка C, который задает SimStruct
структура данных и ее макросы доступа. Это инкапсулирует все данные, относящиеся к модели или S-функции, включая параметры блоков и выходные параметры.
Существует один SimStruct
структура данных выделяется для модели Simulink. Каждая S-функция в модели имеет свой собственный SimStruct
сопоставленный с ним. Организация их SimStruct
s во многом как дерево папки. SimStruct
сопоставленный с моделью корневой
SimStruct
. Любой SimStruct
сопоставленный с S-функцией дочерний
SimStruct
.
Продукт Simulink обеспечивает набор макросов, которые S-функции могут использовать, чтобы получить доступ к полям SimStruct
. Займитесь Функциями SimStruct для получения дополнительной информации.
Файл tmwtypes.h
заголовочный файл языка C, который задает набор типов данных, используемых в S-шаблоне-функции и в SimStruct
. Эти типы данных, такие как real_T
, uint32_T
, и т.д. обеспечьте способ переключиться между различными типами данных для 16, 32, и системы на 64 бита, позволив большую независимость от платформы и гибкость.
S-функции не требуются, чтобы использовать эти типы данных. Например, можно отредактировать пример csfunc.c
и измените real_T
к double
и int_T
к int
. Если вы скомпилируете и симулируете S-функцию, результаты будут идентичны результатам с помощью предыдущих типов данных.
Ваша S-функция может быть скомпилирована в одном из трех режимов, задал любого mex
команда или продуктом Simulink Coder, когда S-функция создается:
MATLAB_MEX_FILE
— Указывает, что S-функция создается как файл MEX для использования с продуктом Simulink.
RT
— Указывает, что S-функция создается с продуктом Simulink Coder для приложения реального времени с помощью решателя фиксированного шага.
NRT
— Указывает, что S-функция создается с продуктом Simulink Coder для неприложения реального времени с помощью решателя переменного шага.
Процесс сборки, который вы используете автоматически, задает режим для вашей S-функции.