S-функции (системные функции) обеспечивают мощный механизм для расширения возможностей среды Simulink®. S-функция является описанием машинного языка блока Simulink, написанного в MATLAB®, C, C++ или Фортране. C, C++ и S-функции Фортрана компилируются как файлы MEX с помощью утилиты mex
(см. файл MEX Сборки (MATLAB)). Как с другими файлами MEX, S-функции являются динамически соединенными стандартными подпрограммами, которые механизм выполнения MATLAB может автоматически загрузить и выполнить.
Использование S-функций специальный синтаксис вызова вызвал API S-функции, который позволяет вам взаимодействовать с механизмом Simulink. Это взаимодействие очень похоже на взаимодействие, которое происходит между механизмом и встроенными блоками Simulink.
S-функции следуют за общей формой и могут разместить непрерывные, дискретные, и гибридные системы. Следующим набор простых правил можно реализовать алгоритм в S-функции и использовать Блок s-function, чтобы добавить его к модели Simulink. После того, как вы пишете свою S-функцию и помещаете ее имя в Блок s-function (доступный в Пользовательской библиотеке блоков Функций), можно настроить маскирование использования пользовательского интерфейса (см., Создают Блочные Маски).
Если у вас есть Simulink Coder™, можно использовать S-функции с программным обеспечением. Можно также настроить код, сгенерированный для S-функций путем записи файла Компилятора выходного языка (TLC). Для получения дополнительной информации смотрите S-функции и Генерацию кода (Simulink Coder).
Чтобы создать S-функции, необходимо понять, как работают S-функции. Такое знание требует понимания того, как механизм Simulink моделирует модель, включая математику блоков. Этот раздел начинается путем объяснения математических отношений между входными параметрами, состояниями и выходными параметрами блока.
Блок Simulink состоит из набора входных параметров, набора состояний и набора выходных параметров, где выходные параметры являются функцией времени симуляции, входных параметров и состояний.
Следующие уравнения выражают математические отношения между входными параметрами, выходными параметрами, состояниями и временем симуляции
где
Выполнение модели Simulink продолжает шаг за шагом. Сначала прибывает фаза инициализации. В этой фазе механизм Simulink включает блоки библиотеки в модель, распространяет ширины сигнала, типы данных, и частоты дискретизации, оценивает блочные параметры, определяет блочный порядок выполнения и выделяет память. Механизм затем вводит цикл моделирования, куда каждый проходит через цикл, упоминается как шаг моделирования. Во время каждого шага моделирования механизм выполняет каждый блок в модели в порядке, определенном во время инициализации. Для каждого блока механизм вызывает функции, которые вычисляют блочные состояния, производные и выходные параметры для текущей частоты дискретизации.
Следующая фигура иллюстрирует этапы моделирования. Внутренний цикл интегрирования происходит, только если модель содержит непрерывные состояния. Механизм выполняет этот цикл, пока решатель не достигает желаемой точности для вычислений состояния. Целый цикл моделирования затем продолжается, пока моделирование не завершено. Смотрите Фазы Моделирования в Динамических системах в Использовании Simulink для более подробной информации о том, как механизм выполняет модель. См. Взаимодействие Engine Simulink с S-функциями C для описания того, как механизм вызывает API S-функции во время инициализации и моделирования.
Как Engine Simulink выполняет моделирование
S-функция включает набор методов обратного вызова S-функции, которые выполняют задачи, требуемые на каждом этапе моделирования. Во время моделирования модели, на каждом этапе моделирования, механизм Simulink вызывает соответствующие методы для каждого Блока s-function в модели. Задачи, выполняемые методами обратного вызова S-функции, включают:
Инициализация — До первого цикла моделирования, механизм инициализирует S-функцию, включая:
Инициализируя SimStruct
, структура моделирования, которая содержит информацию о S-функции
Определение номера и размерностей портов ввода и вывода
Установка блочных частот дискретизации
Выделение областей хранения
Вычисление следующего демонстрационного хита — Если вы создали переменный блок частоты дискретизации, этот этап, вычисляет время следующего демонстрационного хита; то есть, это вычисляет следующий размер шага.
Вычисление выходных параметров в главном временном шаге — После этого вызова завершено, все блочные выходные порты допустимы для шага текущего времени.
Обновление дискретных состояний в главном временном шаге — В этом вызове, блок выполняет однажды на действия временного шага, такие как обновление дискретных состояний.
Интегрирование — Это применяется к моделям с непрерывными состояниями и/или не выбрало нулевые пересечения. Если ваша S-функция имеет непрерывные состояния, механизм вызывает вывод и производные фрагменты вашей S-функции на незначительных временных шагах. Это - так решатели, может вычислить состояния для вашей S-функции. Если ваша S-функция не выбрала нулевые пересечения, механизм также вызывает вывод и фрагменты нулевых пересечений вашей S-функции на незначительных временных шагах так, чтобы это могло определить местоположение нулевых пересечений.
Смотрите Фазы Моделирования в Динамических системах для объяснения главных и незначительных временных шагов.
Уровень 2 S-функция MATLAB | S-функция | Разработчик S-функции