Каждая S-функция должна реализовать набор методов, называемых методами коллбэка, что Simulink® engine вызывает при симуляции модели, которая содержит S-функцию.
Методы коллбэка S-функции выполняют задачи, необходимые на каждом этапе симуляции. Во время симуляции модели на каждом этапе симуляции двигатель Simulink вызывает соответствующие методы для каждого блока S-Function в модели.
Задачи, выполняемые методами коллбэка S-функции, включают:
Инициализация - Перед первым циклом симуляции двигатель инициализирует S-функцию, включая:
Инициализация SimStruct
, структуру симуляции, которая содержит информацию о S-функции
Установка количества и размерностей входа и выхода портов
Установка шагов расчета блока
Выделение складских площадей
Вычисление следующей выборки хита - Если вы создали блок переменного шага расчета, этот этап вычисляет время следующей выборки хита; то есть вычисляет размер следующего шага.
Вычисление выходов в основном временном шаге - после завершения этого вызова все выходные порты блоков действительны для текущего временного шага.
Обновление дискретных состояний в основном временном шаге - В этом вызове блок выполняет действия один раз в раз, такие как обновление дискретных состояний.
Интегрирование - Это относится к моделям с непрерывными состояниями и/или неавторизованными пересечениями нуля. Если ваша S-функция имеет непрерывные состояния, двигатель вызывает выходные и производные фрагменты вашей S-функции в незначительных временных шагах. Это значит, что решатели могут вычислить состояния для вашей S-функции. Если ваша S-функция имеет незащищенные пересечения нуля, двигатель также вызывает выходы и пересечения нулем фрагментов вашей S-функции в незначительных временных шагах, чтобы он мог определить местоположение пересечений нуля.
Примечание
Описание основных и незначительных временных шагов см. в разделе Фазы симуляции в динамических системах.
Некоторые методы коллбэка являются необязательными. Механизм вызывает дополнительный коллбэк, только если S-функция задает коллбэк.
S-функции MEX C должны реализовывать следующие методы коллбэка:
- Определяет размеры различных параметров в mdlInitializeSizes
SimStruct
, например, количество выходных портов для блока.
- Задает шаги (шаги) расчета блока.mdlInitializeSampleTimes
- Вычисляет выход блока.mdlOutputs
- Выполняет любые действия, необходимые при завершении симуляции. Если никаких действий не требуется, эта функция может быть реализована как заглушка.mdlTerminate
Следующие методы коллбэка являются необязательными. Механизм вызывает дополнительный коллбэк, только если S-функция задает коллбэк.
Level-2 MATLAB S-функции должны реализовать следующие методы коллбэка:
setup
- Определяет размеры различных параметров в SimStruct
, например, количество выходных портов для блока.
Outputs
- Вычисляет выход блока.
- Выполняет любые действия, необходимые при завершении симуляции. Если никаких действий не требуется, эта функция может быть реализована как заглушка.Terminate
Для получения информации о записи методов коллбэка смотрите Запись Level-2 MATLAB S-Functions.
Следующие методы коллбэка являются необязательными. Механизм вызывает дополнительный коллбэк, только если S-функция задает коллбэк.
Level-2 MATLAB S-Function | MATLAB Function | S-Function | S-Function Builder