exponenta event banner

Что такое S-функция?

S-функции (system-functions) обеспечивают мощный механизм расширения возможностей среды Simulink ®. S-функция - это описание компьютерного языка блока Simulink, написанного на MATLAB ®, C, C++ или Fortran. C, C++ и S-функции Fortran компилируются как MEX-файлы с помощью mex (см. Сборка функции C MEX). Как и в случае с другими MEX-файлами, S-функции представляют собой динамически связанные подпрограммы, которые модуль выполнения MATLAB может автоматически загружать и выполнять.

S-функции используют специальный вызывающий синтаксис, называемый S-function API, который позволяет взаимодействовать с движком Simulink. Это взаимодействие очень похоже на взаимодействие, которое происходит между двигателем и встроенными блоками Simulink.

S-функции имеют общую форму и могут соответствовать непрерывным, дискретным и гибридным системам. Следуя набору простых правил, можно реализовать алгоритм в S-функции и использовать блок S-функции для добавления его в модель Simulink. После записи S-функции и размещения ее имени в S-функциональном блоке (доступном в библиотеке блоков пользовательских функций) можно настроить пользовательский интерфейс с помощью маскирования (см. раздел Создание блоковых масок).

При наличии Coder™ Simulink можно использовать S-функции в модели и генерировать код. Можно также настроить код, созданный для S-функций, написав файл TLC. Дополнительные сведения см. в разделе S-Функции и создание кода (Simulink Coder).

Работа S-функций

S-функции определяют, как работает блок во время различных частей моделирования, таких как инициализация, обновление, производные, выходы и завершение. На каждом этапе моделирования механизм моделирования вызывает метод для выполнения конкретной задачи. Основы S-функций требуют фундаментального знания математических отношений между входами, состояниями и выходами блоков. Чтобы понять, как работают S-функции, сначала нужно понять математику того, как Simulink моделирует модель, а именно этапы моделирования. Дополнительные сведения см. в разделе Фазы моделирования в динамических системах.

Математика блоков симуляторов

Блок Simulink состоит из набора входов, набора состояний, набора параметров и набора выходов, где выходы являются функцией времени моделирования, входов, параметров и состояний.

Следующие уравнения выражают математические взаимосвязи между входами, выходами, параметрами, состояниями и временем моделирования.

y = f0 (t,  x ,  u )  (       Выходы )  x˙=fd (t, x, u) (      Производные )    xdk  +  1  = fu (t, xc, xdk, u), (Обновить)   

где x = [xc; xd].

Этапы моделирования

Выполнение модели Simulink происходит поэтапно. На этапе инициализации модуль Simulink включает в модель библиотечные блоки, распространяет ширину сигнала, типы данных и время выборки, оценивает параметры блока, определяет порядок выполнения блока и выделяет память. Затем двигатель входит в цикл моделирования, где каждый проход через цикл называется этапом моделирования. Во время каждого этапа моделирования механизм выполняет каждый блок в модели в порядке, определенном во время инициализации. Для каждого блока механизм вызывает функции, которые вычисляют состояния блока, производные и выходные данные для текущего времени выборки. Затем весь цикл моделирования продолжается до завершения моделирования.

Инициализация модели - модель подготовлена для моделирования. На этом этапе оцениваются параметры блока, определяется порядок выполнения блока и выделяется память для каждой операции. После этого этапа блоки проходят цикл моделирования.

Обновление непрерывных состояний и времени - выполняется только в том случае, если модель имеет непрерывные состояния. Можно изменить дополнительные методы шагов, такие как mdlOutputs, mdlDerivatives, и mdlZeroCrossing для вычисления выходных данных

Методы обратного вызова S-функции

S-функция содержит набор методов обратного вызова S-функции, которые выполняют задачи, требуемые на каждом этапе моделирования. Во время моделирования модели на каждом этапе моделирования механизм Simulink вызывает соответствующие методы для каждого блока S-Function в модели. Задачи, выполняемые методами обратного вызова S-функции, включают в себя:

  • Компиляция - на этом этапе модуль Simulink инициализирует S-функцию. Задачи включают в себя:

    • Включение библиотечных блоков в модель и распространение ширины сигнала, типов данных и времени выборки

    • Установка количества и размеров портов ввода и вывода

    • Оценка параметров блока и определение порядка выполнения блока

    • Выделение памяти и областей хранения.

  • Расчет выходных сигналов - в этом состоянии выходные сигналы вычисляются до тех пор, пока все выходные порты блока не станут действительными для текущего временного шага, а именно все выходные значения находятся в определенном диапазоне ошибок.

  • Обновление дискретных состояний - в этом вызове блок выполняет действия один раз за шаг, такие как обновление дискретных состояний.

  • Методы инициализации и завершения (Initialize and Terminate Methods) - эти дополнительные методы выполняют действия инициализации и завершения, необходимые для S-функции только один раз. Действия инициализации могут включать в себя установку пользовательских данных или инициализацию векторов состояния в S-функции. Метод завершения выполняет любые действия, такие как освобождение памяти, которое требуется при завершении моделирования или при удалении S-функционального блока из модели.

  • Интеграция - это относится к моделям с непрерывными состояниями и/или несамплированными пересечениями нулевого уровня. Если S-функция имеет непрерывные состояния, механизм вызывает выходную и производную части S-функции на второстепенных временных шагах. Это значит, что решатели могут вычислить состояния для вашей S-функции. Если S-функция не имеет отсчетов нулевых переходов, механизм также вызывает части выходных переходов и переходов нулевых переходов S-функции на второстепенных временных шагах, так что он может обнаружить переходы нулевых значений.

Описание терминологии моделирования, особенно для S-функций, см. в разделе Концепции S-функций.

Использование S-функций в моделях

  1. Чтобы включить S-функцию C MEX в модель, перетащите блок S-функции из браузера библиотеки Simulink. Точно так же, чтобы включить Уровень 2 MATLAB S-function к модели, тяните Уровень 2 MATLAB S-function block к модели.

  2. Откройте диалоговое окно «Параметры блока» и укажите имя S-функции в поле «Имя S-функции» для обеспечения функциональных возможностей блока S-функции. Например, введите timestwo и нажмите Apply, чтобы добавить S-функцию C MEX, которая умножает входящий сигнал на два.

Примечание

Если путь MATLAB включает в себя файл C MEX и файл MATLAB с тем же именем, на которое ссылается блок S-Function, блок S-Function использует файл C MEX.

Передача параметров S-функциям

Как в S-функциональном блоке, так и Level-2 окне MATLAB S-Function Block Parameters можно указать значения параметров для передачи соответствующей S-функции. Для использования этих полей необходимо знать необходимые S-функции параметры и порядок, в котором они требуются функции. (Если вы не знаете, обратитесь к автору S-функции, документации или исходному коду.) Введите параметры, разделенные запятой, в порядке, требуемом S-функцией. Значениями параметров могут быть константы, имена переменных, определенных в рабочей области MATLAB или модели, или выражения MATLAB.

В следующем примере показано использование поля Parameters для ввода пользовательских параметров для Level-2 MATLAB S-функции.

Модель msfcndemo_limintm в этом примере включает выборку S-функции msfcn_limintm.m.

msfcn_limintm.m S-функция принимает три параметра: нижнюю границу, верхнюю границу и начальное условие. S-функция выводит интеграл времени входного сигнала, если интеграл времени находится между нижней и верхней границами, нижнюю границу, если интеграл времени меньше нижней границы, и верхнюю границу, если интеграл времени больше верхней границы. Диалоговое окно в примере задает нижнюю и верхнюю границы и начальное условие -5.0, 5.0, и 0соответственно. Объем показывает результирующий выходной сигнал, когда входной сигнал представляет собой синусоидальную волну амплитуды 5.

Для получения информации о доступе к пользовательским параметрам в S-функции см. Обработка параметров S-функции и Обработка ошибок в S-функциях.

Средство маскирования можно использовать для создания пользовательских диалоговых окон и значков для S-функциональных блоков. Маскированные диалоговые окна упрощают задание дополнительных параметров для S-функций. Обсуждение маскирования см. в разделе Создание блоковых масок.

Когда использовать S-функцию

S-функции можно использовать для различных приложений, включая:

Наиболее распространенным использованием S-функций является создание пользовательских блоков Simulink (см. Основные сведения о создании блоков). При использовании S-функции для создания блока общего назначения его можно многократно использовать в модели, изменяя параметры для каждого экземпляра блока.

См. также

| | |

Связанные темы