S-функции (системные функции) обеспечивают мощный механизм для расширения возможностей среды Simulink®. S-функция является описанием машинного языка блока Simulink, написанного в MATLAB®, C, C++ или Фортране. C, C++ и S-функции Фортрана скомпилированы как файлы MEX с помощью mex
утилита (см. Сборку C MEX-функция). Как с другими файлами 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-функции требуют основного знания математических отношений между входными параметрами блока, состояниями и выходными параметрами. Чтобы изучить, как S-функции работают, сначала необходимо изучить математику того, как Simulink симулирует модель, а именно, этапы симуляции. Смотрите Фазы Симуляции в Динамических системах для более подробной информации.
Блок Simulink состоит из набора входных параметров, набора состояний, набора параметров и набора выходных параметров, где выходные параметры являются функцией времени симуляции, входных параметров, параметров и состояний.
Следующие уравнения описывают математические отношения между входными параметрами, выходными параметрами, параметрами, состояниями и временем симуляции.
где
Выполнение модели Simulink продолжает шаг за шагом. В фазе Initialization механизм Simulink включает библиотечные блоки в модель, распространяет ширины сигнала, типы данных, и шаги расчета, оценивает параметры блоков, определяет порядок выполнения блока и выделяет память. Механизм затем вводит цикл симуляции, куда каждый проходит через цикл, упоминается как шаг симуляции. Во время каждого шага симуляции механизм выполняет каждый блок в модели в порядке, определенном во время инициализации. Для каждого блока механизм вызывает функции, которые вычисляют состояния блока, производные и выходные параметры для текущего шага расчета. Целый цикл симуляции затем продолжается, пока симуляция не завершена.
Инициализация модели - Модель подготовлена к симуляции. На этом этапе оценены параметры блоков, порядок выполнения блока определяется, и память для каждой операции выделяется. После этого этапа блоки проходят цикл симуляции.
Обновление Непрерывных состояний и Время - Происходит, только если модель имеет непрерывные состояния. Можно изменить методы мелкого шага, такие как mdlOutputs
, mdlDerivatives
, и mdlZeroCrossing
вычислить выходные параметры
S-функция включает набор методов коллбэка S-функции, которые выполняют задачи, требуемые на каждом этапе симуляции. В процессе моделирования модели, на каждом этапе симуляции, механизм Simulink вызывает соответствующие методы для каждого Блока s-function в модели. Задачи, выполняемые методами коллбэка S-функции, включают:
Компиляция — На этом этапе, механизм Simulink инициализирует S-функцию. Задачи включают:
Включая библиотечные блоки в модель, и распространяя ширины сигнала, типы данных и шаги расчета
Определение номера и размерностей портов ввода и вывода
Оценка параметров блоков и определение порядка выполнения блока
Выделение областей памяти и областей хранения.
Вычисление выходных параметров — В этом состоянии, выходные параметры вычисляются, пока все выходные порты блока не допустимы для шага текущего времени, а именно, все выходные значения в определенном диапазоне ошибок.
Обновите дискретные состояния — В этом вызове, блок выполняет однажды на действия временного шага, такие как обновление дискретных состояний.
Инициализируйте и Отключите Методы — Эти дополнительные методы выполняют действия инициализации и завершения, требуемые S-функцией только однажды. Действия инициализации могут включать подготовку пользовательских данных или инициализацию векторов состояния в S-функции. Метод завершения выполняет любые действия, такие как освобождение от памяти, которая требуется, когда симуляция отключена, или когда Блок s-function удален из модели.
Интегрирование — Это применяется к моделям с непрерывными состояниями и/или не произвело нулевые пересечения. Если ваша S-функция имеет непрерывные состояния, механизм вызывает выход и производные фрагменты вашей S-функции на незначительных временных шагах. Это - так решатели, может вычислить состояния для вашей S-функции. Если ваша S-функция не произвела нулевые пересечения, механизм также вызывает выход и фрагменты нулевых пересечений вашей S-функции на незначительных временных шагах так, чтобы это могло определить местоположение нулевых пересечений.
Чтобы изучить терминологию на симуляциях особенно для S-функций, смотрите Концепции S-функции.
Чтобы включить S-функцию MEX C в модель, перетащите блок S-function из Simulink Library Browser. Точно так же, чтобы включить Level-2 MATLAB S-function к модели, перетащите блок Level-2 MATLAB S-function к модели.
Откройте диалоговое окно Block Parameters и задайте S-имя-функции в поле S-function name, чтобы обеспечить функциональность для блока S-function. Например, введите timestwo
и хит Apply, чтобы добавить S-функцию MEX C, которая умножает входящий сигнал на два.
Примечание
Если путь MATLAB включает файл MEX на C и файл MATLAB, ссылающийся на то же имя Блоком s-function, Блок s-function использует файл MEX на C.
И в блоке S-function и в окне Level-2 MATLAB S-Function Block Parameters позволяет вам задавать значения параметров, чтобы передать соответствующей S-функции. Чтобы использовать эти поля, необходимо знать параметры, которых S-функция требует и порядок, в котором функция требует их. (Если вы не знаете, консультируйтесь с автором S-функции, документацией или исходным кодом.) Вводят параметры, разделенные запятой, в порядке, требуемом S-функцией. Значения параметров могут быть константами, именами переменных, заданных в рабочем пространстве MATLAB или рабочем пространстве модели или выражениях MATLAB.
Следующий пример иллюстрирует использование поля Parameters, чтобы ввести пользовательские параметры для Уровня 2 S-функция MATLAB.
Модель msfcndemo_limintm
в этом примере включает демонстрационную S-функцию msfcn_limintm.m
.
msfcn_limintm.m
S-функция принимает три параметра: нижняя граница, верхняя граница и начальное условие. S-функция выводит интеграл времени входного сигнала, если интеграл времени между нижними и верхними границами, нижняя граница, если интеграл времени меньше нижней границы и верхней границы, если интеграл времени больше верхней границы. Диалоговое окно в примере задает нижнюю и верхнюю границу и начальное условие -5.0
, 5.0, и
0
, соответственно. Осциллограф показывает получившийся выход, когда вход является синусоидой амплитуды 5.
Смотрите S-параметры-функции Обработки и Обработайте Ошибки в S-функциях для получения информации о как к заданным пользователями доступа параметрам в S-функции.
Можно использовать средство маскирования, чтобы создать пользовательские диалоговые окна и значки для Блоков s-function. Диалоговые окна маскированные могут облегчить задавать дополнительные параметры для S-функций. Для обсуждения маскирования смотрите, Создают Маски Блока.
Можно использовать S-функции для множества приложений, включая:
Создание новых блоков общего назначения
Добавление блокируется, которые представляют драйверы аппаратного устройства
Слияние существующего кода С в симуляцию (см., Интегрирует Функции C Используя Legacy Code Tool),
Описание системы в виде набора математических уравнений
Используя графические анимации (см. инвертированный пример маятника, Инвертированный Маятник с Анимацией),
Наиболее популярный способ использования S-функций должен создать пользовательские блоки Simulink (см. Основы создания блоков). Когда вы используете S-функцию, чтобы создать блок общего назначения, можно много раз использовать его в модели, различных параметрах с каждым экземпляром блока.
Level-2 MATLAB S-Function | MATLAB Function | S-Function | S-Function Builder