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

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

Математика блоков Simulink

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

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

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

где x=[xc;xd].

Этапы симуляции

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

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

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

Методы коллбэка S-функции

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

  • Компиляция — На этом этапе, Simulinkengine инициализирует S-функцию. Задачи включают:

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

    • Определение номера и размерностей портов ввода и вывода

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

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

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

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

  • Инициализируйте и Отключите Методы — Эти дополнительные методы выполняют действия инициализации и завершения, требуемые S-функцией только однажды. Действия инициализации могут включать подготовку пользовательских данных или инициализацию векторов состояния в S-функции. Метод завершения выполняет любые действия, такие как освобождение от памяти, которая требуется, когда симуляция является завершением, или когда Блок s-function удален из модели.

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

Чтобы понять терминологию на симуляциях специально для S-функций, смотрите Концепции S-функции.

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

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

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

Примечание

Если путь MATLAB включает файл MEX на C и файл MATLAB, ссылающийся на то же имя Блоком s-function, Блок s-function использует файл MEX на C.

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

И в окне Блок 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.

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

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

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

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

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

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

Смотрите также

| | |

Похожие темы